Commit 1da14a3f53d8429e3d3028974a9462b4301f5151
1 parent
a9485ad6
trade:删除订单的实现
Showing
5 changed files
with
48 additions
and
16 deletions
yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/ErrorCodeConstants.java
| ... | ... | @@ -31,6 +31,7 @@ public interface ErrorCodeConstants { |
| 31 | 31 | ErrorCode ORDER_UPDATE_PRICE_FAIL_PAID = new ErrorCode(1011000026, "支付订单调价失败,原因:支付订单已付款,不能调价"); |
| 32 | 32 | ErrorCode ORDER_UPDATE_PRICE_FAIL_EQUAL = new ErrorCode(1011000027, "支付订单调价失败,原因:价格没有变化"); |
| 33 | 33 | ErrorCode ORDER_UPDATE_PRICE_FAIL_NOT_ITEM = new ErrorCode(1011000028, "支付订单调价失败,原因:订单项不存在"); |
| 34 | + ErrorCode ORDER_DELETE_FAIL_STATUS_NOT_CANCEL = new ErrorCode(1011000029, "交易订单删除失败,订单不是【已取消】状态"); | |
| 34 | 35 | |
| 35 | 36 | // ========== After Sale 模块 1011000100 ========== |
| 36 | 37 | ErrorCode AFTER_SALE_NOT_FOUND = new ErrorCode(1011000100, "售后单不存在"); | ... | ... |
yudao-module-mall/yudao-module-trade-api/src/main/java/cn/iocoder/yudao/module/trade/enums/order/TradeOrderOperateTypeEnum.java
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/AppTradeOrderController.java
| ... | ... | @@ -156,7 +156,7 @@ public class AppTradeOrderController { |
| 156 | 156 | @Operation(summary = "删除交易订单") |
| 157 | 157 | @Parameter(name = "id", description = "交易订单编号") |
| 158 | 158 | public CommonResult<Boolean> deleteOrder(@RequestParam("id") Long id) { |
| 159 | - // TODO @芋艿:未实现,mock 用 | |
| 159 | + tradeOrderUpdateService.deleteOrder(getLoginUserId(), id); | |
| 160 | 160 | return success(true); |
| 161 | 161 | } |
| 162 | 162 | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateService.java
| ... | ... | @@ -63,6 +63,22 @@ public interface TradeOrderUpdateService { |
| 63 | 63 | void receiveOrder(Long userId, Long id); |
| 64 | 64 | |
| 65 | 65 | /** |
| 66 | + * 【会员】取消订单 | |
| 67 | + * | |
| 68 | + * @param userId 用户编号 | |
| 69 | + * @param id 订单编号 | |
| 70 | + */ | |
| 71 | + void cancelOrder(Long userId, Long id); | |
| 72 | + | |
| 73 | + /** | |
| 74 | + * 【会员】删除订单 | |
| 75 | + * | |
| 76 | + * @param userId 用户编号 | |
| 77 | + * @param id 订单编号 | |
| 78 | + */ | |
| 79 | + void deleteOrder(Long userId, Long id); | |
| 80 | + | |
| 81 | + /** | |
| 66 | 82 | * 【管理员】交易订单备注 |
| 67 | 83 | * |
| 68 | 84 | * @param reqVO 请求 |
| ... | ... | @@ -117,11 +133,4 @@ public interface TradeOrderUpdateService { |
| 117 | 133 | */ |
| 118 | 134 | Long createOrderItemComment(Long userId, AppTradeOrderItemCommentCreateReqVO createReqVO); |
| 119 | 135 | |
| 120 | - /** | |
| 121 | - * 【会员】取消订单 | |
| 122 | - * | |
| 123 | - * @param userId 用户ID | |
| 124 | - * @param id 订单编号 | |
| 125 | - */ | |
| 126 | - void cancelOrder(Long userId, Long id); | |
| 127 | 136 | } | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceImpl.java
| ... | ... | @@ -716,17 +716,17 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { |
| 716 | 716 | @Transactional(rollbackFor = Exception.class) |
| 717 | 717 | @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.MEMBER_CANCEL) |
| 718 | 718 | public void cancelOrder(Long userId, Long id) { |
| 719 | - // 校验存在 | |
| 719 | + // 1.1 校验存在 | |
| 720 | 720 | TradeOrderDO order = tradeOrderMapper.selectOrderByIdAndUserId(id, userId); |
| 721 | 721 | if (order == null) { |
| 722 | 722 | throw exception(ORDER_NOT_FOUND); |
| 723 | 723 | } |
| 724 | - // 校验状态 | |
| 724 | + // 1.2 校验状态 | |
| 725 | 725 | if (ObjectUtil.notEqual(order.getStatus(), TradeOrderStatusEnum.UNPAID.getStatus())) { |
| 726 | 726 | throw exception(ORDER_CANCEL_FAIL_STATUS_NOT_UNPAID); |
| 727 | 727 | } |
| 728 | 728 | |
| 729 | - // 1. 更新 TradeOrderDO 状态为已取消 | |
| 729 | + // 2. 更新 TradeOrderDO 状态为已取消 | |
| 730 | 730 | int updateCount = tradeOrderMapper.updateByIdAndStatus(id, order.getStatus(), |
| 731 | 731 | new TradeOrderDO().setStatus(TradeOrderStatusEnum.CANCELED.getStatus()) |
| 732 | 732 | .setCancelTime(LocalDateTime.now()) |
| ... | ... | @@ -735,25 +735,46 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { |
| 735 | 735 | throw exception(ORDER_CANCEL_FAIL_STATUS_NOT_UNPAID); |
| 736 | 736 | } |
| 737 | 737 | |
| 738 | - // TODO 活动相关库存回滚需要活动 id,活动 id 怎么获取?app 端能否传过来;回复:从订单里拿呀 | |
| 738 | + // 3. TODO 活动相关库存回滚需要活动 id,活动 id 怎么获取?app 端能否传过来;回复:从订单里拿呀 | |
| 739 | 739 | tradeOrderHandlers.forEach(handler -> handler.rollback()); |
| 740 | 740 | |
| 741 | - // 2. 回滚库存 | |
| 741 | + // 4. 回滚库存 | |
| 742 | 742 | List<TradeOrderItemDO> orderItems = tradeOrderItemMapper.selectListByOrderId(id); |
| 743 | 743 | productSkuApi.updateSkuStock(TradeOrderConvert.INSTANCE.convert(orderItems)); |
| 744 | 744 | |
| 745 | - // 3. 回滚优惠券 | |
| 745 | + // 5. 回滚优惠券 | |
| 746 | 746 | if (order.getCouponId() > 0) { |
| 747 | 747 | couponApi.returnUsedCoupon(order.getCouponId()); |
| 748 | 748 | } |
| 749 | 749 | |
| 750 | - // 4. 回滚积分:积分是支付成功后才增加的吧? 回复:每个项目不同,目前看下来,确认收货貌似更合适,我再看看其它项目的业务选择; | |
| 750 | + // 6. 回滚积分:积分是支付成功后才增加的吧? 回复:每个项目不同,目前看下来,确认收货貌似更合适,我再看看其它项目的业务选择; | |
| 751 | 751 | // TODO @疯狂:有赞是可配置(支付 or 确认收货),我们按照支付好列;然后这里的退积分,指的是下单时的积分抵扣。 |
| 752 | 752 | |
| 753 | - // 5. 增加订单日志 | |
| 753 | + // 7. 增加订单日志 | |
| 754 | 754 | TradeOrderLogUtils.setOrderInfo(order.getId(), order.getStatus(), TradeOrderStatusEnum.CANCELED.getStatus()); |
| 755 | 755 | } |
| 756 | 756 | |
| 757 | + @Override | |
| 758 | + @Transactional(rollbackFor = Exception.class) | |
| 759 | + @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.MEMBER_DELETE) | |
| 760 | + public void deleteOrder(Long userId, Long id) { | |
| 761 | + // 1.1 校验存在 | |
| 762 | + TradeOrderDO order = tradeOrderMapper.selectOrderByIdAndUserId(id, userId); | |
| 763 | + if (order == null) { | |
| 764 | + throw exception(ORDER_NOT_FOUND); | |
| 765 | + } | |
| 766 | + // 1.2 校验状态 | |
| 767 | + if (ObjectUtil.notEqual(order.getStatus(), TradeOrderStatusEnum.CANCELED.getStatus())) { | |
| 768 | + throw exception(ORDER_DELETE_FAIL_STATUS_NOT_CANCEL); | |
| 769 | + } | |
| 770 | + | |
| 771 | + // 2. 删除订单 | |
| 772 | + tradeOrderMapper.deleteById(id); | |
| 773 | + | |
| 774 | + // 3. 记录日志 | |
| 775 | + TradeOrderLogUtils.setOrderInfo(order.getId(), order.getStatus(), order.getStatus()); | |
| 776 | + } | |
| 777 | + | |
| 757 | 778 | /** |
| 758 | 779 | * 判断指定订单的所有订单项,是不是都售后成功 |
| 759 | 780 | * | ... | ... |