package model

// 消息/通知类型常量
const (
	NotifyAuditApproved = "audit_approved"
	NotifyAuditRejected = "audit_rejected"
	NotifyPostApproved  = "post_approved"
	NotifyPostRejected  = "post_rejected"
)

// Notification 消息/通知模型
type Notification struct {
	BaseModel

	UserID     uint   `gorm:"index:idx_user_read,priority:1;not null" json:"user_id"`
	NotifyType string `gorm:"type:varchar(30);index;not null" json:"notify_type"`
	Title      string `gorm:"type:varchar(200);not null" json:"title"`
	Content    string `gorm:"type:text" json:"content"`
	IsRead     bool   `gorm:"index:idx_user_read,priority:2;default:false;not null" json:"is_read"`
	RelatedID  *uint  `gorm:"default:null" json:"related_id,omitempty"` // 关联业务 ID
}

// NotifyTypeNames 通知类型 → 中文名
var NotifyTypeNames = map[string]string{
	NotifyAuditApproved: "资料审核",
	NotifyAuditRejected: "资料审核",
	NotifyPostApproved:  "稿件审核",
	NotifyPostRejected:  "稿件审核",
}

// NotificationListResult 消息列表查询结果
type NotificationListResult struct {
	Items      []Notification `json:"items"`
	Total      int64          `json:"total"`
	Page       int            `json:"page"`
	TotalPages int            `json:"total_pages"`
	Unread     int64          `json:"unread"`
}
