diff --git a/business/jxstore/cms/order.go b/business/jxstore/cms/order.go index 97eb49913..6d5de1bc9 100644 --- a/business/jxstore/cms/order.go +++ b/business/jxstore/cms/order.go @@ -108,10 +108,10 @@ func Pay(ctx *jxcontext.Context, orderID string, payType int, vendorPayType, app //支付金额<原金额 if payPrice < order.PayPrice { temp_PayPrice = payPrice - temp_PayMethod = 5 + temp_PayMethod = model.OrderPayMethodMix } else { temp_PayPrice = orderInfo.PayPrice - temp_PayMethod = 2 + temp_PayMethod = model.OrderPayMethodWX } //微信支付实际金额更新到数据库 if _, err := dao.SetOrderStatus(txDB, temp_PayPrice, temp_PayMethod, orderInfo.Status, orderID); err != nil { @@ -136,20 +136,13 @@ func Pay(ctx *jxcontext.Context, orderID string, payType int, vendorPayType, app return payHandler.WxPayParam, err } -var ( - NotPay = 2 //订单待支付 - AlreadyPay = 1 //订单已支付 - Choose = 1 //选中余额支付 - NotChoose = -1 //未选中余额支付 -) - //余额支付 微信补差值 func PayByBalance(ctx *jxcontext.Context, orderID string, isChoose, payType int, vendorPayType, appID string) (*financial.WxPayParam, string, error) { var ( db = dao.GetDB() ) //获取订单信息 - globals.SugarLogger.Debug("begin get order_info") + globals.SugarLogger.Debug("begin get pay_by_balance") orderInfo, err := dao.GetOrderByID(db, orderID) if err != nil { return nil, "获取订单信息失败", err @@ -160,19 +153,19 @@ func PayByBalance(ctx *jxcontext.Context, orderID string, isChoose, payType int, if err != nil { return nil, "获取用户会员账户余额失败", err } - if orderInfo.Status == NotPay { + if orderInfo.Status == model.OrderNotPay { //需要充值余额支付的方式//todo 后续添加 - if orderInfo.OrderType == 6 { - WxPayParam, err := Pay(ctx, orderInfo.OrderID, payType, vendorPayType, appID, orderInfo.PayPrice) - if err != nil { - return nil, "微信支付失败:", err - } - return WxPayParam, "", err - } - // (3)使用余额且 余额大于支付金额 + //if orderInfo.OrderType == 6 { + // WxPayParam, err := Pay(ctx, orderInfo.OrderID, payType, vendorPayType, appID, orderInfo.PayPrice) + // if err != nil { + // return nil, "微信支付失败:", err + // } + // return WxPayParam, "", err + //} //快递混合支付 - if orderInfo.OrderType == 3 { - if userBill.AccountBalance > 0 && userBill.AccountBalance > orderInfo.PayPrice && isChoose == Choose { + if orderInfo.OrderType == model.OrderTypeDelivery { + // (3)使用余额且 余额大于支付金额 + if userBill.AccountBalance > 0 && userBill.AccountBalance > orderInfo.PayPrice && isChoose == model.PayChooseBalance { globals.SugarLogger.Debug("进入余额支付部分") txDB, _ := dao.Begin(db) defer func() { @@ -221,30 +214,35 @@ func PayByBalance(ctx *jxcontext.Context, orderID string, isChoose, payType int, } else { return nil, "order/user_vendor_order更新状态出错", nil } - - } - if isChoose == Choose { - //(1)用户不使用余额或者余额=0 即直接微信支付 + } else if isChoose == model.PayChooseBalance { + //(1)用户选中余额 但余额<订单总价 需混合微信支付 if userBill.AccountBalance == 0 { WxPayParam, err := Pay(ctx, orderInfo.OrderID, payType, vendorPayType, appID, orderInfo.PayPrice) if err != nil { return nil, "微信支付失败:", err } return WxPayParam, "", err - } - //(2)用户使用余额,剩余微信支付 - totalPrice := orderInfo.PayPrice //订单原价 - if userBill.AccountBalance > 0 && userBill.AccountBalance < orderInfo.PayPrice { - needPay := totalPrice - userBill.AccountBalance //需支付金额 - WxPayParam, err := Pay(ctx, orderInfo.OrderID, payType, vendorPayType, appID, needPay) - if err != nil { - return nil, "微信支付失败:", err + } else if userBill.AccountBalance > 0 { + //(2)用户使用余额,剩余微信支付 + totalPrice := orderInfo.PayPrice //订单原价 + if userBill.AccountBalance > 0 && userBill.AccountBalance < orderInfo.PayPrice { + needPay := totalPrice - userBill.AccountBalance //需支付金额 + WxPayParam, err := Pay(ctx, orderInfo.OrderID, payType, vendorPayType, appID, needPay) + if err != nil { + return nil, "微信支付失败:", err + } + return WxPayParam, "", err } - return WxPayParam, "", err } + } else if isChoose == model.PayNotChooseBalance { + //(4)不选中余额支付 即直接微信支付 + WxPayParam, err := Pay(ctx, orderInfo.OrderID, payType, vendorPayType, appID, orderInfo.PayPrice) + if err != nil { + return nil, "微信支付失败:", err + } + return WxPayParam, "", err } } - } return nil, "", err } diff --git a/business/model/order.go b/business/model/order.go index ef1836842..1033b2788 100644 --- a/business/model/order.go +++ b/business/model/order.go @@ -23,6 +23,17 @@ const ( PayType4Member = 1 // 购买会员 PayType4Recharge = 2 // 充值余额 PayType4Express = 3 // 支付快递 + + //订单支付方式 + OrderPayMethodBalance = 1 //余额支付 + OrderPayMethodWX = 2 //微信支付 + OrderPayMethodMix = 5 //余额+微信混合支付 + + OrderNotPay = 2 //订单待支付 + PayChooseBalance = 1 //选中余额支付 + PayNotChooseBalance = -1 //不选中余额支付 + //UserVendorOrder订单状态 + ) const ( diff --git a/business/q_bida/q_bida_server.go b/business/q_bida/q_bida_server.go index 34e667af4..a78654620 100644 --- a/business/q_bida/q_bida_server.go +++ b/business/q_bida/q_bida_server.go @@ -727,7 +727,7 @@ func TryAgainOrder(ctx *jxcontext.Context, oldNo string) (*model.UserVendorOrder Bulk: utils.Int2Float64(fee[fmt.Sprintf("%d", oldOrder.Type)].Data.Bulk), ServiceCharge: fee[fmt.Sprintf("%d", oldOrder.Type)].Data.ServiceCharge, GuarantFee: fee[fmt.Sprintf("%d", oldOrder.Type)].Data.GuarantFee, - OriginalFee: utils.Int2Float64(fee[fmt.Sprintf("%d", oldOrder.Type)].Data.OriginalFee), + OriginalFee: utils.MustInterface2Float64(fee[fmt.Sprintf("%d", oldOrder.Type)].Data.OriginalFee), Increment: fee[fmt.Sprintf("%d", oldOrder.Type)].Data.IncrementFee, } return CreateWayOrder(ctx, param, oldOrder.UserId)