mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-29 05:56:38 +08:00
73d8173018
Result: {"status":"keep","total_issues":9,"golint_canonicalheader":0,"golint_errname":0,"golint_errorlint":1,"golint_forcetypeassert":0,"golint_gosec":0,"golint_intrange":0,"golint_modernize":3,"golint_nilnil":3,"golint_perfsprint":0,"golint_prealloc":0,"golint_recvcheck":1,"golint_usestdlibvars":0,"golint_wastedassign":0,"golint_total":8,"eslint_problems":1,"eslint_errors":0,"eslint_warnings":1,"tsc_errors":0,"measure_s":45}
51 lines
1.8 KiB
Go
51 lines
1.8 KiB
Go
// Copyright 2026 Arctel.net
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
package model
|
|
|
|
import (
|
|
"errors"
|
|
"strings"
|
|
"time"
|
|
)
|
|
|
|
// PushEvent 系统通知事件模型
|
|
type PushEvent struct {
|
|
ID uint64 `json:"id" gorm:"primaryKey;autoIncrement"`
|
|
EventKey string `json:"event_key" gorm:"uniqueIndex;size:80;not null"` // 如 admin_login
|
|
Name string `json:"name" gorm:"size:100;not null"` // 如 管理员登录
|
|
TaskType string `json:"task_type" gorm:"size:100;index;not null;default:''"` // 关联的异步任务类型
|
|
Channels []string `json:"channels" gorm:"type:text;serializer:json;not null"` // 推送渠道列表,如 ["lark"]
|
|
Targets []string `json:"targets" gorm:"type:text;serializer:json;not null"` // 推送目标用户/邮箱列表
|
|
Template string `json:"template" gorm:"type:text;not null"` // 消息模板 JSON
|
|
Enabled bool `json:"enabled" gorm:"index;not null;default:false"` // 是否启用
|
|
CreatedAt time.Time `json:"created_at" gorm:"autoCreateTime;index"`
|
|
UpdatedAt time.Time `json:"updated_at" gorm:"autoUpdateTime;index"`
|
|
}
|
|
|
|
// TableName 指定 GORM 表名
|
|
func (*PushEvent) TableName() string {
|
|
return "w_push_events"
|
|
}
|
|
|
|
// Validate 基础校验
|
|
func (pe *PushEvent) Validate() error {
|
|
pe.EventKey = strings.TrimSpace(pe.EventKey)
|
|
pe.Name = strings.TrimSpace(pe.Name)
|
|
pe.Template = strings.TrimSpace(pe.Template)
|
|
|
|
if pe.EventKey == "" {
|
|
return errors.New("event key is required")
|
|
}
|
|
if pe.Name == "" {
|
|
return errors.New("event name is required")
|
|
}
|
|
if pe.Template == "" {
|
|
return errors.New("event template is required")
|
|
}
|
|
if pe.Enabled && len(pe.Channels) == 0 {
|
|
return errors.New("cannot enable event without any push channels configured")
|
|
}
|
|
return nil
|
|
}
|