liujunchi 2 lat temu
rodzic
commit
35cde5e5e9

+ 3 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentOrderServiceImpl.java

@@ -1036,6 +1036,9 @@ public class StudentPaymentOrderServiceImpl extends BaseServiceImpl<Long, Studen
 
         if (StringUtils.isNotEmpty(model.getOldOrderNo())) {
             StudentPaymentOrder orderByOrderNo = studentPaymentOrderService.findOrderByOrderNo(model.getOldOrderNo());
+            if (orderByOrderNo == null) {
+                throw new BizException("未找到原订单");
+            }
             // 已有订单,先关单
             orderByOrderNo.setStatus(CLOSE);
             studentPaymentOrderService.update(orderByOrderNo);

+ 48 - 25
mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java

@@ -121,23 +121,42 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
 
     @Override
     public Map<String, Object> generateOrder(OrderParam orderParam) {
-        if (orderParam.getOrderAmount() == null) {
-            throw new BizException("订单金额校验不通过");
-        }
-        List<OmsOrderItem> orderItemList = new ArrayList<>();
-        //获取购物车及优惠信息
-        UmsMember currentMember = memberService.getCurrentMember();
-        if (orderParam.getUserId() != null && orderParam.getUserId() > 0) {
-            currentMember = memberService.getById(orderParam.getUserId());
-        }
+        OmsOrder order = new OmsOrder();
+        String orderSn = generateOrderSn();
         if (!StringUtil.isEmpty(orderParam.getOrderNo())) {
             // 订单号不为空 先删除订单  在重新创建订单
             OmsOrderDetail detail = detail(orderParam.getOrderNo());
             if (detail != null) {
                 detail.setStatus(4);
                 orderMapper.updateByPrimaryKeySelective(detail);
+                detail.setId(null);
+                detail.setOrderSn(orderSn);
+                orderMapper.insert(detail);
+                List<OmsOrderItem> orderItemList = detail.getOrderItemList();
+                for (OmsOrderItem omsOrderItem : orderItemList) {
+                    omsOrderItem.setId(null);
+                    omsOrderItem.setOrderSn(detail.getOrderSn());
+                    omsOrderItem.setOrderId(order.getId());
+                }
+                orderItemDao.insertList(orderItemList);
+
+                return feignMecCreateOrder(order.getCouponId(),orderParam.getOrderNo(), orderSn, detail.getMemberId(), detail.getTotalAmount());
+            } else {
+                throw new BizException("订单信息获取失败");
+            }
+
+        } else {
+            if (orderParam.getOrderAmount() == null) {
+                throw new BizException("订单金额校验不通过");
             }
         }
+        List<OmsOrderItem> orderItemList = new ArrayList<>();
+        //获取购物车及优惠信息
+        UmsMember currentMember = memberService.getCurrentMember();
+        if (orderParam.getUserId() != null && orderParam.getUserId() > 0) {
+            currentMember = memberService.getById(orderParam.getUserId());
+        }
+
         List<CartPromotionItem> cartPromotionItemList = cartItemService.listPromotion(currentMember.getId(),
                                                                                       orderParam.getCartIds(), true);
         for (CartPromotionItem cartPromotionItem : cartPromotionItemList) {
@@ -167,23 +186,9 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
             Asserts.fail("库存不足,无法下单");
         }
 
-        String orderSn = generateOrderSn();
         BigDecimal amount = calcTotalAmount(orderItemList);
 
-        // 远程调用管乐迷订单记录
-        MallCreateOrderModel model = new MallCreateOrderModel();
-        model.setAmount(amount);
-        model.setOrderNo(orderSn);
-        model.setUserId(currentMember.getId().intValue());
-        model.setCouponIdList(StringUtil.toIntegerList(orderParam.getCouponId()));
-        HttpResponseResult<Map> mapHttpResponseResult = webFeignService.mallCreateOrder(model);
-        if (!mapHttpResponseResult.getStatus()) {
-            throw new BizException("管乐迷订单生成失败");
-        }
-        Map data = mapHttpResponseResult.getData();
-        if (Integer.valueOf(0).equals(MapUtil.get(data,"mallStatus",Integer.class))) {
-            throw new BizException("管乐迷订单生成失败");
-        }
+        Map data = feignMecCreateOrder(orderParam.getCouponId(),orderParam.getOrderNo(), orderSn, currentMember.getId(), amount);
 
         BigDecimal couponAmount = MapUtil.get(data, "mallCouponAmount", BigDecimal.class);
         if (couponAmount == null) {
@@ -246,7 +251,6 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
         lockProductStock(cartPromotionItemList);
 
         //根据商品合计、运费、活动优惠、优惠券、积分计算应付金额
-        OmsOrder order = new OmsOrder();
         String cartIds = orderParam.getCartIds().stream().map(String::valueOf).collect(Collectors.joining());
         order.setCartIds(cartIds);
         order.setDiscountAmount(new BigDecimal(0));
@@ -342,6 +346,25 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
         return result;
     }
 
+    private Map feignMecCreateOrder(String couponId,String oldOrderNo, String orderSn, Long userId, BigDecimal amount) {
+        // 远程调用管乐迷订单记录
+        MallCreateOrderModel model = new MallCreateOrderModel();
+        model.setAmount(amount);
+        model.setOrderNo(orderSn);
+        model.setUserId(userId.intValue());
+        model.setCouponIdList(StringUtil.toIntegerList(couponId));
+        model.setOldOrderNo(oldOrderNo);
+        HttpResponseResult<Map> mapHttpResponseResult = webFeignService.mallCreateOrder(model);
+        if (!mapHttpResponseResult.getStatus()) {
+            throw new BizException("管乐迷订单生成失败");
+        }
+        Map data = mapHttpResponseResult.getData();
+        if (Integer.valueOf(0).equals(MapUtil.get(data,"mallStatus",Integer.class))) {
+            throw new BizException("管乐迷订单生成失败");
+        }
+        return data;
+    }
+
     @Override
     public Integer paySuccess(Long orderId, Integer payType) {
         //修改订单支付状态