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" }