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 +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
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 | * |