package schema import ( "entgo.io/ent" "entgo.io/ent/dialect/entsql" "entgo.io/ent/schema" "entgo.io/ent/schema/edge" "entgo.io/ent/schema/field" "entgo.io/ent/schema/index" "github.com/saas-mingyang/mingyang-admin-common/orm/ent/mixins" mixins2 "mingyang-admin-pay/rpc/ent/schema/mixins" ) type PayOrder struct { ent.Schema } // Fields of the PayOrder. func (PayOrder) Fields() []ent.Field { return []ent.Field{ field.Uint64("channel_id").Comment("支付渠道 ID"), field.Uint64("user_id").Comment("用户 ID"), field.String("subject").Comment("商品标题"), field.String("body").Comment("商品描述"), field.String("notify_url").Comment("异步通知地址"), field.Uint64("amount").Comment("金额,单位为分").Default(0), field.String("pay_source").Comment("支付来源").Optional(), field.String("channel_fee_rate").Comment("本次渠道费率,百分比").Default("0.00"), field.Uint64("channel_fee").Comment("本次渠道实际收取费y").Default(0), field.String("order_status").Comment("订单状态").Default("WAIT"), field.String("user_ip").Comment("用户 IP").Optional(), field.Time("expire_time").Comment("订单过期时间"), field.String("pay_no").Comment("支付单号"), field.Time("success_time").Comment("订单支付成功时间"), field.Uint64("extension_id").Comment("支付成功的订单拓展单ID").Optional(), field.String("transaction_id").Comment("交易流水号,有一些平台可能会有").Optional(), field.String("currency").Comment("货币代码").Default("USD"), field.Uint64("refund_price").Comment("退款金额,单位为分").Default(0), field.String("channel_order_no").Comment("渠道订单号").Optional(), field.String("channel_user_id").Comment("渠道用户 ID").Optional(), } } func (PayOrder) Mixin() []ent.Mixin { return []ent.Mixin{ mixins.IDMixin{}, mixins.StatusMixin{}, mixins.TenantMixin{}, mixins2.SoftDeleteMixin{}, } } func (PayOrder) Edges() []ent.Edge { return []ent.Edge{ edge.To("channel", PayChannel.Type). Field("channel_id"). Unique(). Required(), edge.From("orders_extension", PayOrderExtension.Type). Ref("order"), edge.From("notify_task", PayNotifyTask.Type). Ref("order"), edge.From("refund", PayRefund.Type). Ref("order"), } } func (PayOrder) Indexes() []ent.Index { return []ent.Index{ index.Fields("extension_id"), index.Fields("channel_order_no").Unique(), index.Fields("pay_no").Unique(), index.Fields("transaction_id"), index.Fields("user_id"), index.Fields("channel_id"), index.Fields("order_status"), } } func (PayOrder) Annotations() []schema.Annotation { return []schema.Annotation{ entsql.WithComments(true), schema.Comment("PayOrder Table | 支付订单表"), entsql.Annotation{Table: "pay_order"}, } }