33 lines
2.3 KiB
Go
33 lines
2.3 KiB
Go
package models
|
|
|
|
// PeripheralVerifyCode 防伪码主表(stage 1 新增,详见 docs/design/peripheral-verify.md §3.2.3)
|
|
//
|
|
// 关系:
|
|
// - code(明文)与 peripheral_info.code 一对一(扫码时通过 code_hash 反查再 JOIN)
|
|
// - code_hash = HMAC-SHA256(SECRET_KEY, code)[:32],URL 中实际出现
|
|
// - sign = HMAC-SHA256(SECRET_KEY, code_hash)[:32],URL 中验签参数
|
|
//
|
|
// 一物一码:每条记录对应一个物理周边的防伪码。
|
|
type PeripheralVerifyCode struct {
|
|
ID int64 `gorm:"primaryKey;autoIncrement;column:id"`
|
|
Code string `gorm:"type:varchar(50);not null;unique;column:code"` // 明文防伪码,内部使用
|
|
CodeHash string `gorm:"type:varchar(32);not null;unique;column:code_hash"` // HMAC 密文,URL 对外
|
|
BatchID *int64 `gorm:"column:batch_id"` // 所属批次
|
|
PeripheralInfoID *int64 `gorm:"column:peripheral_info_id"` // 关联 peripheral_info
|
|
SerialNumber string `gorm:"type:varchar(32);not null;default:'';column:serial_number"`
|
|
RarityLevel int16 `gorm:"not null;default:1;column:rarity_level"`
|
|
Status int16 `gorm:"not null;default:1;column:status"` // 0=待激活 1=已激活 2=已作废 3=已冻结 4=已核销
|
|
QRCodeURL string `gorm:"type:varchar(500);not null;default:'';column:qrcode_url"`
|
|
H5URL string `gorm:"type:varchar(500);not null;default:'';column:h5_url"`
|
|
Sign string `gorm:"type:varchar(64);not null;default:'';column:sign"` // URL HMAC 签名
|
|
StatusReason string `gorm:"type:varchar(200);not null;default:'';column:status_reason"`
|
|
ExpireAt int64 `gorm:"not null;default:0;column:expire_at"`
|
|
FirstScannedAt int64 `gorm:"not null;default:0;column:first_scanned_at"`
|
|
LastScannedAt int64 `gorm:"not null;default:0;column:last_scanned_at"`
|
|
ScanCount int64 `gorm:"not null;default:0;column:scan_count"`
|
|
CreatedBy string `gorm:"type:varchar(64);not null;column:created_by"`
|
|
CreatedAt int64 `gorm:"not null;column:created_at"`
|
|
UpdatedAt int64 `gorm:"not null;column:updated_at"`
|
|
}
|
|
|
|
func (PeripheralVerifyCode) TableName() string { return "peripheral_verify_code" } |