Browse Source

Merge branch 'zx_saas_goods' into test

刘俊驰 1 year ago
parent
commit
1a10128e90
19 changed files with 190 additions and 33 deletions
  1. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentRouteOrderService.java
  2. 2 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderGoodsServiceImpl.java
  3. 7 4
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java
  4. 5 0
      mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentRouteOrderServiceImpl.java
  5. 24 3
      mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/PmsProductServiceImpl.java
  6. 21 0
      mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/PmsProductSkuStockRecordServiceImpl.java
  7. 1 1
      mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/PmsSkuStockServiceImpl.java
  8. 10 1
      mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/wrapper/PmsProductSkuStockRecordWrapper.java
  9. 7 3
      mec-mall/mall-admin/src/main/resources/config/mybatis/PmsProductDao.xml
  10. 1 0
      mec-mall/mall-admin/src/main/resources/config/mybatis/PmsProductSkuStockRecordDao.xml
  11. 12 0
      mec-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/PmsSkuStock.java
  12. 61 0
      mec-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/PmsSkuStockExample.java
  13. 1 1
      mec-mall/mall-mbg/src/main/resources/config/mybatis/PmsProductMapper.xml
  14. 6 3
      mec-mall/mall-mbg/src/main/resources/config/mybatis/PmsSkuStockMapper.xml
  15. 3 0
      mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/PmsPortalProductService.java
  16. 10 8
      mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsCartItemServiceImpl.java
  17. 3 5
      mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java
  18. 11 1
      mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPromotionServiceImpl.java
  19. 3 3
      mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/PmsPortalProductServiceImpl.java

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/StudentPaymentRouteOrderService.java

@@ -4,6 +4,7 @@ package com.ym.mec.biz.service;
 import java.math.BigDecimal;
 import java.util.List;
 
+import com.ym.mec.biz.dal.dao.StudentPaymentRouteOrderDao;
 import com.ym.mec.biz.dal.dto.PageInfoOrder;
 import com.ym.mec.biz.dal.dto.StudentPaymentRouteOrderDto;
 import com.ym.mec.biz.dal.entity.StudentPaymentRouteOrder;
