From 32c19b3eec1d7f2bdcadc60b4b7960eb1dcdac36 Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Thu, 2 Jul 2020 19:21:15 +0800 Subject: [PATCH] fix pos bug --- .../iformall/service/impl/PosServiceImpl.java | 213 ++++++++++-------- 1 file changed, 119 insertions(+), 94 deletions(-) diff --git a/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java b/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java index f6d8a65be..f0a719a75 100644 --- a/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java +++ b/mallinkPosApi/src/main/java/com/iformall/service/impl/PosServiceImpl.java @@ -2126,37 +2126,46 @@ public class PosServiceImpl implements PosService { Long memId, Integer sceneType, Long posPayOrderId, Integer neuPaymentAmount, Date neuPosPayOrderTime, String posPayOrderNo) { // 1. insert into PayOrder - final IdWorker idWorker = IdWorker.get(); - Long payOrderId = idWorker.nextId(); - WxPayOrder payOrder = new WxPayOrder() {{ - Date curDate = new Date(); - setId(payOrderId); - setTenantId(merchantBUser.getTenantId()); - updateTenantInfo(merchantBUser); - setCUserId(memId); - setBUserId(merchantBUser.getId()); - setOrderId(order.getId()); - setCreateTime(curDate); - setUpdateTime(curDate); - setPayTimeStart(curDate); - setPayTimeEnd(curDate); - setPayOrderNo(String.valueOf(payOrderId)); - setPayAmount(neuPaymentAmount); - setPayVendor(EnumPayWay.PAY_WAY_POS_NEU.getCode()); - setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); - setShare(EnumPayShare.NO.getCode()); - setPayFrom(EnumPayFrom.POS.getCode()); - setPosPayOrderId(posPayOrderId); - setPosPayOrderTime(neuPosPayOrderTime.getTime()); - setPosPaymentType(EnumNeuPosPamentType.MEM_COUPON.getCode()); - setPosPayDes("POS优惠券支付"); - setPosPayOrderNo(posPayOrderNo); - }}; - int sqlRow = payOrderMapper.insert(payOrder); - if (sqlRow != 1) { - logger.error("pay order insert error: " + payOrder.toString()); - throw new MallinkException(ErrorCode.DB_FAIL); - } + WxPayOrder payOrderQ = new WxPayOrder(); + payOrderQ.setOrderId(order.getId()); + List payOrderList = payOrderMapper.findList(payOrderQ); + WxPayOrder payOrder = null; + if (null == payOrderList || payOrderList.size()<=0) { + final IdWorker idWorker = IdWorker.get(); + Long payOrderId = idWorker.nextId(); + payOrder = new WxPayOrder() {{ + Date curDate = new Date(); + setId(payOrderId); + setTenantId(merchantBUser.getTenantId()); + updateTenantInfo(merchantBUser); + setCUserId(memId); + setBUserId(merchantBUser.getId()); + setOrderId(order.getId()); + setCreateTime(curDate); + setUpdateTime(curDate); + setPayTimeStart(curDate); + setPayTimeEnd(curDate); + setPayOrderNo(String.valueOf(payOrderId)); + setPayAmount(neuPaymentAmount); + setPayVendor(EnumPayWay.PAY_WAY_POS_NEU.getCode()); + setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); + setShare(EnumPayShare.NO.getCode()); + setPayFrom(EnumPayFrom.POS.getCode()); + setPosPayOrderId(posPayOrderId); + setPosPayOrderTime(neuPosPayOrderTime.getTime()); + setPosPaymentType(EnumNeuPosPamentType.MEM_COUPON.getCode()); + setPosPayDes("POS优惠券支付"); + setPosPayOrderNo(posPayOrderNo); + }}; + int sqlRow = payOrderMapper.insert(payOrder); + if (sqlRow != 1) { + logger.error("pay order insert error: " + payOrder.toString()); + throw new MallinkException(ErrorCode.DB_FAIL); + } + }else { + payOrder = payOrderList.get(0); + } + Long couponOrderId = Long.valueOf(posPayOrderNo); // 2. 预核销->核销 if (sceneType.equals(EnumPosSceneType.PAY.getCode())) { @@ -2212,38 +2221,46 @@ public class PosServiceImpl implements PosService { WxOrder order, Long memId, Long posPayOrderId, Integer neuPaymentAmount, Date neuPosPayOrderTime, String posPayOrderNo) { // 1. insert into PayOrder - final IdWorker idWorker = IdWorker.get(); - Long payOrderId = idWorker.nextId(); - WxPayOrder payOrder = new WxPayOrder() {{ - Date curDate = new Date(); - setId(payOrderId); - setTenantId(buUser.getTenantId()); - updateTenantInfo(buUser); - setCUserId(memId); - setBUserId(buUser.getId()); - setOrderId(order.getId()); - setCreateTime(curDate); - setUpdateTime(curDate); - setPayTimeStart(curDate); - setPayTimeEnd(curDate); - setPayOrderNo(String.valueOf(payOrderId)); - setPayAmount(neuPaymentAmount); - setPayVendor(EnumPayWay.PAY_WAY_POS_NEU.getCode()); - setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); - setShare(EnumPayShare.NO.getCode()); - setPayFrom(EnumPayFrom.POS.getCode()); - setPosPayOrderId(posPayOrderId); - setPosPayOrderTime(neuPosPayOrderTime.getTime()); - setPosPaymentType(EnumNeuPosPamentType.MEM_CARD.getCode()); - setPosPayDes("POS富茂卡支付"); - setPosPayOrderNo(posPayOrderNo); - - }}; - int sqlRow = payOrderMapper.insert(payOrder); - if (sqlRow != 1) { - logger.error("pay order insert error: " + payOrder.toString()); - throw new MallinkException(ErrorCode.DB_FAIL); - } + WxPayOrder payOrderQ = new WxPayOrder(); + payOrderQ.setOrderId(order.getId()); + List payOrderList = payOrderMapper.findList(payOrderQ); + WxPayOrder payOrder = null; + if (null == payOrderList || payOrderList.size()<=0) { + final IdWorker idWorker = IdWorker.get(); + Long payOrderId = idWorker.nextId(); + payOrder = new WxPayOrder() {{ + Date curDate = new Date(); + setId(payOrderId); + setTenantId(buUser.getTenantId()); + updateTenantInfo(buUser); + setCUserId(memId); + setBUserId(buUser.getId()); + setOrderId(order.getId()); + setCreateTime(curDate); + setUpdateTime(curDate); + setPayTimeStart(curDate); + setPayTimeEnd(curDate); + setPayOrderNo(String.valueOf(payOrderId)); + setPayAmount(neuPaymentAmount); + setPayVendor(EnumPayWay.PAY_WAY_POS_NEU.getCode()); + setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); + setShare(EnumPayShare.NO.getCode()); + setPayFrom(EnumPayFrom.POS.getCode()); + setPosPayOrderId(posPayOrderId); + setPosPayOrderTime(neuPosPayOrderTime.getTime()); + setPosPaymentType(EnumNeuPosPamentType.MEM_CARD.getCode()); + setPosPayDes("POS富茂卡支付"); + setPosPayOrderNo(posPayOrderNo); + + }}; + int sqlRow = payOrderMapper.insert(payOrder); + if (sqlRow != 1) { + logger.error("pay order insert error: " + payOrder.toString()); + throw new MallinkException(ErrorCode.DB_FAIL); + } + }else { + payOrder = payOrderList.get(0); + } // 2. 卡支付 Long cardSpendId; try { @@ -2281,37 +2298,45 @@ public class PosServiceImpl implements PosService { WxMerchant merchant, WxMerchantBUser buUser, WxOrder order, Long memId, Integer neuPayOrderType, Long neuPayOrderId, Integer neuPaymentAmount, Date neuPosPayOrderTime, String neuPayThirdNo) { // 1. insert into PayOrder - final IdWorker idWorker = IdWorker.get(); - Long payOrderId = idWorker.nextId(); - WxPayOrder payOrder = new WxPayOrder() {{ - Date curDate = new Date(); - setId(payOrderId); - setTenantId(buUser.getTenantId()); - updateTenantInfo(buUser); - setCUserId(memId); - setOrderId(order.getId()); - setCreateTime(curDate); - setUpdateTime(curDate); - setPayTimeStart(curDate); - setPayTimeEnd(curDate); - setPayOrderNo(String.valueOf(payOrderId)); - setPayAmount(neuPaymentAmount); - setPayVendor(EnumPayWay.PAY_WAY_POS_NEU.getCode()); - setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); - setShare(EnumPayShare.NO.getCode()); - setPayFrom(EnumPayFrom.POS.getCode()); - setPosPayOrderId(neuPayOrderId); - setPosPayOrderTime(neuPosPayOrderTime.getTime()); - setPosPaymentType(neuPayOrderType); - setPosPayDes("POS支付"); - setPosPayOrderNo(neuPayThirdNo); - - }}; - int sqlRow = payOrderMapper.insert(payOrder); - if (sqlRow != 1) { - logger.error("pay order insert error: " + payOrder.toString()); - throw new MallinkException(ErrorCode.DB_FAIL); - } + WxPayOrder payOrderQ = new WxPayOrder(); + payOrderQ.setOrderId(order.getId()); + List payOrderList = payOrderMapper.findList(payOrderQ); + WxPayOrder payOrder = null; + if (null == payOrderList || payOrderList.size()<=0) { + final IdWorker idWorker = IdWorker.get(); + Long payOrderId = idWorker.nextId(); + payOrder = new WxPayOrder() {{ + Date curDate = new Date(); + setId(payOrderId); + setTenantId(buUser.getTenantId()); + updateTenantInfo(buUser); + setCUserId(memId); + setOrderId(order.getId()); + setCreateTime(curDate); + setUpdateTime(curDate); + setPayTimeStart(curDate); + setPayTimeEnd(curDate); + setPayOrderNo(String.valueOf(payOrderId)); + setPayAmount(neuPaymentAmount); + setPayVendor(EnumPayWay.PAY_WAY_POS_NEU.getCode()); + setPayOrderStatus(EnumPayStatus.PAY_STATUS_SUCCESS.getCode()); + setShare(EnumPayShare.NO.getCode()); + setPayFrom(EnumPayFrom.POS.getCode()); + setPosPayOrderId(neuPayOrderId); + setPosPayOrderTime(neuPosPayOrderTime.getTime()); + setPosPaymentType(neuPayOrderType); + setPosPayDes("POS支付"); + setPosPayOrderNo(neuPayThirdNo); + + }}; + int sqlRow = payOrderMapper.insert(payOrder); + if (sqlRow != 1) { + logger.error("pay order insert error: " + payOrder.toString()); + throw new MallinkException(ErrorCode.DB_FAIL); + } + }else { + payOrder = payOrderList.get(0); + } // 2. 积分, 成长值 // 3. 成长值