account.go 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package models
  2. import (
  3. "context"
  4. "encoding/json"
  5. "errors"
  6. "fmt"
  7. "go-policy-service/utils"
  8. "gorm.io/gorm"
  9. )
  10. type ThirdAccount struct {
  11. ID uint `gorm:"primaryKey;column:id"`
  12. CreatedAt *int `gorm:"column:created_at"` // 可选:你可以换成 time.Time
  13. UpdatedAt *int `gorm:"column:updated_at"` // 同上
  14. Name string `gorm:"type:varchar(45);column:name"`
  15. GroupName string `gorm:"type:varchar(45);column:group"` // 注意 group 是 Go 的关键字,不建议用作字段名
  16. Cookie string `gorm:"type:text;column:cookie"`
  17. Emails string `gorm:"type:text;column:emails"`
  18. Config string `gorm:"type:text;column:config"`
  19. LastUsedAt *int `gorm:"column:last_used_at"`
  20. Username string `gorm:"type:varchar(45);column:username"`
  21. Password string `gorm:"type:varchar(45);column:password"`
  22. Status int `gorm:"column:status;type:tinyint(1)"` // 使用int更明确
  23. MerchantID *int `gorm:"column:merchant_id"`
  24. Tag string `gorm:"type:varchar(45);column:tag"`
  25. UseType string `gorm:"type:varchar(45);column:use_type;default:下单"`
  26. MaxQpsOrder *int `gorm:"column:max_qps_order"` // 最大同时下单数
  27. }
  28. func (ThirdAccount) TableName() string {
  29. return "third_account" // 需要添加这个方法明确表名
  30. }
  31. type HgConfig struct {
  32. Account string `json:"account"`
  33. Password string `json:"password"`
  34. TicketChannel string `json:"ticket_channel"`
  35. PayMethod string `json:"pay_method"`
  36. }
  37. func GetHGConf(ctx context.Context) (*HgConfig, error) {
  38. var account ThirdAccount
  39. result := utils.Db.WithContext(ctx).Model(&ThirdAccount{}).
  40. Where("`name` = ? AND `group` = ? AND `status` = ? AND `merchant_id` = ?",
  41. "航管分销API",
  42. "hgapi",
  43. 1,
  44. 3).
  45. First(&account)
  46. if errors.Is(result.Error, gorm.ErrRecordNotFound) {
  47. return nil, errors.New("account not found")
  48. }
  49. return ParseAccountConfig(account.Config)
  50. }
  51. func ParseAccountConfig(configStr string) (*HgConfig, error) {
  52. var cfg HgConfig
  53. if err := json.Unmarshal([]byte(configStr), &cfg); err != nil {
  54. return nil, fmt.Errorf("failed to parse account config: %w", err)
  55. }
  56. return &cfg, nil
  57. }