Browse Source

修复推送商城商品被误删导致推送异常的问题

cgp 4 ngày trước cách đây
mục cha
commit
26981a5f06

+ 26 - 7
fs-service/src/main/java/com/fs/erp/service/impl/JSTErpOrderServiceImpl.java

@@ -35,10 +35,8 @@ import com.fs.his.mapper.FsStoreProductAttrValueMapper;
 import com.fs.his.service.IFsStoreOrderItemService;
 import com.fs.his.service.IFsStoreOrderService;
 import com.fs.his.service.IFsStoreProductService;
-import com.fs.hisStore.domain.FsStoreOrderItemScrm;
-import com.fs.hisStore.domain.FsStoreOrderScrm;
-import com.fs.hisStore.domain.FsStoreProductAttrValueScrm;
-import com.fs.hisStore.domain.FsStoreProductScrm;
+import com.fs.hisStore.domain.*;
+import com.fs.hisStore.mapper.FsStoreCartScrmMapper;
 import com.fs.hisStore.mapper.FsStoreProductAttrValueScrmMapper;
 import com.fs.hisStore.service.IFsStoreOrderItemScrmService;
 import com.fs.hisStore.service.IFsStoreOrderScrmService;
@@ -107,6 +105,9 @@ public class JSTErpOrderServiceImpl implements IErpOrderService {
     @Autowired
     private IJdHttpService jdHttpService;
 
+    @Autowired
+    private FsStoreCartScrmMapper fsStoreCartScrmMapper;
+
     @Override
     public ErpOrderResponse addOrder(ErpOrder order) {
         FsStoreOrder fsStoreOrder = fsStoreOrderService.selectFsStoreOrderByOrderCode(order.getPlatform_code());
@@ -338,10 +339,28 @@ public class JSTErpOrderServiceImpl implements IErpOrderService {
             orderItemDTO.setPropertiesValue(sku);//商品属性
 
             FsStoreProductScrm fsStoreProduct = fsStoreProductScrmService.selectFsStoreProductById(item.getProductId());
+            if (fsStoreProduct!=null){
+                orderItemDTO.setAmount(fsStoreProduct.getPrice().multiply(new BigDecimal(item.getNum())));
+                orderItemDTO.setPic(fsStoreProduct.getImage());
+                orderItemDTO.setPrice(fsStoreProduct.getPrice());
+            }else {
+                //如果商品被删除了,就查询购物车里面存储的商品信息并计算金额
+                FsStoreCartScrm fsStoreCart =fsStoreCartScrmMapper.selectFsStoreCartById(item.getCartId());
+                //取出jsonInfo计算金额
+                String jsonInfo = item.getJsonInfo();
+                JSONObject jsonObjectBackup = JSON.parseObject(jsonInfo);
+                String image = jsonObject.getString("image");
+                BigDecimal price = jsonObjectBackup.getBigDecimal("price");
+                orderItemDTO.setPic(image);
+                orderItemDTO.setPrice(price);
+                if ("product".equals(fsStoreCart.getType())){
+                    orderItemDTO.setAmount(price.multiply(BigDecimal.valueOf(item.getNum())));
+                }else if ("gift".equals(fsStoreCart.getType())){
+                    //赠品不计算金额
+                    orderItemDTO.setAmount(BigDecimal.ZERO);
+                }
+            }
 
-            orderItemDTO.setAmount(fsStoreProduct.getPrice().multiply(new BigDecimal(item.getNum())));
-            orderItemDTO.setPic(fsStoreProduct.getImage());
-            orderItemDTO.setPrice(fsStoreProduct.getPrice());
             orderItemDTO.setQty(item.getNum().intValue());
             orderItemDTO.setOuterOiId(String.format("%s%s",fsStoreOrder.getOrderCode(),item.getItemId()));
             itemDTOList.add(orderItemDTO);