package models import ( "context" "encoding/json" "errors" "fmt" "go-policy-service/utils" "gorm.io/gorm" ) type ThirdAccount struct { ID uint `gorm:"primaryKey;column:id"` CreatedAt *int `gorm:"column:created_at"` // 可选:你可以换成 time.Time UpdatedAt *int `gorm:"column:updated_at"` // 同上 Name string `gorm:"type:varchar(45);column:name"` GroupName string `gorm:"type:varchar(45);column:group"` // 注意 group 是 Go 的关键字,不建议用作字段名 Cookie string `gorm:"type:text;column:cookie"` Emails string `gorm:"type:text;column:emails"` Config string `gorm:"type:text;column:config"` LastUsedAt *int `gorm:"column:last_used_at"` Username string `gorm:"type:varchar(45);column:username"` Password string `gorm:"type:varchar(45);column:password"` Status int `gorm:"column:status;type:tinyint(1)"` // 使用int更明确 MerchantID *int `gorm:"column:merchant_id"` Tag string `gorm:"type:varchar(45);column:tag"` UseType string `gorm:"type:varchar(45);column:use_type;default:下单"` MaxQpsOrder *int `gorm:"column:max_qps_order"` // 最大同时下单数 } func (ThirdAccount) TableName() string { return "third_account" // 需要添加这个方法明确表名 } type HgConfig struct { Account string `json:"account"` Password string `json:"password"` TicketChannel string `json:"ticket_channel"` PayMethod string `json:"pay_method"` } func GetHGConf(ctx context.Context) (*HgConfig, error) { var account ThirdAccount result := utils.Db.WithContext(ctx).Model(&ThirdAccount{}). Where("`name` = ? AND `group` = ? AND `status` = ? AND `merchant_id` = ?", "航管分销API", "hgapi", 1, 3). First(&account) if errors.Is(result.Error, gorm.ErrRecordNotFound) { return nil, errors.New("account not found") } return ParseAccountConfig(account.Config) } func ParseAccountConfig(configStr string) (*HgConfig, error) { var cfg HgConfig if err := json.Unmarshal([]byte(configStr), &cfg); err != nil { return nil, fmt.Errorf("failed to parse account config: %w", err) } return &cfg, nil }