1、之前部分接口报错时事务没有回滚,有风险,已优化;
2、添加消息中心相关接口(公告消息、用户消息);
This commit is contained in:
parent
dc66375898
commit
b3569fad57
|
@ -183,6 +183,7 @@ func InventoryAllotDelete(c *gin.Context) {
|
||||||
// 1-删除采购订单表
|
// 1-删除采购订单表
|
||||||
err = begin.Delete(inventoryAllotOrder).Error
|
err = begin.Delete(inventoryAllotOrder).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
begin.Rollback()
|
||||||
logger.Error("order delete1 err:", logger.Field("err", err))
|
logger.Error("order delete1 err:", logger.Field("err", err))
|
||||||
app.Error(c, http.StatusInternalServerError, err, "删除失败:"+err.Error())
|
app.Error(c, http.StatusInternalServerError, err, "删除失败:"+err.Error())
|
||||||
return
|
return
|
||||||
|
@ -201,6 +202,7 @@ func InventoryAllotDelete(c *gin.Context) {
|
||||||
if len(commodities) != 0 {
|
if len(commodities) != 0 {
|
||||||
err = begin.Delete(&commodities).Error
|
err = begin.Delete(&commodities).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
begin.Rollback()
|
||||||
logger.Error("更新商品订单信息-删除 error")
|
logger.Error("更新商品订单信息-删除 error")
|
||||||
app.Error(c, http.StatusInternalServerError, err, "删除失败:"+err.Error())
|
app.Error(c, http.StatusInternalServerError, err, "删除失败:"+err.Error())
|
||||||
return
|
return
|
||||||
|
|
|
@ -187,6 +187,7 @@ func InventoryChangeDelete(c *gin.Context) {
|
||||||
// 1-删除采购订单表
|
// 1-删除采购订单表
|
||||||
err = begin.Delete(inventoryChangeOrder).Error
|
err = begin.Delete(inventoryChangeOrder).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
begin.Rollback()
|
||||||
logger.Error("order delete1 err:", logger.Field("err", err))
|
logger.Error("order delete1 err:", logger.Field("err", err))
|
||||||
app.Error(c, http.StatusInternalServerError, err, "删除失败:"+err.Error())
|
app.Error(c, http.StatusInternalServerError, err, "删除失败:"+err.Error())
|
||||||
return
|
return
|
||||||
|
@ -205,6 +206,7 @@ func InventoryChangeDelete(c *gin.Context) {
|
||||||
if len(commodities) != 0 {
|
if len(commodities) != 0 {
|
||||||
err = begin.Delete(&commodities).Error
|
err = begin.Delete(&commodities).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
begin.Rollback()
|
||||||
logger.Error("更新商品订单信息-删除 error")
|
logger.Error("更新商品订单信息-删除 error")
|
||||||
app.Error(c, http.StatusInternalServerError, err, "删除失败:"+err.Error())
|
app.Error(c, http.StatusInternalServerError, err, "删除失败:"+err.Error())
|
||||||
return
|
return
|
||||||
|
|
|
@ -181,6 +181,7 @@ func ProductInventoryDelete(c *gin.Context) {
|
||||||
// 1-删除采购订单表
|
// 1-删除采购订单表
|
||||||
err = begin.Delete(inventoryProductOrder).Error
|
err = begin.Delete(inventoryProductOrder).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
begin.Rollback()
|
||||||
logger.Error("order delete1 err:", logger.Field("err", err))
|
logger.Error("order delete1 err:", logger.Field("err", err))
|
||||||
app.Error(c, http.StatusInternalServerError, err, "删除失败:"+err.Error())
|
app.Error(c, http.StatusInternalServerError, err, "删除失败:"+err.Error())
|
||||||
return
|
return
|
||||||
|
@ -199,6 +200,7 @@ func ProductInventoryDelete(c *gin.Context) {
|
||||||
if len(commodities) != 0 {
|
if len(commodities) != 0 {
|
||||||
err = begin.Delete(&commodities).Error
|
err = begin.Delete(&commodities).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
begin.Rollback()
|
||||||
logger.Error("更新商品订单信息-删除 error")
|
logger.Error("更新商品订单信息-删除 error")
|
||||||
app.Error(c, http.StatusInternalServerError, err, "删除失败:"+err.Error())
|
app.Error(c, http.StatusInternalServerError, err, "删除失败:"+err.Error())
|
||||||
return
|
return
|
||||||
|
|
23
app/admin/apis/message/bus_message.go
Normal file
23
app/admin/apis/message/bus_message.go
Normal file
|
@ -0,0 +1,23 @@
|
||||||
|
package message
|
||||||
|
|
||||||
|
import "github.com/gin-gonic/gin"
|
||||||
|
|
||||||
|
func BusMessageCreate(c *gin.Context) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func BusMessageSetStatus(c *gin.Context) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func BusMessageDelete(c *gin.Context) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func BusMessageList(c *gin.Context) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
func BusMessageEdit(c *gin.Context) {
|
||||||
|
|
||||||
|
}
|
560
app/admin/apis/message/sys_message.go
Normal file
560
app/admin/apis/message/sys_message.go
Normal file
|
@ -0,0 +1,560 @@
|
||||||
|
package message
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
"go-admin/app/admin/models"
|
||||||
|
orm "go-admin/common/global"
|
||||||
|
"go-admin/logger"
|
||||||
|
"go-admin/tools/app"
|
||||||
|
"net/http"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// SysMessageCreate 新增公告消息
|
||||||
|
// @Summary 新增公告消息
|
||||||
|
// @Tags 消息中心,V1.5.0
|
||||||
|
// @Produce json
|
||||||
|
// @Accept json
|
||||||
|
// @Param request body models.SysMessageCreateReq true "新增公告消息模型"
|
||||||
|
// @Success 200 {object} models.SysMessageCreateResp
|
||||||
|
// @Router /api/v1/sys_message/create [post]
|
||||||
|
func SysMessageCreate(c *gin.Context) {
|
||||||
|
var req models.SysMessageCreateReq
|
||||||
|
|
||||||
|
// 1. 参数绑定
|
||||||
|
if err := c.ShouldBindJSON(&req); err != nil {
|
||||||
|
app.Error(c, http.StatusBadRequest, nil, "参数错误: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. 解析时间
|
||||||
|
var startTimePtr, endTimePtr *time.Time
|
||||||
|
var parsedStartTime, parsedEndTime time.Time
|
||||||
|
var err error
|
||||||
|
|
||||||
|
if req.StartTime != "" {
|
||||||
|
parsedStartTime, err = time.Parse("2006-01-02 15:04:05", req.StartTime)
|
||||||
|
if err != nil {
|
||||||
|
app.Error(c, http.StatusBadRequest, nil, "StartTime 格式错误,应为 YYYY-MM-DD HH:MM:SS:111")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
startTimePtr = &parsedStartTime
|
||||||
|
}
|
||||||
|
|
||||||
|
if req.EndTime != "" {
|
||||||
|
parsedEndTime, err = time.Parse("2006-01-02 15:04:05", req.EndTime)
|
||||||
|
if err != nil {
|
||||||
|
app.Error(c, http.StatusBadRequest, nil, "EndTime 格式错误,应为 YYYY-MM-DD HH:MM:SS")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
endTimePtr = &parsedEndTime
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. 插入 system_message_config(公告)
|
||||||
|
message := models.SystemMessageConfig{
|
||||||
|
MessageType: models.AnnouncementMessageType,
|
||||||
|
Title: req.Title,
|
||||||
|
ContentTemplate: req.ContentTemplate,
|
||||||
|
Level: req.Level,
|
||||||
|
DisplayMode: req.DisplayMode,
|
||||||
|
StartTime: startTimePtr,
|
||||||
|
EndTime: endTimePtr,
|
||||||
|
Status: req.Status,
|
||||||
|
}
|
||||||
|
|
||||||
|
if err = orm.Eloquent.Create(&message).Error; err != nil {
|
||||||
|
app.Error(c, http.StatusInternalServerError, nil, "创建公告失败: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 4. 插入 system_message_target
|
||||||
|
target := models.SystemMessageTarget{
|
||||||
|
MessageConfigID: uint(message.ID),
|
||||||
|
TargetType: req.TargetType,
|
||||||
|
TargetID: req.TargetID,
|
||||||
|
}
|
||||||
|
if err = orm.Eloquent.Create(&target).Error; err != nil {
|
||||||
|
app.Error(c, http.StatusInternalServerError, nil, "接收对象配置失败: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 5. 判断是否需要立即下发用户消息
|
||||||
|
needPushNow := (startTimePtr == nil || !parsedStartTime.After(time.Now())) && req.Status == 1
|
||||||
|
if needPushNow {
|
||||||
|
var userIDs []int64
|
||||||
|
|
||||||
|
switch req.TargetType {
|
||||||
|
case models.TargetTypeByAll: // 全员
|
||||||
|
err = orm.Eloquent.Table("sys_user").Where("deleted_at IS NULL").Pluck("user_id", &userIDs).Error
|
||||||
|
if err != nil {
|
||||||
|
app.Error(c, http.StatusInternalServerError, nil, "获取全员用户失败: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case models.TargetTypeByRole: // 角色
|
||||||
|
err = orm.Eloquent.Table("sys_user").
|
||||||
|
Where("role_id = ? AND deleted_at IS NULL", req.TargetID).
|
||||||
|
Pluck("user_id", &userIDs).Error
|
||||||
|
if err != nil {
|
||||||
|
app.Error(c, http.StatusInternalServerError, nil, "获取角色用户失败: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case models.TargetTypeByUser: // 单个用户
|
||||||
|
if req.TargetID != 0 {
|
||||||
|
userIDs = []int64{req.TargetID}
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
app.Error(c, http.StatusInternalServerError, nil, "接收对象类型有误,不在取值范围")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 构造 system_user_message 批量插入
|
||||||
|
var userMessages []models.SystemUserMessage
|
||||||
|
for _, uid := range userIDs {
|
||||||
|
userMessages = append(userMessages, models.SystemUserMessage{
|
||||||
|
UserID: uid,
|
||||||
|
MessageConfigID: uint(message.ID),
|
||||||
|
MessageType: models.AnnouncementMessageType,
|
||||||
|
Title: message.Title,
|
||||||
|
Content: message.ContentTemplate,
|
||||||
|
IsRead: false,
|
||||||
|
IsVisible: true,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(userMessages) > 0 {
|
||||||
|
if err = orm.Eloquent.Create(&userMessages).Error; err != nil {
|
||||||
|
app.Error(c, http.StatusInternalServerError, nil, "写入用户消息失败: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// 6. 成功响应
|
||||||
|
app.OK(c, models.SysMessageCreateResp{ID: message.ID}, "新增成功")
|
||||||
|
}
|
||||||
|
|
||||||
|
// SysMessageEdit 编辑公告消息
|
||||||
|
// @Summary 编辑公告消息(仅草稿可编辑)
|
||||||
|
// @Tags 消息中心,V1.5.0
|
||||||
|
// @Accept json
|
||||||
|
// @Produce json
|
||||||
|
// @Param request body models.SysMessageEditReq true "编辑公告消息模型"
|
||||||
|
// @Success 200 {object} models.SysMessageCreateResp
|
||||||
|
// @Router /api/v1/sys_message/edit [post]
|
||||||
|
func SysMessageEdit(c *gin.Context) {
|
||||||
|
var req models.SysMessageEditReq
|
||||||
|
|
||||||
|
// 1. 参数绑定
|
||||||
|
if err := c.ShouldBindJSON(&req); err != nil {
|
||||||
|
app.Error(c, http.StatusBadRequest, nil, "参数错误: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if req.ID == 0 {
|
||||||
|
app.Error(c, http.StatusBadRequest, nil, "参数错误: 缺少ID")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 2. 查询原公告(草稿)
|
||||||
|
var message models.SystemMessageConfig
|
||||||
|
if err := orm.Eloquent.Where("id = ? AND message_type = ?", req.ID, models.AnnouncementMessageType).First(&message).Error; err != nil {
|
||||||
|
app.Error(c, http.StatusBadRequest, nil, "公告不存在")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if message.Status != models.MessageStatusOnDraft {
|
||||||
|
app.Error(c, http.StatusBadRequest, nil, "仅草稿状态的公告可以编辑")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 3. 解析时间
|
||||||
|
var startTimePtr, endTimePtr *time.Time
|
||||||
|
var parsedStartTime, parsedEndTime time.Time
|
||||||
|
var err error
|
||||||
|
|
||||||
|
if req.StartTime != "" {
|
||||||
|
parsedStartTime, err = time.Parse("2006-01-02 15:04:05", req.StartTime)
|
||||||
|
if err != nil {
|
||||||
|
app.Error(c, http.StatusBadRequest, nil, "StartTime 格式错误,应为 YYYY-MM-DD HH:MM:SS")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
startTimePtr = &parsedStartTime
|
||||||
|
}
|
||||||
|
if req.EndTime != "" {
|
||||||
|
parsedEndTime, err = time.Parse("2006-01-02 15:04:05", req.EndTime)
|
||||||
|
if err != nil {
|
||||||
|
app.Error(c, http.StatusBadRequest, nil, "EndTime 格式错误,应为 YYYY-MM-DD HH:MM:SS")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
endTimePtr = &parsedEndTime
|
||||||
|
}
|
||||||
|
|
||||||
|
begin := orm.Eloquent.Begin()
|
||||||
|
// 4. 更新公告主表
|
||||||
|
update := map[string]interface{}{
|
||||||
|
"title": req.Title,
|
||||||
|
"content_template": req.ContentTemplate,
|
||||||
|
"level": req.Level,
|
||||||
|
"display_mode": req.DisplayMode,
|
||||||
|
"start_time": startTimePtr,
|
||||||
|
"end_time": endTimePtr,
|
||||||
|
"status": req.Status,
|
||||||
|
}
|
||||||
|
if err := begin.Model(&models.SystemMessageConfig{}).Where("id = ?", req.ID).Updates(update).Error; err != nil {
|
||||||
|
begin.Rollback()
|
||||||
|
app.Error(c, http.StatusInternalServerError, nil, "更新公告失败: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 5. 更新接收对象(删除再插入)
|
||||||
|
if err := begin.Where("message_config_id = ?", req.ID).Delete(&models.SystemMessageTarget{}).Error; err != nil {
|
||||||
|
begin.Rollback()
|
||||||
|
app.Error(c, http.StatusInternalServerError, nil, "更新接收对象失败: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
newTarget := models.SystemMessageTarget{
|
||||||
|
MessageConfigID: req.ID,
|
||||||
|
TargetType: req.TargetType,
|
||||||
|
TargetID: req.TargetID,
|
||||||
|
}
|
||||||
|
if err := begin.Create(&newTarget).Error; err != nil {
|
||||||
|
begin.Rollback()
|
||||||
|
app.Error(c, http.StatusInternalServerError, nil, "写入接收对象失败: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
err = begin.Commit().Error
|
||||||
|
if err != nil {
|
||||||
|
begin.Rollback()
|
||||||
|
logger.Error("SysMessageDelete commit err:", logger.Field("err", err))
|
||||||
|
app.Error(c, http.StatusInternalServerError, nil, "编辑公告失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 6. 判断是否需要立即下发消息
|
||||||
|
needPushNow := (startTimePtr == nil || !parsedStartTime.After(time.Now())) && req.Status == models.MessageStart
|
||||||
|
if needPushNow {
|
||||||
|
var userIDs []int64
|
||||||
|
switch req.TargetType {
|
||||||
|
case models.TargetTypeByAll:
|
||||||
|
err = orm.Eloquent.Table("sys_user").
|
||||||
|
Where("deleted_at IS NULL").
|
||||||
|
Pluck("user_id", &userIDs).Error
|
||||||
|
case models.TargetTypeByRole:
|
||||||
|
err = orm.Eloquent.Table("sys_user").
|
||||||
|
Where("role_id = ? AND deleted_at IS NULL", req.TargetID).
|
||||||
|
Pluck("user_id", &userIDs).Error
|
||||||
|
case models.TargetTypeByUser:
|
||||||
|
if req.TargetID != 0 {
|
||||||
|
userIDs = []int64{req.TargetID}
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
app.Error(c, http.StatusInternalServerError, nil, "接收对象类型无效")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
if err != nil {
|
||||||
|
app.Error(c, http.StatusInternalServerError, nil, "获取用户失败: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 构建用户消息记录
|
||||||
|
var userMessages []models.SystemUserMessage
|
||||||
|
for _, uid := range userIDs {
|
||||||
|
userMessages = append(userMessages, models.SystemUserMessage{
|
||||||
|
UserID: uid,
|
||||||
|
MessageConfigID: req.ID,
|
||||||
|
MessageType: models.AnnouncementMessageType,
|
||||||
|
Title: req.Title,
|
||||||
|
Content: req.ContentTemplate,
|
||||||
|
IsRead: false,
|
||||||
|
IsVisible: true,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
if len(userMessages) > 0 {
|
||||||
|
if err := orm.Eloquent.Create(&userMessages).Error; err != nil {
|
||||||
|
app.Error(c, http.StatusInternalServerError, nil, "写入用户消息失败: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
app.OK(c, models.SysMessageCreateResp{ID: uint32(req.ID)}, "编辑成功")
|
||||||
|
}
|
||||||
|
|
||||||
|
// SysMessageSetStatus 设置公告状态(启用/禁用)
|
||||||
|
// @Summary 设置公告状态
|
||||||
|
// @Tags 消息中心,V1.5.0
|
||||||
|
// @Accept json
|
||||||
|
// @Produce json
|
||||||
|
// @Param request body models.SysMessageSetStatusReq true "状态更新请求"
|
||||||
|
// @Success 200 {object} app.Response
|
||||||
|
// @Router /api/v1/sys_message/set_status [post]
|
||||||
|
func SysMessageSetStatus(c *gin.Context) {
|
||||||
|
var req models.SysMessageSetStatusReq
|
||||||
|
if err := c.ShouldBindJSON(&req); err != nil {
|
||||||
|
app.Error(c, http.StatusBadRequest, nil, "参数错误: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var config models.SystemMessageConfig
|
||||||
|
if err := orm.Eloquent.Where("id = ? AND message_type = ?", req.ID, 1).First(&config).Error; err != nil {
|
||||||
|
app.Error(c, http.StatusNotFound, nil, "公告不存在")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 校验状态切换合法性
|
||||||
|
switch req.Status {
|
||||||
|
case 1: // 启用
|
||||||
|
if config.Status != models.MessageStatusOnDraft && config.Status != models.MessageStatusOnDisable {
|
||||||
|
app.Error(c, http.StatusBadRequest, nil, "只有草稿或禁用状态才能启用")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case 2: // 禁用
|
||||||
|
if config.Status != models.MessageStatusOnStart {
|
||||||
|
app.Error(c, http.StatusBadRequest, nil, "只有启用状态才能禁用")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
app.Error(c, http.StatusBadRequest, nil, "不支持的目标状态")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 状态更新
|
||||||
|
if err := orm.Eloquent.Model(&config).Update("status", req.Status).Error; err != nil {
|
||||||
|
app.Error(c, http.StatusInternalServerError, nil, "状态更新失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 状态逻辑处理
|
||||||
|
if req.Status == models.MessageStart {
|
||||||
|
// ✅ 启用逻辑:若 start_time 已开始 → 插入或恢复用户消息
|
||||||
|
if config.StartTime == nil || config.StartTime.Before(time.Now()) {
|
||||||
|
var target models.SystemMessageTarget
|
||||||
|
if err := orm.Eloquent.Where("message_config_id = ?", config.ID).First(&target).Error; err != nil {
|
||||||
|
app.Error(c, http.StatusInternalServerError, nil, "接收对象未配置")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var userIDs []int64
|
||||||
|
switch target.TargetType {
|
||||||
|
case models.TargetTypeByAll: // 全员
|
||||||
|
err := orm.Eloquent.Table("sys_user").Where("deleted_at IS NULL").Pluck("user_id", &userIDs).Error
|
||||||
|
if err != nil {
|
||||||
|
app.Error(c, http.StatusInternalServerError, nil, "获取全员用户失败: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case models.TargetTypeByRole: // 角色
|
||||||
|
err := orm.Eloquent.Table("sys_user").
|
||||||
|
Where("role_id = ? AND deleted_at IS NULL", target.TargetID).
|
||||||
|
Pluck("user_id", &userIDs).Error
|
||||||
|
if err != nil {
|
||||||
|
app.Error(c, http.StatusInternalServerError, nil, "获取角色用户失败: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
case models.TargetTypeByUser: // 单个用户
|
||||||
|
if target.TargetType != 0 {
|
||||||
|
userIDs = []int64{target.TargetID}
|
||||||
|
}
|
||||||
|
default:
|
||||||
|
app.Error(c, http.StatusInternalServerError, nil, "接收对象类型有误,不在取值范围")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 已存在的 user_id
|
||||||
|
var existedUserIDs []int64
|
||||||
|
orm.Eloquent.Table("system_user_message").
|
||||||
|
Where("message_config_id = ? AND user_id IN (?)", config.ID, userIDs).
|
||||||
|
Pluck("user_id", &existedUserIDs)
|
||||||
|
|
||||||
|
existedSet := make(map[int64]struct{})
|
||||||
|
for _, uid := range existedUserIDs {
|
||||||
|
existedSet[uid] = struct{}{}
|
||||||
|
}
|
||||||
|
|
||||||
|
var toInsert []models.SystemUserMessage
|
||||||
|
var toUpdateIDs []int64
|
||||||
|
|
||||||
|
for _, uid := range userIDs {
|
||||||
|
if _, ok := existedSet[uid]; ok {
|
||||||
|
toUpdateIDs = append(toUpdateIDs, uid)
|
||||||
|
} else {
|
||||||
|
toInsert = append(toInsert, models.SystemUserMessage{
|
||||||
|
UserID: uid,
|
||||||
|
MessageConfigID: uint(config.ID),
|
||||||
|
MessageType: 1,
|
||||||
|
Title: config.Title,
|
||||||
|
Content: config.ContentTemplate,
|
||||||
|
IsRead: false,
|
||||||
|
IsVisible: true,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if len(toInsert) > 0 {
|
||||||
|
_ = orm.Eloquent.Create(&toInsert).Error
|
||||||
|
}
|
||||||
|
if len(toUpdateIDs) > 0 {
|
||||||
|
_ = orm.Eloquent.Model(&models.SystemUserMessage{}).
|
||||||
|
Where("message_config_id = ? AND user_id IN (?)", config.ID, toUpdateIDs).
|
||||||
|
Update("is_visible", true).Error
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else if req.Status == models.MessageStop {
|
||||||
|
// ✅ 禁用逻辑:隐藏用户已发送的公告消息
|
||||||
|
_ = orm.Eloquent.Model(&models.SystemUserMessage{}).
|
||||||
|
Where("message_config_id = ?", config.ID).
|
||||||
|
Update("is_visible", false).Error
|
||||||
|
}
|
||||||
|
|
||||||
|
app.OK(c, nil, "状态更新成功")
|
||||||
|
}
|
||||||
|
|
||||||
|
// SysMessageDelete 删除公告消息(草稿/禁用/过期状态可删)
|
||||||
|
// @Summary 删除公告消息
|
||||||
|
// @Tags 消息中心,V1.5.0
|
||||||
|
// @Accept json
|
||||||
|
// @Produce json
|
||||||
|
// @Param request body models.SysMessageDeleteReq true "删除公告请求"
|
||||||
|
// @Success 200 {object} app.Response
|
||||||
|
// @Router /api/v1/sys_message/delete [post]
|
||||||
|
func SysMessageDelete(c *gin.Context) {
|
||||||
|
var req models.SysMessageDeleteReq
|
||||||
|
if err := c.ShouldBindJSON(&req); err != nil {
|
||||||
|
app.Error(c, http.StatusBadRequest, nil, "参数错误: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var config models.SystemMessageConfig
|
||||||
|
if err := orm.Eloquent.Where("id = ? AND message_type = ?", req.ID, models.AnnouncementMessageType).
|
||||||
|
First(&config).Error; err != nil {
|
||||||
|
app.Error(c, http.StatusNotFound, nil, "公告不存在")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if config.Status != models.MessageStatusOnDraft && config.Status != models.MessageStatusOnDisable &&
|
||||||
|
config.Status != models.MessageStatusOnExpire {
|
||||||
|
app.Error(c, http.StatusBadRequest, nil, "仅草稿、禁用、已过期状态可删除")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
begin := orm.Eloquent.Begin()
|
||||||
|
// 删除主配置(软删除)
|
||||||
|
if err := begin.Delete(&config).Error; err != nil {
|
||||||
|
begin.Rollback()
|
||||||
|
app.Error(c, http.StatusInternalServerError, nil, "删除公告失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除接收对象配置
|
||||||
|
if err := begin.Where("message_config_id = ?", config.ID).
|
||||||
|
Delete(&models.SystemMessageTarget{}).Error; err != nil {
|
||||||
|
begin.Rollback()
|
||||||
|
app.Error(c, http.StatusInternalServerError, nil, "删除公告失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// ✅ 更新用户消息为不可见(但保留)
|
||||||
|
if err := begin.Model(&models.SystemUserMessage{}).
|
||||||
|
Where("message_config_id = ?", config.ID).
|
||||||
|
Update("is_visible", false).Error; err != nil {
|
||||||
|
begin.Rollback()
|
||||||
|
app.Error(c, http.StatusInternalServerError, nil, "删除公告失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
err := begin.Commit().Error
|
||||||
|
if err != nil {
|
||||||
|
begin.Rollback()
|
||||||
|
logger.Error("SysMessageDelete commit err:", logger.Field("err", err))
|
||||||
|
app.Error(c, http.StatusInternalServerError, nil, "删除公告失败")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
app.OK(c, nil, "删除成功")
|
||||||
|
}
|
||||||
|
|
||||||
|
// SysMessageList 公告消息列表
|
||||||
|
// @Summary 公告消息列表
|
||||||
|
// @Tags 消息中心,V1.5.0
|
||||||
|
// @Accept json
|
||||||
|
// @Produce json
|
||||||
|
// @Param request body models.SysMessageListReq true "查询条件"
|
||||||
|
// @Success 200 {object} models.SysMessageListResp
|
||||||
|
// @Router /api/v1/sys_message/list [post]
|
||||||
|
func SysMessageList(c *gin.Context) {
|
||||||
|
var req models.SysMessageListReq
|
||||||
|
if err := c.ShouldBindJSON(&req); err != nil {
|
||||||
|
app.Error(c, http.StatusBadRequest, nil, "参数错误: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 分页默认处理
|
||||||
|
if req.Page <= 0 {
|
||||||
|
req.Page = 1
|
||||||
|
}
|
||||||
|
if req.PageSize <= 0 {
|
||||||
|
req.PageSize = 10
|
||||||
|
}
|
||||||
|
|
||||||
|
db := orm.Eloquent.Table("system_message_config").
|
||||||
|
Where("message_type = ?", 1)
|
||||||
|
|
||||||
|
if req.Title != "" {
|
||||||
|
db = db.Where("title LIKE ?", "%"+req.Title+"%")
|
||||||
|
}
|
||||||
|
if req.Level != 0 {
|
||||||
|
db = db.Where("level = ?", req.Level)
|
||||||
|
}
|
||||||
|
if req.DisplayMode != 0 {
|
||||||
|
db = db.Where("display_mode = ?", req.DisplayMode)
|
||||||
|
}
|
||||||
|
if req.Status != 0 {
|
||||||
|
db = db.Where("status = ?", req.Status)
|
||||||
|
}
|
||||||
|
if req.TargetType != 0 {
|
||||||
|
subQuery := orm.Eloquent.Table("system_message_target").
|
||||||
|
Select("message_config_id").
|
||||||
|
Where("target_type = ?", req.TargetType)
|
||||||
|
db = db.Where("id IN (?)", subQuery)
|
||||||
|
}
|
||||||
|
|
||||||
|
var total int64
|
||||||
|
if err := db.Count(&total).Error; err != nil {
|
||||||
|
app.Error(c, http.StatusInternalServerError, nil, "统计失败: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var list []models.SystemMessageConfig
|
||||||
|
if err := db.
|
||||||
|
Order("created_at DESC").
|
||||||
|
Offset((req.Page - 1) * req.PageSize).
|
||||||
|
Limit(req.PageSize).
|
||||||
|
Find(&list).Error; err != nil {
|
||||||
|
app.Error(c, http.StatusInternalServerError, nil, "查询失败: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// 转换为展示数据
|
||||||
|
var items []models.SysAnnouncementItem
|
||||||
|
for _, cfg := range list {
|
||||||
|
items = append(items, models.SysAnnouncementItem{
|
||||||
|
ID: cfg.ID,
|
||||||
|
Title: cfg.Title,
|
||||||
|
ContentTemplate: cfg.ContentTemplate,
|
||||||
|
Level: cfg.Level,
|
||||||
|
DisplayMode: cfg.DisplayMode,
|
||||||
|
StartTime: cfg.StartTime,
|
||||||
|
EndTime: cfg.EndTime,
|
||||||
|
Status: cfg.Status,
|
||||||
|
CreatedAt: cfg.CreatedAt,
|
||||||
|
UpdatedAt: cfg.UpdatedAt,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
resp := models.SysMessageListResp{
|
||||||
|
List: items,
|
||||||
|
Total: total,
|
||||||
|
Page: req.Page,
|
||||||
|
PageSize: req.PageSize,
|
||||||
|
}
|
||||||
|
|
||||||
|
app.OK(c, resp, "查询成功")
|
||||||
|
}
|
110
app/admin/apis/message/user_message.go
Normal file
110
app/admin/apis/message/user_message.go
Normal file
|
@ -0,0 +1,110 @@
|
||||||
|
package message
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
"go-admin/app/admin/models"
|
||||||
|
orm "go-admin/common/global"
|
||||||
|
"go-admin/tools"
|
||||||
|
"go-admin/tools/app"
|
||||||
|
"net/http"
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
// UserMessageList 用户消息列表
|
||||||
|
// @Summary 用户消息列表
|
||||||
|
// @Description 获取当前用户的消息记录
|
||||||
|
// @Tags 消息中心,V1.5.0
|
||||||
|
// @Accept json
|
||||||
|
// @Produce json
|
||||||
|
// @Param data body models.UserMessageListReq true "消息查询参数"
|
||||||
|
// @Success 200 {object} models.UserMessageListResp
|
||||||
|
// @Router /api/v1/user_message/list [post]
|
||||||
|
func UserMessageList(c *gin.Context) {
|
||||||
|
var req models.UserMessageListReq
|
||||||
|
if err := c.ShouldBindJSON(&req); err != nil {
|
||||||
|
app.Error(c, http.StatusBadRequest, nil, "参数错误: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if req.Page <= 0 {
|
||||||
|
req.Page = 1
|
||||||
|
}
|
||||||
|
if req.PageSize <= 0 {
|
||||||
|
req.PageSize = 10
|
||||||
|
}
|
||||||
|
|
||||||
|
userID := tools.GetUserId(c)
|
||||||
|
query := orm.Eloquent.Where("user_id = ? AND is_visible = ?", userID, true)
|
||||||
|
|
||||||
|
if req.IsRead != 0 && req.IsRead != 1 {
|
||||||
|
app.Error(c, http.StatusBadRequest, nil, "不支持的目标状态")
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
query = query.Where("is_read = ?", req.IsRead)
|
||||||
|
}
|
||||||
|
|
||||||
|
var total int64
|
||||||
|
if err := query.Model(&models.SystemUserMessage{}).Count(&total).Error; err != nil {
|
||||||
|
app.Error(c, http.StatusInternalServerError, nil, "查询总数失败: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var messages []models.SystemUserMessage
|
||||||
|
if err := query.Order("created_at desc").
|
||||||
|
Offset((req.Page - 1) * req.PageSize).
|
||||||
|
Limit(req.PageSize).
|
||||||
|
Find(&messages).Error; err != nil {
|
||||||
|
app.Error(c, http.StatusInternalServerError, nil, "查询列表失败: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
app.OK(c, models.UserMessageListResp{
|
||||||
|
List: messages,
|
||||||
|
Total: total,
|
||||||
|
Page: req.Page,
|
||||||
|
PageSize: req.PageSize,
|
||||||
|
}, "查询成功")
|
||||||
|
}
|
||||||
|
|
||||||
|
// UserMessageSetStatus 设置用户消息为已读(支持单条或全部)
|
||||||
|
// @Summary 设置用户消息为已读
|
||||||
|
// @Description 设为单条或全部已读
|
||||||
|
// @Tags 消息中心,V1.5.0
|
||||||
|
// @Accept json
|
||||||
|
// @Produce json
|
||||||
|
// @Param data body models.UserMessageSetStatusReq true "设置参数"
|
||||||
|
// @Success 200 {object} app.Response
|
||||||
|
// @Router /api/v1/user_message/set_status [post]
|
||||||
|
func UserMessageSetStatus(c *gin.Context) {
|
||||||
|
var req models.UserMessageSetStatusReq
|
||||||
|
if err := c.ShouldBindJSON(&req); err != nil {
|
||||||
|
app.Error(c, http.StatusBadRequest, nil, "参数错误: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
userID := tools.GetUserId(c)
|
||||||
|
now := time.Now()
|
||||||
|
query := orm.Eloquent.Model(&models.SystemUserMessage{}).
|
||||||
|
Where("user_id = ? AND is_read = ?", userID, false)
|
||||||
|
|
||||||
|
if req.ReadAll {
|
||||||
|
// 全部设为已读
|
||||||
|
} else {
|
||||||
|
if req.ID == 0 {
|
||||||
|
app.Error(c, http.StatusBadRequest, nil, "参数错误: 未提供消息ID")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
query = query.Where("id = ?", req.ID)
|
||||||
|
}
|
||||||
|
|
||||||
|
err := query.Updates(map[string]interface{}{
|
||||||
|
"is_read": true,
|
||||||
|
"read_time": &now,
|
||||||
|
}).Error
|
||||||
|
if err != nil {
|
||||||
|
app.Error(c, http.StatusInternalServerError, nil, "设置失败: "+err.Error())
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
app.OK(c, nil, "设置成功")
|
||||||
|
}
|
|
@ -518,6 +518,7 @@ func ErpPurchaseDelete(c *gin.Context) {
|
||||||
// 1-删除采购订单表
|
// 1-删除采购订单表
|
||||||
err = begin.Delete(erpPurchaseOrder).Error
|
err = begin.Delete(erpPurchaseOrder).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
begin.Rollback()
|
||||||
logger.Error("order delete1 err:", logger.Field("err", err))
|
logger.Error("order delete1 err:", logger.Field("err", err))
|
||||||
app.Error(c, http.StatusInternalServerError, err, "删除失败:"+err.Error())
|
app.Error(c, http.StatusInternalServerError, err, "删除失败:"+err.Error())
|
||||||
return
|
return
|
||||||
|
@ -535,6 +536,7 @@ func ErpPurchaseDelete(c *gin.Context) {
|
||||||
if len(commodities) != 0 {
|
if len(commodities) != 0 {
|
||||||
err = begin.Delete(&commodities).Error
|
err = begin.Delete(&commodities).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
begin.Rollback()
|
||||||
logger.Error("更新商品订单信息-删除 error")
|
logger.Error("更新商品订单信息-删除 error")
|
||||||
app.Error(c, http.StatusInternalServerError, err, "删除失败:"+err.Error())
|
app.Error(c, http.StatusInternalServerError, err, "删除失败:"+err.Error())
|
||||||
return
|
return
|
||||||
|
|
|
@ -216,6 +216,7 @@ func ErpPurchaseChangeDelete(c *gin.Context) {
|
||||||
// 1-删除采购订单表
|
// 1-删除采购订单表
|
||||||
err = begin.Delete(erpPurchaseChangeOrder).Error
|
err = begin.Delete(erpPurchaseChangeOrder).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
begin.Rollback()
|
||||||
logger.Error("order delete1 err:", logger.Field("err", err))
|
logger.Error("order delete1 err:", logger.Field("err", err))
|
||||||
app.Error(c, http.StatusInternalServerError, err, "删除失败:"+err.Error())
|
app.Error(c, http.StatusInternalServerError, err, "删除失败:"+err.Error())
|
||||||
return
|
return
|
||||||
|
@ -233,6 +234,7 @@ func ErpPurchaseChangeDelete(c *gin.Context) {
|
||||||
if len(commodities) != 0 {
|
if len(commodities) != 0 {
|
||||||
err = begin.Delete(&commodities).Error
|
err = begin.Delete(&commodities).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
begin.Rollback()
|
||||||
logger.Error("更新商品订单信息-删除 error")
|
logger.Error("更新商品订单信息-删除 error")
|
||||||
app.Error(c, http.StatusInternalServerError, err, "删除失败:"+err.Error())
|
app.Error(c, http.StatusInternalServerError, err, "删除失败:"+err.Error())
|
||||||
return
|
return
|
||||||
|
|
|
@ -178,6 +178,7 @@ func DeleteRepair(c *gin.Context) {
|
||||||
// 1-删除维修订单表
|
// 1-删除维修订单表
|
||||||
err = begin.Delete(repairOrder).Error
|
err = begin.Delete(repairOrder).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
begin.Rollback()
|
||||||
logger.Error("order delete1 err:", logger.Field("err", err))
|
logger.Error("order delete1 err:", logger.Field("err", err))
|
||||||
app.Error(c, http.StatusInternalServerError, err, "删除失败:"+err.Error())
|
app.Error(c, http.StatusInternalServerError, err, "删除失败:"+err.Error())
|
||||||
return
|
return
|
||||||
|
@ -195,6 +196,7 @@ func DeleteRepair(c *gin.Context) {
|
||||||
if len(commodities) != 0 {
|
if len(commodities) != 0 {
|
||||||
err = begin.Delete(&commodities).Error
|
err = begin.Delete(&commodities).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
begin.Rollback()
|
||||||
logger.Error("更新商品订单信息-删除 error")
|
logger.Error("更新商品订单信息-删除 error")
|
||||||
app.Error(c, http.StatusInternalServerError, err, "删除失败:"+err.Error())
|
app.Error(c, http.StatusInternalServerError, err, "删除失败:"+err.Error())
|
||||||
return
|
return
|
||||||
|
|
170
app/admin/models/message.go
Normal file
170
app/admin/models/message.go
Normal file
|
@ -0,0 +1,170 @@
|
||||||
|
package models
|
||||||
|
|
||||||
|
import (
|
||||||
|
"time"
|
||||||
|
)
|
||||||
|
|
||||||
|
const (
|
||||||
|
AnnouncementMessageType = 1 // 公告消息
|
||||||
|
|
||||||
|
TargetTypeByAll = 1 // 接收对象类型:1=全员
|
||||||
|
TargetTypeByRole = 2 // 接收对象类型:2=角色
|
||||||
|
TargetTypeByUser = 3 // 接收对象类型:3=用户
|
||||||
|
|
||||||
|
MessageStatusOnDraft = 0 // 草稿
|
||||||
|
MessageStatusOnStart = 1 // 启用
|
||||||
|
MessageStatusOnDisable = 2 // 禁用
|
||||||
|
MessageStatusOnExpire = 3 // 已过期
|
||||||
|
|
||||||
|
MessageStart = 1 // 启用
|
||||||
|
MessageStop = 2 // 禁用
|
||||||
|
)
|
||||||
|
|
||||||
|
// SystemMessageConfig 消息配置主表(公告 + 业务统一)
|
||||||
|
type SystemMessageConfig struct {
|
||||||
|
Model
|
||||||
|
|
||||||
|
MessageType uint8 `json:"message_type"` // 消息类型:1=公告,2=业务
|
||||||
|
Title string `json:"title"` // 消息标题
|
||||||
|
ContentTemplate string `json:"content_template"` // 消息模板内容,支持{{变量}}
|
||||||
|
Level uint8 `json:"level"` // 消息等级:1=普通,2=重要,3=紧急
|
||||||
|
DisplayMode uint8 `json:"display_mode"` // 展示方式:1=弹窗,2=滚动,3=弹窗+滚动
|
||||||
|
StartTime *time.Time `json:"start_time,omitempty"` // 公告生效时间
|
||||||
|
EndTime *time.Time `json:"end_time,omitempty"` // 公告失效时间
|
||||||
|
BizType string `json:"biz_type,omitempty"` // 业务类型
|
||||||
|
Event string `json:"event,omitempty"` // 事件类型
|
||||||
|
Status uint8 `json:"status"` // 状态:0=草稿,1=启用,2=禁用,3=已过期
|
||||||
|
}
|
||||||
|
|
||||||
|
// SystemMessageTarget 接收对象配置表(支持角色/部门/用户/全员)
|
||||||
|
type SystemMessageTarget struct {
|
||||||
|
Model
|
||||||
|
|
||||||
|
MessageConfigID uint `json:"message_config_id"` // 对应消息配置 ID
|
||||||
|
TargetType uint8 `json:"target_type"` // 接收对象类型:1=全员,2=角色,3=用户
|
||||||
|
TargetID int64 `json:"target_id,omitempty"` // 对象ID(角色ID/用户ID)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SystemEventRegistry 业务事件注册表(用于事件枚举管理)
|
||||||
|
type SystemEventRegistry struct {
|
||||||
|
Model
|
||||||
|
|
||||||
|
BizType string `json:"biz_type"` // 业务类型
|
||||||
|
Event string `json:"event"` // 事件名
|
||||||
|
BizName string `json:"biz_name"` // 业务名称(展示用)
|
||||||
|
EventName string `json:"event_name"` // 事件名称(展示用)
|
||||||
|
Description string `json:"description"` // 说明
|
||||||
|
TemplateVariables string `json:"template_variables"` // 可用变量 JSON 字符串
|
||||||
|
IsEnabled bool `json:"is_enabled"` // 是否启用
|
||||||
|
}
|
||||||
|
|
||||||
|
// SystemUserMessage 用户收到的消息记录表(实际发送记录)
|
||||||
|
type SystemUserMessage struct {
|
||||||
|
Model
|
||||||
|
|
||||||
|
UserID int64 `json:"user_id"` // 接收用户ID
|
||||||
|
MessageConfigID uint `json:"message_config_id"` // 对应消息配置ID,可为空(被删时保留记录)
|
||||||
|
MessageType uint8 `json:"message_type"` // 消息类型:1=公告,2=业务
|
||||||
|
Title string `json:"title"` // 消息标题快照
|
||||||
|
Content string `json:"content"` // 渲染后内容
|
||||||
|
IsRead bool `json:"is_read"` // 是否阅读
|
||||||
|
ReadTime *time.Time `json:"read_time,omitempty"` // 阅读时间
|
||||||
|
IsVisible bool `json:"is_visible"` // 是否展示给用户
|
||||||
|
}
|
||||||
|
|
||||||
|
// SysMessageCreateReq 新增公告请求结构体
|
||||||
|
type SysMessageCreateReq struct {
|
||||||
|
Title string `json:"title" binding:"required"` // 消息标题
|
||||||
|
ContentTemplate string `json:"content_template" binding:"required"` // 消息内容
|
||||||
|
Level uint8 `json:"level" binding:"required,oneof=1 2 3"` // 消息等级:1=普通,2=重要,3=紧急
|
||||||
|
DisplayMode uint8 `json:"display_mode" binding:"required,oneof=1 2 3"` // 展示方式:1=弹窗,2=滚动,3=弹窗+滚动
|
||||||
|
StartTime string `json:"start_time,omitempty"` // 公告生效时间
|
||||||
|
EndTime string `json:"end_time,omitempty"` // 公告失效时间
|
||||||
|
Status uint8 `json:"status" binding:"required,oneof=0 1"` // 状态:0=草稿,1=启用
|
||||||
|
TargetType uint8 `json:"target_type" binding:"required,oneof=1 2 3"` // 接收对象类型:1=全员,2=角色,3=用户
|
||||||
|
TargetID int64 `json:"target_id,omitempty"` // 对象ID(角色ID/用户ID)
|
||||||
|
}
|
||||||
|
|
||||||
|
// SysMessageCreateResp 创建成功响应
|
||||||
|
type SysMessageCreateResp struct {
|
||||||
|
ID uint32 `json:"id"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// SysMessageEditReq 编辑公告消息-入参
|
||||||
|
type SysMessageEditReq struct {
|
||||||
|
ID uint `json:"id" binding:"required"` // 公告ID(必须)
|
||||||
|
Title string `json:"title" binding:"required"` // 标题
|
||||||
|
ContentTemplate string `json:"content_template" binding:"required"` // 内容模板
|
||||||
|
Level uint8 `json:"level" binding:"required,oneof=1 2 3"` // 重要等级
|
||||||
|
DisplayMode uint8 `json:"display_mode" binding:"required,oneof=1 2 3"` // 展示模式
|
||||||
|
StartTime string `json:"start_time"` // 生效时间(可空)
|
||||||
|
EndTime string `json:"end_time"` // 失效时间(可空)
|
||||||
|
Status uint8 `json:"status" binding:"required,oneof=0 1"` // 状态:0 草稿、1 启用
|
||||||
|
TargetType uint8 `json:"target_type" binding:"required,oneof=1 2 3"` // 接收对象类型:1=全员,2=角色,3=用户
|
||||||
|
TargetID int64 `json:"target_id,omitempty"` // 接收对象ID
|
||||||
|
}
|
||||||
|
|
||||||
|
// SysMessageListReq 公告消息列表-入参
|
||||||
|
type SysMessageListReq struct {
|
||||||
|
Title string `form:"title"` // 消息标题
|
||||||
|
Level uint8 `form:"level"` // 消息等级:1=普通,2=重要,3=紧急
|
||||||
|
DisplayMode uint8 `form:"display_mode"` // 展示方式:1=弹窗,2=滚动,3=弹窗+滚动
|
||||||
|
Status uint8 `form:"status"` // 状态:0=草稿,1=启用,2=禁用,3=已过期
|
||||||
|
TargetType uint8 `form:"target_type"` // 从接收对象配置表中筛选
|
||||||
|
Page int `form:"page,default=1"` // 页码
|
||||||
|
PageSize int `form:"page_size,default=10"` // 每页条数
|
||||||
|
}
|
||||||
|
|
||||||
|
// SysMessageListResp 公告消息列表-出参
|
||||||
|
type SysMessageListResp struct {
|
||||||
|
List []SysAnnouncementItem `json:"list"`
|
||||||
|
Total int64 `json:"total"` // 总条数
|
||||||
|
Page int `json:"page"` // 页码
|
||||||
|
PageSize int `json:"page_size"` // 每页条数
|
||||||
|
}
|
||||||
|
|
||||||
|
// SysAnnouncementItem 公告消息展示结构体
|
||||||
|
type SysAnnouncementItem struct {
|
||||||
|
ID uint32 `json:"id"`
|
||||||
|
CreatedAt time.Time `json:"created_at"`
|
||||||
|
UpdatedAt time.Time `json:"updated_at"`
|
||||||
|
Title string `json:"title"` // 消息标题
|
||||||
|
ContentTemplate string `json:"content_template"` // 消息内容
|
||||||
|
Level uint8 `json:"level"` // 消息等级:1=普通,2=重要,3=紧急
|
||||||
|
DisplayMode uint8 `json:"display_mode"` // 展示方式:1=弹窗,2=滚动,3=弹窗+滚动
|
||||||
|
StartTime *time.Time `json:"start_time,omitempty"` // 公告生效时间
|
||||||
|
EndTime *time.Time `json:"end_time,omitempty"` // 公告失效时间
|
||||||
|
Status uint8 `json:"status"` // 状态:0=草稿,1=启用,2=禁用,3=已过期
|
||||||
|
}
|
||||||
|
|
||||||
|
// SysMessageSetStatusReq 设置公告消息状态
|
||||||
|
type SysMessageSetStatusReq struct {
|
||||||
|
ID uint `json:"id" binding:"required"`
|
||||||
|
Status uint8 `json:"status" binding:"required"` // 目标状态:1=启用,2=禁用
|
||||||
|
}
|
||||||
|
|
||||||
|
// SysMessageDeleteReq 删除公告消息
|
||||||
|
type SysMessageDeleteReq struct {
|
||||||
|
ID uint `json:"id" binding:"required"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// UserMessageListReq 用户消息列表-入参
|
||||||
|
type UserMessageListReq struct {
|
||||||
|
IsRead int `json:"is_read"` // 0-未读;1-已读
|
||||||
|
Page int `json:"page"` // 页码
|
||||||
|
PageSize int `json:"page_size"` // 每页数量
|
||||||
|
}
|
||||||
|
|
||||||
|
// UserMessageListResp 用户消息列表-出参
|
||||||
|
type UserMessageListResp struct {
|
||||||
|
List []SystemUserMessage `json:"list"`
|
||||||
|
Total int64 `json:"total"`
|
||||||
|
Page int `json:"page"`
|
||||||
|
PageSize int `json:"page_size"`
|
||||||
|
}
|
||||||
|
|
||||||
|
// UserMessageSetStatusReq 用户阅读消息-入参
|
||||||
|
type UserMessageSetStatusReq struct {
|
||||||
|
ID uint `json:"id"` // 消息ID(可选,read_all 为 false 时必传)
|
||||||
|
ReadAll bool `json:"read_all"` // 是否设为全部已读
|
||||||
|
}
|
37
app/admin/router/message.go
Normal file
37
app/admin/router/message.go
Normal file
|
@ -0,0 +1,37 @@
|
||||||
|
package router
|
||||||
|
|
||||||
|
import (
|
||||||
|
"github.com/gin-gonic/gin"
|
||||||
|
"go-admin/app/admin/apis/message"
|
||||||
|
"go-admin/app/admin/middleware"
|
||||||
|
jwt "go-admin/pkg/jwtauth"
|
||||||
|
)
|
||||||
|
|
||||||
|
func registerMessageCenterRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
|
||||||
|
// 公告消息(列表、新增、启用/禁用、删除)
|
||||||
|
r1 := v1.Group("/sys_message").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
|
||||||
|
{
|
||||||
|
r1.POST("create", message.SysMessageCreate) // 新增
|
||||||
|
r1.POST("edit", message.SysMessageEdit) // 编辑
|
||||||
|
r1.POST("set_status", message.SysMessageSetStatus) // 启用/禁用
|
||||||
|
r1.POST("delete", message.SysMessageDelete) // 删除
|
||||||
|
r1.POST("list", message.SysMessageList) // 查询列表
|
||||||
|
}
|
||||||
|
|
||||||
|
// 业务消息(列表、新增、编辑、启用/禁用、删除)
|
||||||
|
r2 := v1.Group("/bus_message").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
|
||||||
|
{
|
||||||
|
r2.POST("create", message.BusMessageCreate) // 新增
|
||||||
|
r2.POST("edit", message.BusMessageEdit) // 编辑
|
||||||
|
r2.POST("delete", message.BusMessageDelete) // 删除
|
||||||
|
r2.POST("list", message.BusMessageList) // 查询列表
|
||||||
|
r2.POST("set_status", message.BusMessageSetStatus) // 启用/禁用
|
||||||
|
}
|
||||||
|
|
||||||
|
// 用户消息中心(列表、详情、阅读)
|
||||||
|
r3 := v1.Group("/user_message").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
|
||||||
|
{
|
||||||
|
r3.POST("list", message.UserMessageList) // 列表
|
||||||
|
r3.POST("set_status", message.UserMessageSetStatus) // 阅读
|
||||||
|
}
|
||||||
|
}
|
|
@ -119,4 +119,6 @@ func examplesCheckRoleRouter(r *gin.Engine, authMiddleware *jwtauth.GinJWTMiddle
|
||||||
registerMarketingManageRouter(v1, authMiddleware)
|
registerMarketingManageRouter(v1, authMiddleware)
|
||||||
// 维修管理
|
// 维修管理
|
||||||
registerRepairRouter(v1, authMiddleware)
|
registerRepairRouter(v1, authMiddleware)
|
||||||
|
// 消息中心
|
||||||
|
registerMessageCenterRouter(v1, authMiddleware)
|
||||||
}
|
}
|
||||||
|
|
610
docs/docs.go
610
docs/docs.go
|
@ -7267,6 +7267,171 @@ const docTemplate = `{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"/api/v1/sys_message/create": {
|
||||||
|
"post": {
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"消息中心,V1.5.0"
|
||||||
|
],
|
||||||
|
"summary": "新增公告消息",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "新增公告消息模型",
|
||||||
|
"name": "request",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.SysMessageCreateReq"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.SysMessageCreateResp"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/api/v1/sys_message/delete": {
|
||||||
|
"post": {
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"消息中心,V1.5.0"
|
||||||
|
],
|
||||||
|
"summary": "删除公告消息",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "删除公告请求",
|
||||||
|
"name": "request",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.SysMessageDeleteReq"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/app.Response"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/api/v1/sys_message/edit": {
|
||||||
|
"post": {
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"消息中心,V1.5.0"
|
||||||
|
],
|
||||||
|
"summary": "编辑公告消息(仅草稿可编辑)",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "编辑公告消息模型",
|
||||||
|
"name": "request",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.SysMessageEditReq"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.SysMessageCreateResp"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/api/v1/sys_message/list": {
|
||||||
|
"post": {
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"消息中心,V1.5.0"
|
||||||
|
],
|
||||||
|
"summary": "公告消息列表",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "查询条件",
|
||||||
|
"name": "request",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.SysMessageListReq"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.SysMessageListResp"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/api/v1/sys_message/set_status": {
|
||||||
|
"post": {
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"消息中心,V1.5.0"
|
||||||
|
],
|
||||||
|
"summary": "设置公告状态",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "状态更新请求",
|
||||||
|
"name": "request",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.SysMessageSetStatusReq"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/app.Response"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"/api/v1/syscategory": {
|
"/api/v1/syscategory": {
|
||||||
"post": {
|
"post": {
|
||||||
"description": "获取JSON",
|
"description": "获取JSON",
|
||||||
|
@ -7697,6 +7862,74 @@ const docTemplate = `{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"/api/v1/user_message/list": {
|
||||||
|
"post": {
|
||||||
|
"description": "获取当前用户的消息记录",
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"消息中心,V1.5.0"
|
||||||
|
],
|
||||||
|
"summary": "用户消息列表",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "消息查询参数",
|
||||||
|
"name": "data",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.UserMessageListReq"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.UserMessageListResp"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/api/v1/user_message/set_status": {
|
||||||
|
"post": {
|
||||||
|
"description": "设为单条或全部已读",
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"消息中心,V1.5.0"
|
||||||
|
],
|
||||||
|
"summary": "设置用户消息为已读",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "设置参数",
|
||||||
|
"name": "data",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.UserMessageSetStatusReq"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/app.Response"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"/login": {
|
"/login": {
|
||||||
"post": {
|
"post": {
|
||||||
"description": "获取token\nLoginHandler can be used by clients to get a jwt token.\nPayload needs to be json in the form of {\"username\": \"USERNAME\", \"password\": \"PASSWORD\"}.\nReply will be of the form {\"token\": \"TOKEN\"}.\ndev mode:It should be noted that all fields cannot be empty, and a value of 0 can be passed in addition to the account password\n注意:开发模式:需要注意全部字段不能为空,账号密码外可以传入0值",
|
"description": "获取token\nLoginHandler can be used by clients to get a jwt token.\nPayload needs to be json in the form of {\"username\": \"USERNAME\", \"password\": \"PASSWORD\"}.\nReply will be of the form {\"token\": \"TOKEN\"}.\ndev mode:It should be noted that all fields cannot be empty, and a value of 0 can be passed in addition to the account password\n注意:开发模式:需要注意全部字段不能为空,账号密码外可以传入0值",
|
||||||
|
@ -8315,6 +8548,10 @@ const docTemplate = `{
|
||||||
"description": "每页条数",
|
"description": "每页条数",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
|
"sort_type": {
|
||||||
|
"description": "排序类型:desc 降序、asc 升序",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
"start_time": {
|
"start_time": {
|
||||||
"description": "开始时间",
|
"description": "开始时间",
|
||||||
"type": "string"
|
"type": "string"
|
||||||
|
@ -21000,6 +21237,48 @@ const docTemplate = `{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"models.SysAnnouncementItem": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"content_template": {
|
||||||
|
"description": "消息内容",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"created_at": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"display_mode": {
|
||||||
|
"description": "展示方式:1=弹窗,2=滚动,3=弹窗+滚动",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"end_time": {
|
||||||
|
"description": "公告失效时间",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"id": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"level": {
|
||||||
|
"description": "消息等级:1=普通,2=重要,3=紧急",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"start_time": {
|
||||||
|
"description": "公告生效时间",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"description": "状态:0=草稿,1=启用,2=禁用,3=已过期",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"description": "消息标题",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"updated_at": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"models.SysCategory": {
|
"models.SysCategory": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
@ -21296,6 +21575,238 @@ const docTemplate = `{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"models.SysMessageCreateReq": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"content_template",
|
||||||
|
"display_mode",
|
||||||
|
"level",
|
||||||
|
"status",
|
||||||
|
"target_type",
|
||||||
|
"title"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"content_template": {
|
||||||
|
"description": "消息内容",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"display_mode": {
|
||||||
|
"description": "展示方式:1=弹窗,2=滚动,3=弹窗+滚动",
|
||||||
|
"type": "integer",
|
||||||
|
"enum": [
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"end_time": {
|
||||||
|
"description": "公告失效时间",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"level": {
|
||||||
|
"description": "消息等级:1=普通,2=重要,3=紧急",
|
||||||
|
"type": "integer",
|
||||||
|
"enum": [
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"start_time": {
|
||||||
|
"description": "公告生效时间",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"description": "状态:0=草稿,1=启用",
|
||||||
|
"type": "integer",
|
||||||
|
"enum": [
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"target_id": {
|
||||||
|
"description": "对象ID(角色ID/用户ID)",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"target_type": {
|
||||||
|
"description": "接收对象类型:1=全员,2=角色,3=用户",
|
||||||
|
"type": "integer",
|
||||||
|
"enum": [
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"description": "消息标题",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.SysMessageCreateResp": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"id": {
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.SysMessageDeleteReq": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"id"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"id": {
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.SysMessageEditReq": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"content_template",
|
||||||
|
"display_mode",
|
||||||
|
"id",
|
||||||
|
"level",
|
||||||
|
"status",
|
||||||
|
"target_type",
|
||||||
|
"title"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"content_template": {
|
||||||
|
"description": "内容模板",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"display_mode": {
|
||||||
|
"description": "展示模式",
|
||||||
|
"type": "integer",
|
||||||
|
"enum": [
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"end_time": {
|
||||||
|
"description": "失效时间(可空)",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"id": {
|
||||||
|
"description": "公告ID(必须)",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"level": {
|
||||||
|
"description": "重要等级",
|
||||||
|
"type": "integer",
|
||||||
|
"enum": [
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"start_time": {
|
||||||
|
"description": "生效时间(可空)",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"description": "状态:0 草稿、1 启用",
|
||||||
|
"type": "integer",
|
||||||
|
"enum": [
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"target_id": {
|
||||||
|
"description": "接收对象ID",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"target_type": {
|
||||||
|
"description": "接收对象类型:1=全员,2=角色,3=用户",
|
||||||
|
"type": "integer",
|
||||||
|
"enum": [
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"description": "标题",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.SysMessageListReq": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"display_mode": {
|
||||||
|
"description": "展示方式:1=弹窗,2=滚动,3=弹窗+滚动",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"level": {
|
||||||
|
"description": "消息等级:1=普通,2=重要,3=紧急",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"page": {
|
||||||
|
"description": "页码",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"page_size": {
|
||||||
|
"description": "每页条数",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"description": "状态:0=草稿,1=启用,2=禁用,3=已过期",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"target_type": {
|
||||||
|
"description": "从接收对象配置表中筛选",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"description": "消息标题",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.SysMessageListResp": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"list": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/definitions/models.SysAnnouncementItem"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"page": {
|
||||||
|
"description": "页码",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"page_size": {
|
||||||
|
"description": "每页条数",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"total": {
|
||||||
|
"description": "总条数",
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.SysMessageSetStatusReq": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"id",
|
||||||
|
"status"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"id": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"description": "目标状态:1=启用,2=禁用",
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"models.SysOperLog": {
|
"models.SysOperLog": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
@ -21765,6 +22276,55 @@ const docTemplate = `{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"models.SystemUserMessage": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"content": {
|
||||||
|
"description": "渲染后内容",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"createdAt": {
|
||||||
|
"description": "创建时间",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"id": {
|
||||||
|
"description": "数据库记录编号",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"is_read": {
|
||||||
|
"description": "是否阅读",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"is_visible": {
|
||||||
|
"description": "是否展示给用户",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"message_config_id": {
|
||||||
|
"description": "对应消息配置ID,可为空(被删时保留记录)",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"message_type": {
|
||||||
|
"description": "消息类型:1=公告,2=业务",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"read_time": {
|
||||||
|
"description": "阅读时间",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"description": "消息标题快照",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"updatedAt": {
|
||||||
|
"description": "更新时间",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"user_id": {
|
||||||
|
"description": "接收用户ID",
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"models.TableData": {
|
"models.TableData": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
@ -22230,6 +22790,56 @@ const docTemplate = `{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"models.UserMessageListReq": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"is_read": {
|
||||||
|
"description": "0-未读;1-已读",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"page": {
|
||||||
|
"description": "页码",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"page_size": {
|
||||||
|
"description": "每页数量",
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.UserMessageListResp": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"list": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/definitions/models.SystemUserMessage"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"page": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"page_size": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"total": {
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.UserMessageSetStatusReq": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"id": {
|
||||||
|
"description": "消息ID(可选,read_all 为 false 时必传)",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"read_all": {
|
||||||
|
"description": "是否设为全部已读",
|
||||||
|
"type": "boolean"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"models.UserShareCard": {
|
"models.UserShareCard": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
|
|
@ -7256,6 +7256,171 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"/api/v1/sys_message/create": {
|
||||||
|
"post": {
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"消息中心,V1.5.0"
|
||||||
|
],
|
||||||
|
"summary": "新增公告消息",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "新增公告消息模型",
|
||||||
|
"name": "request",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.SysMessageCreateReq"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.SysMessageCreateResp"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/api/v1/sys_message/delete": {
|
||||||
|
"post": {
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"消息中心,V1.5.0"
|
||||||
|
],
|
||||||
|
"summary": "删除公告消息",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "删除公告请求",
|
||||||
|
"name": "request",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.SysMessageDeleteReq"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/app.Response"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/api/v1/sys_message/edit": {
|
||||||
|
"post": {
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"消息中心,V1.5.0"
|
||||||
|
],
|
||||||
|
"summary": "编辑公告消息(仅草稿可编辑)",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "编辑公告消息模型",
|
||||||
|
"name": "request",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.SysMessageEditReq"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.SysMessageCreateResp"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/api/v1/sys_message/list": {
|
||||||
|
"post": {
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"消息中心,V1.5.0"
|
||||||
|
],
|
||||||
|
"summary": "公告消息列表",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "查询条件",
|
||||||
|
"name": "request",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.SysMessageListReq"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.SysMessageListResp"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/api/v1/sys_message/set_status": {
|
||||||
|
"post": {
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"消息中心,V1.5.0"
|
||||||
|
],
|
||||||
|
"summary": "设置公告状态",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "状态更新请求",
|
||||||
|
"name": "request",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.SysMessageSetStatusReq"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/app.Response"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"/api/v1/syscategory": {
|
"/api/v1/syscategory": {
|
||||||
"post": {
|
"post": {
|
||||||
"description": "获取JSON",
|
"description": "获取JSON",
|
||||||
|
@ -7686,6 +7851,74 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"/api/v1/user_message/list": {
|
||||||
|
"post": {
|
||||||
|
"description": "获取当前用户的消息记录",
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"消息中心,V1.5.0"
|
||||||
|
],
|
||||||
|
"summary": "用户消息列表",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "消息查询参数",
|
||||||
|
"name": "data",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.UserMessageListReq"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.UserMessageListResp"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"/api/v1/user_message/set_status": {
|
||||||
|
"post": {
|
||||||
|
"description": "设为单条或全部已读",
|
||||||
|
"consumes": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"produces": [
|
||||||
|
"application/json"
|
||||||
|
],
|
||||||
|
"tags": [
|
||||||
|
"消息中心,V1.5.0"
|
||||||
|
],
|
||||||
|
"summary": "设置用户消息为已读",
|
||||||
|
"parameters": [
|
||||||
|
{
|
||||||
|
"description": "设置参数",
|
||||||
|
"name": "data",
|
||||||
|
"in": "body",
|
||||||
|
"required": true,
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/models.UserMessageSetStatusReq"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"responses": {
|
||||||
|
"200": {
|
||||||
|
"description": "OK",
|
||||||
|
"schema": {
|
||||||
|
"$ref": "#/definitions/app.Response"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"/login": {
|
"/login": {
|
||||||
"post": {
|
"post": {
|
||||||
"description": "获取token\nLoginHandler can be used by clients to get a jwt token.\nPayload needs to be json in the form of {\"username\": \"USERNAME\", \"password\": \"PASSWORD\"}.\nReply will be of the form {\"token\": \"TOKEN\"}.\ndev mode:It should be noted that all fields cannot be empty, and a value of 0 can be passed in addition to the account password\n注意:开发模式:需要注意全部字段不能为空,账号密码外可以传入0值",
|
"description": "获取token\nLoginHandler can be used by clients to get a jwt token.\nPayload needs to be json in the form of {\"username\": \"USERNAME\", \"password\": \"PASSWORD\"}.\nReply will be of the form {\"token\": \"TOKEN\"}.\ndev mode:It should be noted that all fields cannot be empty, and a value of 0 can be passed in addition to the account password\n注意:开发模式:需要注意全部字段不能为空,账号密码外可以传入0值",
|
||||||
|
@ -8304,6 +8537,10 @@
|
||||||
"description": "每页条数",
|
"description": "每页条数",
|
||||||
"type": "integer"
|
"type": "integer"
|
||||||
},
|
},
|
||||||
|
"sort_type": {
|
||||||
|
"description": "排序类型:desc 降序、asc 升序",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
"start_time": {
|
"start_time": {
|
||||||
"description": "开始时间",
|
"description": "开始时间",
|
||||||
"type": "string"
|
"type": "string"
|
||||||
|
@ -20989,6 +21226,48 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"models.SysAnnouncementItem": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"content_template": {
|
||||||
|
"description": "消息内容",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"created_at": {
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"display_mode": {
|
||||||
|
"description": "展示方式:1=弹窗,2=滚动,3=弹窗+滚动",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"end_time": {
|
||||||
|
"description": "公告失效时间",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"id": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"level": {
|
||||||
|
"description": "消息等级:1=普通,2=重要,3=紧急",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"start_time": {
|
||||||
|
"description": "公告生效时间",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"description": "状态:0=草稿,1=启用,2=禁用,3=已过期",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"description": "消息标题",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"updated_at": {
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"models.SysCategory": {
|
"models.SysCategory": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
@ -21285,6 +21564,238 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"models.SysMessageCreateReq": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"content_template",
|
||||||
|
"display_mode",
|
||||||
|
"level",
|
||||||
|
"status",
|
||||||
|
"target_type",
|
||||||
|
"title"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"content_template": {
|
||||||
|
"description": "消息内容",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"display_mode": {
|
||||||
|
"description": "展示方式:1=弹窗,2=滚动,3=弹窗+滚动",
|
||||||
|
"type": "integer",
|
||||||
|
"enum": [
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"end_time": {
|
||||||
|
"description": "公告失效时间",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"level": {
|
||||||
|
"description": "消息等级:1=普通,2=重要,3=紧急",
|
||||||
|
"type": "integer",
|
||||||
|
"enum": [
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"start_time": {
|
||||||
|
"description": "公告生效时间",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"description": "状态:0=草稿,1=启用",
|
||||||
|
"type": "integer",
|
||||||
|
"enum": [
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"target_id": {
|
||||||
|
"description": "对象ID(角色ID/用户ID)",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"target_type": {
|
||||||
|
"description": "接收对象类型:1=全员,2=角色,3=用户",
|
||||||
|
"type": "integer",
|
||||||
|
"enum": [
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"description": "消息标题",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.SysMessageCreateResp": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"id": {
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.SysMessageDeleteReq": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"id"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"id": {
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.SysMessageEditReq": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"content_template",
|
||||||
|
"display_mode",
|
||||||
|
"id",
|
||||||
|
"level",
|
||||||
|
"status",
|
||||||
|
"target_type",
|
||||||
|
"title"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"content_template": {
|
||||||
|
"description": "内容模板",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"display_mode": {
|
||||||
|
"description": "展示模式",
|
||||||
|
"type": "integer",
|
||||||
|
"enum": [
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"end_time": {
|
||||||
|
"description": "失效时间(可空)",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"id": {
|
||||||
|
"description": "公告ID(必须)",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"level": {
|
||||||
|
"description": "重要等级",
|
||||||
|
"type": "integer",
|
||||||
|
"enum": [
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"start_time": {
|
||||||
|
"description": "生效时间(可空)",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"description": "状态:0 草稿、1 启用",
|
||||||
|
"type": "integer",
|
||||||
|
"enum": [
|
||||||
|
0,
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"target_id": {
|
||||||
|
"description": "接收对象ID",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"target_type": {
|
||||||
|
"description": "接收对象类型:1=全员,2=角色,3=用户",
|
||||||
|
"type": "integer",
|
||||||
|
"enum": [
|
||||||
|
1,
|
||||||
|
2,
|
||||||
|
3
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"description": "标题",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.SysMessageListReq": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"display_mode": {
|
||||||
|
"description": "展示方式:1=弹窗,2=滚动,3=弹窗+滚动",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"level": {
|
||||||
|
"description": "消息等级:1=普通,2=重要,3=紧急",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"page": {
|
||||||
|
"description": "页码",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"page_size": {
|
||||||
|
"description": "每页条数",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"description": "状态:0=草稿,1=启用,2=禁用,3=已过期",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"target_type": {
|
||||||
|
"description": "从接收对象配置表中筛选",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"description": "消息标题",
|
||||||
|
"type": "string"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.SysMessageListResp": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"list": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/definitions/models.SysAnnouncementItem"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"page": {
|
||||||
|
"description": "页码",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"page_size": {
|
||||||
|
"description": "每页条数",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"total": {
|
||||||
|
"description": "总条数",
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.SysMessageSetStatusReq": {
|
||||||
|
"type": "object",
|
||||||
|
"required": [
|
||||||
|
"id",
|
||||||
|
"status"
|
||||||
|
],
|
||||||
|
"properties": {
|
||||||
|
"id": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"status": {
|
||||||
|
"description": "目标状态:1=启用,2=禁用",
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"models.SysOperLog": {
|
"models.SysOperLog": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
@ -21754,6 +22265,55 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"models.SystemUserMessage": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"content": {
|
||||||
|
"description": "渲染后内容",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"createdAt": {
|
||||||
|
"description": "创建时间",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"id": {
|
||||||
|
"description": "数据库记录编号",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"is_read": {
|
||||||
|
"description": "是否阅读",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"is_visible": {
|
||||||
|
"description": "是否展示给用户",
|
||||||
|
"type": "boolean"
|
||||||
|
},
|
||||||
|
"message_config_id": {
|
||||||
|
"description": "对应消息配置ID,可为空(被删时保留记录)",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"message_type": {
|
||||||
|
"description": "消息类型:1=公告,2=业务",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"read_time": {
|
||||||
|
"description": "阅读时间",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"title": {
|
||||||
|
"description": "消息标题快照",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"updatedAt": {
|
||||||
|
"description": "更新时间",
|
||||||
|
"type": "string"
|
||||||
|
},
|
||||||
|
"user_id": {
|
||||||
|
"description": "接收用户ID",
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"models.TableData": {
|
"models.TableData": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
@ -22219,6 +22779,56 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"models.UserMessageListReq": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"is_read": {
|
||||||
|
"description": "0-未读;1-已读",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"page": {
|
||||||
|
"description": "页码",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"page_size": {
|
||||||
|
"description": "每页数量",
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.UserMessageListResp": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"list": {
|
||||||
|
"type": "array",
|
||||||
|
"items": {
|
||||||
|
"$ref": "#/definitions/models.SystemUserMessage"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"page": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"page_size": {
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"total": {
|
||||||
|
"type": "integer"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"models.UserMessageSetStatusReq": {
|
||||||
|
"type": "object",
|
||||||
|
"properties": {
|
||||||
|
"id": {
|
||||||
|
"description": "消息ID(可选,read_all 为 false 时必传)",
|
||||||
|
"type": "integer"
|
||||||
|
},
|
||||||
|
"read_all": {
|
||||||
|
"description": "是否设为全部已读",
|
||||||
|
"type": "boolean"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
"models.UserShareCard": {
|
"models.UserShareCard": {
|
||||||
"type": "object",
|
"type": "object",
|
||||||
"properties": {
|
"properties": {
|
||||||
|
|
|
@ -399,6 +399,9 @@ definitions:
|
||||||
page_size:
|
page_size:
|
||||||
description: 每页条数
|
description: 每页条数
|
||||||
type: integer
|
type: integer
|
||||||
|
sort_type:
|
||||||
|
description: 排序类型:desc 降序、asc 升序
|
||||||
|
type: string
|
||||||
start_time:
|
start_time:
|
||||||
description: 开始时间
|
description: 开始时间
|
||||||
type: string
|
type: string
|
||||||
|
@ -9588,6 +9591,36 @@ definitions:
|
||||||
description: 开户银行
|
description: 开户银行
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
|
models.SysAnnouncementItem:
|
||||||
|
properties:
|
||||||
|
content_template:
|
||||||
|
description: 消息内容
|
||||||
|
type: string
|
||||||
|
created_at:
|
||||||
|
type: string
|
||||||
|
display_mode:
|
||||||
|
description: 展示方式:1=弹窗,2=滚动,3=弹窗+滚动
|
||||||
|
type: integer
|
||||||
|
end_time:
|
||||||
|
description: 公告失效时间
|
||||||
|
type: string
|
||||||
|
id:
|
||||||
|
type: integer
|
||||||
|
level:
|
||||||
|
description: 消息等级:1=普通,2=重要,3=紧急
|
||||||
|
type: integer
|
||||||
|
start_time:
|
||||||
|
description: 公告生效时间
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
description: 状态:0=草稿,1=启用,2=禁用,3=已过期
|
||||||
|
type: integer
|
||||||
|
title:
|
||||||
|
description: 消息标题
|
||||||
|
type: string
|
||||||
|
updated_at:
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
models.SysCategory:
|
models.SysCategory:
|
||||||
properties:
|
properties:
|
||||||
createBy:
|
createBy:
|
||||||
|
@ -9801,6 +9834,177 @@ definitions:
|
||||||
description: 更新时间
|
description: 更新时间
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
|
models.SysMessageCreateReq:
|
||||||
|
properties:
|
||||||
|
content_template:
|
||||||
|
description: 消息内容
|
||||||
|
type: string
|
||||||
|
display_mode:
|
||||||
|
description: 展示方式:1=弹窗,2=滚动,3=弹窗+滚动
|
||||||
|
enum:
|
||||||
|
- 1
|
||||||
|
- 2
|
||||||
|
- 3
|
||||||
|
type: integer
|
||||||
|
end_time:
|
||||||
|
description: 公告失效时间
|
||||||
|
type: string
|
||||||
|
level:
|
||||||
|
description: 消息等级:1=普通,2=重要,3=紧急
|
||||||
|
enum:
|
||||||
|
- 1
|
||||||
|
- 2
|
||||||
|
- 3
|
||||||
|
type: integer
|
||||||
|
start_time:
|
||||||
|
description: 公告生效时间
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
description: 状态:0=草稿,1=启用
|
||||||
|
enum:
|
||||||
|
- 0
|
||||||
|
- 1
|
||||||
|
type: integer
|
||||||
|
target_id:
|
||||||
|
description: 对象ID(角色ID/用户ID)
|
||||||
|
type: integer
|
||||||
|
target_type:
|
||||||
|
description: 接收对象类型:1=全员,2=角色,3=用户
|
||||||
|
enum:
|
||||||
|
- 1
|
||||||
|
- 2
|
||||||
|
- 3
|
||||||
|
type: integer
|
||||||
|
title:
|
||||||
|
description: 消息标题
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- content_template
|
||||||
|
- display_mode
|
||||||
|
- level
|
||||||
|
- status
|
||||||
|
- target_type
|
||||||
|
- title
|
||||||
|
type: object
|
||||||
|
models.SysMessageCreateResp:
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
type: integer
|
||||||
|
type: object
|
||||||
|
models.SysMessageDeleteReq:
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
type: integer
|
||||||
|
required:
|
||||||
|
- id
|
||||||
|
type: object
|
||||||
|
models.SysMessageEditReq:
|
||||||
|
properties:
|
||||||
|
content_template:
|
||||||
|
description: 内容模板
|
||||||
|
type: string
|
||||||
|
display_mode:
|
||||||
|
description: 展示模式
|
||||||
|
enum:
|
||||||
|
- 1
|
||||||
|
- 2
|
||||||
|
- 3
|
||||||
|
type: integer
|
||||||
|
end_time:
|
||||||
|
description: 失效时间(可空)
|
||||||
|
type: string
|
||||||
|
id:
|
||||||
|
description: 公告ID(必须)
|
||||||
|
type: integer
|
||||||
|
level:
|
||||||
|
description: 重要等级
|
||||||
|
enum:
|
||||||
|
- 1
|
||||||
|
- 2
|
||||||
|
- 3
|
||||||
|
type: integer
|
||||||
|
start_time:
|
||||||
|
description: 生效时间(可空)
|
||||||
|
type: string
|
||||||
|
status:
|
||||||
|
description: 状态:0 草稿、1 启用
|
||||||
|
enum:
|
||||||
|
- 0
|
||||||
|
- 1
|
||||||
|
type: integer
|
||||||
|
target_id:
|
||||||
|
description: 接收对象ID
|
||||||
|
type: integer
|
||||||
|
target_type:
|
||||||
|
description: 接收对象类型:1=全员,2=角色,3=用户
|
||||||
|
enum:
|
||||||
|
- 1
|
||||||
|
- 2
|
||||||
|
- 3
|
||||||
|
type: integer
|
||||||
|
title:
|
||||||
|
description: 标题
|
||||||
|
type: string
|
||||||
|
required:
|
||||||
|
- content_template
|
||||||
|
- display_mode
|
||||||
|
- id
|
||||||
|
- level
|
||||||
|
- status
|
||||||
|
- target_type
|
||||||
|
- title
|
||||||
|
type: object
|
||||||
|
models.SysMessageListReq:
|
||||||
|
properties:
|
||||||
|
display_mode:
|
||||||
|
description: 展示方式:1=弹窗,2=滚动,3=弹窗+滚动
|
||||||
|
type: integer
|
||||||
|
level:
|
||||||
|
description: 消息等级:1=普通,2=重要,3=紧急
|
||||||
|
type: integer
|
||||||
|
page:
|
||||||
|
description: 页码
|
||||||
|
type: integer
|
||||||
|
page_size:
|
||||||
|
description: 每页条数
|
||||||
|
type: integer
|
||||||
|
status:
|
||||||
|
description: 状态:0=草稿,1=启用,2=禁用,3=已过期
|
||||||
|
type: integer
|
||||||
|
target_type:
|
||||||
|
description: 从接收对象配置表中筛选
|
||||||
|
type: integer
|
||||||
|
title:
|
||||||
|
description: 消息标题
|
||||||
|
type: string
|
||||||
|
type: object
|
||||||
|
models.SysMessageListResp:
|
||||||
|
properties:
|
||||||
|
list:
|
||||||
|
items:
|
||||||
|
$ref: '#/definitions/models.SysAnnouncementItem'
|
||||||
|
type: array
|
||||||
|
page:
|
||||||
|
description: 页码
|
||||||
|
type: integer
|
||||||
|
page_size:
|
||||||
|
description: 每页条数
|
||||||
|
type: integer
|
||||||
|
total:
|
||||||
|
description: 总条数
|
||||||
|
type: integer
|
||||||
|
type: object
|
||||||
|
models.SysMessageSetStatusReq:
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
type: integer
|
||||||
|
status:
|
||||||
|
description: 目标状态:1=启用,2=禁用
|
||||||
|
type: integer
|
||||||
|
required:
|
||||||
|
- id
|
||||||
|
- status
|
||||||
|
type: object
|
||||||
models.SysOperLog:
|
models.SysOperLog:
|
||||||
properties:
|
properties:
|
||||||
businessType:
|
businessType:
|
||||||
|
@ -10143,6 +10347,42 @@ definitions:
|
||||||
description: 用户名
|
description: 用户名
|
||||||
type: string
|
type: string
|
||||||
type: object
|
type: object
|
||||||
|
models.SystemUserMessage:
|
||||||
|
properties:
|
||||||
|
content:
|
||||||
|
description: 渲染后内容
|
||||||
|
type: string
|
||||||
|
createdAt:
|
||||||
|
description: 创建时间
|
||||||
|
type: string
|
||||||
|
id:
|
||||||
|
description: 数据库记录编号
|
||||||
|
type: integer
|
||||||
|
is_read:
|
||||||
|
description: 是否阅读
|
||||||
|
type: boolean
|
||||||
|
is_visible:
|
||||||
|
description: 是否展示给用户
|
||||||
|
type: boolean
|
||||||
|
message_config_id:
|
||||||
|
description: 对应消息配置ID,可为空(被删时保留记录)
|
||||||
|
type: integer
|
||||||
|
message_type:
|
||||||
|
description: 消息类型:1=公告,2=业务
|
||||||
|
type: integer
|
||||||
|
read_time:
|
||||||
|
description: 阅读时间
|
||||||
|
type: string
|
||||||
|
title:
|
||||||
|
description: 消息标题快照
|
||||||
|
type: string
|
||||||
|
updatedAt:
|
||||||
|
description: 更新时间
|
||||||
|
type: string
|
||||||
|
user_id:
|
||||||
|
description: 接收用户ID
|
||||||
|
type: integer
|
||||||
|
type: object
|
||||||
models.TableData:
|
models.TableData:
|
||||||
properties:
|
properties:
|
||||||
DJ:
|
DJ:
|
||||||
|
@ -10482,6 +10722,40 @@ definitions:
|
||||||
description: 总条数
|
description: 总条数
|
||||||
type: integer
|
type: integer
|
||||||
type: object
|
type: object
|
||||||
|
models.UserMessageListReq:
|
||||||
|
properties:
|
||||||
|
is_read:
|
||||||
|
description: 0-未读;1-已读
|
||||||
|
type: integer
|
||||||
|
page:
|
||||||
|
description: 页码
|
||||||
|
type: integer
|
||||||
|
page_size:
|
||||||
|
description: 每页数量
|
||||||
|
type: integer
|
||||||
|
type: object
|
||||||
|
models.UserMessageListResp:
|
||||||
|
properties:
|
||||||
|
list:
|
||||||
|
items:
|
||||||
|
$ref: '#/definitions/models.SystemUserMessage'
|
||||||
|
type: array
|
||||||
|
page:
|
||||||
|
type: integer
|
||||||
|
page_size:
|
||||||
|
type: integer
|
||||||
|
total:
|
||||||
|
type: integer
|
||||||
|
type: object
|
||||||
|
models.UserMessageSetStatusReq:
|
||||||
|
properties:
|
||||||
|
id:
|
||||||
|
description: 消息ID(可选,read_all 为 false 时必传)
|
||||||
|
type: integer
|
||||||
|
read_all:
|
||||||
|
description: 是否设为全部已读
|
||||||
|
type: boolean
|
||||||
|
type: object
|
||||||
models.UserShareCard:
|
models.UserShareCard:
|
||||||
properties:
|
properties:
|
||||||
allot_card_goods_id:
|
allot_card_goods_id:
|
||||||
|
@ -15277,6 +15551,111 @@ paths:
|
||||||
summary: 分页列表数据
|
summary: 分页列表数据
|
||||||
tags:
|
tags:
|
||||||
- system/工具
|
- system/工具
|
||||||
|
/api/v1/sys_message/create:
|
||||||
|
post:
|
||||||
|
consumes:
|
||||||
|
- application/json
|
||||||
|
parameters:
|
||||||
|
- description: 新增公告消息模型
|
||||||
|
in: body
|
||||||
|
name: request
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.SysMessageCreateReq'
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.SysMessageCreateResp'
|
||||||
|
summary: 新增公告消息
|
||||||
|
tags:
|
||||||
|
- 消息中心,V1.5.0
|
||||||
|
/api/v1/sys_message/delete:
|
||||||
|
post:
|
||||||
|
consumes:
|
||||||
|
- application/json
|
||||||
|
parameters:
|
||||||
|
- description: 删除公告请求
|
||||||
|
in: body
|
||||||
|
name: request
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.SysMessageDeleteReq'
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/app.Response'
|
||||||
|
summary: 删除公告消息
|
||||||
|
tags:
|
||||||
|
- 消息中心,V1.5.0
|
||||||
|
/api/v1/sys_message/edit:
|
||||||
|
post:
|
||||||
|
consumes:
|
||||||
|
- application/json
|
||||||
|
parameters:
|
||||||
|
- description: 编辑公告消息模型
|
||||||
|
in: body
|
||||||
|
name: request
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.SysMessageEditReq'
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.SysMessageCreateResp'
|
||||||
|
summary: 编辑公告消息(仅草稿可编辑)
|
||||||
|
tags:
|
||||||
|
- 消息中心,V1.5.0
|
||||||
|
/api/v1/sys_message/list:
|
||||||
|
post:
|
||||||
|
consumes:
|
||||||
|
- application/json
|
||||||
|
parameters:
|
||||||
|
- description: 查询条件
|
||||||
|
in: body
|
||||||
|
name: request
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.SysMessageListReq'
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.SysMessageListResp'
|
||||||
|
summary: 公告消息列表
|
||||||
|
tags:
|
||||||
|
- 消息中心,V1.5.0
|
||||||
|
/api/v1/sys_message/set_status:
|
||||||
|
post:
|
||||||
|
consumes:
|
||||||
|
- application/json
|
||||||
|
parameters:
|
||||||
|
- description: 状态更新请求
|
||||||
|
in: body
|
||||||
|
name: request
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.SysMessageSetStatusReq'
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/app.Response'
|
||||||
|
summary: 设置公告状态
|
||||||
|
tags:
|
||||||
|
- 消息中心,V1.5.0
|
||||||
/api/v1/sysUser:
|
/api/v1/sysUser:
|
||||||
get:
|
get:
|
||||||
description: 获取JSON
|
description: 获取JSON
|
||||||
|
@ -15663,6 +16042,50 @@ paths:
|
||||||
summary: 查询会员手机号
|
summary: 查询会员手机号
|
||||||
tags:
|
tags:
|
||||||
- 用户信息
|
- 用户信息
|
||||||
|
/api/v1/user_message/list:
|
||||||
|
post:
|
||||||
|
consumes:
|
||||||
|
- application/json
|
||||||
|
description: 获取当前用户的消息记录
|
||||||
|
parameters:
|
||||||
|
- description: 消息查询参数
|
||||||
|
in: body
|
||||||
|
name: data
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.UserMessageListReq'
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.UserMessageListResp'
|
||||||
|
summary: 用户消息列表
|
||||||
|
tags:
|
||||||
|
- 消息中心,V1.5.0
|
||||||
|
/api/v1/user_message/set_status:
|
||||||
|
post:
|
||||||
|
consumes:
|
||||||
|
- application/json
|
||||||
|
description: 设为单条或全部已读
|
||||||
|
parameters:
|
||||||
|
- description: 设置参数
|
||||||
|
in: body
|
||||||
|
name: data
|
||||||
|
required: true
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/models.UserMessageSetStatusReq'
|
||||||
|
produces:
|
||||||
|
- application/json
|
||||||
|
responses:
|
||||||
|
"200":
|
||||||
|
description: OK
|
||||||
|
schema:
|
||||||
|
$ref: '#/definitions/app.Response'
|
||||||
|
summary: 设置用户消息为已读
|
||||||
|
tags:
|
||||||
|
- 消息中心,V1.5.0
|
||||||
/login:
|
/login:
|
||||||
post:
|
post:
|
||||||
consumes:
|
consumes:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user