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