From 71fb4b2b2b8251952f77ac8b27dfe87f3ca808fd Mon Sep 17 00:00:00 2001 From: fengtianyangyang Date: Thu, 18 Nov 2021 19:26:47 +0800 Subject: [PATCH] =?UTF-8?q?'=E5=A4=9A=E6=95=B0=E9=87=8F=E5=95=86=E5=93=81?= =?UTF-8?q?=E5=94=AE=E5=90=8E=E5=8A=9F=E8=83=BD'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../listener/AfterSaleMessageListener.java | 1 - .../java/cn/lili/common/enums/ResultCode.java | 1 + .../order/order/entity/dos/OrderItem.java | 6 ++ .../enums/OrderItemAfterSaleStatusEnum.java | 4 +- .../order/entity/vo/AfterSaleApplyVO.java | 5 ++ .../serviceimpl/AfterSaleServiceImpl.java | 68 +++++++++++++++++-- .../serviceimpl/StoreFlowServiceImpl.java | 3 +- .../modules/payment/kit/RefundSupport.java | 30 ++++++++ .../modules/store/entity/dos/StoreDetail.java | 19 ------ .../serviceimpl/StoreDetailServiceImpl.java | 3 +- .../store/serviceimpl/StoreServiceImpl.java | 1 + 11 files changed, 111 insertions(+), 30 deletions(-) diff --git a/consumer/src/main/java/cn/lili/listener/AfterSaleMessageListener.java b/consumer/src/main/java/cn/lili/listener/AfterSaleMessageListener.java index d950ac59..21af1ac3 100644 --- a/consumer/src/main/java/cn/lili/listener/AfterSaleMessageListener.java +++ b/consumer/src/main/java/cn/lili/listener/AfterSaleMessageListener.java @@ -17,7 +17,6 @@ import java.util.List; * 售后通知 * * @author paulG - * @since 2020/12/9 */ @Slf4j @Component diff --git a/framework/src/main/java/cn/lili/common/enums/ResultCode.java b/framework/src/main/java/cn/lili/common/enums/ResultCode.java index d08ca88f..b8d30c8c 100644 --- a/framework/src/main/java/cn/lili/common/enums/ResultCode.java +++ b/framework/src/main/java/cn/lili/common/enums/ResultCode.java @@ -209,6 +209,7 @@ public enum ResultCode { AFTER_STATUS_ERROR(33006, "售后状态错误,请刷新页面"), RETURN_MONEY_OFFLINE_BANK_ERROR(33007, "当账号类型为银行转账时,银行信息不能为空"), AFTER_SALES_PRICE_ERROR(33004, "申请退款金额错误"), + AFTER_GOODS_NUMBER_ERROR(33008, "申请售后商品数量错误"), /** * 投诉 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 631bc5fe..e5bcb029 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 @@ -112,6 +112,12 @@ public class OrderItem extends BaseEntity { @ApiModelProperty(value = "交易投诉id") private String complainId; + @ApiModelProperty(value = "已退货商品数量") + private Integer returnGoodsNumber; + + @ApiModelProperty(value = "正在进行退货中的商品数量") + private Integer isGoodsNumber; + 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/OrderItemAfterSaleStatusEnum.java b/framework/src/main/java/cn/lili/modules/order/order/entity/enums/OrderItemAfterSaleStatusEnum.java index 00a34619..88f752c5 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/enums/OrderItemAfterSaleStatusEnum.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/enums/OrderItemAfterSaleStatusEnum.java @@ -14,7 +14,9 @@ public enum OrderItemAfterSaleStatusEnum { NEW("新订单,不能申请售后"), NOT_APPLIED("未申请"), ALREADY_APPLIED("已申请"), - EXPIRED("已失效不允许申请售后"); + EXPIRED("已失效不允许申请售后"), + PART_AFTER_SALE("部分售后"); + private final String description; diff --git a/framework/src/main/java/cn/lili/modules/order/order/entity/vo/AfterSaleApplyVO.java b/framework/src/main/java/cn/lili/modules/order/order/entity/vo/AfterSaleApplyVO.java index a05a416f..9bd5ee45 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/entity/vo/AfterSaleApplyVO.java +++ b/framework/src/main/java/cn/lili/modules/order/order/entity/vo/AfterSaleApplyVO.java @@ -54,5 +54,10 @@ public class AfterSaleApplyVO { @ApiModelProperty(value = "是否支持退款") private Boolean returnMoney; + @ApiModelProperty(value = "会员ID") + private String memberId; + + + } 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 0c60b475..3df6954f 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,6 +12,7 @@ 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; @@ -156,6 +157,8 @@ public class AfterSaleServiceImpl extends ServiceImpl() + .eq(OrderItem::getOrderSn, afterSale.getOrderSn()) + .eq(OrderItem::getGoodsId, afterSale.getGoodsId())); + + //判断当前售后的状态---申请中 + if (afterSale.getServiceStatus().equals(AfterSaleStatusEnum.APPLY.name())) { + orderItem.setIsGoodsNumber(orderItem.getIsGoodsNumber()+afterSale.getNum()); + } + //判断当前售后的状态---已拒绝 + if(afterSale.getServiceStatus().equals(AfterSaleStatusEnum.REFUSE.name())){ + orderItem.setIsGoodsNumber(orderItem.getIsGoodsNumber()-afterSale.getNum()); + } + //正在售后商品总数等于商品总数,修改订单售后状态为已申请 + 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())); + } + + /** * 检查当前订单状态是否为可申请当前售后类型的状态 * @@ -465,11 +510,17 @@ public class AfterSaleServiceImpl extends ServiceImpl (orderItem.getNum() - orderItem.getIsGoodsNumber())) { + throw new ServiceException(ResultCode.AFTER_GOODS_NUMBER_ERROR); + } + + //获取售后类型 Order order = orderService.getBySn(orderItem.getOrderSn()); AfterSaleTypeEnum afterSaleTypeEnum = AfterSaleTypeEnum.valueOf(afterSaleDTO.getServiceType()); @@ -531,11 +582,16 @@ public class AfterSaleServiceImpl extends ServiceImpl queryWrapper = Wrappers.lambdaUpdate(); queryWrapper.eq(AfterSale::getSn, afterSaleSn); this.update(afterSale, queryWrapper); } + private void updateOrderItemAfterSaleStatus() { + + } + /** * 发送售后消息 * diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java index 4659197d..9b9474b5 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/StoreFlowServiceImpl.java @@ -139,7 +139,8 @@ public class StoreFlowServiceImpl extends ServiceImpl().eq(StoreFlow::getOrderItemSn, afterSale.getOrderItemSn())); + StoreFlow payStoreFlow = this.getOne(new LambdaUpdateWrapper().eq(StoreFlow::getOrderItemSn, afterSale.getOrderItemSn()) + .eq(StoreFlow::getFlowType,FlowTypeEnum.PAY)); storeFlow.setNum(afterSale.getNum()); storeFlow.setCategoryId(payStoreFlow.getCategoryId()); //佣金 diff --git a/framework/src/main/java/cn/lili/modules/payment/kit/RefundSupport.java b/framework/src/main/java/cn/lili/modules/payment/kit/RefundSupport.java index 07045e98..df3a3602 100644 --- a/framework/src/main/java/cn/lili/modules/payment/kit/RefundSupport.java +++ b/framework/src/main/java/cn/lili/modules/payment/kit/RefundSupport.java @@ -4,11 +4,14 @@ import cn.lili.common.utils.SnowFlake; import cn.lili.common.utils.SpringContextUtil; 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.service.AfterSaleService; +import cn.lili.modules.order.order.service.OrderItemService; import cn.lili.modules.order.order.service.OrderService; import cn.lili.modules.order.order.service.StoreFlowService; import cn.lili.modules.payment.entity.RefundLog; import cn.lili.modules.payment.entity.enums.PaymentMethodEnum; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -41,6 +44,11 @@ public class RefundSupport { */ @Autowired private OrderService orderService; + /** + * 子订单 + */ + @Autowired + private OrderItemService orderItemService; /** * 售后退款 @@ -69,10 +77,32 @@ public class RefundSupport { afterSaleService.update(new LambdaUpdateWrapper() .eq(AfterSale::getId, afterSale.getId()) .set(AfterSale::getRefundTime, new Date())); + this.updateReturnGoodsNumber(afterSale); + //记录退款流水 storeFlowService.refundOrder(afterSale); } + /** + * 功能描述: 修改子订单中已售后退款商品数量 + * @Author ftyy + * @Description //TODO + * @Date 17:33 2021/11/18 + * @Param [afterSale] + * @return void + **/ + private void updateReturnGoodsNumber(AfterSale afterSale){ + //根据商品id及订单sn获取子订单 + OrderItem orderItem = orderItemService.getOne(new LambdaQueryWrapper() + .eq(OrderItem::getOrderSn, afterSale.getOrderSn()) + .eq(OrderItem::getGoodsId, afterSale.getGoodsId())); + //修改子订单订单中的退货数量 + orderItemService.update(new LambdaUpdateWrapper() + .eq(OrderItem::getOrderSn,afterSale.getOrderSn()) + .eq(OrderItem::getGoodsId,afterSale.getGoodsId()) + .set(OrderItem::getReturnGoodsNumber,(afterSale.getNum()+orderItem.getReturnGoodsNumber()))); + } + /** * 订单取消 * diff --git a/framework/src/main/java/cn/lili/modules/store/entity/dos/StoreDetail.java b/framework/src/main/java/cn/lili/modules/store/entity/dos/StoreDetail.java index 27948bd5..c9e4c359 100644 --- a/framework/src/main/java/cn/lili/modules/store/entity/dos/StoreDetail.java +++ b/framework/src/main/java/cn/lili/modules/store/entity/dos/StoreDetail.java @@ -183,28 +183,9 @@ public class StoreDetail extends BaseIdEntity { public StoreDetail(Store store, AdminStoreApplyDTO adminStoreApplyDTO) { this.storeId = store.getId(); - //过滤字段值 - isNotNull(adminStoreApplyDTO); //设置店铺公司信息、设置店铺银行信息、设置店铺其他信息 BeanUtil.copyProperties(adminStoreApplyDTO, this); this.settlementDay = DateUtil.date(); this.stockWarning = 10; } - - public void isNotNull(AdminStoreApplyDTO adminStoreApplyDTO){ - if("null".equals(adminStoreApplyDTO.getSalesConsigneeName())){ - adminStoreApplyDTO.setSalesConsigneeName(""); - } - if("null".equals(adminStoreApplyDTO.getSalesConsigneeMobile())){ - adminStoreApplyDTO.setSalesConsigneeMobile(""); - } - if("null".equals(adminStoreApplyDTO.getSalesConsigneeDetail())){ - adminStoreApplyDTO.setSalesConsigneeDetail(""); - } - if("null".equals(adminStoreApplyDTO.getDdCode())){ - adminStoreApplyDTO.setDdCode(""); - } - } - - } \ No newline at end of file diff --git a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreDetailServiceImpl.java b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreDetailServiceImpl.java index 5c752d51..956a8bb9 100644 --- a/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreDetailServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/store/serviceimpl/StoreDetailServiceImpl.java @@ -75,8 +75,7 @@ public class StoreDetailServiceImpl extends ServiceImpl implements if (Boolean.TRUE.equals(member.getHaveStore())) { throw new ServiceException(ResultCode.STORE_APPLY_DOUBLE_ERROR); } + //添加店铺 Store store = new Store(member, adminStoreApplyDTO); this.save(store);