117 lines
6.2 KiB
Go
117 lines
6.2 KiB
Go
package model
|
||
|
||
// TaskDefinition 任务定义表
|
||
type TaskDefinition struct {
|
||
ID int64 `gorm:"primaryKey;column:id;autoIncrement"`
|
||
StarID *int64 `gorm:"column:star_id;index"` // NULL=全局默认
|
||
TaskKey string `gorm:"column:task_key;size:50;not null"`
|
||
TaskType string `gorm:"column:task_type;size:20;not null"` // daily/onboarding
|
||
Name string `gorm:"column:name;size:100;not null"`
|
||
Description string `gorm:"column:description;type:text"`
|
||
CrystalReward int64 `gorm:"column:crystal_reward;default:0"`
|
||
ExpReward int64 `gorm:"column:exp_reward;default:0"`
|
||
SortOrder int `gorm:"column:sort_order;default:0"`
|
||
IsActive bool `gorm:"column:is_active;default:true"`
|
||
CreatedAt int64 `gorm:"column:created_at"`
|
||
UpdatedAt int64 `gorm:"column:updated_at"`
|
||
}
|
||
|
||
func (TaskDefinition) TableName() string { return "task_definitions" }
|
||
|
||
// UserDailyTaskProgress 每日任务进度表
|
||
type UserDailyTaskProgress struct {
|
||
ID int64 `gorm:"primaryKey;column:id;autoIncrement"`
|
||
UserID int64 `gorm:"column:user_id;not null;index:idx_daily_user_star_key"`
|
||
StarID int64 `gorm:"column:star_id;not null;index:idx_daily_user_star_key"`
|
||
TaskKey string `gorm:"column:task_key;size:50;not null;index:idx_daily_user_star_key"`
|
||
Status string `gorm:"column:status;size:20;default:pending"` // pending/completed/claimed
|
||
CompletedAt *int64 `gorm:"column:completed_at"`
|
||
ClaimedAt *int64 `gorm:"column:claimed_at"`
|
||
CreatedAt int64 `gorm:"column:created_at"`
|
||
UpdatedAt int64 `gorm:"column:updated_at"`
|
||
}
|
||
|
||
func (UserDailyTaskProgress) TableName() string { return "user_daily_task_progress" }
|
||
|
||
// UserOnboardingProgress 引导任务进度表
|
||
type UserOnboardingProgress struct {
|
||
ID int64 `gorm:"primaryKey;column:id;autoIncrement"`
|
||
UserID int64 `gorm:"column:user_id;not null;index:idx_onboard_user_key"`
|
||
TaskKey string `gorm:"column:task_key;size:50;not null;index:idx_onboard_user_key"`
|
||
Status string `gorm:"column:status;size:20;default:pending"`
|
||
CompletedAt *int64 `gorm:"column:completed_at"`
|
||
ClaimedAt *int64 `gorm:"column:claimed_at"`
|
||
CreatedAt int64 `gorm:"column:created_at"`
|
||
UpdatedAt int64 `gorm:"column:updated_at"`
|
||
}
|
||
|
||
func (UserOnboardingProgress) TableName() string { return "user_onboarding_progress" }
|
||
|
||
// UserOnboardingStatus 引导流程状态表(per-user per-star)
|
||
type UserOnboardingStatus struct {
|
||
ID int64 `gorm:"primaryKey;column:id;autoIncrement"`
|
||
UserID int64 `gorm:"column:user_id;not null;uniqueIndex:uk_user_star_onboarding"`
|
||
StarID int64 `gorm:"column:star_id;not null;uniqueIndex:uk_user_star_onboarding"`
|
||
IsOnboardingCompleted bool `gorm:"column:is_onboarding_completed;default:false"`
|
||
IsOnboardingClaimed bool `gorm:"column:is_onboarding_claimed;default:false"`
|
||
HasFriendDisplayBonus bool `gorm:"column:has_friend_display_bonus;default:false"`
|
||
OnboardingCompletedAt *int64 `gorm:"column:onboarding_completed_at"`
|
||
OnboardingClaimedAt *int64 `gorm:"column:onboarding_claimed_at"`
|
||
CreatedAt int64 `gorm:"column:created_at"`
|
||
UpdatedAt int64 `gorm:"column:updated_at"`
|
||
CurrentStage int64 `gorm:"column:current_stage;default:0"`
|
||
Status string `gorm:"column:status;size:20;default:pending"`
|
||
IsFirstLoginBonusClaimed bool `gorm:"column:is_first_login_bonus_claimed;default:false"` // 废弃字段
|
||
CompletedAt *int64 `gorm:"column:completed_at"` // 废弃字段
|
||
ClaimedAt *int64 `gorm:"column:claimed_at"` // 废弃字段
|
||
}
|
||
|
||
func (UserOnboardingStatus) TableName() string { return "user_onboarding_status" }
|
||
|
||
// OnboardingStageConfig 引导阶段配置表
|
||
type OnboardingStageConfig struct {
|
||
ID int64 `gorm:"primaryKey;column:id;autoIncrement"`
|
||
Stage int `gorm:"column:stage;not null;uniqueIndex"`
|
||
Name string `gorm:"column:name;size:100;not null"`
|
||
Description string `gorm:"column:description;type:text"`
|
||
RequiredTaskKeys []string `gorm:"column:required_task_keys;type:text;serializer:json"` // 存储为 JSON 字符串
|
||
CrystalReward int64 `gorm:"column:crystal_reward;default:0"`
|
||
ExpReward int64 `gorm:"column:exp_reward;default:0"`
|
||
SortOrder int `gorm:"column:sort_order;default:0"`
|
||
IsActive bool `gorm:"column:is_active;default:true"`
|
||
CreatedAt int64 `gorm:"column:created_at"`
|
||
UpdatedAt int64 `gorm:"column:updated_at"`
|
||
}
|
||
|
||
func (OnboardingStageConfig) TableName() string { return "onboarding_stage_config" }
|
||
|
||
// ExhibitionRevenueRecord 展示收益记录表
|
||
type ExhibitionRevenueRecord struct {
|
||
ID int64 `gorm:"primaryKey;column:id;autoIncrement"`
|
||
UserID int64 `gorm:"column:user_id;not null;index:idx_revenue_user_star"`
|
||
StarID int64 `gorm:"column:star_id;not null;index:idx_revenue_user_star"`
|
||
ExhibitionID int64 `gorm:"column:exhibition_id;not null"`
|
||
AssetID int64 `gorm:"column:asset_id;not null"`
|
||
SlotID int64 `gorm:"column:slot_id;not null"`
|
||
SlotOwnerUID int64 `gorm:"column:slot_owner_uid;not null"`
|
||
SlotType string `gorm:"column:slot_type;size:20;not null"` // own/friend
|
||
CrystalAmount int64 `gorm:"column:crystal_amount;not null"`
|
||
CycleStartTime int64 `gorm:"column:cycle_start_time;not null"`
|
||
CycleEndTime int64 `gorm:"column:cycle_end_time;not null"`
|
||
Status string `gorm:"column:status;size:20;default:claimable"` // claimable/claimed/failed
|
||
ClaimedAt *int64 `gorm:"column:claimed_at"`
|
||
CreatedAt int64 `gorm:"column:created_at"`
|
||
}
|
||
|
||
func (ExhibitionRevenueRecord) TableName() string { return "exhibition_revenue_records" }
|
||
|
||
// TaskResetLog 重置日志表
|
||
type TaskResetLog struct {
|
||
ID int64 `gorm:"primaryKey;column:id;autoIncrement"`
|
||
ResetType string `gorm:"column:reset_type;size:20;not null"` // daily
|
||
LastResetAt int64 `gorm:"column:last_reset_at;not null"`
|
||
CreatedAt int64 `gorm:"column:created_at"`
|
||
}
|
||
|
||
func (TaskResetLog) TableName() string { return "task_reset_log" }
|