Files
zt-closet-backend/internal/mysqlmodel/benefit_grant_task.go
T
2026-09-15 00:53:04 +08:00

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