payment_provider_instance.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package schema
  2. import (
  3. "time"
  4. "entgo.io/ent"
  5. "entgo.io/ent/dialect"
  6. "entgo.io/ent/dialect/entsql"
  7. "entgo.io/ent/schema"
  8. "entgo.io/ent/schema/field"
  9. "entgo.io/ent/schema/index"
  10. )
  11. // PaymentProviderInstance holds the schema definition for the PaymentProviderInstance entity.
  12. //
  13. // 删除策略:硬删除
  14. // PaymentProviderInstance 使用硬删除而非软删除,原因如下:
  15. // - 服务商实例为管理员配置的支付通道,删除即表示废弃
  16. // - 通过 enabled 字段控制是否启用,删除仅用于彻底移除
  17. // - config 字段存储加密后的密钥信息,删除时应彻底清除
  18. type PaymentProviderInstance struct {
  19. ent.Schema
  20. }
  21. func (PaymentProviderInstance) Annotations() []schema.Annotation {
  22. return []schema.Annotation{
  23. entsql.Annotation{Table: "payment_provider_instances"},
  24. }
  25. }
  26. func (PaymentProviderInstance) Fields() []ent.Field {
  27. return []ent.Field{
  28. field.String("provider_key").
  29. MaxLen(30).
  30. NotEmpty(),
  31. field.String("name").
  32. MaxLen(100).
  33. Default(""),
  34. field.String("config").
  35. SchemaType(map[string]string{dialect.Postgres: "text"}),
  36. field.String("supported_types").
  37. MaxLen(200).
  38. Default(""),
  39. field.Bool("enabled").
  40. Default(true),
  41. field.String("payment_mode").
  42. MaxLen(20).
  43. Default(""),
  44. field.Int("sort_order").
  45. Default(0),
  46. field.String("limits").
  47. SchemaType(map[string]string{dialect.Postgres: "text"}).
  48. Default(""),
  49. field.Bool("refund_enabled").
  50. Default(false),
  51. field.Bool("allow_user_refund").
  52. Default(false),
  53. field.Time("created_at").
  54. Immutable().
  55. Default(time.Now).
  56. SchemaType(map[string]string{dialect.Postgres: "timestamptz"}),
  57. field.Time("updated_at").
  58. Default(time.Now).
  59. UpdateDefault(time.Now).
  60. SchemaType(map[string]string{dialect.Postgres: "timestamptz"}),
  61. }
  62. }
  63. func (PaymentProviderInstance) Indexes() []ent.Index {
  64. return []ent.Index{
  65. index.Fields("provider_key"),
  66. index.Fields("enabled"),
  67. }
  68. }