From 9771b2e76feaa6e9b504c3db4ae188a665656972 Mon Sep 17 00:00:00 2001 From: wucongxing8150 <815046773@qq.com> Date: Mon, 9 Sep 2024 14:30:32 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=84=E7=90=86=E4=BC=9A=E5=91=98=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E6=94=AF=E4=BB=98=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- api/controller/CallBack.go | 34 ++++------------------------ api/service/OrderMember.go | 46 ++++++++++++++++++++++++++++++++++---- 2 files changed, 46 insertions(+), 34 deletions(-) diff --git a/api/controller/CallBack.go b/api/controller/CallBack.go index cf25050..cb1c447 100644 --- a/api/controller/CallBack.go +++ b/api/controller/CallBack.go @@ -239,38 +239,12 @@ func (r *CallBack) WxPayMember(c *gin.Context) { // 处理支付成功情况 if wxResult.OrderStatus == 2 { - // 完成未支付单项订单 - orderSingleService := service.OrderSingleService{} - res, err := orderSingleService.CompleteUnPayOrderSingle(tx, orderMember.UserId) - if err != nil || res == false { - tx.Rollback() - c.JSON(http.StatusInternalServerError, gin.H{"code": "ERROR", "message": err}) - return - } - - // 处理用户会员过期时间 - // 获取订单配置 - systemMemberDao := dao.SystemMemberDao{} - systemMember, err := systemMemberDao.GetSystemMemberById(orderMember.SystemMemberId) + // 处理会员订单支付成功 + orderMemberService := service.OrderMemberService{} + err := orderMemberService.HandleOrderMemberPaySuccess(tx, orderMember, user) if err != nil { tx.Rollback() - c.JSON(http.StatusInternalServerError, gin.H{"code": "ERROR", "message": "会员配置错误"}) - return - } - - userService := service.UserService{} - res = userService.AddUserMemberValidDate(tx, user, int(systemMember.MemberDays)) - if res == false { - tx.Rollback() - c.JSON(http.StatusInternalServerError, gin.H{"code": "ERROR", "message": "增加用户会员到期时间失败"}) - return - } - - // 增加用户会员购买次数 - res, err = userService.AddUserMemberBuyCount(tx, user.UserId) - if err != nil || res == false { - tx.Rollback() - c.JSON(http.StatusInternalServerError, gin.H{"code": "ERROR", "message": "增加用户会员到期时间失败"}) + c.JSON(http.StatusInternalServerError, gin.H{"code": "ERROR", "message": err.Error()}) return } } diff --git a/api/service/OrderMember.go b/api/service/OrderMember.go index d8d1fa1..a794afa 100644 --- a/api/service/OrderMember.go +++ b/api/service/OrderMember.go @@ -119,7 +119,7 @@ func (r *OrderMemberService) AddOrderMember(tx *gorm.DB, UserId, SystemMemberId paymentAmountTotal = amountTotal - couponAmountTotal // 实际付款金额 paymentAmountTotal = math.Round(paymentAmountTotal*100) / 100 if paymentAmountTotal < 0 { - paymentAmountTotal = 0 + paymentAmountTotal = 0 // 实际付款金额 } if *orderPrice != paymentAmountTotal { @@ -127,14 +127,19 @@ func (r *OrderMemberService) AddOrderMember(tx *gorm.DB, UserId, SystemMemberId } if paymentAmountTotal == 0 { - paymentAmountTotal = 0 // 实际付款金额 - orderStatus = 2 // 订单状态(1:待支付 2:已完成 3:已取消) - payStatus = 2 // 支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款) + orderStatus = 2 // 订单状态(1:待支付 2:已完成 3:已取消) + payStatus = 2 // 支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款) now := model.LocalTime(time.Now()) payTime = &now // 支付时间 escrowTradeNo = "GD" + global.Snowflake.Generate().String() // 第三方支付流水号 + + // 处理会员订单支付成功 + err := r.HandleOrderMemberPaySuccess(tx, orderMember, user) + if err != nil { + return nil, err + } } else { orderStatus = 1 // 订单状态(1:待支付 2:已完成 3:已取消) payStatus = 1 // 支付状态(1:未支付 2:已支付 3:支付中 4:支付失败 5:支付超时 6:支付关闭 7:已撤销 8:转入退款) @@ -404,3 +409,36 @@ func (r *OrderMemberService) OrderCouponRefund(tx *gorm.DB, order *model.OrderMe return nil } + +// HandleOrderMemberPaySuccess 处理会员订单支付成功 +func (r *OrderMemberService) HandleOrderMemberPaySuccess(tx *gorm.DB, order *model.OrderMember, user *model.User) error { + // 完成未支付单项订单 + orderSingleService := OrderSingleService{} + res, err := orderSingleService.CompleteUnPayOrderSingle(tx, order.UserId) + if err != nil || res == false { + return err + } + + // 处理用户会员过期时间 + // 获取订单配置 + systemMemberDao := dao.SystemMemberDao{} + systemMember, err := systemMemberDao.GetSystemMemberById(order.SystemMemberId) + if err != nil { + return errors.New("会员配置错误") + } + + // 增加用户会员过期时间 + userService := UserService{} + res = userService.AddUserMemberValidDate(tx, user, int(systemMember.MemberDays)) + if res == false { + return errors.New("增加用户会员到期时间失败") + } + + // 增加用户会员购买次数 + res, err = userService.AddUserMemberBuyCount(tx, user.UserId) + if err != nil || res == false { + return errors.New("增加用户会员到期时间失败") + } + + return nil +}