From 82a0cd0336e5196ae28419043ea077d84bb2ff88 Mon Sep 17 00:00:00 2001 From: paulGao Date: Thu, 7 Jul 2022 17:25:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=8F=96=E6=B6=88=E8=AE=A2?= =?UTF-8?q?=E5=8D=95=E7=94=9F=E6=88=90=E5=BA=97=E9=93=BA=E6=B5=81=E6=B0=B4?= =?UTF-8?q?=EF=BC=8C=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cart/render/impl/CheckDataRender.java | 10 +-- .../cart/render/impl/SkuPromotionRender.java | 1 - .../order/cart/service/CartServiceImpl.java | 2 +- .../order/serviceimpl/OrderServiceImpl.java | 65 +++++++++++++++++-- 4 files changed, 68 insertions(+), 10 deletions(-) diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java index 5b5fb2a7..19bd26a6 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/CheckDataRender.java @@ -168,10 +168,12 @@ public class CheckDataRender implements CartRenderStep { try { //筛选属于当前店铺的优惠券 storeCart.getValue().forEach(i -> i.getPromotionMap().forEach((key, value) -> { - JSONObject promotionsObj = JSONUtil.parseObj(value); - Coupon coupon = JSONUtil.toBean(promotionsObj, Coupon.class); - if (key.contains(PromotionTypeEnum.COUPON.name()) && coupon.getStoreId().equals(storeCart.getKey())) { - cartVO.getCanReceiveCoupon().add(new CouponVO(coupon)); + if (key.contains(PromotionTypeEnum.COUPON.name())) { + JSONObject promotionsObj = JSONUtil.parseObj(value); + Coupon coupon = JSONUtil.toBean(promotionsObj, Coupon.class); + if (key.contains(PromotionTypeEnum.COUPON.name()) && coupon.getStoreId().equals(storeCart.getKey())) { + cartVO.getCanReceiveCoupon().add(new CouponVO(coupon)); + } } })); } catch (Exception e) { diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java index 765b9192..280082ed 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuPromotionRender.java @@ -186,7 +186,6 @@ public class SkuPromotionRender implements CartRenderStep { */ private void checkPromotionQuantity(TradeDTO tradeDTO) { for (CartSkuVO cartSkuVO : tradeDTO.getCheckedSkuList()) { - cartSkuVO.getPromotionMap(); List joinPromotion = cartSkuVO.getPriceDetailDTO().getJoinPromotion(); if (!joinPromotion.isEmpty()) { for (PromotionSkuVO promotionSkuVO : joinPromotion) { diff --git a/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java index 51007a39..97b5d221 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/service/CartServiceImpl.java @@ -136,7 +136,7 @@ public class CartServiceImpl implements CartService { } CartTypeEnum cartTypeEnum = getCartType(cartType); GoodsSku dataSku = checkGoods(skuId); - Map promotionMap = promotionGoodsService.getCurrentGoodsPromotion(dataSku, cartType); + Map promotionMap = promotionGoodsService.getCurrentGoodsPromotion(dataSku, cartTypeEnum.name()); try { //购物车方式购买需要保存之前的选择,其他方式购买,则直接抹除掉之前的记录 diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java index 76491576..1b59db38 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/OrderServiceImpl.java @@ -21,10 +21,7 @@ import cn.lili.modules.goods.entity.dto.GoodsCompleteMessage; import cn.lili.modules.member.entity.dto.MemberAddressDTO; import cn.lili.modules.order.cart.entity.dto.TradeDTO; import cn.lili.modules.order.order.aop.OrderLogPoint; -import cn.lili.modules.order.order.entity.dos.Order; -import cn.lili.modules.order.order.entity.dos.OrderItem; -import cn.lili.modules.order.order.entity.dos.Receipt; -import cn.lili.modules.order.order.entity.dos.Trade; +import cn.lili.modules.order.order.entity.dos.*; import cn.lili.modules.order.order.entity.dto.OrderBatchDeliverDTO; import cn.lili.modules.order.order.entity.dto.OrderExportDTO; import cn.lili.modules.order.order.entity.dto.OrderMessage; @@ -305,6 +302,8 @@ public class OrderServiceImpl extends ServiceImpl implements order.setCancelReason(reason); //修改订单 this.updateById(order); + //生成店铺退款流水 + this.generatorStoreRefundFlow(order); orderStatusMessage(order); return order; } else { @@ -321,6 +320,8 @@ public class OrderServiceImpl extends ServiceImpl implements order.setOrderStatus(OrderStatusEnum.CANCELLED.name()); order.setCancelReason(reason); this.updateById(order); + //生成店铺退款流水 + this.generatorStoreRefundFlow(order); orderStatusMessage(order); } @@ -795,6 +796,62 @@ public class OrderServiceImpl extends ServiceImpl implements this.sendUpdateStatusMessage(orderMessage); } + /** + * 生成店铺退款流水 + * + * @param order 订单信息 + */ + private void generatorStoreRefundFlow(Order order) { + // 判断订单是否是付款 + if (!PayStatusEnum.PAID.name().equals((order.getPayStatus()))) { + return; + } + List items = orderItemService.getByOrderSn(order.getSn()); + List storeFlows = new ArrayList<>(); + String orderPromotionType = order.getOrderPromotionType(); + for (OrderItem item : items) { + StoreFlow storeFlow = new StoreFlow(); + BeanUtil.copyProperties(item, storeFlow); + + //入账 + storeFlow.setId(SnowFlake.getIdStr()); + storeFlow.setFlowType(FlowTypeEnum.REFUND.name()); + storeFlow.setSn(SnowFlake.createStr("SF")); + storeFlow.setOrderSn(item.getOrderSn()); + storeFlow.setOrderItemSn(item.getSn()); + storeFlow.setStoreId(order.getStoreId()); + storeFlow.setStoreName(order.getStoreName()); + storeFlow.setMemberId(order.getMemberId()); + storeFlow.setMemberName(order.getMemberName()); + storeFlow.setGoodsName(item.getGoodsName()); + + storeFlow.setOrderPromotionType(item.getPromotionType()); + + //计算平台佣金 + storeFlow.setFinalPrice(item.getPriceDetailDTO().getFlowPrice()); + storeFlow.setCommissionPrice(item.getPriceDetailDTO().getPlatFormCommission()); + storeFlow.setDistributionRebate(item.getPriceDetailDTO().getDistributionCommission()); + storeFlow.setBillPrice(item.getPriceDetailDTO().getBillPrice()); + //兼容为空,以及普通订单操作 + if (CharSequenceUtil.isNotEmpty(orderPromotionType)) { + //如果为砍价活动,填写砍价结算价 + if (orderPromotionType.equals(OrderPromotionTypeEnum.KANJIA.name())) { + storeFlow.setKanjiaSettlementPrice(item.getPriceDetailDTO().getSettlementPrice()); + } + //如果为砍价活动,填写砍价结算价 + else if (orderPromotionType.equals(OrderPromotionTypeEnum.POINTS.name())) { + storeFlow.setPointSettlementPrice(item.getPriceDetailDTO().getSettlementPrice()); + } + } + //添加支付方式 + storeFlow.setPaymentName(order.getPaymentMethod()); + //添加第三方支付流水号 + storeFlow.setTransactionId(order.getReceivableNo()); + storeFlows.add(storeFlow); + } + storeFlowService.saveBatch(storeFlows); + } + /** * 此方法只提供内部调用,调用前应该做好权限处理 * 修改订单状态