yumi-golang/internal/model/taskcenter_models.go
2026-07-08 20:03:52 +08:00

159 lines
9.7 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"`
SysOrigin string `gorm:"column:sys_origin;size:32;uniqueIndex:uk_task_center_archive_event,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"`
UserID int64 `gorm:"column:user_id"`
OccurredAt time.Time `gorm:"column:occurred_at"`
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"
}
// 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" }