129 lines
4.3 KiB
Go
129 lines
4.3 KiB
Go
// 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"`
|
||
}
|