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