@@ -17,6 +18,7 @@ import org.springframework.web.multipart.MultipartFile;
 
 
 public interface StudentPaymentRouteOrderService extends BaseService<Long, StudentPaymentRouteOrder> {
+	StudentPaymentRouteOrderDao getDao();
 	
 	/**
 	 * 查询审核列表

+ 2 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderGoodsServiceImpl.java

@@ -13,6 +13,7 @@ import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
 import java.math.BigDecimal;
@@ -31,6 +32,7 @@ public class MusicGroupPaymentCalenderGoodsServiceImpl extends ServiceImpl<Music
         return this.baseMapper;
     }
 
+    @Autowired
     private GoodsDao goodsDao;
 
     @Override

+ 7 - 4
mec-biz/src/main/java/com/ym/mec/biz/service/impl/MusicGroupPaymentCalenderServiceImpl.java

@@ -135,12 +135,12 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
     private ImGroupMemberService imGroupMemberService;
     @Autowired
     private MemberFeeSettingService memberFeeSettingService;
-
     @Autowired
     private CloudCoachPaymentProgramDao cloudCoachPaymentProgramDao;
-
     @Autowired
     private MallFeignService mallFeignService;
+    @Autowired
+    private StudentPaymentRouteOrderService studentPaymentRouteOrderService;
 
     @Override
     public BaseDAO<Long, MusicGroupPaymentCalender> getDAO() {
@@ -1452,9 +1452,12 @@ public class MusicGroupPaymentCalenderServiceImpl extends BaseServiceImpl<Long,
                     throw new BizException("操作失败:商品采购订单已发货");
                 }
                 musicGroupPaymentCalenderAddressService.removeById(address.getId());
+                //商品采购订单是否已经录入
+                StudentPaymentRouteOrder byOrderNo = studentPaymentRouteOrderService.getDao().getByOrderNo(address.getOrderNo());
+                if (byOrderNo != null) {
+                    throw new BizException("操作失败:商品采购订单已录入");
+                }
             }
-            //商品采购订单是否已经录入
-            
             musicGroupPaymentCalenderGoodsService.lambdaUpdate().eq(MusicGroupPaymentCalenderGoods::getCalenderId,id).remove();
         }
 

+ 5 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentRouteOrderServiceImpl.java

@@ -85,6 +85,11 @@ public class StudentPaymentRouteOrderServiceImpl extends BaseServiceImpl<Long, S
     }
 
     @Override
+    public StudentPaymentRouteOrderDao getDao() {
+        return studentPaymentRouteOrderDao;
+    }
+
+    @Override
     public PageInfo<StudentPaymentRouteOrder> queryAuditList(QueryInfo queryInfo) {
         PageInfo<StudentPaymentRouteOrder> pageInfo = new PageInfo<StudentPaymentRouteOrder>(queryInfo.getPage(), queryInfo.getRows());
         Map<String, Object> params = new HashMap<String, Object>();

+ 24 - 3
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/PmsProductServiceImpl.java

@@ -275,7 +275,7 @@ public class PmsProductServiceImpl implements PmsProductService {
         }
         //获取初始sku信息
         PmsSkuStockExample skuStockExample = new PmsSkuStockExample();
-        skuStockExample.createCriteria().andProductIdEqualTo(id);
+        skuStockExample.createCriteria().andProductIdEqualTo(id).andDeleteStatusEqualTo(0);
         List<PmsSkuStock> oriStuList = skuStockMapper.selectByExample(skuStockExample);
         //获取新增sku信息
         List<PmsSkuStock> insertSkuList = currSkuList.stream().filter(item->item.getId()==null).collect(Collectors.toList());
@@ -354,7 +354,7 @@ public class PmsProductServiceImpl implements PmsProductService {
 
         // 查询商品的sku
         PmsSkuStockExample skuStockExample = new PmsSkuStockExample();
-        skuStockExample.createCriteria().andProductIdIn(ids);
+        skuStockExample.createCriteria().andProductIdIn(ids).andDeleteStatusEqualTo(0);
         List<PmsSkuStock> pmsSkuStocks = skuStockMapper.selectByExample(skuStockExample);
         syncSkuStatus(publishStatus, pmsSkuStocks);
     }
@@ -401,7 +401,7 @@ public class PmsProductServiceImpl implements PmsProductService {
             syncProductStatus(ids, 0);
             // 更新库存
             PmsSkuStockExample example = new PmsSkuStockExample();
-            example.createCriteria().andProductIdIn(ids);
+            example.createCriteria().andProductIdIn(ids).andDeleteStatusEqualTo(0);
             List<PmsSkuStock> pmsSkuStocks = skuStockMapper.selectByExample(example);
             if (!CollectionUtils.isEmpty(pmsSkuStocks)) {
                 List<GoodsSubStockModel> stockModels = pmsSkuStocks.stream().map(next -> {
@@ -463,6 +463,27 @@ public class PmsProductServiceImpl implements PmsProductService {
         if (CollectionUtils.isEmpty(feignProductList)) {
             return new ArrayList<>();
         }
+
+        // 设置库存
+        // 从进货清单中 获取剩余库存数量
+        List<Long> productIds = feignProductList.stream().map(PmsProductDto::getGoodsId).collect(Collectors.toList());
+
+        // 计算库存数据
+        List<PmsSkuStockDto.PmsSkuStockStock> skuStockStocks = skuStockMapper.getSkuStockByProductIds(productIds);
+
+        // Convert to map
+        Map<Long, List<PmsSkuStockDto.PmsSkuStockStock>> skuStockStockMap = skuStockStocks.stream().collect(Collectors.groupingBy(PmsSkuStockDto.PmsSkuStockStock::getProductId));
+
+        // Merge
+        for (PmsProductDto pmsProduct : feignProductList) {
+            List<PmsSkuStockDto.PmsSkuStockStock> skuStockStock = skuStockStockMap.get(pmsProduct.getGoodsId());
+            if (!CollectionUtils.isEmpty(skuStockStock)) {
+                pmsProduct.setStock(skuStockStock.stream().mapToInt(PmsSkuStockDto.PmsSkuStockStock::getInternalStock).sum() + skuStockStock.stream().mapToInt(PmsSkuStockDto.PmsSkuStockStock::getTaxStock).sum());
+            } else {
+                pmsProduct.setStock(0);
+            }
+        }
+
         // 品牌ID集合
         List<Long> brandIds = feignProductList.stream().map(PmsProductDto::getBrandId).collect(Collectors.toList());
 

+ 21 - 0
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/PmsProductSkuStockRecordServiceImpl.java

@@ -1,6 +1,8 @@
 package com.yonge.cooleshow.admin.service.impl;
 
 import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.github.pagehelper.PageHelper;
 import com.google.common.collect.Lists;
 import com.ym.mec.common.exception.BizException;
@@ -10,6 +12,7 @@ import com.yonge.cooleshow.admin.service.PmsProductService;
 import com.yonge.cooleshow.admin.service.PmsProductSkuStockRecordService;
 import com.yonge.cooleshow.admin.service.PmsSkuStockService;
 import com.yonge.cooleshow.admin.wrapper.PmsProductSkuStockRecordWrapper;
+import com.yonge.cooleshow.mall.common.util.StringUtil;
 import com.yonge.cooleshow.mbg.mapper.PmsProductMapper;
 import com.yonge.cooleshow.mbg.mapper.PmsProductSkuStockRecordMapper;
 import com.yonge.cooleshow.mbg.mapper.PmsSkuStockMapper;
@@ -75,6 +78,24 @@ public class PmsProductSkuStockRecordServiceImpl implements PmsProductSkuStockRe
             PmsSkuStock skuStock = skuStockMap.get(item.getProductSkuId());
             if (skuStock != null) {
                 item.setProductSkuCode(skuStock.getSkuCode());
+                item.setSpData(skuStock.getSpData());
+
+                //规格 信息
+                if (StringUtil.isEmpty(item.getSpData())) {
+                    item.setSpData("无");
+                } else {
+                    try {
+
+                        JSONArray objects = JSON.parseArray(item.getSpData());
+                        List<String> list1 = Lists.newArrayList();
+                        for (Object object : objects) {
+                            list1.add(((JSONObject)object).getString("key")+":"+((JSONObject)object).getString("value"));
+                        }
+                        item.setSpData(list1.stream().collect(Collectors.joining(";")));
+                    } catch (Exception e) {
+                        item.setSpData("无");
+                    }
+                }
             }
             PmsProduct pmsProduct = productMap.get(item.getProductId());
             if (pmsProduct != null) {

+ 1 - 1
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/service/impl/PmsSkuStockServiceImpl.java

@@ -34,7 +34,7 @@ public class PmsSkuStockServiceImpl implements PmsSkuStockService {
     @Override
     public List<PmsSkuStockWrapper.PmsSkuStock> getList(Long pid, String keyword) {
         PmsSkuStockExample example = new PmsSkuStockExample();
-        PmsSkuStockExample.Criteria criteria = example.createCriteria().andProductIdEqualTo(pid);
+        PmsSkuStockExample.Criteria criteria = example.createCriteria().andProductIdEqualTo(pid).andDeleteStatusEqualTo(0);
         if (!StringUtils.isEmpty(keyword)) {
             criteria.andSkuCodeLike("%" + keyword + "%");
         }

+ 10 - 1
mec-mall/mall-admin/src/main/java/com/yonge/cooleshow/admin/wrapper/PmsProductSkuStockRecordWrapper.java

@@ -83,7 +83,8 @@ public class PmsProductSkuStockRecordWrapper {
          */
         @ApiModelProperty("商品skuId")
         @NotNull(message = "商品skuId不能为空")
-        @ExcelIgnore
+        @ColumnWidth(20)
+        @ExcelProperty(value = "skuId",order = 3)
         private Long productSkuId;
 
 
@@ -94,6 +95,14 @@ public class PmsProductSkuStockRecordWrapper {
         @ExcelProperty(value = "sku编号",order = 3)
         private String productSkuCode;
 
+
+        /**
+         * 商品skuId
+         */
+        @ApiModelProperty("sku规格")
+        @ExcelProperty(value = "sku规格",order = 3)
+        private String spData;
+
         /**
          * 备查货号
          */

+ 7 - 3
mec-mall/mall-admin/src/main/resources/config/mybatis/PmsProductDao.xml

@@ -33,7 +33,7 @@
         LEFT JOIN pms_member_price m ON m.product_id = p.id
         LEFT JOIN pms_sku_stock s ON s.product_id = p.id
         LEFT JOIN pms_product_attribute_value a ON a.product_id=p.id
-        WHERE p.id=#{id};
+        WHERE p.id=#{id} and (s.delete_status = 0 )
     </select>
     <select id="selectSubjectProductRelationByProductId" resultMap="com.yonge.cooleshow.mbg.mapper.CmsSubjectProductRelationMapper.BaseResultMap">
         select * from cms_subject_product_relation where product_id=#{productId}
@@ -50,7 +50,10 @@
                 left join
             (select DISTINCT pss.product_id
              from  pms_sku_stock pss
-             where pss.stock &lt;= pss.low_stock) b
+                       left join pms_product_sku_stock_record t3 on t3.product_sku_id= pss.id
+             where pss.delete_status = 0
+             group by pss.product_id,pss.id,pss.low_stock
+             having sum(t3.internal_stock - t3.internal_sale_stock) &lt;= pss.low_stock) b
         on b.product_id = pp.id
         where  (pp.stock &lt;= pp.low_stock or b.product_id is not null) and pp.delete_status = 0
     </select>
@@ -75,6 +78,7 @@
             (select DISTINCT pss.product_id
             from  pms_sku_stock pss
             left join pms_product_sku_stock_record t3 on t3.product_sku_id= pss.id
+            where pss.delete_status = 0
             group by pss.product_id,pss.id,pss.low_stock
             having sum(t3.internal_stock - t3.internal_sale_stock) &lt;= pss.low_stock) b
             on b.product_id = pp.id
@@ -125,7 +129,7 @@
         from pms_product t
         left join pms_sku_stock t1 on t.id = t1.product_id
         <where>
-            t.delete_status = 0
+            t.delete_status = 0 and (t1.delete_status = 0)
             <if test="param.publishStatus != null">
                 and t.publish_status = #{param.publishStatus}
             </if>

+ 1 - 0
mec-mall/mall-admin/src/main/resources/config/mybatis/PmsProductSkuStockRecordDao.xml

@@ -33,5 +33,6 @@
 
         </where>
 
+        order by t.id desc
     </select>
 </mapper>

+ 12 - 0
mec-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/PmsSkuStock.java

@@ -35,6 +35,18 @@ public class PmsSkuStock implements Serializable {
     @ApiModelProperty(value = "商品销售属性,json格式")
     private String spData;
 
+
+    @ApiModelProperty(value = "删除状态:0->未删除;1->已删除")
+    private Integer deleteStatus;
+
+    public Integer getDeleteStatus() {
+        return deleteStatus;
+    }
+
+    public void setDeleteStatus(Integer deleteStatus) {
+        this.deleteStatus = deleteStatus;
+    }
+
     private static final long serialVersionUID = 1L;
 
     public Long getId() {

+ 61 - 0
mec-mall/mall-mbg/src/main/java/com/yonge/cooleshow/mbg/model/PmsSkuStockExample.java

@@ -110,6 +110,67 @@ public class PmsSkuStockExample {
             return (Criteria) this;
         }
 
+
+        public Criteria andDeleteStatusIsNull() {
+            addCriterion("delete_status is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeleteStatusIsNotNull() {
+            addCriterion("delete_status is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeleteStatusEqualTo(Integer value) {
+            addCriterion("delete_status =", value, "deleteStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeleteStatusNotEqualTo(Integer value) {
+            addCriterion("delete_status <>", value, "deleteStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeleteStatusGreaterThan(Integer value) {
+            addCriterion("delete_status >", value, "deleteStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeleteStatusGreaterThanOrEqualTo(Integer value) {
+            addCriterion("delete_status >=", value, "deleteStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeleteStatusLessThan(Integer value) {
+            addCriterion("delete_status <", value, "deleteStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeleteStatusLessThanOrEqualTo(Integer value) {
+            addCriterion("delete_status <=", value, "deleteStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeleteStatusIn(List<Integer> values) {
+            addCriterion("delete_status in", values, "deleteStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeleteStatusNotIn(List<Integer> values) {
+            addCriterion("delete_status not in", values, "deleteStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeleteStatusBetween(Integer value1, Integer value2) {
+            addCriterion("delete_status between", value1, value2, "deleteStatus");
+            return (Criteria) this;
+        }
+
+        public Criteria andDeleteStatusNotBetween(Integer value1, Integer value2) {
+            addCriterion("delete_status not between", value1, value2, "deleteStatus");
+            return (Criteria) this;
+        }
+
         public Criteria andIdIsNotNull() {
             addCriterion("id is not null");
             return (Criteria) this;

+ 1 - 1
mec-mall/mall-mbg/src/main/resources/config/mybatis/PmsProductMapper.xml

@@ -921,6 +921,6 @@
   </update>
 
   <update id="lockStock">
-    update pms_product set lock_stock = lock_stock + #{sum} where  id = #{productId} and stock &gt;= ( lock_stock + #{sum})
+    update pms_product set lock_stock = lock_stock where  id = #{productId}
   </update>
 </mapper>

+ 6 - 3
mec-mall/mall-mbg/src/main/resources/config/mybatis/PmsSkuStockMapper.xml

@@ -13,6 +13,7 @@
     <result column="promotion_price" jdbcType="DECIMAL" property="promotionPrice" />
     <result column="lock_stock" jdbcType="INTEGER" property="lockStock" />
     <result column="sp_data" jdbcType="VARCHAR" property="spData" />
+    <result column="delete_status" jdbcType="INTEGER" property="deleteStatus" />
   </resultMap>
   <sql id="Example_Where_Clause">
     <where>
@@ -73,7 +74,7 @@
     </where>
   </sql>
   <sql id="Base_Column_List">
-    id, product_id, sku_code, price, stock, low_stock, pic, sale, promotion_price, lock_stock, 
+    id, product_id, sku_code, price, stock, low_stock, pic, sale, promotion_price, lock_stock, delete_status,
     sp_data
   </sql>
   <select id="selectByExample" parameterType="com.yonge.cooleshow.mbg.model.PmsSkuStockExample" resultMap="BaseResultMap">
@@ -97,11 +98,11 @@
     where id = #{id,jdbcType=BIGINT}
   </select>
   <delete id="deleteByPrimaryKey" parameterType="java.lang.Long">
-    delete from pms_sku_stock
+      update pms_sku_stock set delete_status = 1
     where id = #{id,jdbcType=BIGINT}
   </delete>
   <delete id="deleteByExample" parameterType="com.yonge.cooleshow.mbg.model.PmsSkuStockExample">
-    delete from pms_sku_stock
+    update pms_sku_stock set delete_status = 1
     <if test="_parameter != null">
       <include refid="Example_Where_Clause" />
     </if>
@@ -316,10 +317,12 @@
         sum(t.internal_stock - t.internal_sale_stock) as internalStock,
         sum(t.tax_stock - t.tax_sale_stock) as taxStock
         from pms_product_sku_stock_record t
+        left join pms_sku_stock t1 on t1.id = t.product_sku_id
         where t.product_id in
         <foreach collection="productIds" item="productId" open="(" separator="," close=")">
             #{productId}
         </foreach>
+        and t1.delete_status = 0
         group by t.product_sku_id, t.product_id
     </select>
 </mapper>

+ 3 - 0
mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/PmsPortalProductService.java

@@ -2,6 +2,7 @@ package com.yonge.cooleshow.portal.service;
 
 import com.ym.mec.auth.api.entity.SysUser;
 import com.yonge.cooleshow.mbg.model.PmsProduct;
+import com.yonge.cooleshow.mbg.model.PmsSkuStock;
 import com.yonge.cooleshow.portal.domain.PmsPortalProductDetail;
 import com.yonge.cooleshow.portal.domain.PmsProductCategoryNode;
 import com.yonge.cooleshow.portal.dto.ProductSearchConditionVo;
@@ -20,6 +21,8 @@ public interface PmsPortalProductService {
      */
     List<PmsProduct> search(String keyword, Long brandId, Long productCategoryId, Long productAttributeCategoryId, Integer pageNum, Integer pageSize, Integer sort);
 
+    List<PmsSkuStock> updateProductSkuStock(List<PmsSkuStock> skuStocks);
+
     List<PmsProduct> updateProductStock(List<PmsProduct> pmsProducts);
 
     /**

+ 10 - 8
mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsCartItemServiceImpl.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.portal.service.impl;
 
 import cn.hutool.core.collection.CollUtil;
+import com.beust.jcommander.internal.Lists;
 import com.ym.mec.common.exception.BizException;
 import com.yonge.cooleshow.mbg.mapper.OmsCartItemMapper;
 import com.yonge.cooleshow.mbg.mapper.PmsProductMapper;
@@ -11,6 +12,7 @@ import com.yonge.cooleshow.portal.domain.CartProduct;
 import com.yonge.cooleshow.portal.domain.CartPromotionItem;
 import com.yonge.cooleshow.portal.service.OmsCartItemService;
 import com.yonge.cooleshow.portal.service.OmsPromotionService;
+import com.yonge.cooleshow.portal.service.PmsPortalProductService;
 import com.yonge.cooleshow.portal.service.UmsMemberService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -44,6 +46,9 @@ public class OmsCartItemServiceImpl implements OmsCartItemService {
     @Autowired
     private PmsSkuStockMapper skuStockMapper;
 
+    @Autowired
+    private PmsPortalProductService portalProductService;
+
     @Override
     public OmsCartItem add(OmsCartItem cartItem) {
         UmsMember currentMember;
@@ -83,9 +88,6 @@ public class OmsCartItemServiceImpl implements OmsCartItemService {
             cartItem.setProductBrand(pmsProduct.getName());
             cartItem.setProductSn(pmsProduct.getProductSn());
             if (cartItem.getProductSkuId() != null) {
-                if (pmsSkuStock.getStock() - pmsSkuStock.getLockStock() < cartItem.getQuantity()) {
-                    throw new BizException("库存不足");
-                }
                 cartItem.setProductSkuCode(pmsSkuStock.getSkuCode());
                 cartItem.setProductAttr(pmsSkuStock.getSpData());
                 cartItem.setPrice(pmsSkuStock.getPrice());
@@ -98,9 +100,6 @@ public class OmsCartItemServiceImpl implements OmsCartItemService {
             if (cartItem.getPromoterId() != null) {
                 existCartItem.setPromoterId(cartItem.getPromoterId());
             }
-            if (pmsSkuStock.getStock() - pmsSkuStock.getLockStock() < existCartItem.getQuantity() + cartItem.getQuantity()) {
-                throw new BizException("库存不足");
-            }
             if(existCartItem.getQuantity() + cartItem.getQuantity() > 200) {
                 existCartItem.setQuantity(200);
             } else {
@@ -139,8 +138,10 @@ public class OmsCartItemServiceImpl implements OmsCartItemService {
         }
         List<Long> skuIds = omsCartItems.stream().map(OmsCartItem::getProductSkuId).collect(Collectors.toList());
         PmsSkuStockExample skuExample = new PmsSkuStockExample();
-        skuExample.createCriteria().andIdIn(skuIds);
+        skuExample.createCriteria().andIdIn(skuIds).andDeleteStatusEqualTo(0);
         List<PmsSkuStock> pmsSkuStocks = skuStockMapper.selectByExample(skuExample);
+
+        pmsSkuStocks = portalProductService.updateProductSkuStock(pmsSkuStocks);
         Map<Long, List<PmsSkuStock>> collect =
                 pmsSkuStocks.stream().collect(Collectors.groupingBy(PmsSkuStock::getId));
         for (OmsCartItem omsCartItem : omsCartItems) {
@@ -184,7 +185,8 @@ public class OmsCartItemServiceImpl implements OmsCartItemService {
         }
 
         PmsSkuStock pmsSkuStock = skuStockMapper.selectByPrimaryKey(omsCartItem.getProductSkuId());
-
+        List<PmsSkuStock> pmsSkuStocks = portalProductService.updateProductSkuStock(Lists.newArrayList(pmsSkuStock));
+        pmsSkuStock = pmsSkuStocks.get(0);
         if (pmsSkuStock.getStock() - pmsSkuStock.getLockStock() < quantity) {
             return pmsSkuStock.getStock() - pmsSkuStock.getLockStock();
         }

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

@@ -207,9 +207,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
             orderItemList.add(orderItem);
         }
         //判断购物车中商品是否都有库存
-        if (!hasStock(cartPromotionItemList)) {
-            Asserts.fail("库存不足,无法下单");
-        }
+
         BigDecimal couponAmount = BigDecimal.ZERO;
         BigDecimal amount = calcTotalAmount(orderItemList);
         if (!StringUtil.isEmpty(orderParam.getCouponId())) {
@@ -1377,7 +1375,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
             }
             int i = skuStockMapper.lockStock(cartPromotionItem.getProductSkuId(), cartPromotionItem.getQuantity());
             if (i == 0) {
-                Asserts.fail("库存不足");
+//                Asserts.fail("库存不足");
             }
         }
     }
@@ -1398,7 +1396,7 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
             if (sum > 0) {
                 int i = pmsProductMapper.lockStock(entry.getKey(), sum);
                 if (i == 0) {
-                    Asserts.fail("库存不足");
+//                    Asserts.fail("库存不足");
                 }
             }
         }

+ 11 - 1
mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPromotionServiceImpl.java

@@ -8,6 +8,7 @@ import com.yonge.cooleshow.portal.dao.PortalProductDao;
 import com.yonge.cooleshow.portal.domain.CartPromotionItem;
 import com.yonge.cooleshow.portal.domain.PromotionProduct;
 import com.yonge.cooleshow.portal.service.OmsPromotionService;
+import com.yonge.cooleshow.portal.service.PmsPortalProductService;
 import org.springframework.beans.BeanUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -25,6 +26,9 @@ public class OmsPromotionServiceImpl implements OmsPromotionService {
     @Autowired
     private PortalProductDao portalProductDao;
 
+    @Autowired
+    private PmsPortalProductService portalProductService;
+
     @Override
     public List<CartPromotionItem> calcCartPromotion(List<OmsCartItem> cartItemList) {
         //1.先根据productId对CartItem进行分组,以spu为单位进行计算优惠
@@ -136,7 +140,13 @@ public class OmsPromotionServiceImpl implements OmsPromotionService {
         for(OmsCartItem cartItem:cartItemList){
             productIdList.add(cartItem.getProductId());
         }
-        return portalProductDao.getPromotionProductList(productIdList);
+        List<PromotionProduct> promotionProductList = portalProductDao.getPromotionProductList(productIdList);
+        for (PromotionProduct promotionProduct : promotionProductList) {
+            List<PmsSkuStock> pmsSkuStocks = portalProductService.updateProductSkuStock(promotionProduct.getSkuStockList());
+            promotionProduct.setSkuStockList(pmsSkuStocks);
+        }
+
+        return promotionProductList;
     }
 
     /**

+ 3 - 3
mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/PmsPortalProductServiceImpl.java

@@ -11,7 +11,6 @@ import com.yonge.cooleshow.mbg.model.*;
 import com.yonge.cooleshow.portal.dao.PortalProductDao;
 import com.yonge.cooleshow.portal.domain.PmsPortalProductDetail;
 import com.yonge.cooleshow.portal.domain.PmsProductCategoryNode;
-import com.yonge.cooleshow.portal.domain.ProductStock;
 import com.yonge.cooleshow.portal.dto.ProductCategorySmallVo;
 import com.yonge.cooleshow.portal.dto.ProductSearchConditionVo;
 import com.yonge.cooleshow.portal.dto.ShareProductVo;
@@ -97,7 +96,7 @@ public class PmsPortalProductServiceImpl implements PmsPortalProductService {
             return pmsProducts;
         }
         PmsSkuStockExample skuExample = new PmsSkuStockExample();
-        skuExample.createCriteria().andProductIdIn(productIdList);
+        skuExample.createCriteria().andProductIdIn(productIdList).andDeleteStatusEqualTo(0);
         List<PmsSkuStock> skuStockList = skuStockMapper.selectByExample(skuExample);
         skuStockList = updateProductSkuStock(skuStockList);
         Map<Long, List<PmsSkuStock>> collect = skuStockList.stream()
@@ -110,6 +109,7 @@ public class PmsPortalProductServiceImpl implements PmsPortalProductService {
 
     }
 
+    @Override
     public List<PmsSkuStock> updateProductSkuStock(List<PmsSkuStock> skuStocks) {
         if (CollectionUtils.isEmpty(skuStocks)) {
             return new ArrayList<>();
@@ -231,7 +231,7 @@ public class PmsPortalProductServiceImpl implements PmsPortalProductService {
         }
         //获取商品SKU库存信息
         PmsSkuStockExample skuExample = new PmsSkuStockExample();
-        skuExample.createCriteria().andProductIdEqualTo(product.getId());
+        skuExample.createCriteria().andProductIdEqualTo(product.getId()).andDeleteStatusEqualTo(0);
         List<PmsSkuStock> skuStockList = skuStockMapper.selectByExample(skuExample);
         skuStockList = updateProductSkuStock(skuStockList);
         result.setSkuStockList(skuStockList);