package model import ( "time" ) // PointsHistory 积分历史记录 type PointsHistory struct { ID uint `json:"id" gorm:"primaryKey"` UserID uint `json:"user_id" gorm:"not null;index"` Type int `json:"type" gorm:"not null;comment:类型 1=获得 2=消费"` Points int `json:"points" gorm:"not null;comment:积分数量"` Description string `json:"description" gorm:"size:255;comment:描述"` OrderID *uint `json:"order_id" gorm:"index;comment:关联订单ID"` OrderNo string `json:"order_no" gorm:"size:50;comment:订单号"` ProductName string `json:"product_name" gorm:"size:255;comment:商品名称"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` // 关联 User User `json:"user" gorm:"foreignKey:UserID"` Order *Order `json:"order,omitempty" gorm:"foreignKey:OrderID"` } // PointsRule 积分规则 type PointsRule struct { ID uint `json:"id" gorm:"primaryKey"` Title string `json:"title" gorm:"size:100;not null;comment:规则标题"` Description string `json:"description" gorm:"size:500;comment:规则描述"` Icon string `json:"icon" gorm:"size:100;comment:图标"` Points int `json:"points" gorm:"comment:积分数量"` Type int `json:"type" gorm:"comment:类型 1=获得 2=消费"` Status int `json:"status" gorm:"default:1;comment:状态 0=禁用 1=启用"` Sort int `json:"sort" gorm:"default:0;comment:排序"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } // PointsExchange 积分兑换商品 type PointsExchange struct { ID uint `json:"id" gorm:"primaryKey"` Name string `json:"name" gorm:"size:255;not null;comment:商品名称"` Description string `json:"description" gorm:"size:500;comment:商品描述"` Image string `json:"image" gorm:"size:255;comment:商品图片"` Points int `json:"points" gorm:"not null;comment:所需积分"` Stock int `json:"stock" gorm:"default:0;comment:库存数量"` ExchangeCount int `json:"exchange_count" gorm:"default:0;comment:兑换次数"` Status int `json:"status" gorm:"default:1;comment:状态 0=下架 1=上架"` Sort int `json:"sort" gorm:"default:0;comment:排序"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } // PointsExchangeRecord 积分兑换记录 type PointsExchangeRecord struct { ID uint `json:"id" gorm:"primaryKey"` UserID uint `json:"user_id" gorm:"not null;index"` PointsExchangeID uint `json:"points_exchange_id" gorm:"not null;index"` Points int `json:"points" gorm:"not null;comment:消耗积分"` Status int `json:"status" gorm:"default:1;comment:状态 1=已兑换 2=已发放"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` // 关联 User User `json:"user" gorm:"foreignKey:UserID"` PointsExchange PointsExchange `json:"points_exchange" gorm:"foreignKey:PointsExchangeID"` } // TableName 设置表名 func (PointsHistory) TableName() string { return "points_history" } func (PointsRule) TableName() string { return "points_rules" } func (PointsExchange) TableName() string { return "points_exchange" } func (PointsExchangeRecord) TableName() string { return "points_exchange_records" }