Commit 9358639c417849bf2591c551a8720f42a404a091
1 parent
e8bdd834
code review:订单部分逻辑
Showing
3 changed files
with
11 additions
and
6 deletions
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/TradeOrderUpdateServiceImpl.java
| ... | ... | @@ -7,7 +7,6 @@ import cn.hutool.core.util.StrUtil; |
| 7 | 7 | import cn.hutool.extra.spring.SpringUtil; |
| 8 | 8 | import cn.iocoder.yudao.framework.common.core.KeyValue; |
| 9 | 9 | import cn.iocoder.yudao.framework.common.enums.TerminalEnum; |
| 10 | -import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; | |
| 11 | 10 | import cn.iocoder.yudao.framework.common.util.json.JsonUtils; |
| 12 | 11 | import cn.iocoder.yudao.module.member.api.address.AddressApi; |
| 13 | 12 | import cn.iocoder.yudao.module.member.api.address.dto.AddressRespDTO; |
| ... | ... | @@ -90,8 +89,9 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { |
| 90 | 89 | private TradeOrderItemMapper tradeOrderItemMapper; |
| 91 | 90 | @Resource |
| 92 | 91 | private TradeOrderNoRedisDAO orderNoRedisDAO; |
| 92 | + | |
| 93 | 93 | @Resource |
| 94 | - private List<TradeOrderHandler> orderHandlers; | |
| 94 | + private List<TradeOrderHandler> tradeOrderHandlers; | |
| 95 | 95 | |
| 96 | 96 | @Resource |
| 97 | 97 | private CartService cartService; |
| ... | ... | @@ -180,10 +180,12 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { |
| 180 | 180 | @Transactional(rollbackFor = Exception.class) |
| 181 | 181 | public TradeOrderDO createOrder(Long userId, String userIp, AppTradeOrderCreateReqVO createReqVO) { |
| 182 | 182 | // 1、执行订单创建前置处理器 |
| 183 | + // TODO @puhui999:最好也抽个 beforeOrderCreate 方法; | |
| 183 | 184 | TradeBeforeOrderCreateReqBO beforeOrderCreateReqBO = TradeOrderConvert.INSTANCE.convert(createReqVO); |
| 184 | 185 | beforeOrderCreateReqBO.setOrderType(validateActivity(createReqVO)); |
| 185 | - beforeOrderCreateReqBO.setCount(CollectionUtils.getSumValue(createReqVO.getItems(), AppTradeOrderSettlementReqVO.Item::getCount, Integer::sum)); | |
| 186 | - orderHandlers.forEach(handler -> handler.beforeOrderCreate(beforeOrderCreateReqBO)); | |
| 186 | + beforeOrderCreateReqBO.setCount(getSumValue(createReqVO.getItems(), AppTradeOrderSettlementReqVO.Item::getCount, Integer::sum)); | |
| 187 | + // TODO @puhui999:这里有个纠结点;handler 的定义是只处理指定类型的订单的拓展逻辑;还是通用的 handler,类似可以处理优惠劵等等 | |
| 188 | + tradeOrderHandlers.forEach(handler -> handler.beforeOrderCreate(beforeOrderCreateReqBO)); | |
| 187 | 189 | |
| 188 | 190 | // 2. 价格计算 |
| 189 | 191 | TradePriceCalculateRespBO calculateRespBO = calculatePrice(userId, createReqVO); |
| ... | ... | @@ -282,7 +284,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { |
| 282 | 284 | TradeOrderDO tradeOrderDO, List<TradeOrderItemDO> orderItems, |
| 283 | 285 | TradePriceCalculateRespBO calculateRespBO) { |
| 284 | 286 | // 执行订单创建后置处理器 |
| 285 | - orderHandlers.forEach(handler -> handler.afterOrderCreate(TradeOrderConvert.INSTANCE.convert(userId, createReqVO, tradeOrderDO, orderItems.get(0)))); | |
| 287 | + tradeOrderHandlers.forEach(handler -> handler.afterOrderCreate(TradeOrderConvert.INSTANCE.convert(userId, createReqVO, tradeOrderDO, orderItems.get(0)))); | |
| 288 | + | |
| 286 | 289 | // 扣减积分 TODO 芋艿:待实现,需要前置; |
| 287 | 290 | // 这个是不是应该放到支付成功之后?如果支付后的话,可能积分可以重复使用哈。资源类,都要预扣 |
| 288 | 291 | |
| ... | ... | @@ -723,7 +726,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { |
| 723 | 726 | } |
| 724 | 727 | |
| 725 | 728 | // TODO 活动相关库存回滚需要活动 id,活动 id 怎么获取?app 端能否传过来 |
| 726 | - orderHandlers.forEach(handler -> handler.rollbackStock()); | |
| 729 | + tradeOrderHandlers.forEach(handler -> handler.rollbackStock()); | |
| 727 | 730 | |
| 728 | 731 | // 2.回滚库存 |
| 729 | 732 | List<TradeOrderItemDO> orderItems = tradeOrderItemMapper.selectListByOrderId(id); | ... | ... |
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/bo/TradeAfterOrderCreateReqBO.java
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/bo/TradeBeforeOrderCreateReqBO.java