222 lines
11 KiB
Go
222 lines
11 KiB
Go
package model
|
||
|
||
import "time"
|
||
|
||
// YumiGiftChallengeActivity 保存一次独立活动周期;活动开始后核心时间和奖励配置只读。
|
||
type YumiGiftChallengeActivity struct {
|
||
ID int64 `gorm:"column:id;primaryKey"`
|
||
ActivityCode string `gorm:"column:activity_code"`
|
||
ActivityName string `gorm:"column:activity_name"`
|
||
ActivityDesc string `gorm:"column:activity_desc"`
|
||
SysOrigin string `gorm:"column:sys_origin"`
|
||
Timezone string `gorm:"column:time_zone"`
|
||
StartTime time.Time `gorm:"column:start_time"`
|
||
EndTime time.Time `gorm:"column:end_time"`
|
||
DailySettlementDelayMinutes int `gorm:"column:daily_settlement_delay_minutes"`
|
||
OverallSettlementDelayMinutes int `gorm:"column:overall_settlement_delay_minutes"`
|
||
OverallSettlementTime time.Time `gorm:"column:overall_settlement_time"`
|
||
DisplayTopN int `gorm:"column:display_top_n"`
|
||
Enabled bool `gorm:"column:enabled"`
|
||
OverallSettlementStatus string `gorm:"column:overall_settlement_status"`
|
||
Version int `gorm:"column:version"`
|
||
CreateTime time.Time `gorm:"column:create_time"`
|
||
UpdateTime time.Time `gorm:"column:update_time"`
|
||
}
|
||
|
||
func (YumiGiftChallengeActivity) TableName() string { return "yumi_gift_challenge_activity" }
|
||
|
||
// YumiGiftChallengeTaskConfig 是活动固定三个每日任务槽位的定义。
|
||
type YumiGiftChallengeTaskConfig struct {
|
||
ID int64 `gorm:"column:id;primaryKey"`
|
||
ActivityID int64 `gorm:"column:activity_id"`
|
||
TaskCode string `gorm:"column:task_code"`
|
||
TaskType string `gorm:"column:task_type"`
|
||
TaskTitle string `gorm:"column:task_title"`
|
||
TaskDesc string `gorm:"column:task_desc"`
|
||
TargetValue Decimal24_2 `gorm:"column:target_value;type:decimal(24,2)"`
|
||
ResourceGroupID *int64 `gorm:"column:resource_group_id"`
|
||
Enabled bool `gorm:"column:enabled"`
|
||
SortOrder int `gorm:"column:sort_order"`
|
||
CreateTime time.Time `gorm:"column:create_time"`
|
||
UpdateTime time.Time `gorm:"column:update_time"`
|
||
}
|
||
|
||
func (YumiGiftChallengeTaskConfig) TableName() string { return "yumi_gift_challenge_task_config" }
|
||
|
||
// YumiGiftChallengeRankReward 把一个连续名次区间绑定到一个奖励组。
|
||
type YumiGiftChallengeRankReward struct {
|
||
ID int64 `gorm:"column:id;primaryKey"`
|
||
ActivityID int64 `gorm:"column:activity_id"`
|
||
PeriodType string `gorm:"column:period_type"`
|
||
StartRank int `gorm:"column:start_rank"`
|
||
EndRank int `gorm:"column:end_rank"`
|
||
ResourceGroupID int64 `gorm:"column:resource_group_id"`
|
||
RewardName string `gorm:"column:reward_name"`
|
||
CreateTime time.Time `gorm:"column:create_time"`
|
||
UpdateTime time.Time `gorm:"column:update_time"`
|
||
}
|
||
|
||
func (YumiGiftChallengeRankReward) TableName() string { return "yumi_gift_challenge_rank_reward" }
|
||
|
||
// YumiGiftChallengeRewardSnapshot 是启用时冻结的完整奖励项,展示和实际发放均读取此表。
|
||
type YumiGiftChallengeRewardSnapshot struct {
|
||
ID int64 `gorm:"column:id;primaryKey"`
|
||
ActivityID int64 `gorm:"column:activity_id"`
|
||
ResourceGroupID int64 `gorm:"column:resource_group_id"`
|
||
RewardConfigID int64 `gorm:"column:reward_config_id"`
|
||
RewardType string `gorm:"column:reward_type"`
|
||
DetailType string `gorm:"column:detail_type"`
|
||
Content string `gorm:"column:content"`
|
||
Quantity int64 `gorm:"column:quantity"`
|
||
SortOrder int `gorm:"column:sort_order"`
|
||
Remark string `gorm:"column:remark"`
|
||
Cover string `gorm:"column:cover"`
|
||
SourceURL string `gorm:"column:source_url"`
|
||
DisplayName string `gorm:"column:display_name"`
|
||
CreateTime time.Time `gorm:"column:create_time"`
|
||
}
|
||
|
||
func (YumiGiftChallengeRewardSnapshot) TableName() string {
|
||
return "yumi_gift_challenge_reward_snapshot"
|
||
}
|
||
|
||
// YumiGiftChallengeGiftLedger 是原始送礼事件的活动账本,也是消费幂等边界。
|
||
type YumiGiftChallengeGiftLedger struct {
|
||
ID int64 `gorm:"column:id;primaryKey"`
|
||
ActivityID int64 `gorm:"column:activity_id"`
|
||
SourceEventTrackID string `gorm:"column:source_event_track_id"`
|
||
UserID int64 `gorm:"column:user_id"`
|
||
GiftID int64 `gorm:"column:gift_id"`
|
||
GiftTab string `gorm:"column:gift_tab"`
|
||
Amount Decimal24_2 `gorm:"column:amount;type:decimal(24,2)"`
|
||
EventTime time.Time `gorm:"column:event_time"`
|
||
StatDate string `gorm:"column:stat_date;type:date"`
|
||
CreateTime time.Time `gorm:"column:create_time"`
|
||
}
|
||
|
||
func (YumiGiftChallengeGiftLedger) TableName() string { return "yumi_gift_challenge_gift_ledger" }
|
||
|
||
// YumiGiftChallengeUserScore 保存活动总榜聚合,避免榜单查询扫描明细账本。
|
||
type YumiGiftChallengeUserScore struct {
|
||
ActivityID int64 `gorm:"column:activity_id;primaryKey"`
|
||
UserID int64 `gorm:"column:user_id;primaryKey"`
|
||
Score Decimal24_2 `gorm:"column:score;type:decimal(24,2)"`
|
||
ScoreReachedTime time.Time `gorm:"column:score_reached_time"`
|
||
CreateTime time.Time `gorm:"column:create_time"`
|
||
UpdateTime time.Time `gorm:"column:update_time"`
|
||
}
|
||
|
||
func (YumiGiftChallengeUserScore) TableName() string { return "yumi_gift_challenge_user_score" }
|
||
|
||
// YumiGiftChallengeUserDailyScore 保存活动时区自然日榜聚合。
|
||
type YumiGiftChallengeUserDailyScore struct {
|
||
ActivityID int64 `gorm:"column:activity_id;primaryKey"`
|
||
StatDate string `gorm:"column:stat_date;type:date;primaryKey"`
|
||
UserID int64 `gorm:"column:user_id;primaryKey"`
|
||
Score Decimal24_2 `gorm:"column:score;type:decimal(24,2)"`
|
||
ScoreReachedTime time.Time `gorm:"column:score_reached_time"`
|
||
CreateTime time.Time `gorm:"column:create_time"`
|
||
UpdateTime time.Time `gorm:"column:update_time"`
|
||
}
|
||
|
||
func (YumiGiftChallengeUserDailyScore) TableName() string {
|
||
return "yumi_gift_challenge_user_daily_score"
|
||
}
|
||
|
||
// YumiGiftChallengeUserTaskDaily 冻结用户当天任务目标和奖励归属,并记录首次领取 requestId。
|
||
type YumiGiftChallengeUserTaskDaily struct {
|
||
ID int64 `gorm:"column:id;primaryKey"`
|
||
ActivityID int64 `gorm:"column:activity_id"`
|
||
StatDate string `gorm:"column:stat_date;type:date"`
|
||
UserID int64 `gorm:"column:user_id"`
|
||
TaskConfigID int64 `gorm:"column:task_config_id"`
|
||
TaskCode string `gorm:"column:task_code"`
|
||
TaskType string `gorm:"column:task_type"`
|
||
TaskTitle string `gorm:"column:task_title"`
|
||
SortOrder int `gorm:"column:sort_order"`
|
||
TargetValue Decimal24_2 `gorm:"column:target_value;type:decimal(24,2)"`
|
||
ProgressValue Decimal24_2 `gorm:"column:progress_value;type:decimal(24,2)"`
|
||
CompletedTime *time.Time `gorm:"column:completed_time"`
|
||
ResourceGroupID *int64 `gorm:"column:resource_group_id"`
|
||
BusinessNo string `gorm:"column:business_no"`
|
||
ClaimRequestID string `gorm:"column:claim_request_id"`
|
||
DeliveryStatus string `gorm:"column:delivery_status"`
|
||
RetryCount int `gorm:"column:retry_count"`
|
||
FailureReason string `gorm:"column:failure_reason"`
|
||
ClaimedTime *time.Time `gorm:"column:claimed_time"`
|
||
DeliverTime *time.Time `gorm:"column:deliver_time"`
|
||
CreateTime time.Time `gorm:"column:create_time"`
|
||
UpdateTime time.Time `gorm:"column:update_time"`
|
||
}
|
||
|
||
func (YumiGiftChallengeUserTaskDaily) TableName() string {
|
||
return "yumi_gift_challenge_user_task_daily"
|
||
}
|
||
|
||
// YumiGiftChallengePeriodSettlement 是包括空榜在内的周期门闩;PROCESSING 后禁止迟到写入。
|
||
type YumiGiftChallengePeriodSettlement struct {
|
||
ID int64 `gorm:"column:id;primaryKey"`
|
||
ActivityID int64 `gorm:"column:activity_id"`
|
||
PeriodType string `gorm:"column:period_type"`
|
||
PeriodKey string `gorm:"column:period_key"`
|
||
StatDate *string `gorm:"column:stat_date;type:date"`
|
||
SnapshotDueTime time.Time `gorm:"column:snapshot_due_time"`
|
||
Status string `gorm:"column:status"`
|
||
CreateTime time.Time `gorm:"column:create_time"`
|
||
UpdateTime time.Time `gorm:"column:update_time"`
|
||
}
|
||
|
||
func (YumiGiftChallengePeriodSettlement) TableName() string {
|
||
return "yumi_gift_challenge_period_settlement"
|
||
}
|
||
|
||
// YumiGiftChallengeSettlement 是已经冻结的获奖 parent,先提交后再物化和发送奖励项。
|
||
type YumiGiftChallengeSettlement struct {
|
||
ID int64 `gorm:"column:id;primaryKey"`
|
||
ActivityID int64 `gorm:"column:activity_id"`
|
||
PeriodType string `gorm:"column:period_type"`
|
||
PeriodKey string `gorm:"column:period_key"`
|
||
StatDate *string `gorm:"column:stat_date;type:date"`
|
||
UserID int64 `gorm:"column:user_id"`
|
||
RankNo int `gorm:"column:rank_no"`
|
||
Score Decimal24_2 `gorm:"column:score;type:decimal(24,2)"`
|
||
RankRewardID int64 `gorm:"column:rank_reward_id"`
|
||
ResourceGroupID int64 `gorm:"column:resource_group_id"`
|
||
BusinessNo string `gorm:"column:business_no"`
|
||
DeliveryStatus string `gorm:"column:delivery_status"`
|
||
RetryCount int `gorm:"column:retry_count"`
|
||
FailureReason string `gorm:"column:failure_reason"`
|
||
DeliverTime *time.Time `gorm:"column:deliver_time"`
|
||
CreateTime time.Time `gorm:"column:create_time"`
|
||
UpdateTime time.Time `gorm:"column:update_time"`
|
||
}
|
||
|
||
func (YumiGiftChallengeSettlement) TableName() string { return "yumi_gift_challenge_settlement" }
|
||
|
||
// YumiGiftChallengeDeliveryItem 是实际发奖最小幂等单元,UNKNOWN 只允许人工核账处理。
|
||
type YumiGiftChallengeDeliveryItem struct {
|
||
ID int64 `gorm:"column:id;primaryKey"`
|
||
OwnerType string `gorm:"column:owner_type"`
|
||
OwnerID int64 `gorm:"column:owner_id"`
|
||
ActivityID int64 `gorm:"column:activity_id"`
|
||
UserID int64 `gorm:"column:user_id"`
|
||
RewardConfigID int64 `gorm:"column:reward_config_id"`
|
||
ResourceGroupID int64 `gorm:"column:resource_group_id"`
|
||
RewardType string `gorm:"column:reward_type"`
|
||
DetailType string `gorm:"column:detail_type"`
|
||
Content string `gorm:"column:content"`
|
||
Quantity int64 `gorm:"column:quantity"`
|
||
SortOrder int `gorm:"column:sort_order"`
|
||
Remark string `gorm:"column:remark"`
|
||
DeliveryStatus string `gorm:"column:delivery_status"`
|
||
RetryCount int `gorm:"column:retry_count"`
|
||
FailureReason string `gorm:"column:failure_reason"`
|
||
DeliverTime *time.Time `gorm:"column:deliver_time"`
|
||
CreateTime time.Time `gorm:"column:create_time"`
|
||
UpdateTime time.Time `gorm:"column:update_time"`
|
||
}
|
||
|
||
func (YumiGiftChallengeDeliveryItem) TableName() string {
|
||
return "yumi_gift_challenge_delivery_item"
|
||
}
|