49 lines
2.5 KiB
Go
49 lines
2.5 KiB
Go
package model
|
||
|
||
import (
|
||
"time"
|
||
)
|
||
|
||
// ReportType 举报类型
|
||
// @Description 举报类型枚举:TEXTURE(皮肤)或USER(用户)
|
||
type ReportType string
|
||
|
||
const (
|
||
ReportTypeTexture ReportType = "TEXTURE"
|
||
ReportTypeUser ReportType = "USER"
|
||
)
|
||
|
||
// ReportStatus 举报状态
|
||
// @Description 举报状态枚举:PENDING(待处理)、APPROVED(已通过)、REJECTED(已驳回)
|
||
type ReportStatus string
|
||
|
||
const (
|
||
ReportStatusPending ReportStatus = "PENDING"
|
||
ReportStatusApproved ReportStatus = "APPROVED"
|
||
ReportStatusRejected ReportStatus = "REJECTED"
|
||
)
|
||
|
||
// Report 举报模型
|
||
// @Description 用户举报记录模型,用于举报皮肤或用户
|
||
type Report struct {
|
||
ID int64 `gorm:"column:id;primaryKey;autoIncrement" json:"id"`
|
||
ReporterID int64 `gorm:"column:reporter_id;not null;index:idx_reports_reporter_created,priority:1" json:"reporter_id"` // 举报人ID
|
||
TargetType ReportType `gorm:"column:target_type;type:varchar(50);not null;index:idx_reports_target_status,priority:1" json:"target_type"` // TEXTURE 或 USER
|
||
TargetID int64 `gorm:"column:target_id;not null;index:idx_reports_target_status,priority:2" json:"target_id"` // 被举报对象ID(皮肤ID或用户ID)
|
||
Reason string `gorm:"column:reason;type:text;not null" json:"reason"` // 举报原因
|
||
Status ReportStatus `gorm:"column:status;type:varchar(50);not null;default:'PENDING';index:idx_reports_status_created,priority:1;index:idx_reports_target_status,priority:3" json:"status"` // PENDING, APPROVED, REJECTED
|
||
ReviewerID *int64 `gorm:"column:reviewer_id;type:bigint" json:"reviewer_id,omitempty"` // 处理人ID(管理员)
|
||
ReviewNote string `gorm:"column:review_note;type:text" json:"review_note,omitempty"` // 处理备注
|
||
ReviewedAt *time.Time `gorm:"column:reviewed_at;type:timestamp" json:"reviewed_at,omitempty"` // 处理时间
|
||
CreatedAt time.Time `gorm:"column:created_at;type:timestamp;not null;default:CURRENT_TIMESTAMP;index:idx_reports_reporter_created,priority:2,sort:desc;index:idx_reports_status_created,priority:2,sort:desc" json:"created_at"`
|
||
UpdatedAt time.Time `gorm:"column:updated_at;type:timestamp;not null;default:CURRENT_TIMESTAMP" json:"updated_at"`
|
||
|
||
// 关联
|
||
Reporter *User `gorm:"foreignKey:ReporterID;constraint:OnDelete:CASCADE" json:"reporter,omitempty"`
|
||
Reviewer *User `gorm:"foreignKey:ReviewerID;constraint:OnDelete:SET NULL" json:"reviewer,omitempty"`
|
||
}
|
||
|
||
// TableName 指定表名
|
||
func (Report) TableName() string {
|
||
return "reports"
|
||
} |