From d83f82a34081e087bb92df737945c0a34f8aca53 Mon Sep 17 00:00:00 2001 From: fengtianyangyang Date: Fri, 19 Nov 2021 18:42:47 +0800 Subject: [PATCH] =?UTF-8?q?'=E5=A2=9E=E5=8A=A0=E9=A1=B9=E7=9B=AE=E5=90=AF?= =?UTF-8?q?=E5=8A=A8=E6=97=B6=E5=AF=B94.2.4=E4=B9=8B=E5=89=8D=E7=89=88?= =?UTF-8?q?=E6=9C=ACorderItem=E8=AE=A2=E5=8D=95=E5=A4=84=E7=90=86'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../order/order/entity/dos/OrderItem.java | 3 + .../enums/IdentificationStatusEnum.java | 25 ++++ .../serviceimpl/AfterSaleServiceImpl.java | 119 +++++++++++++++--- 3 files changed, 127 insertions(+), 20 deletions(-) create mode 100644 framework/src/main/java/cn/lili/modules/order/order/entity/enums/IdentificationStatusEnum.java diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/dos/OrderItem.java b/framework/src/main/java/cn/lili/modules/order/order/entity/dos/OrderItem.java index e5bcb029..b1994b99 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/dos/OrderItem.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/dos/OrderItem.java @@ -118,6 +118,9 @@ public class OrderItem extends BaseEntity { @ApiModelProperty(value = "正在进行退货中的商品数量") private Integer isGoodsNumber; + @ApiModelProperty(value = "标识是否被4.2.4版本处理过的订单") + private String identificationStatus; + public OrderItem(CartSkuVO cartSkuVO, CartVO cartVO, TradeDTO tradeDTO) { String oldId = this.getId(); BeanUtil.copyProperties(cartSkuVO.getGoodsSku(), this); diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/enums/IdentificationStatusEnum.java b/framework/src/main/java/cn/lili/modules/order/order/entity/enums/IdentificationStatusEnum.java new file mode 100644 index 00000000..7993eeb1 --- /dev/null +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/enums/IdentificationStatusEnum.java @@ -0,0 +1,25 @@ +package cn.lili.modules.order.order.entity.enums; + +/** + * 标识是否被4.2.4版本处理过的订单 + * @author: ftyy + * @Date: 2021-11-19 18:29 + */ +public enum IdentificationStatusEnum { + /** + * 订单处理状态 + **/ + + NOT_HANDLE("未处理过的订单"), + ALREADY_NOT_HANDLE("已处理过的订单"); + + private final String description; + + IdentificationStatusEnum(String description) { + this.description = description; + } + + public String description() { + return this.description; + } +} diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/AfterSaleServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/AfterSaleServiceImpl.java index 9b351ed8..312306aa 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/AfterSaleServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/AfterSaleServiceImpl.java @@ -12,17 +12,13 @@ import cn.lili.common.security.enums.UserEnums; import cn.lili.common.utils.BeanUtil; import cn.lili.common.utils.CurrencyUtil; import cn.lili.common.utils.SnowFlake; -import cn.lili.common.utils.StringUtils; import cn.lili.common.vo.PageVO; import cn.lili.modules.order.order.aop.AfterSaleLogPoint; import cn.lili.modules.order.order.entity.dos.AfterSale; 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.dto.AfterSaleDTO; -import cn.lili.modules.order.order.entity.enums.OrderItemAfterSaleStatusEnum; -import cn.lili.modules.order.order.entity.enums.OrderStatusEnum; -import cn.lili.modules.order.order.entity.enums.OrderTypeEnum; -import cn.lili.modules.order.order.entity.enums.PayStatusEnum; +import cn.lili.modules.order.order.entity.enums.*; import cn.lili.modules.order.order.entity.vo.AfterSaleApplyVO; import cn.lili.modules.order.order.entity.vo.AfterSaleSearchParams; import cn.lili.modules.order.order.entity.vo.AfterSaleVO; @@ -58,9 +54,12 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; +import javax.annotation.PostConstruct; import java.util.Date; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; +import java.util.stream.Stream; /** * 售后业务层实现 @@ -466,8 +465,7 @@ public class AfterSaleServiceImpl extends ServiceImpl() - .eq(OrderItem::getSn, orderItem.getSn()) - .set(OrderItem::getIsGoodsNumber, orderItem.getIsGoodsNumber()) - .set(OrderItem::getAfterSaleStatus, orderItem.getAfterSaleStatus())); + //修改orderItem订单 + this.updateOrderItem(orderItem); } @@ -611,4 +598,96 @@ public class AfterSaleServiceImpl extends ServiceImpl orderItemList = orderItemService.list(new LambdaQueryWrapper() + .eq(OrderItem::getAfterSaleStatus, OrderItemAfterSaleStatusEnum.ALREADY_APPLIED)); + + //不为空时对订单数据进行部分售后逻辑处理 + if (!orderItemList.isEmpty()) { + + //遍历订单查询每一个订单下的售后记录 + orderItemList.forEach(orderItem -> { + + //标识为已处理过的订单 + orderItem.setIdentificationStatus(IdentificationStatusEnum.ALREADY_NOT_HANDLE.name()); + + //订单状态不能为新订单,已失效订单或未申请订单才可以去修改订单信息 + if (!orderItem.getAfterSaleStatus().equals(OrderItemAfterSaleStatusEnum.NEW.name()) + && !orderItem.getAfterSaleStatus().equals(OrderItemAfterSaleStatusEnum.EXPIRED.name()) + && !orderItem.getAfterSaleStatus().equals(OrderItemAfterSaleStatusEnum.NOT_APPLIED.name())) { + + //查询订单下的售后记录 + List afterSaleList = this.list(new LambdaQueryWrapper() + .eq(AfterSale::getOrderSn, orderItem.getOrderSn()) + .eq(AfterSale::getGoodsId, orderItem.getGoodsId())); + + //获取售后商品数量及已完成售后商品数量修改orderItem订单 + this.updateOrderItemGoodsNumber(orderItem, afterSaleList); + } + }); + } + + } + + /** + * 功能描述: 获取售后商品数量及已完成售后商品数量修改orderItem订单 + * + * @param orderItem,afterSaleList + * @author ftyy + **/ + private void updateOrderItemGoodsNumber(OrderItem orderItem, List afterSaleList) { + //根据售后状态获取不是已结束的售后记录 + List implementList = afterSaleList.stream() + .filter(afterSale -> afterSale.getServiceStatus().equals(AfterSaleStatusEnum.APPLY.name()) + || afterSale.getServiceStatus().equals(AfterSaleStatusEnum.PASS.name()) + || afterSale.getServiceStatus().equals(AfterSaleStatusEnum.BUYER_RETURN.name()) + || afterSale.getServiceStatus().equals(AfterSaleStatusEnum.SELLER_CONFIRM.name()) + || afterSale.getServiceStatus().equals(AfterSaleStatusEnum.WAIT_REFUND.name()) + || afterSale.getServiceStatus().equals(AfterSaleStatusEnum.COMPLETE.name())) + .collect(Collectors.toList()); + + if (!implementList.isEmpty()) { + //遍历售后记录获取售后商品数量 + implementList.forEach(a -> orderItem.setIsGoodsNumber(orderItem.getIsGoodsNumber() + a.getNum())); + } + + //获取已完成售后订单数量 + List completeList = afterSaleList.stream() + .filter(afterSale -> afterSale.getServiceStatus().equals(AfterSaleStatusEnum.COMPLETE.name())) + .collect(Collectors.toList()); + + if (!completeList.isEmpty()) { + //遍历售后记录获取已完成售后商品数量 + completeList.forEach(a -> orderItem.setReturnGoodsNumber(orderItem.getReturnGoodsNumber() + a.getNum())); + } + //修改orderItem订单 + this.updateOrderItem(orderItem); + + } + + /** + * 功能描述: 修改orderItem订单 + * + * @param orderItem + * @return void + * @author ftyy + **/ + private void updateOrderItem(OrderItem orderItem) { + //正在售后商品总数等于商品总数,修改订单售后状态为已申请 + if (orderItem.getIsGoodsNumber().equals(orderItem.getNum())) { + //修改订单的售后状态--已申请 + orderItem.setAfterSaleStatus(OrderItemAfterSaleStatusEnum.ALREADY_APPLIED.name()); + } else { + //修改订单的售后状态--部分售后 + orderItem.setAfterSaleStatus(OrderItemAfterSaleStatusEnum.PART_AFTER_SALE.name()); + } + orderItemService.update(new LambdaUpdateWrapper() + .eq(OrderItem::getSn, orderItem.getSn()) + .set(OrderItem::getIsGoodsNumber, orderItem.getIsGoodsNumber()) + .set(OrderItem::getAfterSaleStatus, orderItem.getAfterSaleStatus())); + } + } \ No newline at end of file