Commit debf5687504e19e3787872656fe6011acef12667
1 parent
ad535e67
code review:增加取消售后的优化建议
Showing
6 changed files
with
24 additions
and
19 deletions
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/controller/app/order/AppTradeOrderController.java
| ... | ... | @@ -140,7 +140,7 @@ public class AppTradeOrderController { |
| 140 | 140 | @Operation(summary = "确认交易订单收货") |
| 141 | 141 | @Parameter(name = "id", description = "交易订单编号") |
| 142 | 142 | public CommonResult<Boolean> receiveOrder(@RequestParam("id") Long id) { |
| 143 | - tradeOrderUpdateService.receiveOrder(getLoginUserId(), id); | |
| 143 | + tradeOrderUpdateService.receiveOrderByMember(getLoginUserId(), id); | |
| 144 | 144 | return success(true); |
| 145 | 145 | } |
| 146 | 146 | |
| ... | ... | @@ -148,7 +148,7 @@ public class AppTradeOrderController { |
| 148 | 148 | @Operation(summary = "取消交易订单") |
| 149 | 149 | @Parameter(name = "id", description = "交易订单编号") |
| 150 | 150 | public CommonResult<Boolean> cancelOrder(@RequestParam("id") Long id) { |
| 151 | - tradeOrderUpdateService.cancelOrder(getLoginUserId(), id); | |
| 151 | + tradeOrderUpdateService.cancelOrderByMember(getLoginUserId(), id); | |
| 152 | 152 | return success(true); |
| 153 | 153 | } |
| 154 | 154 | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/job/order/TradeOrderAutoCancelJob.java
| ... | ... | @@ -21,7 +21,7 @@ public class TradeOrderAutoCancelJob implements JobHandler { |
| 21 | 21 | |
| 22 | 22 | @Override |
| 23 | 23 | public String execute(String param) { |
| 24 | - int count = tradeOrderUpdateService.autoCancelOrder(); | |
| 24 | + int count = tradeOrderUpdateService.cancelOrderBySystem(); | |
| 25 | 25 | return String.format("过期订单 %s 个", count); |
| 26 | 26 | } |
| 27 | 27 | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/job/order/TradeOrderAutoReceiveJob.java
| ... | ... | @@ -21,7 +21,7 @@ public class TradeOrderAutoReceiveJob implements JobHandler { |
| 21 | 21 | |
| 22 | 22 | @Override |
| 23 | 23 | public String execute(String param) { |
| 24 | - int count = tradeOrderUpdateService.autoReceiveOrder(); | |
| 24 | + int count = tradeOrderUpdateService.receiveOrderBySystem(); | |
| 25 | 25 | return String.format("自动收货 %s 个", count); |
| 26 | 26 | } |
| 27 | 27 | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateService.java
| ... | ... | @@ -60,14 +60,14 @@ public interface TradeOrderUpdateService { |
| 60 | 60 | * @param userId 用户编号 |
| 61 | 61 | * @param id 订单编号 |
| 62 | 62 | */ |
| 63 | - void receiveOrder(Long userId, Long id); | |
| 63 | + void receiveOrderByMember(Long userId, Long id); | |
| 64 | 64 | |
| 65 | 65 | /** |
| 66 | 66 | * 【系统】自动收货交易订单 |
| 67 | 67 | * |
| 68 | 68 | * @return 收货数量 |
| 69 | 69 | */ |
| 70 | - int autoReceiveOrder(); | |
| 70 | + int receiveOrderBySystem(); | |
| 71 | 71 | |
| 72 | 72 | /** |
| 73 | 73 | * 【会员】取消交易订单 |
| ... | ... | @@ -75,14 +75,14 @@ public interface TradeOrderUpdateService { |
| 75 | 75 | * @param userId 用户编号 |
| 76 | 76 | * @param id 订单编号 |
| 77 | 77 | */ |
| 78 | - void cancelOrder(Long userId, Long id); | |
| 78 | + void cancelOrderByMember(Long userId, Long id); | |
| 79 | 79 | |
| 80 | 80 | /** |
| 81 | 81 | * 【系统】自动取消订单 |
| 82 | 82 | * |
| 83 | 83 | * @return 取消数量 |
| 84 | 84 | */ |
| 85 | - int autoCancelOrder(); | |
| 85 | + int cancelOrderBySystem(); | |
| 86 | 86 | |
| 87 | 87 | /** |
| 88 | 88 | * 【会员】删除订单 | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceImpl.java
| ... | ... | @@ -488,7 +488,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { |
| 488 | 488 | @Override |
| 489 | 489 | @Transactional(rollbackFor = Exception.class) |
| 490 | 490 | @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.MEMBER_RECEIVE) |
| 491 | - public void receiveOrder(Long userId, Long id) { | |
| 491 | + public void receiveOrderByMember(Long userId, Long id) { | |
| 492 | 492 | // 校验并获得交易订单(可收货) |
| 493 | 493 | TradeOrderDO order = validateOrderReceivable(userId, id); |
| 494 | 494 | |
| ... | ... | @@ -497,7 +497,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { |
| 497 | 497 | } |
| 498 | 498 | |
| 499 | 499 | @Override |
| 500 | - public int autoReceiveOrder() { | |
| 500 | + public int receiveOrderBySystem() { | |
| 501 | 501 | // 1. 查询过期的待支付订单 |
| 502 | 502 | LocalDateTime expireTime = addTime(tradeOrderProperties.getReceiveExpireTime()); |
| 503 | 503 | List<TradeOrderDO> orders = tradeOrderMapper.selectListByStatusAndDeliveryTimeLt( |
| ... | ... | @@ -510,7 +510,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { |
| 510 | 510 | int count = 0; |
| 511 | 511 | for (TradeOrderDO order : orders) { |
| 512 | 512 | try { |
| 513 | - getSelf().autoReceiveOrder(order); | |
| 513 | + getSelf().receiveOrderBySystem(order); | |
| 514 | 514 | count ++; |
| 515 | 515 | } catch (Throwable e) { |
| 516 | 516 | log.error("[autoReceiveOrder][order({}) 自动收货订单异常]", order.getId(), e); |
| ... | ... | @@ -526,7 +526,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { |
| 526 | 526 | */ |
| 527 | 527 | @Transactional(rollbackFor = Exception.class) |
| 528 | 528 | @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.SYSTEM_RECEIVE) |
| 529 | - public void autoReceiveOrder(TradeOrderDO order) { | |
| 529 | + public void receiveOrderBySystem(TradeOrderDO order) { | |
| 530 | 530 | receiveOrder0(order); |
| 531 | 531 | } |
| 532 | 532 | |
| ... | ... | @@ -572,7 +572,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { |
| 572 | 572 | @Override |
| 573 | 573 | @Transactional(rollbackFor = Exception.class) |
| 574 | 574 | @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.MEMBER_CANCEL) |
| 575 | - public void cancelOrder(Long userId, Long id) { | |
| 575 | + public void cancelOrderByMember(Long userId, Long id) { | |
| 576 | 576 | // 1.1 校验存在 |
| 577 | 577 | TradeOrderDO order = tradeOrderMapper.selectOrderByIdAndUserId(id, userId); |
| 578 | 578 | if (order == null) { |
| ... | ... | @@ -588,7 +588,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { |
| 588 | 588 | } |
| 589 | 589 | |
| 590 | 590 | @Override |
| 591 | - public int autoCancelOrder() { | |
| 591 | + public int cancelOrderBySystem() { | |
| 592 | 592 | // 1. 查询过期的待支付订单 |
| 593 | 593 | LocalDateTime expireTime = addTime(tradeOrderProperties.getPayExpireTime()); |
| 594 | 594 | List<TradeOrderDO> orders = tradeOrderMapper.selectListByStatusAndCreateTimeLt( |
| ... | ... | @@ -601,7 +601,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { |
| 601 | 601 | int count = 0; |
| 602 | 602 | for (TradeOrderDO order : orders) { |
| 603 | 603 | try { |
| 604 | - getSelf().autoCancelOrder(order); | |
| 604 | + getSelf().cancelOrderBySystem(order); | |
| 605 | 605 | count ++; |
| 606 | 606 | } catch (Throwable e) { |
| 607 | 607 | log.error("[autoCancelOrder][order({}) 过期订单异常]", order.getId(), e); |
| ... | ... | @@ -617,7 +617,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { |
| 617 | 617 | */ |
| 618 | 618 | @Transactional(rollbackFor = Exception.class) |
| 619 | 619 | @TradeOrderLog(operateType = TradeOrderOperateTypeEnum.SYSTEM_CANCEL) |
| 620 | - public void autoCancelOrder(TradeOrderDO order) { | |
| 620 | + public void cancelOrderBySystem(TradeOrderDO order) { | |
| 621 | 621 | cancelOrder0(order, TradeOrderCancelTypeEnum.PAY_TIMEOUT); |
| 622 | 622 | } |
| 623 | 623 | |
| ... | ... | @@ -773,9 +773,11 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { |
| 773 | 773 | |
| 774 | 774 | // =================== Order Item =================== |
| 775 | 775 | |
| 776 | + // TODO 疯狂:帮我重构下: | |
| 777 | + // 1. updateOrderItemAfterSaleStatus 拆分成三个方法:发起;同意;拒绝。原因是,职责更清晰,操作日志也更容易记录; | |
| 778 | + | |
| 776 | 779 | @Override |
| 777 | 780 | @Transactional(rollbackFor = Exception.class) |
| 778 | - // TODO 芋艿: | |
| 779 | 781 | public void updateOrderItemAfterSaleStatus(Long id, Integer oldAfterSaleStatus, Integer newAfterSaleStatus, |
| 780 | 782 | Long afterSaleId, Integer refundPrice) { |
| 781 | 783 | // 如果退款成功,则 refundPrice 非空 |
| ... | ... | @@ -803,6 +805,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { |
| 803 | 805 | TradeOrderItemDO orderItem = tradeOrderItemMapper.selectById(id); |
| 804 | 806 | TradeOrderDO order = tradeOrderMapper.selectById(orderItem.getOrderId()); |
| 805 | 807 | Integer orderRefundPrice = order.getRefundPrice() + refundPrice; |
| 808 | + // TODO @疯狂:809 到 817 改成:cancelOrderByAfterSale:相当于全部售后成功后,就是要取消胆子; | |
| 806 | 809 | if (isAllOrderItemAfterSaleSuccess(order.getId())) { // 如果都售后成功,则需要取消订单 |
| 807 | 810 | tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId()) |
| 808 | 811 | .setRefundStatus(TradeOrderRefundStatusEnum.ALL.getStatus()).setRefundPrice(orderRefundPrice).setRefundPoint(order.getRefundPoint() + orderItem.getUsePoint()) |
| ... | ... | @@ -812,7 +815,6 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { |
| 812 | 815 | |
| 813 | 816 | // TODO 芋艿:要不要退优惠劵 |
| 814 | 817 | |
| 815 | - // TODO 芋艿:站内信? | |
| 816 | 818 | } else { // 如果部分售后,则更新退款金额 |
| 817 | 819 | tradeOrderMapper.updateById(new TradeOrderDO().setId(order.getId()) |
| 818 | 820 | .setRefundStatus(TradeOrderRefundStatusEnum.PART.getStatus()).setRefundPrice(orderRefundPrice)); |
| ... | ... | @@ -821,6 +823,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { |
| 821 | 823 | // TODO 芋艿:这块扣减规则,需要在考虑下 |
| 822 | 824 | // 售后成功后,执行数据回滚逻辑 |
| 823 | 825 | if (Objects.equals(newAfterSaleStatus, TradeOrderItemAfterSaleStatusEnum.SUCCESS.getStatus())) { |
| 826 | + // TODO @疯狂:这里库存也要扣减下; | |
| 824 | 827 | // 扣减用户积分(赠送的) |
| 825 | 828 | reduceUserPoint(order.getUserId(), orderItem.getGivePoint(), MemberPointBizTypeEnum.AFTER_SALE_DEDUCT_GIVE, afterSaleId); |
| 826 | 829 | // 增加用户积分(返还抵扣) |
| ... | ... | @@ -880,6 +883,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { |
| 880 | 883 | TradeOrderItemAfterSaleStatusEnum.SUCCESS.getStatus())); |
| 881 | 884 | } |
| 882 | 885 | |
| 886 | + // =================== 营销相关的操作 =================== | |
| 887 | + | |
| 883 | 888 | @Async |
| 884 | 889 | protected void addUserExperienceAsync(Long userId, Integer payPrice, Long orderId) { |
| 885 | 890 | int bizType = MemberExperienceBizTypeEnum.ORDER.getType(); | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/test/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceTest.java
| ... | ... | @@ -306,7 +306,7 @@ public class TradeOrderUpdateServiceTest extends BaseDbUnitTest { |
| 306 | 306 | // mock 方法(支付单) |
| 307 | 307 | |
| 308 | 308 | // 调用 |
| 309 | - tradeOrderUpdateService.receiveOrder(userId, id); | |
| 309 | + tradeOrderUpdateService.receiveOrderByMember(userId, id); | |
| 310 | 310 | // 断言 |
| 311 | 311 | TradeOrderDO dbOrder = tradeOrderMapper.selectById(1L); |
| 312 | 312 | assertEquals(dbOrder.getStatus(), TradeOrderStatusEnum.COMPLETED.getStatus()); | ... | ... |