add 充值到余额订单
This commit is contained in:
@@ -105,9 +105,7 @@ func Pay(ctx *jxcontext.Context, orderID string, payType int, vendorPayType, app
|
||||
VendorPayType: vendorPayType,
|
||||
}
|
||||
)
|
||||
globals.SugarLogger.Debug("payPrice before1111=========================", payPrice)
|
||||
//支付金额<原金额
|
||||
globals.SugarLogger.Debug("order.PayPrice=========================", order.PayPrice)
|
||||
if payPrice < order.PayPrice {
|
||||
temp_PayPrice = payPrice
|
||||
temp_PayMethod = 5
|
||||
@@ -115,39 +113,21 @@ func Pay(ctx *jxcontext.Context, orderID string, payType int, vendorPayType, app
|
||||
temp_PayPrice = orderInfo.PayPrice
|
||||
temp_PayMethod = 2
|
||||
}
|
||||
globals.SugarLogger.Debug("检验初始数据情况", order.OrderID, order.PayMethod)
|
||||
globals.SugarLogger.Debug("检验初始数据情况", order.PayPrice)
|
||||
//微信支付实际金额更新到数据库
|
||||
if _, err := dao.SetOrderStatus(txDB, temp_PayPrice, temp_PayMethod, orderInfo.Status, orderID); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
//if _, err := dao.UpdateEntityTx(txDB, order); err != nil {
|
||||
// return nil, err
|
||||
//}
|
||||
globals.SugarLogger.Debug("经过更新操作后的数据after=========================", order.OrderID, order.PayPrice, order.PayMethod)
|
||||
globals.SugarLogger.Debug("经过更新操作后的数据after=========================", order.PayPrice)
|
||||
globals.SugarLogger.Debugf("pay begin……")
|
||||
err = dao.GetEntity(db, order, "OrderID")
|
||||
if order.OrderID == "" {
|
||||
return result, fmt.Errorf("未找到此订单!")
|
||||
}
|
||||
|
||||
//info, err := dao.GetOrderByID(db, orderID)
|
||||
//if err != nil {
|
||||
// return nil, err
|
||||
//}
|
||||
globals.SugarLogger.Debug("Order再次从数据库获得order详情", order.PayPrice, order.PayMethod)
|
||||
//globals.SugarLogger.Debug("Order再次从数据库获得order详情", info.PayPrice, info.PayMethod)
|
||||
payHandler.Order = order
|
||||
//payHandler.Order = info
|
||||
|
||||
globals.SugarLogger.Debug("payHandler.Order再次从数据库获得order详情", payHandler.Order.PayPrice, payHandler.Order.PayMethod)
|
||||
//如果用户没有对应账单信息就给他生成一条
|
||||
// 给用户创建一个银行卡账户
|
||||
globals.SugarLogger.Debug("create bill begin……")
|
||||
userBill, err := dao.GetUserBill(db, order.UserID, "")
|
||||
if userBill == nil {
|
||||
globals.SugarLogger.Debug("order.UserID,userBill=======================", order.UserID, userBill)
|
||||
err = financial.AddUserBill(txDB, jxutils.GenBillID(), order.UserID)
|
||||
}
|
||||
err = payHandler.CreatePay(txDB, appId)
|
||||
@@ -167,7 +147,6 @@ var (
|
||||
func PayByBalance(ctx *jxcontext.Context, orderID string, isChoose, payType int, vendorPayType, appID string) (*financial.WxPayParam, string, error) {
|
||||
var (
|
||||
db = dao.GetDB()
|
||||
//txDB orm.TxOrmer
|
||||
)
|
||||
//获取订单信息
|
||||
globals.SugarLogger.Debug("begin get order_info")
|
||||
@@ -177,106 +156,91 @@ func PayByBalance(ctx *jxcontext.Context, orderID string, isChoose, payType int,
|
||||
}
|
||||
globals.SugarLogger.Debug("orderInfo.OrderType===============", orderInfo.OrderType)
|
||||
//获取用户 会员账户信息
|
||||
globals.SugarLogger.Debug("开始获取会员信息")
|
||||
userBill, err := dao.GetUserBill(db, orderInfo.UserID, "")
|
||||
if err != nil {
|
||||
return nil, "获取用户会员账户余额失败", err
|
||||
}
|
||||
if orderInfo.Status == NotPay {
|
||||
globals.SugarLogger.Debug("进入账单未支付")
|
||||
globals.SugarLogger.Debug("user_bill.balance==================", userBill.AccountBalance)
|
||||
//需要充值余额支付的方式//todo 后续添加
|
||||
//if orderInfo.OrderType == 6 {
|
||||
//
|
||||
//}
|
||||
// (3)使用余额且 余额大于支付金额
|
||||
if userBill.AccountBalance > 0 && userBill.AccountBalance > orderInfo.PayPrice && isChoose == Choose {
|
||||
globals.SugarLogger.Debug("进入余额支付部分")
|
||||
txDB, _ := dao.Begin(db)
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
panic(r)
|
||||
//快递混合支付
|
||||
if orderInfo.OrderType == 3 {
|
||||
if userBill.AccountBalance > 0 && userBill.AccountBalance > orderInfo.PayPrice && isChoose == Choose {
|
||||
globals.SugarLogger.Debug("进入余额支付部分")
|
||||
txDB, _ := dao.Begin(db)
|
||||
defer func() {
|
||||
if r := recover(); r != nil {
|
||||
panic(r)
|
||||
}
|
||||
}()
|
||||
//增加账单 余额减去相应金额
|
||||
money := userBill.AccountBalance - orderInfo.PayPrice
|
||||
if err = dao.UpdateUserBill(userBill.UserID, money); err != nil {
|
||||
return nil, "余额支付失败", err
|
||||
}
|
||||
}()
|
||||
//增加账单 余额减去相应金额
|
||||
globals.SugarLogger.Debug("增加账单 余额减去相应金额")
|
||||
money := userBill.AccountBalance - orderInfo.PayPrice
|
||||
if err = dao.UpdateUserBill(userBill.UserID, money); err != nil {
|
||||
return nil, "余额支付失败", err
|
||||
}
|
||||
//更新订单状态
|
||||
globals.SugarLogger.Debug("更新order状态")
|
||||
//temp_method := 1
|
||||
//temp_status := 110
|
||||
orderInfo.PayMethod = 1
|
||||
orderInfo.Status = 110
|
||||
if _, err := dao.UpdateEntityTx(txDB, orderInfo, "PayMethod"); err != nil {
|
||||
dao.Rollback(db, txDB)
|
||||
return nil, "更新order.PayMethod状态失败", err
|
||||
}
|
||||
if _, err := dao.UpdateEntityTx(txDB, orderInfo, "Status"); err != nil {
|
||||
dao.Rollback(db, txDB)
|
||||
return nil, "更新order.Status状态失败", err
|
||||
}
|
||||
//if _, err := dao.SetOrderStatus(txDB, orderInfo.PayPrice, 1, 110, orderID); err != nil {
|
||||
// dao.Rollback(db, txDB)
|
||||
// return nil, "更新order状态失败", err
|
||||
//}
|
||||
//todo 后续需增加其他订单类型
|
||||
//(1)更新快递 订单状态
|
||||
globals.SugarLogger.Debug("更新UserVendorOrder状态")
|
||||
temp_vendor_status := 4
|
||||
if _, err := dao.SetUserVendorOrderStatus(txDB, orderInfo.OrderID, temp_vendor_status); err != nil {
|
||||
dao.Rollback(db, txDB)
|
||||
return nil, "更新user_vendor_order状态失败", err
|
||||
}
|
||||
dao.Commit(db, txDB)
|
||||
//再次从数据库获取order、userOrder
|
||||
orderNew, err := dao.GetOrderByID(db, orderID)
|
||||
if err != nil {
|
||||
return nil, "获取orderNew失败", err
|
||||
}
|
||||
globals.SugarLogger.Debug("再次获取order数据进行检验", orderNew.PayMethod, orderNew.PayPrice)
|
||||
userOrder, err := dao.GetUserVendorOrder(db, orderNew.UserID, orderNew.OrderID)
|
||||
if err != nil {
|
||||
return nil, "获取userOrder失败", err
|
||||
}
|
||||
globals.SugarLogger.Debug("再次获取user_vendor_order数据进行检验", userOrder.OrderStatus)
|
||||
//快递单 同步到qbd
|
||||
globals.SugarLogger.Debug("输出一下", orderInfo.Status, userOrder.OrderStatus)
|
||||
if orderNew.Status == 110 && userOrder.OrderStatus == 4 {
|
||||
globals.SugarLogger.Debug("进入qbd创建订单流程")
|
||||
if err := q_bida.CreateOrder2QBiDa(userOrder, orderInfo.OrderID); err != nil {
|
||||
return nil, "", err
|
||||
//更新订单状态
|
||||
orderInfo.PayMethod = 1
|
||||
orderInfo.Status = 110
|
||||
if _, err := dao.UpdateEntityTx(txDB, orderInfo, "PayMethod"); err != nil {
|
||||
dao.Rollback(db, txDB)
|
||||
return nil, "更新order.PayMethod状态失败", err
|
||||
}
|
||||
if _, err := dao.UpdateEntityTx(txDB, orderInfo, "Status"); err != nil {
|
||||
dao.Rollback(db, txDB)
|
||||
return nil, "更新order.Status状态失败", err
|
||||
}
|
||||
//todo 后续需增加其他订单类型
|
||||
//(1)更新快递 订单状态
|
||||
temp_vendor_status := 4
|
||||
if _, err := dao.SetUserVendorOrderStatus(txDB, orderInfo.OrderID, temp_vendor_status); err != nil {
|
||||
dao.Rollback(db, txDB)
|
||||
return nil, "更新user_vendor_order状态失败", err
|
||||
}
|
||||
dao.Commit(db, txDB)
|
||||
//再次从数据库获取order、userOrder
|
||||
orderNew, err := dao.GetOrderByID(db, orderID)
|
||||
if err != nil {
|
||||
return nil, "获取orderNew失败", err
|
||||
}
|
||||
userOrder, err := dao.GetUserVendorOrder(db, orderNew.UserID, orderNew.OrderID)
|
||||
if err != nil {
|
||||
return nil, "获取userOrder失败", err
|
||||
}
|
||||
//快递单 同步到qbd
|
||||
if orderNew.Status == 110 && userOrder.OrderStatus == 4 {
|
||||
if err := q_bida.CreateOrder2QBiDa(userOrder, orderInfo.OrderID); err != nil {
|
||||
return nil, "", err
|
||||
}
|
||||
} else {
|
||||
return nil, "order/user_vendor_order更新状态出错", nil
|
||||
}
|
||||
} else {
|
||||
return nil, "order/user_vendor_order更新状态出错", nil
|
||||
}
|
||||
|
||||
}
|
||||
if isChoose == Choose {
|
||||
//(1)用户不使用余额或者余额=0 即直接微信支付
|
||||
if userBill.AccountBalance == 0 {
|
||||
WxPayParam, err := Pay(ctx, orderInfo.OrderID, payType, vendorPayType, appID, orderInfo.PayPrice)
|
||||
if err != nil {
|
||||
globals.SugarLogger.Debug("err=================", err)
|
||||
return nil, "微信支付失败:", err
|
||||
}
|
||||
return WxPayParam, "", err
|
||||
}
|
||||
//(2)用户使用余额,剩余微信支付
|
||||
totalPrice := orderInfo.PayPrice //订单原价
|
||||
if userBill.AccountBalance > 0 && userBill.AccountBalance < orderInfo.PayPrice {
|
||||
globals.SugarLogger.Debug("进入混合支付部分")
|
||||
//orderInfo.PayMethod = 5 //混合支付状态
|
||||
needPay := totalPrice - userBill.AccountBalance //需支付金额
|
||||
globals.SugarLogger.Debug("needPay=================", needPay)
|
||||
globals.SugarLogger.Debug("orderInfo.PayPrice=================", orderInfo.PayPrice)
|
||||
globals.SugarLogger.Debug("orderInfo.OrderID=================", orderInfo.OrderID)
|
||||
WxPayParam, err := Pay(ctx, orderInfo.OrderID, payType, vendorPayType, appID, needPay)
|
||||
if err != nil {
|
||||
globals.SugarLogger.Debug("err=================", err)
|
||||
return nil, "微信支付失败:", err
|
||||
if isChoose == Choose {
|
||||
//(1)用户不使用余额或者余额=0 即直接微信支付
|
||||
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
|
||||
}
|
||||
return WxPayParam, "", err
|
||||
}
|
||||
return WxPayParam, "", err
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
return nil, "", err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user