package models import ( "time" ) // MessagePushLog 消息推送记录模型 type MessagePushLog struct { ID int64 `gorm:"primaryKey;autoIncrement" json:"id"` Title string `gorm:"type:varchar(255);not null;default:'';comment:消息标题" json:"title"` Content string `gorm:"type:text;not null;comment:消息内容" json:"content"` TargetUsers string `gorm:"type:json;not null;comment:目标用户ID列表" json:"target_users"` // 存储JSON字符串 SenderID int `gorm:"not null;comment:发送人ID" json:"sender_id"` SenderName string `gorm:"type:varchar(100);not null;comment:发送人姓名" json:"sender_name"` Status int `gorm:"type:tinyint;default:0;comment:发送状态 0=待发送 1=发送中 2=发送成功 3=发送失败" json:"status"` SuccessCount int `gorm:"default:0;comment:成功数量" json:"success_count"` FailCount int `gorm:"default:0;comment:失败数量" json:"fail_count"` ErrorMessage string `gorm:"type:text;comment:错误信息" json:"error_message"` SentAt *time.Time `gorm:"comment:发送时间" json:"sent_at"` CreatedAt time.Time `gorm:"autoCreateTime" json:"created_at"` UpdatedAt time.Time `gorm:"autoUpdateTime" json:"updated_at"` } // TableName 指定数据库表名 func (MessagePushLog) TableName() string { return "admin_message_push_logs" } // MessagePushRequest 消息推送请求 type MessagePushRequest struct { Title string `json:"title" validate:"required,min=1,max=100"` Content string `json:"content" validate:"required,min=1,max=2000"` UserIDs []int `json:"user_ids" validate:"required,min=1"` } // MessagePushResponse 消息推送响应 type MessagePushResponse struct { LogID int64 `json:"log_id"` SuccessCount int `json:"success_count"` FailCount int `json:"fail_count"` } // MessagePushListRequest 推送记录列表请求 type MessagePushListRequest struct { Page int `form:"page,default=1"` PageSize int `form:"page_size,default=10"` Status *int `form:"status"` // 0=待发送, 1=发送中, 2=发送成功, 3=发送失败 SenderID *int `form:"sender_id"` StartTime string `form:"start_time"` EndTime string `form:"end_time"` } // MessagePushListResponse 推送记录列表响应 type MessagePushListResponse struct { List []MessagePushLog `json:"list"` Total int64 `json:"total"` Page int `json:"page"` PageSize int `json:"page_size"` } // UserSearchRequest 用户搜索请求 type UserSearchRequest struct { Keyword string `form:"keyword" validate:"required,min=1"` Limit int `form:"limit,default=20"` } // UserSearchResponse 用户搜索响应 type UserSearchResponse struct { Users []UserSearchItem `json:"users"` Total int `json:"total"` } // UserSearchItem 用户搜索项 type UserSearchItem struct { ID int `json:"id"` Username string `json:"username"` Email string `json:"email"` }