207 lines
13 KiB
Go
207 lines
13 KiB
Go
package model
|
||
|
||
import "time"
|
||
|
||
// TaskCenterConfig 保存任务中心的系统级开关和时区配置。
|
||
type TaskCenterConfig struct {
|
||
ID int64 `gorm:"column:id;primaryKey"`
|
||
SysOrigin string `gorm:"column:sys_origin;size:32;uniqueIndex:uk_task_center_config_sys_origin"`
|
||
Enabled bool `gorm:"column:enabled;index:idx_task_center_config_enabled"`
|
||
Timezone string `gorm:"column:timezone;size:64"`
|
||
CreateTime time.Time `gorm:"column:create_time"`
|
||
UpdateTime time.Time `gorm:"column:update_time"`
|
||
}
|
||
|
||
func (TaskCenterConfig) TableName() string { return "task_center_config" }
|
||
|
||
// TaskCenterTaskConfig 保存单个任务定义。
|
||
type TaskCenterTaskConfig struct {
|
||
ID int64 `gorm:"column:id;primaryKey"`
|
||
ConfigID int64 `gorm:"column:config_id;index:idx_task_center_task_config_id"`
|
||
SysOrigin string `gorm:"column:sys_origin;size:32;uniqueIndex:uk_task_center_task_code,priority:1;index:idx_task_center_task_sys_category"`
|
||
TaskCode string `gorm:"column:task_code;size:64;uniqueIndex:uk_task_center_task_code,priority:2"`
|
||
TaskCategory string `gorm:"column:task_category;size:32;index:idx_task_center_task_sys_category"`
|
||
Enabled bool `gorm:"column:enabled;index:idx_task_center_task_enabled"`
|
||
TaskName string `gorm:"column:task_name;size:255"`
|
||
TaskDesc string `gorm:"column:task_desc;size:255"`
|
||
ConditionType string `gorm:"column:condition_type;size:64;index:idx_task_center_task_condition"`
|
||
TargetValue int64 `gorm:"column:target_value"`
|
||
TargetUnit string `gorm:"column:target_unit;size:32"`
|
||
RewardGold int64 `gorm:"column:reward_gold"`
|
||
JumpType string `gorm:"column:jump_type;size:64"`
|
||
JumpPage string `gorm:"column:jump_page;size:512"`
|
||
TaskIcon string `gorm:"column:task_icon;size:512"`
|
||
Cover string `gorm:"column:cover;size:512"`
|
||
SortOrder int `gorm:"column:sort_order;index:idx_task_center_task_sort"`
|
||
CreateTime time.Time `gorm:"column:create_time"`
|
||
UpdateTime time.Time `gorm:"column:update_time"`
|
||
}
|
||
|
||
func (TaskCenterTaskConfig) TableName() string { return "task_center_task_config" }
|
||
|
||
// TaskCenterConditionJumpConfig 保存任务条件对应的跳转配置。
|
||
type TaskCenterConditionJumpConfig struct {
|
||
ID int64 `gorm:"column:id;primaryKey"`
|
||
ConfigID int64 `gorm:"column:config_id;index:idx_task_center_condition_jump_config_id"`
|
||
SysOrigin string `gorm:"column:sys_origin;size:32;uniqueIndex:uk_task_center_condition_jump,priority:1;index:idx_task_center_condition_jump_sys_category"`
|
||
TaskCategory string `gorm:"column:task_category;size:32;uniqueIndex:uk_task_center_condition_jump,priority:2;index:idx_task_center_condition_jump_sys_category"`
|
||
ConditionType string `gorm:"column:condition_type;size:64;uniqueIndex:uk_task_center_condition_jump,priority:3;index:idx_task_center_condition_jump_condition"`
|
||
JumpType string `gorm:"column:jump_type;size:64"`
|
||
JumpPage string `gorm:"column:jump_page;size:512"`
|
||
SortOrder int `gorm:"column:sort_order;index:idx_task_center_condition_jump_sort"`
|
||
CreateTime time.Time `gorm:"column:create_time"`
|
||
UpdateTime time.Time `gorm:"column:update_time"`
|
||
}
|
||
|
||
func (TaskCenterConditionJumpConfig) TableName() string {
|
||
return "task_center_condition_jump_config"
|
||
}
|
||
|
||
// TaskCenterUserProgress 保存用户在某个任务周期内的进度。
|
||
type TaskCenterUserProgress struct {
|
||
ID int64 `gorm:"column:id;primaryKey"`
|
||
SysOrigin string `gorm:"column:sys_origin;size:32;uniqueIndex:uk_task_center_user_progress,priority:1;index:idx_task_center_progress_user"`
|
||
UserID int64 `gorm:"column:user_id;uniqueIndex:uk_task_center_user_progress,priority:2;index:idx_task_center_progress_user"`
|
||
TaskID int64 `gorm:"column:task_id;uniqueIndex:uk_task_center_user_progress,priority:3;index:idx_task_center_progress_task"`
|
||
TaskCode string `gorm:"column:task_code;size:64;index:idx_task_center_progress_task_code"`
|
||
TaskCategory string `gorm:"column:task_category;size:32"`
|
||
CycleKey string `gorm:"column:cycle_key;size:32;uniqueIndex:uk_task_center_user_progress,priority:4;index:idx_task_center_progress_cycle"`
|
||
ConditionType string `gorm:"column:condition_type;size:64"`
|
||
CompletedValue int64 `gorm:"column:completed_value"`
|
||
TargetValue int64 `gorm:"column:target_value"`
|
||
Status string `gorm:"column:status;size:32;index:idx_task_center_progress_status"`
|
||
RewardCollected bool `gorm:"column:reward_collected"`
|
||
ClaimedAt *time.Time `gorm:"column:claimed_at"`
|
||
CreateTime time.Time `gorm:"column:create_time"`
|
||
UpdateTime time.Time `gorm:"column:update_time"`
|
||
}
|
||
|
||
func (TaskCenterUserProgress) TableName() string { return "task_center_user_progress" }
|
||
|
||
// TaskCenterEvent 保存内部业务事件和命中的任务流水。
|
||
type TaskCenterEvent struct {
|
||
ID int64 `gorm:"column:id;primaryKey"`
|
||
SysOrigin string `gorm:"column:sys_origin;size:32;index:idx_task_center_event_sys"`
|
||
EventID string `gorm:"column:event_id;size:128;uniqueIndex:uk_task_center_event_task,priority:1;index:idx_task_center_event_id"`
|
||
EventType string `gorm:"column:event_type;size:64;index:idx_task_center_event_type"`
|
||
UserID int64 `gorm:"column:user_id;index:idx_task_center_event_user"`
|
||
TaskID int64 `gorm:"column:task_id;uniqueIndex:uk_task_center_event_task,priority:2"`
|
||
TaskCode string `gorm:"column:task_code;size:64;index:idx_task_center_event_task_code"`
|
||
TaskCategory string `gorm:"column:task_category;size:32"`
|
||
CycleKey string `gorm:"column:cycle_key;size:32"`
|
||
DeltaValue int64 `gorm:"column:delta_value"`
|
||
CompletedValue int64 `gorm:"column:completed_value"`
|
||
RawJSON string `gorm:"column:raw_json;type:text"`
|
||
OccurredAt time.Time `gorm:"column:occurred_at;index:idx_task_center_event_occurred"`
|
||
CreateTime time.Time `gorm:"column:create_time"`
|
||
UpdateTime time.Time `gorm:"column:update_time"`
|
||
}
|
||
|
||
func (TaskCenterEvent) TableName() string { return "task_center_event" }
|
||
|
||
// TaskCenterEventDedup 保存业务事件幂等记录。
|
||
type TaskCenterEventDedup struct {
|
||
ID int64 `gorm:"column:id;primaryKey"`
|
||
SysOrigin string `gorm:"column:sys_origin;size:32;uniqueIndex:uk_task_center_event_dedup,priority:1"`
|
||
EventID string `gorm:"column:event_id;size:128;uniqueIndex:uk_task_center_event_dedup,priority:2"`
|
||
EventType string `gorm:"column:event_type;size:64"`
|
||
UserID int64 `gorm:"column:user_id"`
|
||
Status string `gorm:"column:status;size:32;index:idx_task_center_event_dedup_status"`
|
||
FailureReason string `gorm:"column:failure_reason;size:512"`
|
||
CreateTime time.Time `gorm:"column:create_time;index:idx_task_center_event_dedup_create_time"`
|
||
UpdateTime time.Time `gorm:"column:update_time"`
|
||
}
|
||
|
||
func (TaskCenterEventDedup) TableName() string { return "task_center_event_dedup" }
|
||
|
||
// TaskCenterEventArchiveOutbox 保存待归档到 COS 的原始事件。
|
||
type TaskCenterEventArchiveOutbox struct {
|
||
ID int64 `gorm:"column:id;primaryKey;index:idx_task_center_archive_claim_create,priority:3;index:idx_task_center_archive_claim_stale,priority:3;index:idx_task_center_game_king_backfill,priority:4"`
|
||
SysOrigin string `gorm:"column:sys_origin;size:32;uniqueIndex:uk_task_center_archive_event,priority:1;index:idx_task_center_game_king_backfill,priority:1"`
|
||
EventID string `gorm:"column:event_id;size:128;uniqueIndex:uk_task_center_archive_event,priority:2"`
|
||
EventType string `gorm:"column:event_type;size:64;index:idx_task_center_game_king_backfill,priority:2"`
|
||
UserID int64 `gorm:"column:user_id"`
|
||
OccurredAt time.Time `gorm:"column:occurred_at;index:idx_task_center_game_king_backfill,priority:3"`
|
||
RawJSON string `gorm:"column:raw_json;type:text"`
|
||
Status string `gorm:"column:status;size:32;index:idx_task_center_archive_status_time,priority:1;index:idx_task_center_archive_claim_create,priority:1;index:idx_task_center_archive_claim_stale,priority:1"`
|
||
RetryCount int `gorm:"column:retry_count"`
|
||
COSKey string `gorm:"column:cos_key;size:512"`
|
||
FailureReason string `gorm:"column:failure_reason;size:512"`
|
||
CreateTime time.Time `gorm:"column:create_time;index:idx_task_center_archive_status_time,priority:2;index:idx_task_center_archive_claim_create,priority:2"`
|
||
UpdateTime time.Time `gorm:"column:update_time;index:idx_task_center_archive_claim_stale,priority:2"`
|
||
ArchivedAt *time.Time `gorm:"column:archived_at"`
|
||
}
|
||
|
||
func (TaskCenterEventArchiveOutbox) TableName() string {
|
||
return "task_center_event_archive_outbox"
|
||
}
|
||
|
||
// TaskCenterArchiveManifest 保存 COS 对象的可验证清单。GC 只有在源对象和恢复包都达到
|
||
// VERIFIED 后才允许删行,避免把“PUT 返回成功”错误地当成可恢复承诺。
|
||
type TaskCenterArchiveManifest struct {
|
||
ID int64 `gorm:"column:id;primaryKey;autoIncrement"`
|
||
ObjectType string `gorm:"column:object_type;size:32;index:idx_task_center_archive_manifest_run,priority:2"`
|
||
RunID string `gorm:"column:run_id;size:64;index:idx_task_center_archive_manifest_run,priority:1"`
|
||
COSKey string `gorm:"column:cos_key;size:512;uniqueIndex:uk_task_center_archive_manifest_cos_key"`
|
||
ParentCOSKey string `gorm:"column:parent_cos_key;size:512"`
|
||
SHA256 string `gorm:"column:sha256;size:64"`
|
||
ETag string `gorm:"column:etag;size:128"`
|
||
CompressedSize int64 `gorm:"column:compressed_size"`
|
||
RowCount int `gorm:"column:row_count"`
|
||
MinOutboxID *int64 `gorm:"column:min_outbox_id"`
|
||
MaxOutboxID *int64 `gorm:"column:max_outbox_id"`
|
||
MinOccurredAt *time.Time `gorm:"column:min_occurred_at"`
|
||
MaxOccurredAt *time.Time `gorm:"column:max_occurred_at"`
|
||
VerificationStatus string `gorm:"column:verification_status;size:32"`
|
||
VerifiedAt *time.Time `gorm:"column:verified_at"`
|
||
CreateTime time.Time `gorm:"column:create_time"`
|
||
UpdateTime time.Time `gorm:"column:update_time"`
|
||
}
|
||
|
||
func (TaskCenterArchiveManifest) TableName() string { return "task_center_archive_manifest" }
|
||
|
||
// TaskCenterArchiveGCRun 是固定 id=1 的全局控制行。管理命令、cron tick 和 Game King
|
||
// 启用门禁都先锁这一行,从数据库层串行化多节点状态变化。
|
||
type TaskCenterArchiveGCRun struct {
|
||
ID uint8 `gorm:"column:id;primaryKey"`
|
||
RunID string `gorm:"column:run_id;size:64"`
|
||
Status string `gorm:"column:status;size:32"`
|
||
CutoffTime *time.Time `gorm:"column:cutoff_time"`
|
||
BatchSize int `gorm:"column:batch_size"`
|
||
ScannedRows int64 `gorm:"column:scanned_rows"`
|
||
EligibleRows int64 `gorm:"column:eligible_rows"`
|
||
ProtectedRows int64 `gorm:"column:protected_rows"`
|
||
DeletedRows int64 `gorm:"column:deleted_rows"`
|
||
RecoveryObjectCount int64 `gorm:"column:recovery_object_count"`
|
||
CursorCreateTime *time.Time `gorm:"column:cursor_create_time"`
|
||
CursorID int64 `gorm:"column:cursor_id"`
|
||
LeaseOwner string `gorm:"column:lease_owner;size:160"`
|
||
LeaseUntil *time.Time `gorm:"column:lease_until"`
|
||
LastError string `gorm:"column:last_error;size:1000"`
|
||
CreateTime time.Time `gorm:"column:create_time"`
|
||
UpdateTime time.Time `gorm:"column:update_time"`
|
||
}
|
||
|
||
func (TaskCenterArchiveGCRun) TableName() string { return "task_center_archive_gc_run" }
|
||
|
||
// TaskCenterClaimRecord 保存任务奖励领取记录。
|
||
type TaskCenterClaimRecord struct {
|
||
ID int64 `gorm:"column:id;primaryKey"`
|
||
SysOrigin string `gorm:"column:sys_origin;size:32;index:idx_task_center_claim_sys"`
|
||
UserID int64 `gorm:"column:user_id;index:idx_task_center_claim_user"`
|
||
TaskID int64 `gorm:"column:task_id;index:idx_task_center_claim_task"`
|
||
TaskCode string `gorm:"column:task_code;size:64;index:idx_task_center_claim_task_code"`
|
||
TaskName string `gorm:"column:task_name;size:255"`
|
||
TaskCategory string `gorm:"column:task_category;size:32"`
|
||
CycleKey string `gorm:"column:cycle_key;size:32;index:idx_task_center_claim_cycle"`
|
||
RewardGold int64 `gorm:"column:reward_gold"`
|
||
WalletEventID string `gorm:"column:wallet_event_id;size:160;uniqueIndex:uk_task_center_claim_wallet_event"`
|
||
Status string `gorm:"column:status;size:32;index:idx_task_center_claim_status"`
|
||
FailureReason string `gorm:"column:failure_reason;size:512"`
|
||
ClaimedAt *time.Time `gorm:"column:claimed_at"`
|
||
CreateTime time.Time `gorm:"column:create_time"`
|
||
UpdateTime time.Time `gorm:"column:update_time"`
|
||
}
|
||
|
||
func (TaskCenterClaimRecord) TableName() string { return "task_center_claim_record" }
|