Commit a9485ad6bffd9974fd1be267ef474d90d51b71cd

Authored by YunaiV
1 parent e9c9ac0c

trade:取消订单、确认收货,增加订单日志

yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/order/TradeOrderOperateTypeEnum.java
@@ -14,7 +14,9 @@ import lombok.RequiredArgsConstructor; @@ -14,7 +14,9 @@ import lombok.RequiredArgsConstructor;
14 public enum TradeOrderOperateTypeEnum { 14 public enum TradeOrderOperateTypeEnum {
15 15
16 MEMBER_CREATE(1, "用户下单"), 16 MEMBER_CREATE(1, "用户下单"),
17 - MEMBER_RECEIVE(30, "用户已收货") 17 + MEMBER_RECEIVE(30, "用户已收货"),
  18 + MEMBER_COMMENT(31, "用户评价"),
  19 + MEMBER_CANCEL(40, "取消订单"),
18 ; 20 ;
19 21
20 /** 22 /**
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/framework/order/core/aop/TradeOrderLogAspect.java
@@ -63,6 +63,9 @@ public class TradeOrderLogAspect { @@ -63,6 +63,9 @@ public class TradeOrderLogAspect {
63 Long userId = getUserId(); 63 Long userId = getUserId();
64 // 1.2 订单信息 64 // 1.2 订单信息
65 Long orderId = ORDER_ID.get(); 65 Long orderId = ORDER_ID.get();
  66 + if (orderId == null) { // 如果未设置,只有注解,说明不需要记录订单日志
  67 + return;
  68 + }
66 Integer beforeStatus = BEFORE_STATUS.get(); 69 Integer beforeStatus = BEFORE_STATUS.get();
67 Integer afterStatus = AFTER_STATUS.get(); 70 Integer afterStatus = AFTER_STATUS.get();
68 Map<String, Object> exts = ObjectUtil.defaultIfNull(EXTS.get(), emptyMap()); 71 Map<String, Object> exts = ObjectUtil.defaultIfNull(EXTS.get(), emptyMap());
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceImpl.java
@@ -486,6 +486,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { @@ -486,6 +486,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
486 486
487 @Override 487 @Override
488 @Transactional(rollbackFor = Exception.class) 488 @Transactional(rollbackFor = Exception.class)
  489 + @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.MEMBER_RECEIVE)
489 public void receiveOrder(Long userId, Long id) { 490 public void receiveOrder(Long userId, Long id) {
490 // 校验并获得交易订单(可收货) 491 // 校验并获得交易订单(可收货)
491 TradeOrderDO order = validateOrderReceivable(userId, id); 492 TradeOrderDO order = validateOrderReceivable(userId, id);
@@ -677,6 +678,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { @@ -677,6 +678,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
677 678
678 @Override 679 @Override
679 @Transactional(rollbackFor = Exception.class) 680 @Transactional(rollbackFor = Exception.class)
  681 + @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.MEMBER_COMMENT)
680 public Long createOrderItemComment(Long userId, AppTradeOrderItemCommentCreateReqVO createReqVO) { 682 public Long createOrderItemComment(Long userId, AppTradeOrderItemCommentCreateReqVO createReqVO) {
681 // 先通过订单项 ID,查询订单项是否存在 683 // 先通过订单项 ID,查询订单项是否存在
682 TradeOrderItemDO orderItem = tradeOrderItemMapper.selectByIdAndUserId(createReqVO.getOrderItemId(), userId); 684 TradeOrderItemDO orderItem = tradeOrderItemMapper.selectByIdAndUserId(createReqVO.getOrderItemId(), userId);
@@ -704,12 +706,15 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { @@ -704,12 +706,15 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
704 List<TradeOrderItemDO> orderItems = tradeOrderItemMapper.selectListByOrderId(order.getId()); 706 List<TradeOrderItemDO> orderItems = tradeOrderItemMapper.selectListByOrderId(order.getId());
705 if (!anyMatch(orderItems, item -> Objects.equals(item.getCommentStatus(), Boolean.FALSE))) { 707 if (!anyMatch(orderItems, item -> Objects.equals(item.getCommentStatus(), Boolean.FALSE))) {
706 tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId()).setCommentStatus(Boolean.TRUE)); 708 tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId()).setCommentStatus(Boolean.TRUE));
707 - // TODO 待实现:已完成评价,要不要写一条订单日志?目前 crmeb 会写,有赞可以研究下 709 + // 增加订单日志
  710 + TradeOrderLogUtils.setOrderInfo(order.getId(), order.getStatus(), order.getStatus());
708 } 711 }
709 return comment; 712 return comment;
710 } 713 }
711 714
712 @Override 715 @Override
  716 + @Transactional(rollbackFor = Exception.class)
  717 + @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.MEMBER_CANCEL)
713 public void cancelOrder(Long userId, Long id) { 718 public void cancelOrder(Long userId, Long id) {
714 // 校验存在 719 // 校验存在
715 TradeOrderDO order = tradeOrderMapper.selectOrderByIdAndUserId(id, userId); 720 TradeOrderDO order = tradeOrderMapper.selectOrderByIdAndUserId(id, userId);
@@ -721,7 +726,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { @@ -721,7 +726,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
721 throw exception(ORDER_CANCEL_FAIL_STATUS_NOT_UNPAID); 726 throw exception(ORDER_CANCEL_FAIL_STATUS_NOT_UNPAID);
722 } 727 }
723 728
724 - // 1.更新 TradeOrderDO 状态为已取消 729 + // 1. 更新 TradeOrderDO 状态为已取消
725 int updateCount = tradeOrderMapper.updateByIdAndStatus(id, order.getStatus(), 730 int updateCount = tradeOrderMapper.updateByIdAndStatus(id, order.getStatus(),
726 new TradeOrderDO().setStatus(TradeOrderStatusEnum.CANCELED.getStatus()) 731 new TradeOrderDO().setStatus(TradeOrderStatusEnum.CANCELED.getStatus())
727 .setCancelTime(LocalDateTime.now()) 732 .setCancelTime(LocalDateTime.now())
@@ -730,22 +735,23 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { @@ -730,22 +735,23 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
730 throw exception(ORDER_CANCEL_FAIL_STATUS_NOT_UNPAID); 735 throw exception(ORDER_CANCEL_FAIL_STATUS_NOT_UNPAID);
731 } 736 }
732 737
733 - // TODO 活动相关库存回滚需要活动 id,活动 id 怎么获取?app 端能否传过来 738 + // TODO 活动相关库存回滚需要活动 id,活动 id 怎么获取?app 端能否传过来;回复:从订单里拿呀
734 tradeOrderHandlers.forEach(handler -> handler.rollback()); 739 tradeOrderHandlers.forEach(handler -> handler.rollback());
735 740
736 - // 2.回滚库存 741 + // 2. 回滚库存
737 List<TradeOrderItemDO> orderItems = tradeOrderItemMapper.selectListByOrderId(id); 742 List<TradeOrderItemDO> orderItems = tradeOrderItemMapper.selectListByOrderId(id);
738 productSkuApi.updateSkuStock(TradeOrderConvert.INSTANCE.convert(orderItems)); 743 productSkuApi.updateSkuStock(TradeOrderConvert.INSTANCE.convert(orderItems));
739 744
740 - // 3.回滚优惠券  
741 - couponApi.returnUsedCoupon(order.getCouponId()); 745 + // 3. 回滚优惠券
  746 + if (order.getCouponId() > 0) {
  747 + couponApi.returnUsedCoupon(order.getCouponId());
  748 + }
742 749
743 - // 4.回滚积分:积分是支付成功后才增加的吧? 回复:每个项目不同,目前看下来,确认收货貌似更合适,我再看看其它项目的业务选择; 750 + // 4. 回滚积分:积分是支付成功后才增加的吧? 回复:每个项目不同,目前看下来,确认收货貌似更合适,我再看看其它项目的业务选择;
744 // TODO @疯狂:有赞是可配置(支付 or 确认收货),我们按照支付好列;然后这里的退积分,指的是下单时的积分抵扣。 751 // TODO @疯狂:有赞是可配置(支付 or 确认收货),我们按照支付好列;然后这里的退积分,指的是下单时的积分抵扣。
745 752
746 - // TODO 芋艿:OrderLog  
747 -  
748 - // TODO 芋艿:lili 发送订单变化的消息 753 + // 5. 增加订单日志
  754 + TradeOrderLogUtils.setOrderInfo(order.getId(), order.getStatus(), TradeOrderStatusEnum.CANCELED.getStatus());
749 } 755 }
750 756
751 /** 757 /**