Files
zt-closet-backend/internal/mysqlmodel/quota.go
T
2026-09-16 00:23:49 +08:00

46 lines
3.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
package mysqlmodel
type Quota struct {
Model
UserID int64 `gorm:"column:user_id;uniqueIndex:uk_user_quota,priority:1"` // 用户ID
QuotaType int8 `gorm:"column:quota_type;uniqueIndex:uk_user_quota,priority:2"` // 1=cos 2=AI 3=社区分享 4=衣柜分享
Total int64 `gorm:"column:total"` // 免费额度底值(仅 Cos 永久额度使用;AI/社区/衣柜 每日额度不再落库)
Used int64 `gorm:"column:used"` // 免费额度已用(仅 Cos 使用,永久累计)
}
func (Quota) TableName() string {
return "user_quotas"
}
// QuotaGrant 有有效期额度凭证(会员包/加量包/广告激励)。
// AI/社区/衣柜 每日额度场景 Amount 表示「有效期内每天额外赠送次数」,Used 恒为 0;
// Cos 永久额度场景 Amount/Used 表示「一次性赠送库存及其已用」。
type QuotaGrant struct {
Model
UserID int64 `gorm:"column:user_id;index:idx_grant_user_type_expire,priority:1"` // 用户ID
QuotaType int8 `gorm:"column:quota_type;index:idx_grant_user_type_expire,priority:2;uniqueIndex:uk_grant_ref_type,priority:2"` // 额度类型 1=cos 2=AI 3=社区分享 4=衣柜分享
Amount int64 `gorm:"column:amount"` // 赠送总量
Used int64 `gorm:"column:used"` // 已用量(仅 Cos 扣减)
Source int8 `gorm:"column:source"` // 来源 1=会员包 2=加量包 3=广告激励 4=体验会员赠送
ExpireTime int64 `gorm:"column:expire_time;index:idx_grant_user_type_expire,priority:3"` // 到期时间(秒,0 表示跟随 VIP)
RefID string `gorm:"column:ref_id;uniqueIndex:uk_grant_ref_type,priority:1"` // 关联ID(订单号/广告记录ID)
}
func (QuotaGrant) TableName() string {
return "quota_grants"
}
type UserDailyUsage struct {
Model
// UserID 用户ID;与 StatDate 组成联合唯一索引,保证每日每用户仅一行。
UserID int64 `gorm:"column:user_id;uniqueIndex:uk_daily_usage_user_date,priority:1"`
StatDate int64 `gorm:"column:stat_date;uniqueIndex:uk_daily_usage_user_date,priority:2"` // 统计日期(YYYYMMDD)
AIRecommendCount int64 `gorm:"column:ai_recommend_count"` // 当日AI推荐次数
OutfitShareCount int64 `gorm:"column:outfit_share_count"` // 当日社区分享次数
ClosetShareCount int64 `gorm:"column:closet_share_count"` // 当日衣柜分享次数
}
func (UserDailyUsage) TableName() string {
return "user_daily_usages"
}