yumi-golang/internal/model/activity_idempotency.go
2026-05-19 19:50:50 +08:00

24 lines
1.3 KiB
Go

package model
import "time"
// ActivityIdempotency stores client-side idempotency keys for paid activity draw
// requests. The same activity/sysOrigin/user/key may only map to one request hash.
type ActivityIdempotency struct {
ID int64 `gorm:"column:id;primaryKey"`
Activity string `gorm:"column:activity;size:64;uniqueIndex:uk_activity_idempotency_key,priority:1"`
SysOrigin string `gorm:"column:sys_origin;size:32;uniqueIndex:uk_activity_idempotency_key,priority:2"`
UserID int64 `gorm:"column:user_id;uniqueIndex:uk_activity_idempotency_key,priority:3"`
IdempotencyKey string `gorm:"column:idempotency_key;size:128;uniqueIndex:uk_activity_idempotency_key,priority:4"`
RequestHash string `gorm:"column:request_hash;size:64"`
BusinessNo string `gorm:"column:business_no;size:64;index:idx_activity_idempotency_business"`
Status string `gorm:"column:status;size:32;index:idx_activity_idempotency_status"`
ResponseJSON string `gorm:"column:response_json;type:longtext"`
ErrorMessage string `gorm:"column:error_message;size:1024"`
CreateTime time.Time `gorm:"column:create_time"`
UpdateTime time.Time `gorm:"column:update_time"`
}
// TableName returns the activity idempotency table name.
func (ActivityIdempotency) TableName() string { return "activity_idempotency" }