diff --git a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/impl/VipOrderServiceImpl.java b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/impl/VipOrderServiceImpl.java index 8ab564b..b805e39 100644 --- a/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/impl/VipOrderServiceImpl.java +++ b/bnyer-services/bnyer-order/src/main/java/com/bnyer/order/service/impl/VipOrderServiceImpl.java @@ -121,26 +121,20 @@ public class VipOrderServiceImpl implements VipOrderService { @Override @Transactional(rollbackFor = Exception.class) public String addVipOrder(AddVipOrderDto addVipOrderDto) { - VipOrder vipOrder = getCacheVipOrder(addVipOrderDto); - String orderNo; - if (ObjectUtil.isNull(vipOrder)){ - //构建订单 - vipOrder = buildVipOrder(addVipOrderDto); - vipOrderMapper.insert(vipOrder); - //缓存订单,有效期30分钟,防止用户一直创建重复的订单 - cacheOrder(vipOrder); - orderNo = vipOrder.getOrderNo(); - //发送消息,如果三十分钟后没有支付,则取消订单 - VipOrderCancelMessage vipOrderCancelMessage = new VipOrderCancelMessage(); - vipOrderCancelMessage.setOrderNo(orderNo); - //延时消息不走消息表,因为延时消息最少支持秒级延时,定时任务不可能对消息表进行秒级扫描,那样性能损耗太大了 - //所以确保消息一定发送成功,走同步发送,如果发送失败直接抛异常,确保本地事物回滚 - SendStatus sendStatus = rocketMQEnhanceTemplate.send(RocketMqTopic.ORDER_CANCEL_TOPIC, RocketMqTag.ORDER_VIP_TAG, vipOrderCancelMessage, RocketMqConstant.THIRTY_MINUTES).getSendStatus(); - if (SendStatus.SEND_OK != sendStatus){ - throw new ServiceException("下单失败,请重试"); - } - }else { - orderNo = vipOrder.getOrderNo(); + //构建订单 + VipOrder vipOrder = buildVipOrder(addVipOrderDto); + vipOrderMapper.insert(vipOrder); + //缓存订单,有效期30分钟,防止用户一直创建重复的订单 + //cacheOrder(vipOrder); + String orderNo = vipOrder.getOrderNo(); + //发送消息,如果三十分钟后没有支付,则取消订单 + VipOrderCancelMessage vipOrderCancelMessage = new VipOrderCancelMessage(); + vipOrderCancelMessage.setOrderNo(orderNo); + //延时消息不走消息表,因为延时消息最少支持秒级延时,定时任务不可能对消息表进行秒级扫描,那样性能损耗太大了 + //所以确保消息一定发送成功,走同步发送,如果发送失败直接抛异常,确保本地事物回滚 + SendStatus sendStatus = rocketMQEnhanceTemplate.send(RocketMqTopic.ORDER_CANCEL_TOPIC, RocketMqTag.ORDER_VIP_TAG, vipOrderCancelMessage, RocketMqConstant.THIRTY_MINUTES).getSendStatus(); + if (SendStatus.SEND_OK != sendStatus){ + throw new ServiceException("下单失败,请重试"); } return orderNo; }