36 lines
1.7 KiB
Go
36 lines
1.7 KiB
Go
package mysqlmodel
|
|
|
|
// BenefitGrantTask 权益发放补偿任务,用于支付成功后权益发放失败时的幂等补偿。
|
|
// 唯一索引 (order_no, benefit_type) 作为幂等凭证,防止重复发放。
|
|
type BenefitGrantTask struct {
|
|
Model
|
|
UserID int64 `gorm:"column:user_id"` // 用户ID
|
|
// OrderNo 商户订单号;与 BenefitType 组成联合唯一索引作为幂等凭证。
|
|
OrderNo string `gorm:"column:order_no;uniqueIndex:uk_benefit_task_idem,priority:1"`
|
|
GoodsID int64 `gorm:"column:goods_id"` // 关联商品ID
|
|
// BenefitType 权益类型 1=vip 2=cos 3=ai 4=closet_share 5=outfit_share
|
|
BenefitType int8 `gorm:"column:benefit_type;uniqueIndex:uk_benefit_task_idem,priority:2"`
|
|
Amount int64 `gorm:"column:amount"` // 发放数量
|
|
Status int8 `gorm:"column:status"` // 状态 0=待发放 1=已发放 2=发放失败
|
|
RetryCount int `gorm:"column:retry_count"` // 已重试次数
|
|
MaxRetry int `gorm:"column:max_retry"` // 最大重试次数
|
|
LastError string `gorm:"column:last_error"` // 最近一次失败原因
|
|
}
|
|
|
|
func (BenefitGrantTask) TableName() string {
|
|
return "benefit_grant_tasks"
|
|
}
|
|
|
|
// BenefitRevokeTask 退款后的权益回收任务。退款终态与任务同事务落库,任务可幂等重试。
|
|
type BenefitRevokeTask struct {
|
|
Model
|
|
OrderNo string `gorm:"column:order_no;uniqueIndex:uk_benefit_revoke_order"`
|
|
UserID int64 `gorm:"column:user_id"`
|
|
Status int8 `gorm:"column:status"`
|
|
RetryCount int `gorm:"column:retry_count"`
|
|
MaxRetry int `gorm:"column:max_retry"`
|
|
LastError string `gorm:"column:last_error"`
|
|
}
|
|
|
|
func (BenefitRevokeTask) TableName() string { return "benefit_revoke_tasks" }
|