From c041f696b9cc16c8d01a3ab77a9c0260c267148a Mon Sep 17 00:00:00 2001 From: xiaohanzi Date: Thu, 16 Sep 2021 18:12:36 +0800 Subject: [PATCH] fix order --- .../controller/WxPressOrderController.java | 1 + .../impl/WxCouponOrderServiceImpl.java | 24 ++++--------------- .../service/impl/WxOrderServiceImpl.java | 2 +- .../service/impl/WxPayOrderServiceImpl.java | 10 ++++---- .../service/order/OrderAdapterService.java | 2 +- .../order/impl/SingleOrderAdapterService.java | 16 +++++++------ .../batch/BaseBatchOrderAdapterService.java | 4 ++-- .../service/order/util/OrderHelper.java | 8 +++++++ 8 files changed, 30 insertions(+), 37 deletions(-) diff --git a/mallinkCApi/src/main/java/com/iformall/controller/WxPressOrderController.java b/mallinkCApi/src/main/java/com/iformall/controller/WxPressOrderController.java index 9cf63bf74..22a61dd54 100644 --- a/mallinkCApi/src/main/java/com/iformall/controller/WxPressOrderController.java +++ b/mallinkCApi/src/main/java/com/iformall/controller/WxPressOrderController.java @@ -223,6 +223,7 @@ public class WxPressOrderController extends BaseController { orderUpdatePress.updateTenantInfo(order); // 保存订单 wxOrderService.saveOrUpdate(orderUpdatePress); + // 发送砍价成功消息 if(index.equals(wxCouponCVo.getPressLimitNum())) { wxOrderPressService.sendPressComplateMsg(orderUpdatePress); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java index d55cea112..97207d1a0 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxCouponOrderServiceImpl.java @@ -769,9 +769,8 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { Integer realSubsidyFee = subsidyNum - iSubChargeFee; WxOrder order = wxOrderMapper.selectById(couponOrder.getOrderId(), couponOrder.getTenantId()); - WxComposeChildOrderPrice price = orderAdapterService.getChildOrderPrice(coupon, false, order.getOrderGroupId(), order.getCouponNumber()); - int iPriceChargeFee = OrderHelper.getMallCharge(price.getRealPayMent(), payAccount); - Integer realPayment = price.getRealPayMent() - iPriceChargeFee; + int iPriceChargeFee = OrderHelper.getMallCharge(coupon.getSalePrice(), payAccount); + Integer realPayment = coupon.getSalePrice() - iPriceChargeFee; WxMerchantSubsidy merchantSubsidy = new WxMerchantSubsidy(); merchantSubsidy.setId(idWorker.nextId()); @@ -781,8 +780,8 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { merchantSubsidy.setMerchantId(merchantId); merchantSubsidy.setCouponOrderId(couponOrder.getId()); merchantSubsidy.setCouponType(couponOrder.getCouponType()); - merchantSubsidy.setOrderPayment(price.getRealPayMent()); - merchantSubsidy.setReceiverPayment(price.getRealPayMent()); + merchantSubsidy.setOrderPayment(coupon.getPrice()); + merchantSubsidy.setReceiverPayment(coupon.getSalePrice()); merchantSubsidy.setRealPayment(realPayment); merchantSubsidy.setSubsidy(subsidyNum); merchantSubsidy.setRealSubsidy(realSubsidyFee); @@ -1526,21 +1525,6 @@ public class WxCouponOrderServiceImpl implements WxCouponOrderService { payOrder.setShare(EnumPayShare.NO.getCode()); } - //设置子订单分账金额 - Map childShares = new HashMap(); - OrderAdapterService orderAdapterService = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()); - List orderList = orderAdapterService.getChildOrders(composeOrder, appInfo.getTenantId()); - if (null != orderList && orderList.size() > 0) { - for (WxOrder o : orderList) { - WxCoupon coupon = wxCouponMapper.selectById(o.getProductId(), appInfo.getTenantId()); - WxComposeChildOrderPrice price = orderAdapterService.getChildOrderPrice(coupon, false, o.getOrderGroupId(), o.getCouponNumber()); - int orderMallCharge = OrderHelper.getMallCharge(price.getRealPayMent(), payAccount); - Integer orderShareAmount = price.getRealPayMent() - orderMallCharge; - Integer orderRateAmount = PayUtils.getPayRate(price.getRealPayMent(), payAccount.getRealRate(), true); - childShares.put(String.valueOf(o.getId()), new WxComposeChildOrderShare(price.getRealPayMent(), orderShareAmount, orderRateAmount)); - } - payOrder.setChildOrderShare(JSON.toJSONString(childShares)); - } } payOrder.setPayFrom(EnumPayFrom.INSIDE_B.getCode()); payOrder.setPosPayOrderId(couponOrder.getId()); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java index fd9eff29d..64ef5eaa6 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxOrderServiceImpl.java @@ -2133,7 +2133,7 @@ public class WxOrderServiceImpl implements WxOrderService { // 4. 保存订单 Long orderNumber; // 4.1 券价格 - WxComposeChildOrderPrice price = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()).getChildOrderPrice(coupon, isPress, orderGroupId, couponNumber); + WxComposeChildOrderPrice price = orderFactory.getOrderAdapterService(composeOrder.getComposeOrderType()).getChildCouponOrderPrice(coupon, isPress, orderGroupId, couponNumber); Integer orderStatus = OrderHelper.getOrderStatusWxCoupon(coupon, orderGroupId); diff --git a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java index 1329ca3cc..cef21235c 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/WxPayOrderServiceImpl.java @@ -392,12 +392,10 @@ public class WxPayOrderServiceImpl implements WxPayOrderService { List orderList = orderAdapterService.getChildOrders(composeOrder, appInfo.getTenantId()); if(null != orderList && orderList.size() > 0) { for (WxOrder o : orderList) { - WxCoupon coupon = wxCouponMapper.selectById(o.getProductId(), appInfo.getTenantId()); - WxComposeChildOrderPrice price = orderAdapterService.getChildOrderPrice(coupon, false, o.getOrderGroupId(), o.getCouponNumber()); - int orderMallCharge = OrderHelper.getMallCharge(price.getRealPayMent(), payAccount); - Integer orderShareAmount = price.getRealPayMent() - orderMallCharge; - Integer orderRateAmount = OrderHelper.getRateAmount(price.getRealPayMent(),orderMallCharge, payAccount); - childShares.put(String.valueOf(o.getId()), new WxComposeChildOrderShare(price.getRealPayMent(), orderShareAmount, orderRateAmount)); + int orderMallCharge = OrderHelper.getMallCharge(o.getPayment(), payAccount); + Integer orderShareAmount = o.getPayment() - orderMallCharge; + Integer orderRateAmount = OrderHelper.getRateAmount(o.getPayment(),orderMallCharge, payAccount); + childShares.put(String.valueOf(o.getId()), new WxComposeChildOrderShare(o.getPayment(), orderShareAmount, orderRateAmount)); } record.setChildOrderShare(JSON.toJSONString(childShares)); } diff --git a/mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java index b3e8f7f87..618a01b8a 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/order/OrderAdapterService.java @@ -37,7 +37,7 @@ public interface OrderAdapterService { * @param coupon * @return */ - WxComposeChildOrderPrice getChildOrderPrice(WxCoupon coupon,boolean isPress,Long orderGroupId,Integer couponNumber); + WxComposeChildOrderPrice getChildCouponOrderPrice(WxCoupon coupon,boolean isPress,Long orderGroupId,Integer couponNumber); /** * 计算每一个子订单的补贴 diff --git a/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java index d30bef3b8..b9c67c996 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/order/impl/SingleOrderAdapterService.java @@ -41,6 +41,7 @@ public class SingleOrderAdapterService implements OrderAdapterService { public boolean isOneNumberOneOrder() { return true; } + @Override public WxComposeOrder getComposeOrder(Long mainOrderId, String tenantId) { @@ -49,6 +50,14 @@ public class SingleOrderAdapterService implements OrderAdapterService { corder.setSingleOrder(wxOrder); return corder; } + + @Override + public WxComposeChildOrderPrice getChildCouponOrderPrice(WxCoupon coupon, boolean isPress, Long orderGroupId, + Integer couponNumber) { + Integer perPrice = OrderHelper.getCouponPerPayment(coupon, isPress, orderGroupId); + return new WxComposeChildOrderPrice(perPrice, couponNumber, coupon.getId()); + } + @Override public List getChildOrders(WxComposeOrder composeOrder, String tenantId) { @@ -65,13 +74,6 @@ public class SingleOrderAdapterService implements OrderAdapterService { wxOrderMapper.updateCUserId(order); } - @Override - public WxComposeChildOrderPrice getChildOrderPrice(WxCoupon coupon, boolean isPress, Long orderGroupId, - Integer couponNumber) { - Integer perPrice = OrderHelper.getCouponPerPayment(coupon, isPress, orderGroupId); - return new WxComposeChildOrderPrice(perPrice, couponNumber, coupon.getId()); - } - @Override public Integer calcuteChildOrderSubsidy(WxCoupon coupon) { return coupon.getSubsidyNum(); diff --git a/mallinkService/src/main/java/com/iformall/service/order/impl/batch/BaseBatchOrderAdapterService.java b/mallinkService/src/main/java/com/iformall/service/order/impl/batch/BaseBatchOrderAdapterService.java index c8e885f08..b18e387c6 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/impl/batch/BaseBatchOrderAdapterService.java +++ b/mallinkService/src/main/java/com/iformall/service/order/impl/batch/BaseBatchOrderAdapterService.java @@ -39,7 +39,7 @@ public abstract class BaseBatchOrderAdapterService implements OrderAdapterServic WxOrderMapper wxOrderMapper; @Override - public WxComposeChildOrderPrice getChildOrderPrice(WxCoupon coupon,boolean isPress,Long orderGroupId,Integer couponNumber) { + public WxComposeChildOrderPrice getChildCouponOrderPrice(WxCoupon coupon,boolean isPress,Long orderGroupId,Integer couponNumber) { Integer perPrice = OrderHelper.getCouponPerPayment(coupon, isPress, orderGroupId); return new WxComposeChildOrderPrice(perPrice, couponNumber, coupon.getId()); } @@ -53,7 +53,7 @@ public abstract class BaseBatchOrderAdapterService implements OrderAdapterServic int payment = 0; for (OrderComposeSaveDto ocsd : orderSave) { boolean isPress = ocsd.getSignleOrder().isPressOrder(); - WxComposeChildOrderPrice price = getChildOrderPrice(ocsd.getWxCoupon(), isPress, ocsd.getSignleOrder().getOrderGroupId(), ocsd.getCount()); + WxComposeChildOrderPrice price = getChildCouponOrderPrice(ocsd.getWxCoupon(), isPress, ocsd.getSignleOrder().getOrderGroupId(), ocsd.getCount()); payment = payment+price.getRealPayMent(); } order.setPayment(payment); diff --git a/mallinkService/src/main/java/com/iformall/service/order/util/OrderHelper.java b/mallinkService/src/main/java/com/iformall/service/order/util/OrderHelper.java index 044c11e8d..878c774e8 100644 --- a/mallinkService/src/main/java/com/iformall/service/order/util/OrderHelper.java +++ b/mallinkService/src/main/java/com/iformall/service/order/util/OrderHelper.java @@ -8,6 +8,14 @@ import com.iformall.utils.PayUtils; public class OrderHelper { + /** + * 砍价初始金额是price, 砍价完成会更新成salePrice + * + * @param coupon + * @param isPress + * @param orderGroupId + * @return + */ public static int getCouponPerPayment(WxCoupon coupon,boolean isPress,Long orderGroupId) { // 4.1 券价格 int payment = coupon.getSalePrice();