diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/TradeBuilder.java b/framework/src/main/java/cn/lili/modules/order/cart/render/TradeBuilder.java index 2f75e40d..9a69a2a7 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/TradeBuilder.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/TradeBuilder.java @@ -1,7 +1,5 @@ package cn.lili.modules.order.cart.render; -import cn.lili.common.enums.ResultCode; -import cn.lili.common.exception.ServiceException; import cn.lili.modules.order.cart.entity.dto.TradeDTO; import cn.lili.modules.order.cart.entity.enums.CartTypeEnum; import cn.lili.modules.order.cart.entity.vo.CartSkuVO; @@ -101,13 +99,6 @@ public class TradeBuilder { } } - if (tradeDTO.getNotSupportFreight() != null && tradeDTO.getNotSupportFreight().size() > 0) { - StringBuilder stringBuilder = new StringBuilder("包含商品有-"); - tradeDTO.getNotSupportFreight().forEach(sku -> { - stringBuilder.append(sku.getGoodsSku().getGoodsName()); - }); - throw new ServiceException(ResultCode.ORDER_NOT_SUPPORT_DISTRIBUTION, stringBuilder.toString()); - } //购物车信息接受 List cartVOList = new ArrayList<>(); diff --git a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuFreightRender.java b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuFreightRender.java index 776f797b..5f71e10f 100644 --- a/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuFreightRender.java +++ b/framework/src/main/java/cn/lili/modules/order/cart/render/impl/SkuFreightRender.java @@ -40,7 +40,7 @@ public class SkuFreightRender implements CartRenderStep { MemberAddress memberAddress = tradeDTO.getMemberAddress(); //如果收货地址为空,则抛出异常 if (memberAddress == null) { - throw new ServiceException(ResultCode.MEMBER_ADDRESS_NOT_EXIST); + return; } //循环渲染购物车商品运费价格 forSku: diff --git a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/TradeServiceImpl.java b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/TradeServiceImpl.java index b4e49d35..ed5d50b3 100644 --- a/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/TradeServiceImpl.java +++ b/framework/src/main/java/cn/lili/modules/order/order/serviceimpl/TradeServiceImpl.java @@ -8,6 +8,7 @@ import cn.lili.common.rocketmq.RocketmqSendCallbackBuilder; import cn.lili.common.rocketmq.tags.MqOrderTagsEnum; import cn.lili.config.rocketmq.RocketmqCustomProperties; import cn.lili.modules.member.entity.dos.Member; +import cn.lili.modules.member.entity.dos.MemberAddress; import cn.lili.modules.member.service.MemberService; import cn.lili.modules.order.cart.entity.dto.MemberCouponDTO; import cn.lili.modules.order.cart.entity.dto.TradeDTO; @@ -68,6 +69,11 @@ public class TradeServiceImpl extends ServiceImpl implements @Override @Transactional(rollbackFor = Exception.class) public Trade createTrade(TradeDTO tradeDTO) { + + //创建订单预校验 + createTradeCheck(tradeDTO); + + Trade trade = new Trade(tradeDTO); String key = CachePrefix.TRADE.getPrefix() + trade.getSn(); //积分预处理 @@ -87,6 +93,31 @@ public class TradeServiceImpl extends ServiceImpl implements return trade; } + /** + * 创建订单最后一步校验 + * + * @param tradeDTO + */ + private void createTradeCheck(TradeDTO tradeDTO) { + + //创建订单如果没有收获地址, + MemberAddress memberAddress = tradeDTO.getMemberAddress(); + if (memberAddress == null) { + throw new ServiceException(ResultCode.MEMBER_ADDRESS_NOT_EXIST); + } + + /** + * 订单配送区域校验 + */ + if (tradeDTO.getNotSupportFreight() != null && tradeDTO.getNotSupportFreight().size() > 0) { + StringBuilder stringBuilder = new StringBuilder("包含商品有-"); + tradeDTO.getNotSupportFreight().forEach(sku -> { + stringBuilder.append(sku.getGoodsSku().getGoodsName()); + }); + throw new ServiceException(ResultCode.ORDER_NOT_SUPPORT_DISTRIBUTION, stringBuilder.toString()); + } + } + @Override public Trade getBySn(String sn) { LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>();