yumi-golang/internal/model/voice_room_rocket_models.go
2026-05-15 12:19:42 +08:00

215 lines
14 KiB
Go

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