Commit a9485ad6bffd9974fd1be267ef474d90d51b71cd
1 parent
e9c9ac0c
trade:取消订单、确认收货,增加订单日志
Showing
3 changed files
with
22 additions
and
11 deletions
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 | /** |