package model import "gorm.io/plugin/soft_delete" // 商品类型常量(购物车与订单明细共用) const ( ItemTypeGame = 1 // 游戏 ItemTypeProp = 2 // 道具 ) // 订单状态常量 const ( OrderStatusDone = 1 // 已完成(积分即时支付) OrderStatusCanceled = 2 // 已取消 ) // Cart 购物车表:加入购物车但未结算的商品 type Cart struct { ID int `gorm:"primaryKey" json:"id"` // 购物车项ID UserID int `gorm:"index" json:"user_id"` // 所属用户ID ItemType int `gorm:"default:1" json:"item_type"` // 商品类型:1游戏 2道具 ItemID int `json:"item_id"` // 商品ID Quantity int `gorm:"default:1" json:"quantity"` // 数量(游戏固定1) CreatedAt int64 `gorm:"autoCreateTime" json:"created_at"` // 加入时间(int 时间戳) UpdatedAt int64 `gorm:"autoUpdateTime" json:"updated_at"` // 更新时间(int 时间戳) } // TableName 指定表名 func (Cart) TableName() string { return "carts" } // Order 订单表:购物车结算生成,用积分支付 type Order struct { ID int `gorm:"primaryKey" json:"id"` // 订单ID OrderNo string `gorm:"size:32;uniqueIndex" json:"order_no"` // 订单号 UserID int `gorm:"index" json:"user_id"` // 下单用户ID TotalPoints int `gorm:"default:0" json:"total_points"` // 订单总价(积分) Status int `gorm:"default:1" json:"status"` // 状态:1已完成 2已取消 Remark string `gorm:"size:255" json:"remark"` // 备注(商品概要) CreatedAt int64 `gorm:"autoCreateTime" json:"created_at"` // 下单时间(int 时间戳) UpdatedAt int64 `gorm:"autoUpdateTime" json:"updated_at"` // 更新时间(int 时间戳) DeletedAt soft_delete.DeletedAt `gorm:"default:0" json:"-"` // 软删除(0=未删除) Items []OrderItem `gorm:"foreignKey:OrderID" json:"items"` // 订单明细(关联查询用) } // TableName 指定表名 func (Order) TableName() string { return "orders" } // OrderItem 订单明细表:订单内每个商品一条(保存快照) type OrderItem struct { ID int `gorm:"primaryKey" json:"id"` // 明细ID OrderID int `gorm:"index" json:"order_id"` // 所属订单ID ItemType int `gorm:"default:1" json:"item_type"` // 商品类型:1游戏 2道具 ItemID int `json:"item_id"` // 商品ID ItemName string `gorm:"size:32" json:"item_name"` // 名称快照 Price int `gorm:"default:0" json:"price"` // 单价快照(积分) Quantity int `gorm:"default:1" json:"quantity"` // 数量 CreatedAt int64 `gorm:"autoCreateTime" json:"created_at"` // 创建时间(int 时间戳) } // TableName 指定表名 func (OrderItem) TableName() string { return "order_items" } // UserGame 用户已购游戏表:付费游戏解锁记录 type UserGame struct { ID int `gorm:"primaryKey" json:"id"` // 记录ID UserID int `gorm:"index" json:"user_id"` // 用户ID GameID int `json:"game_id"` // 已解锁游戏ID OrderID int `gorm:"default:0" json:"order_id"` // 来源订单ID(0=赠送) CreatedAt int64 `gorm:"autoCreateTime" json:"created_at"` // 解锁时间(int 时间戳) } // TableName 指定表名 func (UserGame) TableName() string { return "user_games" } // Prop 道具表:局内道具商品 type Prop struct { ID int `gorm:"primaryKey" json:"id"` // 道具ID Code string `gorm:"size:32;uniqueIndex" json:"code"` // 道具编码(游戏内识别效果) Name string `gorm:"size:32" json:"name"` // 道具名称 Icon string `gorm:"size:16" json:"icon"` // emoji 图标 Description string `gorm:"size:255" json:"description"` // 效果说明 Price int `gorm:"default:0" json:"price"` // 售价(积分/个) Sort int `gorm:"default:0" json:"sort"` // 排序权重 Status int `gorm:"default:1" json:"status"` // 状态:1上架 2下架 CreatedAt int64 `gorm:"autoCreateTime" json:"created_at"` // 创建时间(int 时间戳) UpdatedAt int64 `gorm:"autoUpdateTime" json:"updated_at"` // 更新时间(int 时间戳) DeletedAt soft_delete.DeletedAt `gorm:"default:0" json:"-"` // 软删除(0=未删除) } // TableName 指定表名 func (Prop) TableName() string { return "props" } // UserProp 用户道具背包表:持有道具及数量 type UserProp struct { ID int `gorm:"primaryKey" json:"id"` // 记录ID UserID int `gorm:"index" json:"user_id"` // 用户ID PropID int `json:"prop_id"` // 道具ID Quantity int `gorm:"default:0" json:"quantity"` // 持有数量 CreatedAt int64 `gorm:"autoCreateTime" json:"created_at"` // 创建时间(int 时间戳) UpdatedAt int64 `gorm:"autoUpdateTime" json:"updated_at"` // 更新时间(int 时间戳) } // TableName 指定表名 func (UserProp) TableName() string { return "user_props" }