package model import ( "time" ) // Rock 相关常量 const ( // RockDefaultBaseURL 是 Rock 上游平台的默认地址,只作为「初始值 / 兜底值」。 // 运行期一律以 rock_configs.base_url 为准:启动时由 // RockService.ApplyConfigToClient 同步到 HTTP 客户端,否则后台改过的地址 // 会在进程重启后失效。 // // 注意:迁移文件 012_rock_fulfillment.sql 中的默认值受 checksum 保护, // 不能为了统一而修改它,否则已有部署会因 checksum mismatch 启动失败。 RockDefaultBaseURL = "https://0666.pro" RockColorBlack = "black" RockColorBlue = "blue" RockStatusAvailable = "available" // 可用库存 RockStatusUsing = "using" // 已分配给订单,正在提货扫码 RockStatusBound = "bound" // 扫码绑定成功 RockStatusRedeemed = "redeemed" // 发货完成 RockStatusMismatch = "mismatch" // UID 校验不符阻断(绑错) RockStatusAbnormal = "abnormal" // 异常/作废 RockSKUBlackTshirt = "rock_black_tshirt" RockSKUBlueSportswear = "rock_blue_sportswear" RockSkinBlackTshirt = "黑色ROCK长袖T恤" RockSkinBlueSportswear = "蓝色运动服上衣" ) // RockConfig 平台配置项 type RockConfig struct { ID uint `gorm:"primaryKey;default:1" json:"id"` AutoDeliveryEnabled bool `gorm:"not null;default:true" json:"auto_delivery_enabled"` // 全局自动发货总开关 BaseURL string `gorm:"size:255;not null;default:'https://0666.pro'" json:"base_url"` // 默认值见 RockDefaultBaseURL BearerToken string `gorm:"type:text;not null;default:''" json:"bearer_token"` Username string `gorm:"size:128;not null;default:''" json:"username"` Points float64 `gorm:"type:numeric(12,2);not null;default:0.00" json:"points"` MinPointsWarning float64 `gorm:"type:numeric(12,2);not null;default:1050.00" json:"min_points_warning"` TokenWarningStock int `gorm:"not null;default:10" json:"token_warning_stock"` AutoPurchaseEnabled bool `gorm:"not null;default:false" json:"auto_purchase_enabled"` AutoPurchaseCount int `gorm:"not null;default:50" json:"auto_purchase_count"` PurchaseCooldownMinutes int `gorm:"not null;default:10" json:"purchase_cooldown_minutes"` LastPurchasedAt *time.Time `json:"last_purchased_at"` LastHeartbeatAt *time.Time `json:"last_heartbeat_at"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } func (RockConfig) TableName() string { return "rock_configs" } // RockToken 通用 Token 本地库存池记录 type RockToken struct { ID uint `gorm:"primaryKey" json:"id"` UpstreamTokenID string `gorm:"size:64;not null;default:''" json:"upstream_token_id"` Token string `gorm:"type:text;not null" json:"-"` RedeemCode string `gorm:"size:64;not null;index" json:"redeem_code"` Color string `gorm:"size:32;not null;default:'black';index" json:"color"` Region string `gorm:"size:64;not null;default:'Q/V可用'" json:"region"` Status string `gorm:"size:32;not null;default:'available';index" json:"status"` AssignedOrderNo string `gorm:"size:128;index" json:"assigned_order_no"` ClientOrderNo string `gorm:"-" json:"client_order_no,omitempty"` // 关联的创建订单商户单号 ExpectedUID string `gorm:"size:64" json:"expected_uid"` ActualRoleName string `gorm:"size:128" json:"actual_role_name"` ActualRoleID string `gorm:"size:64" json:"actual_role_id"` ActualChannel string `gorm:"size:64" json:"actual_channel"` InitialBoundSnapshot string `gorm:"type:text" json:"-"` // 分配时初始旧数据快照 JSON UpstreamFulfillID int64 `json:"upstream_fulfill_id"` TargetSkin string `gorm:"size:128" json:"target_skin"` TargetCurrency string `gorm:"size:64;not null;default:'幸运币'" json:"target_currency"` TargetCurrencyQuantity int `gorm:"not null;default:0" json:"target_currency_quantity"` MismatchAt *time.Time `gorm:"index" json:"mismatch_at"` MismatchReason string `gorm:"size:255" json:"mismatch_reason"` Remark string `gorm:"type:text;not null;default:''" json:"remark"` ClaimedAt *time.Time `json:"claimed_at"` BoundAt *time.Time `json:"bound_at"` RedeemedAt *time.Time `json:"redeemed_at"` CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"` } func (RockToken) TableName() string { return "rock_tokens" }