Commit cf3b439d by 周晓航

新增 库存校验

parent df4fe111
......@@ -3169,7 +3169,6 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
private boolean updateCartGoodsLegal(List<CartGoods> excludeGoods, String userId, ShopGoodsReplaceVo replaceGoodsRequestVo, ShoppingCartGoodsResponseVo shoppingCartGoodsResponseVo,boolean fullReplace) {
//存储新添加的购物车信息
List<CartGoods> nowCartGoodsList = new ArrayList<>();
//当商品全部添加完毕,校验购物车商品(是否合法,上下架,点餐方式,是否在当前菜单中...),并移除非法商品
......@@ -3194,21 +3193,70 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
fullReplace = false;
}
//判断当前商品在购物车是否已存在,存在则数量+1,不存在商品行 + 1
allCartGoodsList.forEach(oldCartGoods -> {
int index;
if ((index = nowCartGoodsList.indexOf(oldCartGoods)) >= 0) {
nowCartGoodsList.get(index).setQty(nowCartGoodsList.get(index).getQty());
} else {
nowCartGoodsList.add(oldCartGoods);
// allCartGoodsList.forEach(oldCartGoods -> {
// int index;
// if ((index = nowCartGoodsList.indexOf(oldCartGoods)) >= 0) {
// nowCartGoodsList.get(index).setQty(nowCartGoodsList.get(index).getQty());
// } else {
// nowCartGoodsList.add(oldCartGoods);
// }
// });
//校验库存
List<CartGoods> stockLimitGoods = allCartGoodsList.stream().filter(CartGoods::isStockLimit).collect(toList());
if (!CollectionUtils.isEmpty(stockLimitGoods)) {
List<Long> spuIds = stockLimitGoods.stream().map(v -> Long.parseLong(v.getSpuId())).collect(toList());
GetProductStockRequestDto requestDto = new GetProductStockRequestDto();
requestDto.setChannel(BusinessTypeEnum.getByType(replaceGoodsRequestVo.getMenuType()).getCode());
requestDto.setPartnerId(replaceGoodsRequestVo.getPartnerId());
requestDto.setStoreId(replaceGoodsRequestVo.getShopId());
requestDto.setProductIds(spuIds);
GetProductStockResponseDto availableStocks = stockClient.getAvailableStocks(requestDto);
if (availableStocks != null ) {
if (!ResponseCodeConstant.RESPONSE_SUCCESS_STR.equals(availableStocks.getCode())){
// 没有请求数据
fullReplace = false;
return fullReplace;
}
if (CollectionUtils.isEmpty(availableStocks.getResult())){
LogUtil.info("request check stock limit fail result is null",requestDto,availableStocks);
fullReplace = false;
return fullReplace;
}
List<GetProductStockResponseDto.DataBean> availableStocksResult = availableStocks.getResult();
stockLimitGoods.forEach(cartGoods -> {
// 数量修改
availableStocksResult.forEach(dataBean -> {
if (cartGoods.getSpuId().equals(dataBean.getPid())) {
Integer qty = dataBean.getQty();
if (qty !=null && qty.compareTo(cartGoods.getQty()) < 0) {
cartGoods.setQty(qty);
}
}
});
});
// 获取到最新的 库存 stockLimitGoods 数据 放入 nowCartGoodsList 中
List<CartGoods> notCheckStock = allCartGoodsList.stream().filter(cartGoods -> !cartGoods.isStockLimit()).collect(toList());
notCheckStock.addAll(stockLimitGoods);
allCartGoodsList = notCheckStock;
notCheckStock = null;
stockLimitGoods = null;
}else {
LogUtil.info("request check stock limit fail",requestDto,null);
fullReplace = false;
return fullReplace;
}
}
// fisherman 删除 新门店的缓存数据 重新添加 测试 之后需要放开
shoppingCartNewBaseService.clear(replaceGoodsRequestVo.getPartnerId(), replaceGoodsRequestVo.getShopId(), userId);
// 重新set购物车信息到缓存中
assortmentSdkService.setShoppingCart(replaceGoodsRequestVo.getPartnerId(), replaceGoodsRequestVo.getShopId(),
userId, nowCartGoodsList, replaceGoodsRequestVo.getSessionId(), null, this.shoppingCartBaseService);
userId, allCartGoodsList, replaceGoodsRequestVo.getSessionId(), null, this.shoppingCartBaseService);
excludeGoods.clear();
excludeGoods.addAll(nowCartGoodsList);
excludeGoods.addAll(allCartGoodsList);
return fullReplace;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment