mingyang-admin-pay/rpc/ent/schema/pay_order.go

87 lines
2.7 KiB
Go

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"},
}
}