|  | @@ -135,13 +135,22 @@ public class ApiOrderService {
 | 
	
		
			
				|  |  |              if (null == goodsInfo || goodsInfo.getIs_delete() == 1 || goodsInfo.getIs_on_sale() == 0) {
 | 
	
		
			
				|  |  |                  throw new RRException("订单提交失败:商品不存在");
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  | +            //普通、门店商品不受共享库存影响,直接取门店配置库存
 | 
	
		
			
				|  |  |  //            Integer stockNum = StockUtil.setStockNumByGoodsVo(goodsInfo);
 | 
	
		
			
				|  |  | -//            String isStockShare = StockUtil.getIsStockShareByGoodsVo(goodsInfo);
 | 
	
		
			
				|  |  | -            // TODO: 2019/3/5  普通商品不受共享库存影响,直接取门店配置库存
 | 
	
		
			
				|  |  | -            //还原门店库存
 | 
	
		
			
				|  |  | -            resetStoreGoodsStock(goodsInfo.getStockNum(), productInfo, goodsInfo, orderGoodsVo, userName);
 | 
	
		
			
				|  |  | -            //还原商户商品库存
 | 
	
		
			
				|  |  | +            String isStockShare = StockUtil.getIsStockShareByGoodsVo(goodsInfo);
 | 
	
		
			
				|  |  | +            //还原商户商品总库存
 | 
	
		
			
				|  |  |              resetGoodsStock(goodsInfo.getGoods_number(), productInfo, goodsInfo, orderGoodsVo, userName);
 | 
	
		
			
				|  |  | +            //该商品所属第三方商户不是共享库存
 | 
	
		
			
				|  |  | +            if(isStockShare.equalsIgnoreCase(Dict.isStockShare.item_0.getItem())) {
 | 
	
		
			
				|  |  | +                resetStoreGoodsStock(goodsInfo.getStockNum(), productInfo, goodsInfo, orderGoodsVo, userName);//还原门店库存
 | 
	
		
			
				|  |  | +            }else{
 | 
	
		
			
				|  |  | +                //该商品所属第三方商户是共享库存,但商品业务类型不是00保税备货
 | 
	
		
			
				|  |  | +                if(!goodsInfo.getGoodsBizType().equalsIgnoreCase(Dict.orderBizType.item_00.getItem())){
 | 
	
		
			
				|  |  | +                    resetStoreGoodsStock(goodsInfo.getStockNum(), productInfo, goodsInfo, orderGoodsVo, userName);//还原门店库存
 | 
	
		
			
				|  |  | +                }
 | 
	
		
			
				|  |  | +            }
 | 
	
		
			
				|  |  | +            //该商品所属第三方商户为共享库存,且是保税备货商品,取消订单时改变
 | 
	
		
			
				|  |  | +            updateGoodsByIsShareStock(isStockShare, goodsInfo);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |          update(order);
 | 
	
		
			
				|  |  |          // 判断是否有优惠券
 | 
	
	
		
			
				|  | @@ -566,7 +575,7 @@ public class ApiOrderService {
 | 
	
		
			
				|  |  |          mngChangeVo.setChangeType(Dict.changeType.item_1.getItem());
 | 
	
		
			
				|  |  |          mngChangeVo.setChangeNum(goodsItem.getNumber());//变化数
 | 
	
		
			
				|  |  |          mngChangeVo.setOriginalNum(goodsVo.getGoods_number());//原库存数
 | 
	
		
			
				|  |  | -        mngChangeVo.setValidNum(goodsVo.getGoods_number() - goodsItem.getNumber());//可用数
 | 
	
		
			
				|  |  | +        mngChangeVo.setValidNum(goodsVo.getGoods_number());//可用数
 | 
	
		
			
				|  |  |          mngChangeVo.setCreateTime(new Date());
 | 
	
		
			
				|  |  |          mngChangeVo.setModTime(new Date());
 | 
	
		
			
				|  |  |          mngChangeVo.setCreaterSn("小程序用户"+userName);
 | 
	
	
		
			
				|  | @@ -592,7 +601,6 @@ public class ApiOrderService {
 | 
	
		
			
				|  |  |          //修改门店商品销量
 | 
	
		
			
				|  |  |          productInfo.setSell_volume(productInfo.getSell_volume() + goodsItem.getNumber());
 | 
	
		
			
				|  |  |          productInfo.setGoods_id(goodsVo.getId());
 | 
	
		
			
				|  |  | -//        productVos.add(productInfo);
 | 
	
		
			
				|  |  |          apiProductMapper.updateStockNum(productInfo);
 | 
	
		
			
				|  |  |          
 | 
	
		
			
				|  |  |          StoreMngChangeVo storeMngChangeVo = new StoreMngChangeVo();
 | 
	
	
		
			
				|  | @@ -603,7 +611,7 @@ public class ApiOrderService {
 | 
	
		
			
				|  |  |          storeMngChangeVo.setMerchSn(goodsVo.getMerchSn());
 | 
	
		
			
				|  |  |          storeMngChangeVo.setStoreChangeNum(goodsItem.getNumber());
 | 
	
		
			
				|  |  |          storeMngChangeVo.setStoreOriginalNum(stockNum);
 | 
	
		
			
				|  |  | -        storeMngChangeVo.setStoreValidNum(stockNum - goodsItem.getNumber());
 | 
	
		
			
				|  |  | +        storeMngChangeVo.setStoreValidNum(productInfo.getStock_num());
 | 
	
		
			
				|  |  |          storeMngChangeVo.setCreateTime(new Date());
 | 
	
		
			
				|  |  |          storeMngChangeVo.setModTime(new Date());
 | 
	
		
			
				|  |  |          storeMngChangeVo.setCreaterSn("小程序用户"+userName);
 | 
	
	
		
			
				|  | @@ -613,6 +621,23 @@ public class ApiOrderService {
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  | +     * 更新商品库存数量变化后是否已共享为0“未共享”
 | 
	
		
			
				|  |  | +     * @param isStockShare
 | 
	
		
			
				|  |  | +     * @param goodsInfo
 | 
	
		
			
				|  |  | +     */
 | 
	
		
			
				|  |  | +    private void updateGoodsByIsShareStock(String isStockShare, GoodsVo goodsInfo){
 | 
	
		
			
				|  |  | +        //该商品为共享库存,且是保税备货商品
 | 
	
		
			
				|  |  | +        if(isStockShare.equalsIgnoreCase(Dict.isStockShare.item_1.getItem())
 | 
	
		
			
				|  |  | +                && goodsInfo.getGoodsBizType().equalsIgnoreCase(Dict.orderBizType.item_00.getItem())) {
 | 
	
		
			
				|  |  | +            GoodsVo goodsVo = new GoodsVo();
 | 
	
		
			
				|  |  | +            goodsVo.setId(goodsInfo.getId());
 | 
	
		
			
				|  |  | +            //商品库存数量变化后是否已共享,0:否,1:是(下单、退款触发)
 | 
	
		
			
				|  |  | +            goodsVo.setIsGoodsShareStock(Dict.isGoodsShareStock.item_0.getItem());
 | 
	
		
			
				|  |  | +            apiGoodsMapper.updateByGoodsShareStock(goodsVo);
 | 
	
		
			
				|  |  | +        }
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /**
 | 
	
		
			
				|  |  |       * 检查库存和更新库存
 | 
	
		
			
				|  |  |       * @param checkedGoodsList
 | 
	
		
			
				|  |  |       * @param storeId
 | 
	
	
		
			
				|  | @@ -633,19 +658,9 @@ public class ApiOrderService {
 | 
	
		
			
				|  |  |                      logger.error("订单提交失败:商品已下架");
 | 
	
		
			
				|  |  |                      throw new RRException("订单提交失败:商品已下架");
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  | -//                String isStockShare = StockUtil.getIsStockShareByGoodsVo(goodsInfo);
 | 
	
		
			
				|  |  | +                String isStockShare = StockUtil.getIsStockShareByGoodsVo(goodsInfo);
 | 
	
		
			
				|  |  |                  // TODO: 2019/3/5  普通商品不受共享库存影响,直接取门店配置库存
 | 
	
		
			
				|  |  |                  stockNum = StockUtil.setStockNumByGoodsVo(goodsInfo);
 | 
	
		
			
				|  |  | -                /*if(goodsInfo.getGoodsBizType().equalsIgnoreCase(Dict.orderBizType.item_00.getItem())){
 | 
	
		
			
				|  |  | -                    if (goodsInfo.getIsStockShare().equalsIgnoreCase(Dict.isStockShare.item_1.getItem())) {
 | 
	
		
			
				|  |  | -                        stockNum = goodsInfo.getGoods_number();
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                    if (goodsInfo.getIsStockShare().equalsIgnoreCase(Dict.isStockShare.item_0.getItem())) {
 | 
	
		
			
				|  |  | -                        stockNum = productInfo.getStock_num();
 | 
	
		
			
				|  |  | -                    }
 | 
	
		
			
				|  |  | -                }else {
 | 
	
		
			
				|  |  | -                    stockNum = productInfo.getStock_num();
 | 
	
		
			
				|  |  | -                }*/
 | 
	
		
			
				|  |  |                  if (null == stockNum || stockNum < goodsItem.getNumber() || stockNum <= 0) {
 | 
	
		
			
				|  |  |                      logger.error("订单提交失败:库存不足,仅剩余" + stockNum);
 | 
	
		
			
				|  |  |                      throw new RRException("订单提交失败:库存不足,仅剩余" + stockNum);
 | 
	
	
		
			
				|  | @@ -653,8 +668,17 @@ public class ApiOrderService {
 | 
	
		
			
				|  |  |                      productInfo.setStore_id(storeId);
 | 
	
		
			
				|  |  |                      //扣减商户商品总库存
 | 
	
		
			
				|  |  |                      updateGoodsStock(goodsInfo, goodsItem, userName);
 | 
	
		
			
				|  |  | -                    //扣减门店库存
 | 
	
		
			
				|  |  | -                    updateStock(productInfo,goodsInfo,stockNum,goodsItem,storeId,userName);
 | 
	
		
			
				|  |  | +                    //该商品所属第三方商户不是共享库存
 | 
	
		
			
				|  |  | +                    if(isStockShare.equalsIgnoreCase(Dict.isStockShare.item_0.getItem())) {
 | 
	
		
			
				|  |  | +                        updateStock(productInfo, goodsInfo, stockNum, goodsItem, storeId, userName);//扣减门店库存
 | 
	
		
			
				|  |  | +                    }else{
 | 
	
		
			
				|  |  | +                        //该商品所属第三方商户是共享库存,但商品业务类型不是00保税备货
 | 
	
		
			
				|  |  | +                        if(!goodsInfo.getGoodsBizType().equalsIgnoreCase(Dict.orderBizType.item_00.getItem())){
 | 
	
		
			
				|  |  | +                            updateStock(productInfo, goodsInfo, stockNum, goodsItem, storeId, userName);//扣减门店库存
 | 
	
		
			
				|  |  | +                        }
 | 
	
		
			
				|  |  | +                    }
 | 
	
		
			
				|  |  | +                    //该商品所属第三方商户为共享库存,且是保税备货商品,下单时改变
 | 
	
		
			
				|  |  | +                    updateGoodsByIsShareStock(isStockShare, goodsInfo);
 | 
	
		
			
				|  |  |                  }
 | 
	
		
			
				|  |  |              }
 | 
	
		
			
				|  |  |          }
 |