Commit 9358639c417849bf2591c551a8720f42a404a091

Authored by YunaiV
1 parent e8bdd834

code review:订单部分逻辑

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
... ... @@ -5,6 +5,7 @@ import lombok.Data;
5 5  
6 6 import javax.validation.constraints.NotNull;
7 7  
  8 +// TODO 芋艿:在想想这些参数的定义
8 9 /**
9 10 * 订单创建之后 Request BO
10 11 *
... ...
yudao-module-mall/yudao-module-trade-biz/src/main/java/cn/iocoder/yudao/module/trade/service/order/bo/TradeBeforeOrderCreateReqBO.java
... ... @@ -6,6 +6,7 @@ import lombok.Data;
6 6 import javax.validation.Valid;
7 7 import javax.validation.constraints.NotNull;
8 8  
  9 +// TODO 芋艿:在想想这些参数的定义
9 10 /**
10 11 * 订单创建之前 Request BO
11 12 *
... ...