yumi-golang/internal/model/invite_models.go
2026-04-27 19:12:00 +08:00

151 lines
14 KiB
Go

package model
import "time"
// InviteCampaignConfig 保存邀请活动主配置。
type InviteCampaignConfig struct {
ID int64 `gorm:"column:id;primaryKey"` // 配置主键
SysOrigin string `gorm:"column:sys_origin;size:32;uniqueIndex:uk_invite_campaign_sys_origin"` // 系统标识
Enabled bool `gorm:"column:enabled"` // 活动开关
DownloadURL string `gorm:"column:download_url;size:512"` // 下载链接
ShareTitle string `gorm:"column:share_title;size:255"` // 分享标题
ShareDesc string `gorm:"column:share_desc;size:255"` // 分享描述
ServiceContact string `gorm:"column:service_contact;size:255"` // 客服联系方式
Timezone string `gorm:"column:timezone;size:64"` // 活动时区
AntiCheatSameIPOnce bool `gorm:"column:anti_cheat_same_ip_once"` // 同 IP 仅允许命中一次
AntiCheatSameDeviceOnce bool `gorm:"column:anti_cheat_same_device_once"` // 同设备仅允许命中一次
CreateTime time.Time `gorm:"column:create_time"` // 创建时间
UpdateTime time.Time `gorm:"column:update_time"` // 更新时间
CreateUser *int64 `gorm:"column:create_user"` // 创建用户
UpdateUser *int64 `gorm:"column:update_user"` // 更新用户
}
// TableName 返回邀请活动配置表名。
func (InviteCampaignConfig) TableName() string { return "invite_campaign_config" }
// InviteCampaignRewardRule 保存邀请活动奖励规则。
type InviteCampaignRewardRule struct {
ID int64 `gorm:"column:id;primaryKey"` // 规则主键
SysOrigin string `gorm:"column:sys_origin;size:32;index:idx_invite_rule_sys_type_sort,priority:1"` // 系统标识
RuleType string `gorm:"column:rule_type;size:32;index:idx_invite_rule_sys_type_sort,priority:2"` // 规则类型
ThresholdValue int64 `gorm:"column:threshold_value"` // 达标阈值
GoldAmount int64 `gorm:"column:gold_amount"` // 金币奖励
RewardGroupID *int64 `gorm:"column:reward_group_id"` // 道具奖励组 ID
Enabled bool `gorm:"column:enabled"` // 规则是否启用
Sort int `gorm:"column:sort;index:idx_invite_rule_sys_type_sort,priority:3"` // 展示排序
CreateTime time.Time `gorm:"column:create_time"` // 创建时间
UpdateTime time.Time `gorm:"column:update_time"` // 更新时间
CreateUser *int64 `gorm:"column:create_user"` // 创建用户
UpdateUser *int64 `gorm:"column:update_user"` // 更新用户
}
// TableName 返回邀请活动奖励规则表名。
func (InviteCampaignRewardRule) TableName() string { return "invite_campaign_reward_rule" }
// InviteCampaignRelation 记录邀请人和被邀请人的绑定关系。
type InviteCampaignRelation struct {
ID int64 `gorm:"column:id;primaryKey"` // 关系主键
SysOrigin string `gorm:"column:sys_origin;size:32;index:idx_invite_relation_sys_inviter,priority:1;index:uk_invite_relation_invitee,priority:1,unique"` // 系统标识
InviterUserID int64 `gorm:"column:inviter_user_id;index:idx_invite_relation_sys_inviter,priority:2"` // 邀请人用户 ID
InviteeUserID int64 `gorm:"column:invitee_user_id;index:uk_invite_relation_invitee,priority:2,unique"` // 被邀请人用户 ID
InviteCode string `gorm:"column:invite_code;size:32"` // 绑定时使用的邀请码
BindIP string `gorm:"column:bind_ip;size:128;index:idx_invite_relation_ip"` // 绑定 IP
DeviceFingerprint string `gorm:"column:device_fingerprint;size:255;index:idx_invite_relation_device"` // 设备指纹
EligibleStatus string `gorm:"column:eligible_status;size:32"` // 是否符合奖励资格
BlockReason string `gorm:"column:block_reason;size:255"` // 被风控拦截原因
BindTime time.Time `gorm:"column:bind_time"` // 绑定时间
CreateTime time.Time `gorm:"column:create_time"` // 创建时间
UpdateTime time.Time `gorm:"column:update_time"` // 更新时间
}
// TableName 返回邀请关系表名。
func (InviteCampaignRelation) TableName() string { return "invite_campaign_relation" }
// InviteCampaignInviteeProgress 维护被邀请人的充值进度与有效状态。
type InviteCampaignInviteeProgress struct {
ID int64 `gorm:"column:id;primaryKey"` // 进度主键
RelationID int64 `gorm:"column:relation_id;uniqueIndex:uk_invitee_progress_relation"` // 关联邀请关系 ID
SysOrigin string `gorm:"column:sys_origin;size:32"` // 系统标识
InviterUserID int64 `gorm:"column:inviter_user_id;index:idx_invitee_progress_inviter"` // 邀请人用户 ID
InviteeUserID int64 `gorm:"column:invitee_user_id;uniqueIndex:uk_invitee_progress_invitee"` // 被邀请人用户 ID
TotalRecharge int64 `gorm:"column:total_recharge_coins"` // 累计充值金币
ValidUser bool `gorm:"column:valid_user"` // 是否已成为有效用户
ValidTime *time.Time `gorm:"column:valid_time"` // 成为有效用户的时间
RewardedRuleIDs string `gorm:"column:rewarded_rule_ids;size:255"` // 已发放的规则 ID 集合
CreateTime time.Time `gorm:"column:create_time"` // 创建时间
UpdateTime time.Time `gorm:"column:update_time"` // 更新时间
}
// TableName 返回被邀请人进度表名。
func (InviteCampaignInviteeProgress) TableName() string { return "invite_campaign_invitee_progress" }
// InviteCampaignMonthlyProgress 汇总邀请人当前任务周期邀请进展。
type InviteCampaignMonthlyProgress struct {
ID int64 `gorm:"column:id;primaryKey"` // 统计主键
SysOrigin string `gorm:"column:sys_origin;size:32;uniqueIndex:uk_invite_monthly_progress,priority:1"` // 系统标识
InviterUserID int64 `gorm:"column:inviter_user_id;uniqueIndex:uk_invite_monthly_progress,priority:2"` // 邀请人用户 ID
MonthKey string `gorm:"column:month_key;size:16;uniqueIndex:uk_invite_monthly_progress,priority:3"` // 任务周期标识
InviteCount int64 `gorm:"column:invite_count"` // 邀请人数
ValidUserCount int64 `gorm:"column:valid_user_count"` // 有效用户数
TotalRecharge int64 `gorm:"column:total_recharge_coins"` // 累计充值金币
RewardGoldCoins int64 `gorm:"column:reward_gold_coins"` // 累计发放金币
CreateTime time.Time `gorm:"column:create_time"` // 创建时间
UpdateTime time.Time `gorm:"column:update_time"` // 更新时间
}
// TableName 返回邀请任务周期进度表名。
func (InviteCampaignMonthlyProgress) TableName() string { return "invite_campaign_monthly_progress" }
// InviteCampaignTaskClaim 记录任务奖励领取行为,防止重复领取。
type InviteCampaignTaskClaim struct {
ID int64 `gorm:"column:id;primaryKey"` // 领取记录主键
SysOrigin string `gorm:"column:sys_origin;size:32;uniqueIndex:uk_invite_task_claim,priority:1"` // 系统标识
InviterUserID int64 `gorm:"column:inviter_user_id;uniqueIndex:uk_invite_task_claim,priority:2"` // 邀请人用户 ID
MonthKey string `gorm:"column:month_key;size:16;uniqueIndex:uk_invite_task_claim,priority:3"` // 任务周期标识
RuleID int64 `gorm:"column:rule_id;uniqueIndex:uk_invite_task_claim,priority:4"` // 规则 ID
ClaimTime time.Time `gorm:"column:claim_time"` // 领取时间
CreateTime time.Time `gorm:"column:create_time"` // 创建时间
UpdateTime time.Time `gorm:"column:update_time"` // 更新时间
}
// TableName 返回邀请任务领取表名。
func (InviteCampaignTaskClaim) TableName() string { return "invite_campaign_task_claim" }
// InviteCampaignRewardLog 记录邀请活动金币或道具发奖明细。
type InviteCampaignRewardLog struct {
ID int64 `gorm:"column:id;primaryKey"` // 发奖日志主键
SysOrigin string `gorm:"column:sys_origin;size:32;index:idx_invite_reward_target"` // 系统标识
RelationID *int64 `gorm:"column:relation_id"` // 关联邀请关系 ID
InviterUserID *int64 `gorm:"column:inviter_user_id"` // 邀请人用户 ID
InviteeUserID *int64 `gorm:"column:invitee_user_id"` // 被邀请人用户 ID
TargetUserID int64 `gorm:"column:target_user_id;index:idx_invite_reward_target"` // 奖励接收用户 ID
RuleID *int64 `gorm:"column:rule_id"` // 命中的规则 ID
RewardScene string `gorm:"column:reward_scene;size:32"` // 奖励场景
BusinessKey string `gorm:"column:business_key;size:128;uniqueIndex:uk_invite_reward_business"` // 业务幂等键
GoldAmount int64 `gorm:"column:gold_amount"` // 金币奖励数
RewardGroupID *int64 `gorm:"column:reward_group_id"` // 奖励组 ID
Status string `gorm:"column:status;size:32"` // 发奖状态
ErrorMessage string `gorm:"column:error_message;size:255"` // 错误信息
CreateTime time.Time `gorm:"column:create_time"` // 创建时间
UpdateTime time.Time `gorm:"column:update_time"` // 更新时间
}
// TableName 返回邀请发奖日志表名。
func (InviteCampaignRewardLog) TableName() string { return "invite_campaign_reward_log" }
// InviteCampaignRechargeEvent 保存被邀请人的充值事件,用于累计进度和奖励判定。
type InviteCampaignRechargeEvent struct {
ID int64 `gorm:"column:id;primaryKey"` // 充值事件主键
SysOrigin string `gorm:"column:sys_origin;size:32"` // 系统标识
OrderID string `gorm:"column:order_id;size:128;uniqueIndex:uk_invite_recharge_order"` // 订单 ID
InviterUserID *int64 `gorm:"column:inviter_user_id"` // 邀请人用户 ID
InviteeUserID int64 `gorm:"column:invitee_user_id"` // 被邀请人用户 ID
RechargeCoins int64 `gorm:"column:recharge_coins"` // 本次充值金币
PayTime time.Time `gorm:"column:pay_time"` // 支付时间
CreateTime time.Time `gorm:"column:create_time"` // 创建时间
UpdateTime time.Time `gorm:"column:update_time"` // 更新时间
}
// TableName 返回邀请充值事件表名。
func (InviteCampaignRechargeEvent) TableName() string { return "invite_campaign_recharge_event" }