119 lines
13 KiB
Go
119 lines
13 KiB
Go
package model
|
|
|
|
import "time"
|
|
|
|
// WeekStarActivityConfig 对应周榜活动主配置,一条记录描述一个系统下的一个周榜活动时间窗。
|
|
type WeekStarActivityConfig struct {
|
|
ID int64 `gorm:"column:id;primaryKey"` // 配置主键
|
|
SysOrigin string `gorm:"column:sys_origin;size:32;uniqueIndex:uk_week_star_sys_origin_window,priority:1;index:idx_week_star_active_lookup,priority:1"` // 系统标识,例如 LIKEI
|
|
Enabled bool `gorm:"column:enabled;index:idx_week_star_active_lookup,priority:2"` // 活动开关
|
|
StartAt time.Time `gorm:"column:start_at;uniqueIndex:uk_week_star_sys_origin_window,priority:2;index:idx_week_star_active_lookup,priority:3"` // 活动开始时间
|
|
EndAt time.Time `gorm:"column:end_at;uniqueIndex:uk_week_star_sys_origin_window,priority:3;index:idx_week_star_active_lookup,priority:4"` // 活动结束时间
|
|
Timezone string `gorm:"column:timezone;size:64"` // 活动结算时区
|
|
CreateTime time.Time `gorm:"column:create_time"` // 创建时间
|
|
UpdateTime time.Time `gorm:"column:update_time"` // 更新时间
|
|
}
|
|
|
|
// TableName 返回周榜活动主配置表名。
|
|
func (WeekStarActivityConfig) TableName() string { return "week_star_activity_config" }
|
|
|
|
// WeekStarActivityGiftConfig 对应周榜指定礼物配置,定义活动允许参与排行的礼物集合。
|
|
type WeekStarActivityGiftConfig struct {
|
|
ID int64 `gorm:"column:id;primaryKey"` // 礼物配置主键
|
|
ConfigID int64 `gorm:"column:config_id;uniqueIndex:uk_week_star_gift_sort,priority:1;index:idx_week_star_gift_config,priority:1"` // 关联活动配置 ID
|
|
GiftID int64 `gorm:"column:gift_id;index:idx_week_star_gift_config,priority:2"` // 礼物 ID
|
|
GiftName string `gorm:"column:gift_name;size:255"` // 礼物名称
|
|
GiftPhoto string `gorm:"column:gift_photo;size:1024"` // 礼物图片
|
|
GiftCandy int64 `gorm:"column:gift_candy"` // 礼物金币单价
|
|
Sort int `gorm:"column:sort;uniqueIndex:uk_week_star_gift_sort,priority:2"` // 展示顺序
|
|
CreateTime time.Time `gorm:"column:create_time"` // 创建时间
|
|
UpdateTime time.Time `gorm:"column:update_time"` // 更新时间
|
|
}
|
|
|
|
// TableName 返回周榜指定礼物配置表名。
|
|
func (WeekStarActivityGiftConfig) TableName() string { return "week_star_activity_gift_config" }
|
|
|
|
// WeekStarActivityRewardConfig 对应周榜奖励配置,定义某个名次绑定哪个奖励组。
|
|
type WeekStarActivityRewardConfig struct {
|
|
ID int64 `gorm:"column:id;primaryKey"` // 奖励配置主键
|
|
ConfigID int64 `gorm:"column:config_id;uniqueIndex:uk_week_star_reward_rank,priority:1"` // 关联活动配置 ID
|
|
Rank int `gorm:"column:rank;uniqueIndex:uk_week_star_reward_rank,priority:2"` // 排名名次
|
|
RewardGroupID int64 `gorm:"column:reward_group_id"` // 奖励组 ID
|
|
RewardGroupName string `gorm:"column:reward_group_name;size:255"` // 奖励组名称
|
|
CreateTime time.Time `gorm:"column:create_time"` // 创建时间
|
|
UpdateTime time.Time `gorm:"column:update_time"` // 更新时间
|
|
}
|
|
|
|
// TableName 返回周榜奖励配置表名。
|
|
func (WeekStarActivityRewardConfig) TableName() string { return "week_star_activity_reward_config" }
|
|
|
|
// WeekStarGiftLog 记录每笔命中活动的送礼事件,用于幂等、审计和问题追踪。
|
|
type WeekStarGiftLog struct {
|
|
ID int64 `gorm:"column:id;primaryKey"` // 日志主键
|
|
ConfigID int64 `gorm:"column:config_id;index:idx_week_star_gift_log_cycle,priority:1"` // 关联活动配置 ID
|
|
CycleKey string `gorm:"column:cycle_key;size:32;index:idx_week_star_gift_log_cycle,priority:2"` // 周期标识
|
|
TrackID string `gorm:"column:track_id;size:128;uniqueIndex:uk_week_star_track_id"` // 送礼流水幂等键
|
|
SendUserID int64 `gorm:"column:send_user_id;index:idx_week_star_gift_log_sender"` // 送礼用户 ID
|
|
GiftID int64 `gorm:"column:gift_id"` // 礼物 ID
|
|
Quantity int64 `gorm:"column:quantity"` // 礼物数量
|
|
AcceptUserSize int64 `gorm:"column:accept_user_size"` // 收礼人数
|
|
ScoreGold int64 `gorm:"column:score_gold"` // 本次累计金币积分
|
|
EventTime time.Time `gorm:"column:event_time"` // 事件发生时间
|
|
Status string `gorm:"column:status;size:32"` // 处理状态
|
|
RawPayload string `gorm:"column:raw_payload;type:longtext"` // 原始消息体
|
|
CreateTime time.Time `gorm:"column:create_time"` // 创建时间
|
|
UpdateTime time.Time `gorm:"column:update_time"` // 更新时间
|
|
}
|
|
|
|
// TableName 返回周榜送礼日志表名。
|
|
func (WeekStarGiftLog) TableName() string { return "week_star_gift_log" }
|
|
|
|
// WeekStarRankSnapshot 是每周结算时冻结的排行榜快照,用于后台查看和发奖依据留痕。
|
|
type WeekStarRankSnapshot struct {
|
|
ID int64 `gorm:"column:id;primaryKey"` // 快照主键
|
|
ConfigID int64 `gorm:"column:config_id;uniqueIndex:uk_week_star_snapshot_rank,priority:1;index:idx_week_star_snapshot_cycle,priority:1"` // 活动配置 ID
|
|
CycleKey string `gorm:"column:cycle_key;size:32;uniqueIndex:uk_week_star_snapshot_rank,priority:2;index:idx_week_star_snapshot_cycle,priority:2"` // 周期标识
|
|
Rank int `gorm:"column:rank;uniqueIndex:uk_week_star_snapshot_rank,priority:3"` // 结算名次
|
|
PeriodStartAt time.Time `gorm:"column:period_start_at"` // 周期开始时间
|
|
PeriodEndAt time.Time `gorm:"column:period_end_at"` // 周期结束时间
|
|
UserID int64 `gorm:"column:user_id"` // 上榜用户 ID
|
|
Account string `gorm:"column:account;size:64"` // 上榜用户账号
|
|
UserAvatar string `gorm:"column:user_avatar;size:1024"` // 上榜用户头像
|
|
UserNickname string `gorm:"column:user_nickname;size:255"` // 上榜用户昵称
|
|
CountryCode string `gorm:"column:country_code;size:32"` // 国家编码
|
|
CountryName string `gorm:"column:country_name;size:128"` // 国家名称
|
|
ScoreGold int64 `gorm:"column:score_gold"` // 结算金币分值
|
|
CreateTime time.Time `gorm:"column:create_time"` // 创建时间
|
|
UpdateTime time.Time `gorm:"column:update_time"` // 更新时间
|
|
}
|
|
|
|
// TableName 返回周榜快照表名。
|
|
func (WeekStarRankSnapshot) TableName() string { return "week_star_rank_snapshot" }
|
|
|
|
// WeekStarRewardRecord 记录每个周期每个奖励名次的发奖状态,便于重试和审计。
|
|
type WeekStarRewardRecord struct {
|
|
ID int64 `gorm:"column:id;primaryKey"` // 发奖记录主键
|
|
ConfigID int64 `gorm:"column:config_id;uniqueIndex:uk_week_star_reward_record_rank,priority:1;index:idx_week_star_reward_record_cycle,priority:1"` // 活动配置 ID
|
|
CycleKey string `gorm:"column:cycle_key;size:32;uniqueIndex:uk_week_star_reward_record_rank,priority:2;index:idx_week_star_reward_record_cycle,priority:2"` // 周期标识
|
|
Rank int `gorm:"column:rank;uniqueIndex:uk_week_star_reward_record_rank,priority:3"` // 发奖名次
|
|
UserID int64 `gorm:"column:user_id;index:idx_week_star_reward_record_user"` // 收奖用户 ID
|
|
Account string `gorm:"column:account;size:64"` // 收奖用户账号
|
|
UserAvatar string `gorm:"column:user_avatar;size:1024"` // 收奖用户头像
|
|
UserNickname string `gorm:"column:user_nickname;size:255"` // 收奖用户昵称
|
|
CountryCode string `gorm:"column:country_code;size:32"` // 国家编码
|
|
CountryName string `gorm:"column:country_name;size:128"` // 国家名称
|
|
RewardGroupID int64 `gorm:"column:reward_group_id"` // 奖励组 ID
|
|
RewardGroupName string `gorm:"column:reward_group_name;size:255"` // 奖励组名称
|
|
ScoreGold int64 `gorm:"column:score_gold"` // 该用户本周期最终积分
|
|
TrackID int64 `gorm:"column:track_id"` // 发奖请求幂等追踪 ID
|
|
Status string `gorm:"column:status;size:32;index:idx_week_star_reward_record_status"` // 发奖状态
|
|
RetryCount int `gorm:"column:retry_count"` // 已重试次数
|
|
LastError string `gorm:"column:last_error;size:1024"` // 最近一次失败原因
|
|
SentAt *time.Time `gorm:"column:sent_at"` // 实际发奖时间
|
|
CreateTime time.Time `gorm:"column:create_time"` // 创建时间
|
|
UpdateTime time.Time `gorm:"column:update_time"` // 更新时间
|
|
}
|
|
|
|
// TableName 返回周榜发奖记录表名。
|
|
func (WeekStarRewardRecord) TableName() string { return "week_star_reward_record" }
|