212 lines
8.6 KiB
Go
212 lines
8.6 KiB
Go
package model
|
||
|
||
import (
|
||
"time"
|
||
|
||
"gorm.io/gorm"
|
||
)
|
||
|
||
// Coupon 优惠券模型
|
||
type Coupon struct {
|
||
ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
|
||
Name string `gorm:"size:100;not null" json:"name" binding:"required"`
|
||
Type uint8 `gorm:"not null" json:"type"` // 1-满减券 2-折扣券 3-免邮券
|
||
Value uint `gorm:"not null" json:"value"` // 优惠值:满减券为金额(分),折扣券为折扣(如85表示8.5折)
|
||
MinAmount uint `gorm:"default:0" json:"min_amount"` // 最低消费金额,单位:分
|
||
TotalCount uint `gorm:"not null" json:"total_count"` // 总发放数量
|
||
UsedCount uint `gorm:"default:0" json:"used_count"` // 已使用数量
|
||
StartTime time.Time `gorm:"not null" json:"start_time"`
|
||
EndTime time.Time `gorm:"not null" json:"end_time"`
|
||
Status uint8 `gorm:"default:1;index" json:"status"` // 0-禁用 1-启用
|
||
Description string `gorm:"size:255" json:"description"`
|
||
CreatedAt time.Time `json:"created_at"`
|
||
UpdatedAt time.Time `json:"updated_at"`
|
||
DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
|
||
|
||
// 关联关系
|
||
UserCoupons []UserCoupon `gorm:"foreignKey:CouponID" json:"user_coupons,omitempty"`
|
||
}
|
||
|
||
// TableName 指定表名
|
||
func (Coupon) TableName() string {
|
||
return "ai_coupons"
|
||
}
|
||
|
||
// UserCoupon 用户优惠券模型
|
||
type UserCoupon struct {
|
||
ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
|
||
UserID uint `gorm:"not null;index" json:"user_id"`
|
||
CouponID uint `gorm:"not null;index" json:"coupon_id"`
|
||
OrderID *uint `gorm:"index" json:"order_id"` // 使用的订单ID,NULL表示未使用
|
||
Status uint8 `gorm:"default:0;index" json:"status"` // 0-未使用 1-已使用 2-已过期
|
||
UsedTime *time.Time `json:"used_time"`
|
||
CreatedAt time.Time `json:"created_at"`
|
||
UpdatedAt time.Time `json:"updated_at"`
|
||
DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
|
||
|
||
// 关联关系
|
||
User User `gorm:"foreignKey:UserID" json:"user,omitempty"`
|
||
Coupon Coupon `gorm:"foreignKey:CouponID" json:"coupon,omitempty"`
|
||
Order Order `gorm:"foreignKey:OrderID" json:"order,omitempty"`
|
||
}
|
||
|
||
// TableName 指定表名
|
||
func (UserCoupon) TableName() string {
|
||
return "ai_user_coupons"
|
||
}
|
||
|
||
// Notification 通知模型
|
||
type Notification struct {
|
||
ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
|
||
UserID uint `gorm:"not null;index" json:"user_id"`
|
||
Title string `gorm:"size:100;not null" json:"title" binding:"required"`
|
||
Content string `gorm:"type:text;not null" json:"content" binding:"required"`
|
||
Type uint8 `gorm:"not null;index" json:"type"` // 1-系统通知 2-订单通知 3-活动通知
|
||
IsRead uint8 `gorm:"default:0;index" json:"is_read"` // 0-未读 1-已读
|
||
ReadTime *time.Time `json:"read_time"`
|
||
CreatedAt time.Time `json:"created_at"`
|
||
UpdatedAt time.Time `json:"updated_at"`
|
||
DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
|
||
|
||
// 关联关系
|
||
User User `gorm:"foreignKey:UserID" json:"user,omitempty"`
|
||
}
|
||
|
||
// TableName 指定表名
|
||
func (Notification) TableName() string {
|
||
return "ai_notifications"
|
||
}
|
||
|
||
// FileUpload 文件上传模型
|
||
type FileUpload struct {
|
||
ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
|
||
FileName string `gorm:"size:255;not null" json:"file_name"`
|
||
FileSize uint `gorm:"not null" json:"file_size"`
|
||
FileType string `gorm:"size:50;not null" json:"file_type"`
|
||
FilePath string `gorm:"size:500;not null" json:"file_path"`
|
||
FileURL string `gorm:"size:500;not null" json:"file_url"`
|
||
UploadBy uint `gorm:"not null;index" json:"upload_by"` // 上传者ID
|
||
CreatedAt time.Time `json:"created_at"`
|
||
UpdatedAt time.Time `json:"updated_at"`
|
||
DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
|
||
}
|
||
|
||
// TableName 指定表名
|
||
func (FileUpload) TableName() string {
|
||
return "ai_file_uploads"
|
||
}
|
||
|
||
// SystemConfig 系统配置模型
|
||
type SystemConfig struct {
|
||
ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
|
||
ConfigKey string `gorm:"size:100;uniqueIndex;not null" json:"config_key" binding:"required"`
|
||
ConfigValue string `gorm:"type:text" json:"config_value"`
|
||
ConfigDesc string `gorm:"size:255" json:"config_desc"`
|
||
ConfigType string `gorm:"size:20;default:'string'" json:"config_type"` // string, number, boolean, json
|
||
CreatedAt time.Time `json:"created_at"`
|
||
UpdatedAt time.Time `json:"updated_at"`
|
||
DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
|
||
}
|
||
|
||
// TableName 指定表名
|
||
func (SystemConfig) TableName() string {
|
||
return "ai_system_configs"
|
||
}
|
||
|
||
// SystemLog 系统日志模型
|
||
type SystemLog struct {
|
||
ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
|
||
Level string `gorm:"size:20;not null;index" json:"level"`
|
||
Message string `gorm:"type:text;not null" json:"message"`
|
||
Context string `gorm:"type:text" json:"context"` // JSON格式的上下文信息
|
||
CreatedAt time.Time `json:"created_at"`
|
||
}
|
||
|
||
// TableName 指定表名
|
||
func (SystemLog) TableName() string {
|
||
return "ai_system_logs"
|
||
}
|
||
|
||
// AdminUser 管理员用户模型
|
||
type AdminUser struct {
|
||
ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
|
||
Username string `gorm:"size:50;uniqueIndex;not null" json:"username" binding:"required"`
|
||
Password string `gorm:"size:255;not null" json:"-"` // 不返回密码
|
||
Nickname string `gorm:"size:50" json:"nickname"`
|
||
Email string `gorm:"size:100" json:"email"`
|
||
Phone string `gorm:"size:20" json:"phone"`
|
||
Avatar string `gorm:"size:255" json:"avatar"`
|
||
RoleID uint `gorm:"not null;index" json:"role_id"`
|
||
Status uint8 `gorm:"default:1;index" json:"status"` // 0-禁用 1-正常
|
||
LastLogin *time.Time `json:"last_login"`
|
||
CreatedAt time.Time `json:"created_at"`
|
||
UpdatedAt time.Time `json:"updated_at"`
|
||
DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
|
||
|
||
// 关联关系
|
||
Role AdminRole `gorm:"foreignKey:RoleID" json:"role,omitempty"`
|
||
}
|
||
|
||
// TableName 指定表名
|
||
func (AdminUser) TableName() string {
|
||
return "ai_admin_users"
|
||
}
|
||
|
||
// AdminRole 管理员角色模型
|
||
type AdminRole struct {
|
||
ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
|
||
Name string `gorm:"size:50;not null" json:"name" binding:"required"`
|
||
Description string `gorm:"size:255" json:"description"`
|
||
Permissions string `gorm:"type:text" json:"permissions"` // JSON格式的权限列表
|
||
Status uint8 `gorm:"default:1;index" json:"status"` // 0-禁用 1-正常
|
||
CreatedAt time.Time `json:"created_at"`
|
||
UpdatedAt time.Time `json:"updated_at"`
|
||
DeletedAt gorm.DeletedAt `gorm:"index" json:"-"`
|
||
|
||
// 关联关系
|
||
AdminUsers []AdminUser `gorm:"foreignKey:RoleID" json:"admin_users,omitempty"`
|
||
}
|
||
|
||
// TableName 指定表名
|
||
func (AdminRole) TableName() string {
|
||
return "ai_admin_roles"
|
||
}
|
||
|
||
// OperationLog 操作日志模型
|
||
type OperationLog struct {
|
||
ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
|
||
UserID uint `gorm:"not null;index" json:"user_id"`
|
||
UserType string `gorm:"size:20;not null;index" json:"user_type"` // user, admin
|
||
Action string `gorm:"size:100;not null" json:"action"`
|
||
Resource string `gorm:"size:100;not null" json:"resource"`
|
||
Method string `gorm:"size:10;not null" json:"method"`
|
||
Path string `gorm:"size:255;not null" json:"path"`
|
||
IP string `gorm:"size:50;not null" json:"ip"`
|
||
UserAgent string `gorm:"size:500" json:"user_agent"`
|
||
RequestData string `gorm:"type:text" json:"request_data"`
|
||
ResponseData string `gorm:"type:text" json:"response_data"`
|
||
StatusCode int `gorm:"not null" json:"status_code"`
|
||
Duration int `gorm:"not null" json:"duration"` // 请求耗时,单位:毫秒
|
||
CreatedAt time.Time `json:"created_at"`
|
||
}
|
||
|
||
// TableName 指定表名
|
||
func (OperationLog) TableName() string {
|
||
return "ai_operation_logs"
|
||
}
|
||
|
||
// DataStatistics 数据统计模型
|
||
type DataStatistics struct {
|
||
ID uint `gorm:"primaryKey;autoIncrement" json:"id"`
|
||
Date string `gorm:"size:10;not null;index" json:"date"` // YYYY-MM-DD
|
||
Type string `gorm:"size:50;not null;index" json:"type"` // daily, weekly, monthly
|
||
Metric string `gorm:"size:50;not null;index" json:"metric"` // user_count, order_count, sales_amount等
|
||
Value uint `gorm:"not null" json:"value"`
|
||
CreatedAt time.Time `json:"created_at"`
|
||
UpdatedAt time.Time `json:"updated_at"`
|
||
}
|
||
|
||
// TableName 指定表名
|
||
func (DataStatistics) TableName() string {
|
||
return "ai_data_statistics"
|
||
} |