重构支付接口,以动态支持多种产品类型,整合长短效套餐的购买支付逻辑;引入 decimal 类型的金额计算;

This commit is contained in:
2025-05-20 17:14:07 +08:00
parent 689964e3ef
commit 6f1bc72912
45 changed files with 891 additions and 754 deletions

View File

@@ -35,7 +35,7 @@ func newBill(db *gorm.DB, opts ...gen.DOOption) bill {
_bill.BillNo = field.NewString(tableName, "bill_no")
_bill.Info = field.NewString(tableName, "info")
_bill.Type = field.NewInt32(tableName, "type")
_bill.Amount = field.NewFloat64(tableName, "amount")
_bill.Amount = field.NewField(tableName, "amount")
_bill.CreatedAt = field.NewField(tableName, "created_at")
_bill.UpdatedAt = field.NewField(tableName, "updated_at")
_bill.DeletedAt = field.NewField(tableName, "deleted_at")
@@ -76,18 +76,18 @@ type bill struct {
billDo
ALL field.Asterisk
ID field.Int32 // 账单ID
UserID field.Int32 // 用户ID
TradeID field.Int32 // 订单ID
ResourceID field.Int32 // 套餐ID
RefundID field.Int32 // 退款ID
BillNo field.String // 易读账单号
Info field.String // 产品可读信息
Type field.Int32 // 账单类型1-消费2-退款3-充值
Amount field.Float64 // 账单金额
CreatedAt field.Field // 创建时间
UpdatedAt field.Field // 更新时间
DeletedAt field.Field // 删除时间
ID field.Int32 // 账单ID
UserID field.Int32 // 用户ID
TradeID field.Int32 // 订单ID
ResourceID field.Int32 // 套餐ID
RefundID field.Int32 // 退款ID
BillNo field.String // 易读账单号
Info field.String // 产品可读信息
Type field.Int32 // 账单类型1-消费2-退款3-充值
Amount field.Field // 账单金额
CreatedAt field.Field // 创建时间
UpdatedAt field.Field // 更新时间
DeletedAt field.Field // 删除时间
Trade billBelongsToTrade
Refund billBelongsToRefund
@@ -117,7 +117,7 @@ func (b *bill) updateTableName(table string) *bill {
b.BillNo = field.NewString(table, "bill_no")
b.Info = field.NewString(table, "info")
b.Type = field.NewInt32(table, "type")
b.Amount = field.NewFloat64(table, "amount")
b.Amount = field.NewField(table, "amount")
b.CreatedAt = field.NewField(table, "created_at")
b.UpdatedAt = field.NewField(table, "updated_at")
b.DeletedAt = field.NewField(table, "deleted_at")

View File

@@ -31,8 +31,8 @@ func newCoupon(db *gorm.DB, opts ...gen.DOOption) coupon {
_coupon.UserID = field.NewInt32(tableName, "user_id")
_coupon.Code = field.NewString(tableName, "code")
_coupon.Remark = field.NewString(tableName, "remark")
_coupon.Amount = field.NewFloat64(tableName, "amount")
_coupon.MinAmount = field.NewFloat64(tableName, "min_amount")
_coupon.Amount = field.NewField(tableName, "amount")
_coupon.MinAmount = field.NewField(tableName, "min_amount")
_coupon.Status = field.NewInt32(tableName, "status")
_coupon.ExpireAt = field.NewField(tableName, "expire_at")
_coupon.CreatedAt = field.NewField(tableName, "created_at")
@@ -48,17 +48,17 @@ type coupon struct {
couponDo
ALL field.Asterisk
ID field.Int32 // 优惠券ID
UserID field.Int32 // 用户ID
Code field.String // 优惠券代码
Remark field.String // 优惠券备注
Amount field.Float64 // 优惠券金额
MinAmount field.Float64 // 最低消费金额
Status field.Int32 // 优惠券状态0-未使用1-已使用2-已过期
ExpireAt field.Field // 过期时间
CreatedAt field.Field // 创建时间
UpdatedAt field.Field // 更新时间
DeletedAt field.Field // 删除时间
ID field.Int32 // 优惠券ID
UserID field.Int32 // 用户ID
Code field.String // 优惠券代码
Remark field.String // 优惠券备注
Amount field.Field // 优惠券金额
MinAmount field.Field // 最低消费金额
Status field.Int32 // 优惠券状态0-未使用1-已使用2-已过期
ExpireAt field.Field // 过期时间
CreatedAt field.Field // 创建时间
UpdatedAt field.Field // 更新时间
DeletedAt field.Field // 删除时间
fieldMap map[string]field.Expr
}
@@ -79,8 +79,8 @@ func (c *coupon) updateTableName(table string) *coupon {
c.UserID = field.NewInt32(table, "user_id")
c.Code = field.NewString(table, "code")
c.Remark = field.NewString(table, "remark")
c.Amount = field.NewFloat64(table, "amount")
c.MinAmount = field.NewFloat64(table, "min_amount")
c.Amount = field.NewField(table, "amount")
c.MinAmount = field.NewField(table, "min_amount")
c.Status = field.NewInt32(table, "status")
c.ExpireAt = field.NewField(table, "expire_at")
c.CreatedAt = field.NewField(table, "created_at")

View File

@@ -30,7 +30,7 @@ func newRefund(db *gorm.DB, opts ...gen.DOOption) refund {
_refund.ID = field.NewInt32(tableName, "id")
_refund.TradeID = field.NewInt32(tableName, "trade_id")
_refund.ProductID = field.NewInt32(tableName, "product_id")
_refund.Amount = field.NewFloat64(tableName, "amount")
_refund.Amount = field.NewField(tableName, "amount")
_refund.Reason = field.NewString(tableName, "reason")
_refund.Status = field.NewInt32(tableName, "status")
_refund.CreatedAt = field.NewField(tableName, "created_at")
@@ -46,15 +46,15 @@ type refund struct {
refundDo
ALL field.Asterisk
ID field.Int32 // 退款ID
TradeID field.Int32 // 订单ID
ProductID field.Int32 // 产品ID
Amount field.Float64 // 退款金额
Reason field.String // 退款原因
Status field.Int32 // 退款状态0-待处理1-已退款2-已拒绝
CreatedAt field.Field // 创建时间
UpdatedAt field.Field // 更新时间
DeletedAt field.Field // 删除时间
ID field.Int32 // 退款ID
TradeID field.Int32 // 订单ID
ProductID field.Int32 // 产品ID
Amount field.Field // 退款金额
Reason field.String // 退款原因
Status field.Int32 // 退款状态0-待处理1-已退款2-已拒绝
CreatedAt field.Field // 创建时间
UpdatedAt field.Field // 更新时间
DeletedAt field.Field // 删除时间
fieldMap map[string]field.Expr
}
@@ -74,7 +74,7 @@ func (r *refund) updateTableName(table string) *refund {
r.ID = field.NewInt32(table, "id")
r.TradeID = field.NewInt32(table, "trade_id")
r.ProductID = field.NewInt32(table, "product_id")
r.Amount = field.NewFloat64(table, "amount")
r.Amount = field.NewField(table, "amount")
r.Reason = field.NewString(table, "reason")
r.Status = field.NewInt32(table, "status")
r.CreatedAt = field.NewField(table, "created_at")

View File

@@ -50,7 +50,7 @@ type resourceLong struct {
ID field.Int32 // ID
ResourceID field.Int32 // 套餐ID
Type field.Int32 // 套餐类型1-包时2-包量
Live field.Int32 // 可用时长()
Live field.Int32 // 可用时长()
Expire field.Field // 过期时间
Quota field.Int32 // 配额数量
Used field.Int32 // 已用数量

View File

@@ -34,8 +34,8 @@ func newTrade(db *gorm.DB, opts ...gen.DOOption) trade {
_trade.Type = field.NewInt32(tableName, "type")
_trade.Subject = field.NewString(tableName, "subject")
_trade.Remark = field.NewString(tableName, "remark")
_trade.Amount = field.NewFloat64(tableName, "amount")
_trade.Payment = field.NewFloat64(tableName, "payment")
_trade.Amount = field.NewField(tableName, "amount")
_trade.Payment = field.NewField(tableName, "payment")
_trade.Method = field.NewInt32(tableName, "method")
_trade.Status = field.NewInt32(tableName, "status")
_trade.PayURL = field.NewString(tableName, "pay_url")
@@ -54,23 +54,23 @@ type trade struct {
tradeDo
ALL field.Asterisk
ID field.Int32 // 订单ID
UserID field.Int32 // 用户ID
InnerNo field.String // 内部订单号
OuterNo field.String // 外部订单号
Type field.Int32 // 订单类型1-购买产品2-充值余额
Subject field.String // 订单主题
Remark field.String // 订单备注
Amount field.Float64 // 订单总金额
Payment field.Float64 // 支付金额
Method field.Int32 // 支付方式1-支付宝2-微信
Status field.Int32 // 订单状态0-待支付1-已支付2-已取消3-已退款
PayURL field.String // 支付链接
PaidAt field.Field // 支付时间
CancelAt field.Field // 取消时间
CreatedAt field.Field // 创建时间
UpdatedAt field.Field // 更新时间
DeletedAt field.Field // 删除时间
ID field.Int32 // 订单ID
UserID field.Int32 // 用户ID
InnerNo field.String // 内部订单号
OuterNo field.String // 外部订单号
Type field.Int32 // 订单类型1-购买产品2-充值余额
Subject field.String // 订单主题
Remark field.String // 订单备注
Amount field.Field // 订单总金额
Payment field.Field // 支付金额
Method field.Int32 // 支付方式1-支付宝2-微信
Status field.Int32 // 订单状态0-待支付1-已支付2-已取消3-已退款
PayURL field.String // 支付链接
PaidAt field.Field // 支付时间
CancelAt field.Field // 取消时间
CreatedAt field.Field // 创建时间
UpdatedAt field.Field // 更新时间
DeletedAt field.Field // 删除时间
fieldMap map[string]field.Expr
}
@@ -94,8 +94,8 @@ func (t *trade) updateTableName(table string) *trade {
t.Type = field.NewInt32(table, "type")
t.Subject = field.NewString(table, "subject")
t.Remark = field.NewString(table, "remark")
t.Amount = field.NewFloat64(table, "amount")
t.Payment = field.NewFloat64(table, "payment")
t.Amount = field.NewField(table, "amount")
t.Payment = field.NewField(table, "payment")
t.Method = field.NewInt32(table, "method")
t.Status = field.NewInt32(table, "status")
t.PayURL = field.NewString(table, "pay_url")

View File

@@ -36,7 +36,7 @@ func newUser(db *gorm.DB, opts ...gen.DOOption) user {
_user.Name = field.NewString(tableName, "name")
_user.Avatar = field.NewString(tableName, "avatar")
_user.Status = field.NewInt32(tableName, "status")
_user.Balance = field.NewFloat64(tableName, "balance")
_user.Balance = field.NewField(tableName, "balance")
_user.IDType = field.NewInt32(tableName, "id_type")
_user.IDNo = field.NewString(tableName, "id_no")
_user.IDToken = field.NewString(tableName, "id_token")
@@ -63,22 +63,22 @@ type user struct {
Phone field.String // 手机号码
Username field.String // 用户名
Email field.String
Password field.String // 用户密码
Name field.String // 真实姓名
Avatar field.String // 头像URL
Status field.Int32 // 用户状态0-禁用1-正常
Balance field.Float64 // 账户余额
IDType field.Int32 // 认证类型0-未认证1-个人认证2-企业认证
IDNo field.String // 身份证号或营业执照号
IDToken field.String // 身份验证标识
ContactQQ field.String // QQ联系方式
ContactWechat field.String // 微信联系方式
LastLogin field.Field // 最后登录时间
LastLoginHost field.String // 最后登录地址
LastLoginAgent field.String // 最后登录代理
CreatedAt field.Field // 创建时间
UpdatedAt field.Field // 更新时间
DeletedAt field.Field // 删除时间
Password field.String // 用户密码
Name field.String // 真实姓名
Avatar field.String // 头像URL
Status field.Int32 // 用户状态0-禁用1-正常
Balance field.Field // 账户余额
IDType field.Int32 // 认证类型0-未认证1-个人认证2-企业认证
IDNo field.String // 身份证号或营业执照号
IDToken field.String // 身份验证标识
ContactQQ field.String // QQ联系方式
ContactWechat field.String // 微信联系方式
LastLogin field.Field // 最后登录时间
LastLoginHost field.String // 最后登录地址
LastLoginAgent field.String // 最后登录代理
CreatedAt field.Field // 创建时间
UpdatedAt field.Field // 更新时间
DeletedAt field.Field // 删除时间
fieldMap map[string]field.Expr
}
@@ -104,7 +104,7 @@ func (u *user) updateTableName(table string) *user {
u.Name = field.NewString(table, "name")
u.Avatar = field.NewString(table, "avatar")
u.Status = field.NewInt32(table, "status")
u.Balance = field.NewFloat64(table, "balance")
u.Balance = field.NewField(table, "balance")
u.IDType = field.NewInt32(table, "id_type")
u.IDNo = field.NewString(table, "id_no")
u.IDToken = field.NewString(table, "id_token")