| 
					
				 | 
			
			
				@@ -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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 |