yumi-golang/internal/model/taskcenter_models.go
2026-07-18 18:56:15 +08:00

207 lines
13 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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