package model import "time" // VoiceRoomRocketConfig 保存语音房火箭系统级配置。 type VoiceRoomRocketConfig struct { ID int64 `gorm:"column:id;primaryKey"` SysOrigin string `gorm:"column:sys_origin;size:32;uniqueIndex:uk_voice_room_rocket_config"` Enabled bool `gorm:"column:enabled"` Timezone string `gorm:"column:timezone;size:64"` MaxLevel int `gorm:"column:max_level"` RankingTopLimit int `gorm:"column:ranking_top_limit"` RewardRecordKeepDays int `gorm:"column:reward_record_keep_days"` BroadcastDurationSeconds int `gorm:"column:broadcast_duration_seconds"` InRoomRewardDelaySeconds int `gorm:"column:in_room_reward_delay_seconds"` EnergyRuleJSON string `gorm:"column:energy_rule_json;type:json"` RuleText string `gorm:"column:rule_text;type:json"` CreateTime time.Time `gorm:"column:create_time"` UpdateTime time.Time `gorm:"column:update_time"` } func (VoiceRoomRocketConfig) TableName() string { return "voice_room_rocket_config" } // VoiceRoomRocketLevelConfig 保存每级能量、资源和抖动阈值配置。 type VoiceRoomRocketLevelConfig struct { ID int64 `gorm:"column:id;primaryKey"` SysOrigin string `gorm:"column:sys_origin;size:32;uniqueIndex:uk_voice_room_rocket_level,priority:1"` Level int `gorm:"column:level;uniqueIndex:uk_voice_room_rocket_level,priority:2"` NeedEnergy int64 `gorm:"column:need_energy"` ShakeThresholdPercent string `gorm:"column:shake_threshold_percent;type:decimal(8,4)"` PreviewRocketURL string `gorm:"column:preview_rocket_url;size:512"` RocketIconURL string `gorm:"column:rocket_icon_url;size:512"` RocketAnimationURL string `gorm:"column:rocket_animation_url;size:512"` ProgressBarURL string `gorm:"column:progress_bar_url;size:512"` Enabled bool `gorm:"column:enabled"` Sort int `gorm:"column:sort"` CreateTime time.Time `gorm:"column:create_time"` UpdateTime time.Time `gorm:"column:update_time"` } func (VoiceRoomRocketLevelConfig) TableName() string { return "voice_room_rocket_level_config" } // VoiceRoomRocketRewardConfig 保存 Top1、引爆、在房间三类奖励配置。 type VoiceRoomRocketRewardConfig struct { ID int64 `gorm:"column:id;primaryKey"` SysOrigin string `gorm:"column:sys_origin;size:32;index:idx_voice_room_rocket_reward_scene,priority:1"` Level int `gorm:"column:level;index:idx_voice_room_rocket_reward_scene,priority:2"` RewardScene string `gorm:"column:reward_scene;size:32;index:idx_voice_room_rocket_reward_scene,priority:3"` RewardType string `gorm:"column:reward_type;size:32"` RewardItemID *int64 `gorm:"column:reward_item_id"` RewardName string `gorm:"column:reward_name;size:128"` RewardCover string `gorm:"column:reward_cover;size:512"` RewardAmount int64 `gorm:"column:reward_amount"` ExpireDays *int `gorm:"column:expire_days"` RewardCopies int `gorm:"column:reward_copies;default:1"` Weight int `gorm:"column:weight"` Sort int `gorm:"column:sort"` Enabled bool `gorm:"column:enabled;index:idx_voice_room_rocket_reward_scene,priority:4"` CreateTime time.Time `gorm:"column:create_time"` UpdateTime time.Time `gorm:"column:update_time"` } func (VoiceRoomRocketRewardConfig) TableName() string { return "voice_room_rocket_reward_config" } // VoiceRoomRocketStatus 保存房间当天当前火箭状态。 type VoiceRoomRocketStatus struct { ID int64 `gorm:"column:id;primaryKey"` SysOrigin string `gorm:"column:sys_origin;size:32;uniqueIndex:uk_voice_room_rocket_status,priority:1"` RoomID int64 `gorm:"column:room_id;uniqueIndex:uk_voice_room_rocket_status,priority:2"` DayKey string `gorm:"column:day_key;size:16;uniqueIndex:uk_voice_room_rocket_status,priority:3"` RoundNo int `gorm:"column:round_no"` CurrentLevel int `gorm:"column:current_level"` CurrentEnergy int64 `gorm:"column:current_energy"` NeedEnergy int64 `gorm:"column:need_energy"` Status string `gorm:"column:status;size:32"` LevelStartTime time.Time `gorm:"column:level_start_time"` LastEventTime *time.Time `gorm:"column:last_event_time"` CreateTime time.Time `gorm:"column:create_time"` UpdateTime time.Time `gorm:"column:update_time"` } func (VoiceRoomRocketStatus) TableName() string { return "voice_room_rocket_status" } // VoiceRoomRocketLevelRound 保存每轮每级的充能/发射快照。 type VoiceRoomRocketLevelRound struct { ID int64 `gorm:"column:id;primaryKey"` SysOrigin string `gorm:"column:sys_origin;size:32;uniqueIndex:uk_voice_room_rocket_level_round,priority:1;index:idx_voice_room_rocket_level_round_room,priority:1"` RoomID int64 `gorm:"column:room_id;uniqueIndex:uk_voice_room_rocket_level_round,priority:2;index:idx_voice_room_rocket_level_round_room,priority:2"` DayKey string `gorm:"column:day_key;size:16;uniqueIndex:uk_voice_room_rocket_level_round,priority:3;index:idx_voice_room_rocket_level_round_room,priority:3"` RoundNo int `gorm:"column:round_no;uniqueIndex:uk_voice_room_rocket_level_round,priority:4;index:idx_voice_room_rocket_level_round_room,priority:4"` Level int `gorm:"column:level;uniqueIndex:uk_voice_room_rocket_level_round,priority:5"` NeedEnergy int64 `gorm:"column:need_energy"` FinalEnergy int64 `gorm:"column:final_energy"` Status string `gorm:"column:status;size:32"` Top1UserID *int64 `gorm:"column:top1_user_id"` IgniteUserID *int64 `gorm:"column:ignite_user_id"` ReachTime *time.Time `gorm:"column:reach_time"` LaunchTime *time.Time `gorm:"column:launch_time"` CreateTime time.Time `gorm:"column:create_time"` UpdateTime time.Time `gorm:"column:update_time"` } func (VoiceRoomRocketLevelRound) TableName() string { return "voice_room_rocket_level_round" } // VoiceRoomRocketContribution 保存本轮本级用户贡献榜。 type VoiceRoomRocketContribution struct { ID int64 `gorm:"column:id;primaryKey"` SysOrigin string `gorm:"column:sys_origin;size:32;uniqueIndex:uk_voice_room_rocket_contribution_user,priority:1;index:idx_voice_room_rocket_contribution_rank,priority:1"` RoomID int64 `gorm:"column:room_id;uniqueIndex:uk_voice_room_rocket_contribution_user,priority:2;index:idx_voice_room_rocket_contribution_rank,priority:2"` DayKey string `gorm:"column:day_key;size:16;uniqueIndex:uk_voice_room_rocket_contribution_user,priority:3;index:idx_voice_room_rocket_contribution_rank,priority:3"` RoundNo int `gorm:"column:round_no;uniqueIndex:uk_voice_room_rocket_contribution_user,priority:4;index:idx_voice_room_rocket_contribution_rank,priority:4"` Level int `gorm:"column:level;uniqueIndex:uk_voice_room_rocket_contribution_user,priority:5;index:idx_voice_room_rocket_contribution_rank,priority:5"` UserID int64 `gorm:"column:user_id;uniqueIndex:uk_voice_room_rocket_contribution_user,priority:6"` ScoreEnergy int64 `gorm:"column:score_energy;index:idx_voice_room_rocket_contribution_rank,priority:6"` GiftCount int `gorm:"column:gift_count"` FirstContributeTime time.Time `gorm:"column:first_contribute_time"` LastContributeTime time.Time `gorm:"column:last_contribute_time;index:idx_voice_room_rocket_contribution_rank,priority:7"` CreateTime time.Time `gorm:"column:create_time"` UpdateTime time.Time `gorm:"column:update_time"` } func (VoiceRoomRocketContribution) TableName() string { return "voice_room_rocket_contribution" } // VoiceRoomRocketGiftEventLog 保存送礼事件幂等和处理日志。 type VoiceRoomRocketGiftEventLog struct { ID int64 `gorm:"column:id;primaryKey"` SysOrigin string `gorm:"column:sys_origin;size:32;index:idx_voice_room_rocket_event_room,priority:1"` TrackID string `gorm:"column:track_id;size:128;uniqueIndex:uk_voice_room_rocket_track"` RoomID int64 `gorm:"column:room_id;index:idx_voice_room_rocket_event_room,priority:2"` SendUserID int64 `gorm:"column:send_user_id"` GiftID *int64 `gorm:"column:gift_id"` GiftType string `gorm:"column:gift_type;size:32"` GiftTab string `gorm:"column:gift_tab;size:64"` RawEnergy int64 `gorm:"column:raw_energy"` AcceptedEnergy int64 `gorm:"column:accepted_energy"` DayKey string `gorm:"column:day_key;size:16;index:idx_voice_room_rocket_event_room,priority:3"` RoundNo int `gorm:"column:round_no;index:idx_voice_room_rocket_event_room,priority:4"` Level int `gorm:"column:level;index:idx_voice_room_rocket_event_room,priority:5"` Status string `gorm:"column:status;size:32"` RawPayload string `gorm:"column:raw_payload;type:mediumtext"` ErrorMessage string `gorm:"column:error_message;size:1024"` EventTime time.Time `gorm:"column:event_time"` CreateTime time.Time `gorm:"column:create_time"` UpdateTime time.Time `gorm:"column:update_time"` } func (VoiceRoomRocketGiftEventLog) TableName() string { return "voice_room_rocket_gift_event_log" } // VoiceRoomRocketLaunch 保存火箭每次发射记录。 type VoiceRoomRocketLaunch struct { ID int64 `gorm:"column:id;primaryKey"` LaunchNo string `gorm:"column:launch_no;size:64;uniqueIndex:uk_voice_room_rocket_launch_no"` SysOrigin string `gorm:"column:sys_origin;size:32;uniqueIndex:uk_voice_room_rocket_launch_level,priority:1;index:idx_voice_room_rocket_launch_room,priority:1"` RoomID int64 `gorm:"column:room_id;uniqueIndex:uk_voice_room_rocket_launch_level,priority:2;index:idx_voice_room_rocket_launch_room,priority:2"` RoomAccount string `gorm:"column:room_account;size:64"` DayKey string `gorm:"column:day_key;size:16;uniqueIndex:uk_voice_room_rocket_launch_level,priority:3"` RoundNo int `gorm:"column:round_no;uniqueIndex:uk_voice_room_rocket_launch_level,priority:4"` Level int `gorm:"column:level;uniqueIndex:uk_voice_room_rocket_launch_level,priority:5"` FinalEnergy int64 `gorm:"column:final_energy"` Top1UserID *int64 `gorm:"column:top1_user_id"` IgniteUserID *int64 `gorm:"column:ignite_user_id"` InRoomSnapshotStatus string `gorm:"column:in_room_snapshot_status;size:32"` LaunchTime time.Time `gorm:"column:launch_time;index:idx_voice_room_rocket_launch_room,priority:3"` CreateTime time.Time `gorm:"column:create_time"` UpdateTime time.Time `gorm:"column:update_time"` } func (VoiceRoomRocketLaunch) TableName() string { return "voice_room_rocket_launch" } // VoiceRoomRocketRewardRecord 保存火箭奖励发放和弹窗状态。 type VoiceRoomRocketRewardRecord struct { ID int64 `gorm:"column:id;primaryKey"` LaunchID int64 `gorm:"column:launch_id;index:idx_voice_room_rocket_reward_launch,priority:1"` LaunchNo string `gorm:"column:launch_no;size:64"` SysOrigin string `gorm:"column:sys_origin;size:32;index:idx_voice_room_rocket_reward_user,priority:1"` RoomID int64 `gorm:"column:room_id"` DayKey string `gorm:"column:day_key;size:16"` RoundNo int `gorm:"column:round_no"` Level int `gorm:"column:level"` UserID int64 `gorm:"column:user_id;index:idx_voice_room_rocket_reward_user,priority:2;index:idx_voice_room_rocket_reward_launch,priority:2"` RewardScene string `gorm:"column:reward_scene;size:32"` RewardConfigID int64 `gorm:"column:reward_config_id"` RewardType string `gorm:"column:reward_type;size:32"` RewardItemID *int64 `gorm:"column:reward_item_id"` RewardName string `gorm:"column:reward_name;size:128"` RewardCover string `gorm:"column:reward_cover;size:512"` RewardAmount int64 `gorm:"column:reward_amount"` ExpireDays *int `gorm:"column:expire_days"` GrantEventID string `gorm:"column:grant_event_id;size:128;uniqueIndex:uk_voice_room_rocket_reward_event"` GrantStatus string `gorm:"column:grant_status;size:32;index:idx_voice_room_rocket_reward_retry,priority:1"` PopupStatus string `gorm:"column:popup_status;size:32"` ErrorMessage string `gorm:"column:error_message;size:1024"` GrantTime *time.Time `gorm:"column:grant_time"` CreateTime time.Time `gorm:"column:create_time;index:idx_voice_room_rocket_reward_user,priority:3"` UpdateTime time.Time `gorm:"column:update_time;index:idx_voice_room_rocket_reward_retry,priority:2"` } func (VoiceRoomRocketRewardRecord) TableName() string { return "voice_room_rocket_reward_record" } // VoiceRoomRocketAudienceSnapshot 保存发射后窗口内在线用户快照。 type VoiceRoomRocketAudienceSnapshot struct { ID int64 `gorm:"column:id;primaryKey"` LaunchID int64 `gorm:"column:launch_id;uniqueIndex:uk_voice_room_rocket_audience,priority:1;index:idx_voice_room_rocket_audience_launch,priority:1"` SysOrigin string `gorm:"column:sys_origin;size:32"` RoomID int64 `gorm:"column:room_id"` UserID int64 `gorm:"column:user_id;uniqueIndex:uk_voice_room_rocket_audience,priority:2"` LastSeenTime time.Time `gorm:"column:last_seen_time"` Selected bool `gorm:"column:selected;index:idx_voice_room_rocket_audience_launch,priority:2"` CreateTime time.Time `gorm:"column:create_time"` } func (VoiceRoomRocketAudienceSnapshot) TableName() string { return "voice_room_rocket_audience_snapshot" }