Pārlūkot izejas kodu

Merge remote-tracking branch 'origin/zx_saas_goods' into zx_saas_goods

yuanliang 1 gadu atpakaļ
vecāks
revīzija
1ebbf79c68

+ 2 - 7
mec-client-api/src/main/java/com/ym/mec/web/WebFeignService.java

@@ -2,12 +2,7 @@ package com.ym.mec.web;
 
 import com.ym.mec.common.config.FeignConfiguration;
 import com.ym.mec.common.dto.SchoolDto;
-import com.ym.mec.common.entity.GoodsSubModel;
-import com.ym.mec.common.entity.GoodsSubStockModel;
-import com.ym.mec.common.entity.HttpResponseResult;
-import com.ym.mec.common.entity.MallCreateOrderModel;
-import com.ym.mec.common.entity.OrderCancelModel;
-import com.ym.mec.common.entity.RefundModel;
+import com.ym.mec.common.entity.*;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.thirdparty.adapay.entity.BaseResult;
 import com.ym.mec.thirdparty.adapay.entity.HfMerchantConfig;
@@ -60,7 +55,7 @@ public interface WebFeignService {
 
 	//商城发货状态同步
 	@PostMapping("/api/updateShippedStatus")
-	HttpResponseResult updateShippedStatus(@RequestBody List<String> orderNo);
+	HttpResponseResult updateShippedStatus(@RequestBody List<OrderSkuSync> orderSkuSyncs);
 
 	@PostMapping("/api/cancelOrder")
 	HttpResponseResult<OrderCancelModel> cancelOrder(@RequestParam("orderNo") String orderNo,@RequestParam("reason") String reason);

+ 2 - 7
mec-client-api/src/main/java/com/ym/mec/web/fallback/WebFeignServiceFallback.java

@@ -1,12 +1,7 @@
 package com.ym.mec.web.fallback;
 
 import com.ym.mec.common.dto.SchoolDto;
-import com.ym.mec.common.entity.GoodsSubModel;
-import com.ym.mec.common.entity.GoodsSubStockModel;
-import com.ym.mec.common.entity.HttpResponseResult;
-import com.ym.mec.common.entity.MallCreateOrderModel;
-import com.ym.mec.common.entity.OrderCancelModel;
-import com.ym.mec.common.entity.RefundModel;
+import com.ym.mec.common.entity.*;
 import com.ym.mec.common.page.QueryInfo;
 import com.ym.mec.thirdparty.adapay.entity.BaseResult;
 import com.ym.mec.thirdparty.adapay.entity.HfMerchantConfig;
@@ -78,7 +73,7 @@ public class WebFeignServiceFallback implements WebFeignService {
 	}
 
     @Override
-    public HttpResponseResult updateShippedStatus(List<String> orderNo) {
+    public HttpResponseResult updateShippedStatus(List<OrderSkuSync> orderSkuSyncs) {
         return null;
     }
 

+ 1 - 1
mec-common/common-core/src/main/java/com/ym/mec/common/dto/ReturnApplyDto.java

@@ -9,7 +9,7 @@ public class ReturnApplyDto {
     private String orderSn;
 
     // 退货商品sku id
-    private Long skuId;
+    private String skuIds;
 
     // 退货单号
     private String returnApplySn;

+ 37 - 0
mec-common/common-core/src/main/java/com/ym/mec/common/entity/OrderSkuSync.java

@@ -0,0 +1,37 @@
+package com.ym.mec.common.entity;
+
+import lombok.Data;
+
+import java.math.BigDecimal;
+import java.util.List;
+
+/**
+ * Description
+ *
+ * @author liujunchi
+ * @date 2022-09-16
+ */
+@Data
+public class OrderSkuSync {
+
+    private String orderNo;
+
+    private List<SkuSync> skuSyncList;
+
+
+    @Data
+    public static class SkuSync {
+
+        // sku Id
+        private Long sku;
+
+        // 数量
+        private Integer count;
+
+        //价格
+        private BigDecimal price;
+
+        // 批次号
+        private Long recordId;
+    }
+}

+ 39 - 27
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/OmsOrderReturnApplyServiceImpl.java

@@ -22,10 +22,12 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 import org.springframework.util.CollectionUtils;
+import org.springframework.util.StringUtils;
 
 import java.math.BigDecimal;
 import java.math.RoundingMode;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Date;
 import java.util.List;
 
@@ -238,38 +240,48 @@ public class OmsOrderReturnApplyServiceImpl implements OmsOrderReturnApplyServic
         if (CollectionUtils.isEmpty(omsOrderItems)) {
             throw new ApiException("未找到订单商品信息");
         }
-
-        OmsOrderItem orderItem = omsOrderItems.stream().filter(omsOrderItem -> omsOrderItem.getProductSkuId()
-            .equals(returnApplyDto.getSkuId())).findFirst().orElseThrow(() -> new ApiException("未找到订单商品信息"));
-        PmsProduct pmsProduct = productMapper.selectByPrimaryKey(orderItem.getProductId());
-        if (pmsProduct == null) {
-            throw new ApiException("未找到商品信息");
+        if (StringUtils.isEmpty(returnApplyDto.getSkuIds())) {
+            throw new ApiException("未找到订单商品信息");
         }
+        List<OmsOrderReturnApply> returnApplyList = new ArrayList<>();
 
+        Arrays.stream(returnApplyDto.getSkuIds().split(",")).forEach(skuId -> {
+            OmsOrderItem orderItem = omsOrderItems.stream().filter(omsOrderItem -> omsOrderItem.getProductSkuId().equals(Long.valueOf(skuId)))
+                .findFirst().orElseThrow(() -> new ApiException("未找到订单商品信息"));
+            PmsProduct pmsProduct = productMapper.selectByPrimaryKey(orderItem.getProductId());
 
+            if (pmsProduct == null) {
+                throw new ApiException("未找到商品信息");
+            }
+            OmsOrderReturnApply returnApply = new OmsOrderReturnApply();
+            returnApply.setOrderId(byOrderSn.getId());
+            returnApply.setProductId(pmsProduct.getId());
+            returnApply.setOrderItemId(orderItem.getId());
+            returnApply.setOrderSn(byOrderSn.getOrderSn());
+            returnApply.setCreateTime(new Date());
+            returnApply.setMemberUsername(byOrderSn.getMemberUsername());
+            returnApply.setReturnAmount(BigDecimal.ZERO);
+            returnApply.setStatus(2);
+            returnApply.setHandleTime(new Date());
+            returnApply.setProductPic(pmsProduct.getPic());
+            returnApply.setProductName(pmsProduct.getName());
+            if (pmsProduct.getBrandId() != null) {
+                returnApply.setProductBrand(brandMapper.selectByPrimaryKey(pmsProduct.getBrandId()).getName());
+            }
+            returnApply.setProductAttr(orderItem.getProductAttr());
+            returnApply.setProductCount(orderItem.getProductQuantity());
+            returnApply.setProductPrice(orderItem.getProductPrice());
+            returnApply.setProductRealPrice(orderItem.getRealAmount());
+            returnApply.setReason(returnApplyDto.getReason());
+            returnApplyList.add(returnApply);
+        });
+
+        if (!CollectionUtils.isEmpty(returnApplyList)) {
+            for (OmsOrderReturnApply omsOrderReturnApply : returnApplyList) {
+                returnApplyMapper.insert(omsOrderReturnApply);
 
-        OmsOrderReturnApply returnApply = new OmsOrderReturnApply();
-        returnApply.setOrderId(byOrderSn.getId());
-        returnApply.setProductId(pmsProduct.getId());
-        returnApply.setOrderItemId(orderItem.getId());
-        returnApply.setOrderSn(byOrderSn.getOrderSn());
-        returnApply.setCreateTime(new Date());
-        returnApply.setMemberUsername(byOrderSn.getMemberUsername());
-        returnApply.setReturnAmount(BigDecimal.ZERO);
-        returnApply.setStatus(2);
-        returnApply.setHandleTime(new Date());
-        returnApply.setProductPic(pmsProduct.getPic());
-        returnApply.setProductName(pmsProduct.getName());
-        if (pmsProduct.getBrandId() != null) {
-            returnApply.setProductBrand(brandMapper.selectByPrimaryKey(pmsProduct.getBrandId()).getName());
+            }
         }
-        returnApply.setProductAttr(orderItem.getProductAttr());
-        returnApply.setProductCount(orderItem.getProductQuantity());
-        returnApply.setProductPrice(orderItem.getProductPrice());
-        returnApply.setProductRealPrice(orderItem.getRealAmount());
-        returnApply.setReason(returnApplyDto.getReason());
-
-        returnApplyMapper.insert(returnApply);
 
 
     }

+ 95 - 66
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/OmsOrderServiceImpl.java

@@ -6,6 +6,7 @@ import com.google.common.collect.Lists;
 import com.ym.mec.common.dto.SchoolDto;
 import com.ym.mec.common.entity.GoodsSubStockModel;
 import com.ym.mec.common.entity.HttpResponseResult;
+import com.ym.mec.common.entity.OrderSkuSync;
 import com.ym.mec.common.exception.BizException;
 import com.ym.mec.util.date.DateUtil;
 import com.ym.mec.web.WebFeignService;
@@ -141,16 +142,7 @@ public class OmsOrderServiceImpl implements OmsOrderService {
         // 查询出所有订单关联的skuId
         // 订单ID集合
         List<Long> orderIds = deliveryParamList.stream().map(OmsOrderDeliveryParam::getOrderId).collect(Collectors.toList());
-        // 查询订单详情
-        OmsOrderItemExample example = new OmsOrderItemExample();
-        example.createCriteria().andOrderIdIn(orderIds);
-        List<OmsOrderItem> omsOrderItems = omsOrderItemMapper.selectByExample(example);
-        // skuId 数量 map
-        Map<Long, Integer> skuIdMap = omsOrderItems.stream().collect(Collectors.groupingBy(OmsOrderItem::getProductSkuId,Collectors.summingInt(OmsOrderItem::getProductQuantity)));
-
-        // skuid 集合
-        List<Long> skuIds = new ArrayList<>(skuIdMap.keySet());
-        updateSkuStock( skuIdMap, orderIds);
+        updateSkuStock( orderIds);
 
 
         //添加操作记录
@@ -174,10 +166,20 @@ public class OmsOrderServiceImpl implements OmsOrderService {
      */
 //    @Override
     @Transactional(rollbackFor = Exception.class)
-    public void updateSkuStock(Map<Long, Integer> skuIdMap, List<Long> orderIds) {
+    public void updateSkuStock(List<Long> orderIds) {
+
+        // 查询订单详情
+        OmsOrderItemExample example = new OmsOrderItemExample();
+        example.createCriteria().andOrderIdIn(orderIds);
+        List<OmsOrderItem> omsOrderItems = omsOrderItemMapper.selectByExample(example);
+        if (CollectionUtils.isEmpty(omsOrderItems)) {
+            throw new BizException("订单详情不存在");
+        }
+        // skuID集合
+        List<Long> skuIds = omsOrderItems.stream().map(OmsOrderItem::getProductSkuId).distinct().collect(Collectors.toList());
         // 查询库存
         PmsProductSkuStockRecordExample stockRecordExample = new PmsProductSkuStockRecordExample();
-        stockRecordExample.createCriteria().andProductSkuIdIn(new ArrayList<>(skuIdMap.keySet()));
+        stockRecordExample.createCriteria().andProductSkuIdIn(skuIds);
         List<PmsProductSkuStockRecord> productSkuStockRecords = pmsProductSkuStockRecordMapper.selectByExample(stockRecordExample);
         if (CollectionUtils.isEmpty(productSkuStockRecords)) {
             throw new BizException("库存不足");
@@ -193,59 +195,85 @@ public class OmsOrderServiceImpl implements OmsOrderService {
         // 扣减库存
 
         List<PmsProductSkuStockRecord> updateList = new ArrayList<>();
-        skuIdMap.forEach((skuId, num) -> {
-            List<PmsProductSkuStockRecord> skuStockRecords = skuStockRecordMap.get(skuId);
-            if (CollectionUtils.isEmpty(skuStockRecords)) {
-                throw new BizException("库存不足");
-            }
-            int count1 = num;
-            // 扣减内部库存
-            for (PmsProductSkuStockRecord skuStockRecord : skuStockRecords) {
-                if (count1 <= 0) {
-                    break;
+        Map<String, List<OmsOrderItem>> map = omsOrderItems.stream().collect(Collectors.groupingBy(o -> o.getOrderSn()));
+        List<OrderSkuSync> skuSyncList = new ArrayList<>();
+        map.forEach((sn,v) -> {
+            OrderSkuSync skuSync = new OrderSkuSync();
+            skuSync.setOrderNo(sn);
+            List<OrderSkuSync.SkuSync> skuSyncs = new ArrayList<>();
+            skuSync.setSkuSyncList(skuSyncs);
+            v.stream().forEach(o -> {
+                List<PmsProductSkuStockRecord> skuStockRecords = skuStockRecordMap.get(o.getProductSkuId());
+                if (CollectionUtils.isEmpty(skuStockRecords)) {
+                    throw new BizException("库存不足");
                 }
-                if (skuStockRecord.getInternalStock() > 0) {
-
-                    int stock = skuStockRecord.getInternalStock() - skuStockRecord.getInternalSaleStock();
-                    if (stock > 0) {
-                        PmsProductSkuStockRecord record = new PmsProductSkuStockRecord();
-                        record.setId(skuStockRecord.getId());
-
-                        if (stock >= count1) {
-                            record.setInternalSaleStock(skuStockRecord.getInternalSaleStock() + count1);
-                            count1 = 0;
-                        } else {
-                            count1 = count1 - stock;
-                            record.setInternalSaleStock(skuStockRecord.getInternalStock());
+                int count1 = o.getProductQuantity();
+                // 扣减内部库存
+                for (PmsProductSkuStockRecord skuStockRecord : skuStockRecords) {
+                    if (count1 <= 0) {
+                        break;
+                    }
+                    if (skuStockRecord.getInternalStock() > 0) {
+                        OrderSkuSync.SkuSync sync = new OrderSkuSync.SkuSync();
+                        sync.setSku(skuStockRecord.getProductSkuId());
+
+
+                        int stock = skuStockRecord.getInternalStock() - skuStockRecord.getInternalSaleStock();
+                        if (stock > 0) {
+                            PmsProductSkuStockRecord record = new PmsProductSkuStockRecord();
+                            record.setId(skuStockRecord.getId());
+                            sync.setPrice(skuStockRecord.getPrice());
+                            sync.setRecordId(skuStockRecord.getId());
+
+                            if (stock >= count1) {
+                                record.setInternalSaleStock(skuStockRecord.getInternalSaleStock() + count1);
+                                sync.setCount(count1);
+                                count1 = 0;
+                            } else {
+                                count1 = count1 - stock;
+                                record.setInternalSaleStock(skuStockRecord.getInternalStock());
+                                sync.setCount(stock);
+                            }
+                            updateList.add(record);
+                            skuSyncs.add(sync);
                         }
-                        updateList.add(record);
                     }
                 }
-            }
-            // 扣减税务库存
-            for (PmsProductSkuStockRecord skuStockRecord : skuStockRecords) {
-                if (count1 <= 0) {
-                    break;
-                }
-                if (skuStockRecord.getTaxStock() > 0) {
-                    int stock = skuStockRecord.getTaxStock() - skuStockRecord.getTaxSaleStock();
-                    if (stock > 0) {
-                        PmsProductSkuStockRecord record = new PmsProductSkuStockRecord();
-                        record.setId(skuStockRecord.getId());
-                        if (stock >= count1) {
-                            record.setTaxSaleStock(skuStockRecord.getTaxSaleStock() + count1);
-                            count1 = 0;
-                        } else {
-                            count1 = count1 - stock;
-                            record.setTaxSaleStock(skuStockRecord.getTaxStock());
+                // 扣减税务库存
+                for (PmsProductSkuStockRecord skuStockRecord : skuStockRecords) {
+                    if (count1 <= 0) {
+                        break;
+                    }
+                    if (skuStockRecord.getTaxStock() > 0) {
+
+                        OrderSkuSync.SkuSync sync = new OrderSkuSync.SkuSync();
+                        sync.setSku(skuStockRecord.getProductSkuId());
+                        sync.setPrice(skuStockRecord.getPrice());
+                        sync.setRecordId(skuStockRecord.getId());
+
+                        int stock = skuStockRecord.getTaxStock() - skuStockRecord.getTaxSaleStock();
+                        if (stock > 0) {
+                            PmsProductSkuStockRecord record = new PmsProductSkuStockRecord();
+                            record.setId(skuStockRecord.getId());
+                            if (stock >= count1) {
+                                record.setTaxSaleStock(skuStockRecord.getTaxSaleStock() + count1);
+                                sync.setCount(count1);
+                                count1 = 0;
+                            } else {
+                                count1 = count1 - stock;
+                                record.setTaxSaleStock(skuStockRecord.getTaxStock());
+                                sync.setCount(stock);
+                            }
+                            updateList.add(record);
+                            skuSyncs.add(sync);
                         }
-                        updateList.add(record);
                     }
                 }
-            }
-            if (count1 > 0) {
-                throw new BizException("库存不足");
-            }
+                if (count1 > 0) {
+                    throw new BizException("库存不足");
+                }
+            });
+            skuSyncList.add(skuSync);
         });
         for (PmsProductSkuStockRecord pmsProductSkuStockRecord : updateList) {
             pmsProductSkuStockRecordMapper.updateByPrimaryKeySelective(pmsProductSkuStockRecord);
@@ -255,10 +283,8 @@ public class OmsOrderServiceImpl implements OmsOrderService {
         OmsOrderExample orderExample = new OmsOrderExample();
         orderExample.createCriteria().andIdIn(orderIds);
         List<OmsOrder> omsOrders = orderMapper.selectByExample(orderExample);
-        // 订单号
-        List<String> orderSnList = omsOrders.stream().map(OmsOrder::getOrderSn).collect(Collectors.toList());
         try {
-            HttpResponseResult httpResponseResult = webFeignService.updateShippedStatus(orderSnList);
+            HttpResponseResult httpResponseResult = webFeignService.updateShippedStatus(skuSyncList);
             if (httpResponseResult.getCode() != 200 && !httpResponseResult.getStatus()) {
                 throw new BizException("发货通知失败");
             }
@@ -267,7 +293,7 @@ public class OmsOrderServiceImpl implements OmsOrderService {
         }
 
         // 调用三方库存更新接口
-        syncSkuStock(new ArrayList<>(skuIdMap.keySet()));
+        syncSkuStock(skuIds);
     }
 
     @Override
@@ -332,6 +358,12 @@ public class OmsOrderServiceImpl implements OmsOrderService {
     public OmsOrderDetail detail(Long id) {
         OmsOrderDetail detail = orderDao.getDetail(id);
 
+        // 获取订单详情
+        OmsOrderItemExample example = new OmsOrderItemExample();
+        example.createCriteria().andOrderIdEqualTo(id);
+        List<OmsOrderItem> omsOrderItems = omsOrderItemMapper.selectByExample(example);
+        detail.setOrderItemList(omsOrderItems);
+
         // 学校订单查询学校信息
         try {
             if (detail.getSourceType() == 2) {
@@ -733,10 +765,7 @@ public class OmsOrderServiceImpl implements OmsOrderService {
         // 如果订单状态是已发货,扣减库存
         if (order.getStatus() ==2 || order.getStatus() == 3) {
 
-            // skuId 数量 map
-            Map<Long, Integer> skuIdMap = orderItemList.stream().collect(Collectors.groupingBy(OmsOrderItem::getProductSkuId,Collectors.summingInt(OmsOrderItem::getProductQuantity)));
-
-            updateSkuStock(skuIdMap, Lists.newArrayList(detail.getId()));
+            updateSkuStock(Lists.newArrayList(detail.getId()));
         }
     }