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 +7,6 @@ import cn.hutool.core.util.StrUtil;
7 import cn.hutool.extra.spring.SpringUtil; 7 import cn.hutool.extra.spring.SpringUtil;
8 import cn.iocoder.yudao.framework.common.core.KeyValue; 8 import cn.iocoder.yudao.framework.common.core.KeyValue;
9 import cn.iocoder.yudao.framework.common.enums.TerminalEnum; 9 import cn.iocoder.yudao.framework.common.enums.TerminalEnum;
10 -import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils;  
11 import cn.iocoder.yudao.framework.common.util.json.JsonUtils; 10 import cn.iocoder.yudao.framework.common.util.json.JsonUtils;
12 import cn.iocoder.yudao.module.member.api.address.AddressApi; 11 import cn.iocoder.yudao.module.member.api.address.AddressApi;
13 import cn.iocoder.yudao.module.member.api.address.dto.AddressRespDTO; 12 import cn.iocoder.yudao.module.member.api.address.dto.AddressRespDTO;
@@ -90,8 +89,9 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { @@ -90,8 +89,9 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
90 private TradeOrderItemMapper tradeOrderItemMapper; 89 private TradeOrderItemMapper tradeOrderItemMapper;
91 @Resource 90 @Resource
92 private TradeOrderNoRedisDAO orderNoRedisDAO; 91 private TradeOrderNoRedisDAO orderNoRedisDAO;
  92 +
93 @Resource 93 @Resource
94 - private List<TradeOrderHandler> orderHandlers; 94 + private List<TradeOrderHandler> tradeOrderHandlers;
95 95
96 @Resource 96 @Resource
97 private CartService cartService; 97 private CartService cartService;
@@ -180,10 +180,12 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { @@ -180,10 +180,12 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
180 @Transactional(rollbackFor = Exception.class) 180 @Transactional(rollbackFor = Exception.class)
181 public TradeOrderDO createOrder(Long userId, String userIp, AppTradeOrderCreateReqVO createReqVO) { 181 public TradeOrderDO createOrder(Long userId, String userIp, AppTradeOrderCreateReqVO createReqVO) {
182 // 1、执行订单创建前置处理器 182 // 1、执行订单创建前置处理器
  183 + // TODO @puhui999:最好也抽个 beforeOrderCreate 方法;
183 TradeBeforeOrderCreateReqBO beforeOrderCreateReqBO = TradeOrderConvert.INSTANCE.convert(createReqVO); 184 TradeBeforeOrderCreateReqBO beforeOrderCreateReqBO = TradeOrderConvert.INSTANCE.convert(createReqVO);
184 beforeOrderCreateReqBO.setOrderType(validateActivity(createReqVO)); 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 // 2. 价格计算 190 // 2. 价格计算
189 TradePriceCalculateRespBO calculateRespBO = calculatePrice(userId, createReqVO); 191 TradePriceCalculateRespBO calculateRespBO = calculatePrice(userId, createReqVO);
@@ -282,7 +284,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { @@ -282,7 +284,8 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
282 TradeOrderDO tradeOrderDO, List<TradeOrderItemDO> orderItems, 284 TradeOrderDO tradeOrderDO, List<TradeOrderItemDO> orderItems,
283 TradePriceCalculateRespBO calculateRespBO) { 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 // 扣减积分 TODO 芋艿:待实现,需要前置; 289 // 扣减积分 TODO 芋艿:待实现,需要前置;
287 // 这个是不是应该放到支付成功之后?如果支付后的话,可能积分可以重复使用哈。资源类,都要预扣 290 // 这个是不是应该放到支付成功之后?如果支付后的话,可能积分可以重复使用哈。资源类,都要预扣
288 291
@@ -723,7 +726,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService { @@ -723,7 +726,7 @@ public class TradeOrderUpdateServiceImpl implements TradeOrderUpdateService {
723 } 726 }
724 727
725 // TODO 活动相关库存回滚需要活动 id,活动 id 怎么获取?app 端能否传过来 728 // TODO 活动相关库存回滚需要活动 id,活动 id 怎么获取?app 端能否传过来
726 - orderHandlers.forEach(handler -> handler.rollbackStock()); 729 + tradeOrderHandlers.forEach(handler -> handler.rollbackStock());
727 730
728 // 2.回滚库存 731 // 2.回滚库存
729 List<TradeOrderItemDO> orderItems = tradeOrderItemMapper.selectListByOrderId(id); 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,6 +5,7 @@ import lombok.Data;
5 5
6 import javax.validation.constraints.NotNull; 6 import javax.validation.constraints.NotNull;
7 7
  8 +// TODO 芋艿:在想想这些参数的定义
8 /** 9 /**
9 * 订单创建之后 Request BO 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 +6,7 @@ import lombok.Data;
6 import javax.validation.Valid; 6 import javax.validation.Valid;
7 import javax.validation.constraints.NotNull; 7 import javax.validation.constraints.NotNull;
8 8
  9 +// TODO 芋艿:在想想这些参数的定义
9 /** 10 /**
10 * 订单创建之前 Request BO 11 * 订单创建之前 Request BO
11 * 12 *