1.需求描述:在批量编辑购物车的时候,考虑到因为阶梯价不同,导致商品编辑的库存超过总库存!比如这样的数据:[{"cartId":"1","goodsId":1,"skuId":"1","deliveyId":"1","number":1},{"cartId":"2","goodsId":1,"skuId":"1","deliveyId":"2","number":1},{"cartId":"3","goodsId":2,"skuId":"2","deliveyId":"1","number":1},{"cartId":"3","goodsId":2,"skuId":"2","deliveyId":"2","number":1}],
这个时候假设这个sku的库存是3那我这个时候编辑数据,把随机的一条购物车记录调整为4,那这个时候我是可以编辑的!这与事实不符合。
如何去做调整呢?本质:对比传入的数量与商品sku的总数量!---》如何分别获取每个商品sku商品数量总和?---》使用map作数据整合,以商品的skuId为key,value为数量的总和!部分代码如下:
Map<Integer,Integer> numberMap=new HashMap<>();
for (CartsEntity carts : list) {
if(numberMap.get(carts.getSkuId())==null||numberMap.get(carts.getSkuId())==0){
numberMap.put(carts.getSkuId(),carts.getNumber());
}else{
numberMap.put(carts.getSkuId(), numberMap.get(carts.getSkuId())+carts.getNumber());
}
if(numberMap.get(carts.getSkuId())>goodsSku.getStock()){
return ResponseEntity.ok(JsonResultUtils.error(MessageEnum.PRODUCT_STOCK_NULL.getCode(), MessageEnum.PRODUCT_STOCK_NULL.getMessage()));
}
}