// Package notice_v1 通知模块接口契约(统一推送管理:渠道/规则/日志/测试)。 // 规范(2026-08-27):全部 POST;URL 不含参数;入参一律 body。 package notice import "github.com/gogf/gf/v2/frame/g" // ---------- 通知渠道 ---------- type NoticeChannelItem struct { Id uint64 `json:"id"` Code string `json:"code"` Name string `json:"name"` Enabled int `json:"enabled"` Config string `json:"config"` // JSON 字符串 Remark string `json:"remark"` } type NoticeChannelListReq struct { g.Meta `path:"/notice/channel/list" method:"post" tags:"Admin/Notice" summary:"通知渠道列表"` } type NoticeChannelListRes struct { List []*NoticeChannelItem `json:"list"` } type NoticeChannelSaveReq struct { g.Meta `path:"/notice/channel/save" method:"post" tags:"Admin/Notice" summary:"保存通知渠道(新增/更新)"` Id uint64 `json:"id"` // 0=新增 Code string `json:"code" v:"required"` Name string `json:"name" v:"required"` Enabled int `json:"enabled" d:"1"` Config string `json:"config"` Remark string `json:"remark"` } type NoticeChannelSaveRes struct { Id uint64 `json:"id"` } // ---------- 通知规则 ---------- type NoticeRuleItem struct { Id uint64 `json:"id"` Name string `json:"name"` EventType string `json:"eventType"` ChannelCodes []string `json:"channelCodes"` UserIds []uint64 `json:"userIds"` TitleTemplate string `json:"titleTemplate"` BodyTemplate string `json:"bodyTemplate"` Enabled int `json:"enabled"` } type NoticeRuleListReq struct { g.Meta `path:"/notice/rule/list" method:"post" tags:"Admin/Notice" summary:"通知规则列表"` EventType string `json:"eventType"` // 可选过滤 } type NoticeRuleListRes struct { List []*NoticeRuleItem `json:"list"` } type NoticeRuleSaveReq struct { g.Meta `path:"/notice/rule/save" method:"post" tags:"Admin/Notice" summary:"保存通知规则(新增/更新)"` Id uint64 `json:"id"` // 0=新增 Name string `json:"name" v:"required"` EventType string `json:"eventType" v:"required"` ChannelCodes []string `json:"channelCodes" v:"required|min-length:1"` UserIds []uint64 `json:"userIds" v:"required|min-length:1"` TitleTemplate string `json:"titleTemplate"` BodyTemplate string `json:"bodyTemplate"` Enabled int `json:"enabled" d:"1"` } type NoticeRuleSaveRes struct { Id uint64 `json:"id"` } type NoticeRuleDeleteReq struct { g.Meta `path:"/notice/rule/delete" method:"post" tags:"Admin/Notice" summary:"删除通知规则"` Id uint64 `json:"id" v:"required"` } type NoticeRuleDeleteRes struct{} // ---------- 通知日志 ---------- type NoticeLogItem struct { Id uint64 `json:"id"` RuleId uint64 `json:"ruleId"` EventType string `json:"eventType"` ChannelCode string `json:"channelCode"` UserId uint64 `json:"userId"` Target string `json:"target"` Title string `json:"title"` Body string `json:"body"` Result int `json:"result"` Error string `json:"error"` CreatedAt string `json:"createdAt"` } type NoticeLogListReq struct { g.Meta `path:"/notice/log/list" method:"post" tags:"Admin/Notice" summary:"通知发送记录分页"` Page int `json:"page" d:"1" v:"min:1"` Size int `json:"size" d:"10" v:"min:1|max:100"` EventType string `json:"eventType"` ChannelCode string `json:"channelCode"` Result int `json:"result"` // 0全部 1成功 2失败 DateFrom string `json:"dateFrom"` DateTo string `json:"dateTo"` } type NoticeLogListRes struct { List []*NoticeLogItem `json:"list"` Total int `json:"total"` } // ---------- 测试发送 ---------- type NoticeTestReq struct { g.Meta `path:"/notice/test" method:"post" tags:"Admin/Notice" summary:"测试通知(按规则或直接指定)"` RuleId uint64 `json:"ruleId"` // 按规则测试(0=手动指定) ChannelCode string `json:"channelCode"` // 手动:渠道编码 Target string `json:"target"` // 手动:设备key/token UserIds []uint64 `json:"userIds"` // 手动:或按用户 Title string `json:"title"` Body string `json:"body"` } type NoticeTestRes struct { Result bool `json:"result"` Message string `json:"message"` }