diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java index 67f7141..910f6c1 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/OrderService.java @@ -113,17 +113,27 @@ public class OrderService { return Result.fail(CodeEnum.PRODUCTSKUERROR); } - String message = redisUtil.getMessage(RedisCst.ORDER_PRODUCT_NUM + cartId); + + + String exists = redisUtil.getMessage(RedisCst.ORDER_CART_EXISTS + cartId); + + // 首次加入购物车,并且拥有起售数,设置为起售数 + if (exists == null && skuWithBLOBs.getSuit() != null && skuWithBLOBs.getSuit() != 0) { + number = skuWithBLOBs.getSuit(); + // 低于起售,删除商品 + }else if (exists != null && skuWithBLOBs.getSuit() != null && skuWithBLOBs.getSuit() != 0 && number < skuWithBLOBs.getSuit()){ + redisUtil.deleteByKey(RedisCst.ORDER_CART_EXISTS + cartId); + delCart(masterId, cartId); + return Result.success(CodeEnum.SUCCESS, masterId); + } if("1".equals(product.getIsStock().toString())){ if ("1".equals(product.getIsDistribute().toString())) { - if((message == null && product.getStockNumber()-number<0) || - (product.getStockNumber()-number<0 && message != null && Integer.parseInt(message) < number)){ + if(product.getStockNumber()-number<0){ return Result.fail(CodeEnum.STOCKERROR); } } else if (product.getId().intValue()==Integer.valueOf(skuWithBLOBs.getProductId()).intValue()){ - if((message == null && skuWithBLOBs.getStockNumber()-number<0) || - (skuWithBLOBs.getStockNumber()-number<0 && message != null && Integer.parseInt(message) < number)){ + if(skuWithBLOBs.getStockNumber()-number<0){ return Result.fail(CodeEnum.STOCKERROR); } } @@ -162,6 +172,7 @@ public class OrderService { cart.setTotalNumber(number); cart.setUuid(uuid); cashierCartMapper.updateByPrimaryKeySelective(cart); + } else { List list = cashierCartMapper.selectALlByMasterId(masterId, "create"); TbCashierCart cashierCart = cashierCartMapper.selectByDetail(masterId, productId, shopId, skuId.toString(), DateUtils.getDay(), uuid); @@ -223,8 +234,10 @@ public class OrderService { } cart=cashierCart; + redisUtil.saveMessage(RedisCst.ORDER_CART_EXISTS + cart.getId(), "1", 60 * 60 * 24); } + redisUtil.saveMessage(RedisCst.ORDER_CART_EXISTS + cart.getId(), "1", 60 * 60 * 24); // skuWithBLOBs.setStockNumber(skuWithBLOBs.getStockNumber()-number); @@ -351,6 +364,13 @@ public class OrderService { // skuWithBLOBs.setUpdatedAt(System.currentTimeMillis()); // tbProductSkuMapper.updateByPrimaryKey(skuWithBLOBs); // } + // 数量减少, 返还库存 + String message = redisUtil.getMessage(RedisCst.ORDER_PRODUCT_NUM + cashierCart.getId()); + redisUtil.deleteByKey(RedisCst.ORDER_PRODUCT_NUM + cashierCart.getId()); + + if (message != null) { + productService.incrStock(cashierCart.getProductId(), cashierCart.getSkuId(), Integer.parseInt(message)); + } List skuIds=new ArrayList<>(); skuIds.add(cashierCart.getSkuId()); @@ -504,13 +524,13 @@ public class OrderService { } else { productService.decrStock(cashierCart.getProductId(), cashierCart.getSkuId(), cashierCart.getNumber() - lastNum); } - redisUtil.saveMessage(RedisCst.ORDER_PRODUCT_NUM + cashierCart.getId(), cashierCart.getNumber().toString(), 24 * 60*60*1000); + redisUtil.saveMessage(RedisCst.ORDER_PRODUCT_NUM + cashierCart.getId(), cashierCart.getNumber().toString(), 24 * 60*60); } // 首次添加的商品 }else { - redisUtil.saveMessage(RedisCst.ORDER_PRODUCT_NUM + cashierCart.getId(), cashierCart.getNumber().toString(), 24 * 60*60*1000); + redisUtil.saveMessage(RedisCst.ORDER_PRODUCT_NUM + cashierCart.getId(), cashierCart.getNumber().toString(), 24 * 60*60); // 修改库存 productService.decrStock(cashierCart.getProductId(), cashierCart.getSkuId(), cashierCart.getNumber()); } diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/util/RedisCst.java b/src/main/java/com/chaozhanggui/system/cashierservice/util/RedisCst.java index 5b07644..4510232 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/util/RedisCst.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/util/RedisCst.java @@ -19,4 +19,5 @@ public class RedisCst { public static final String ORDER_MESSAGE="ORDER:MESSAGE:"; public static final String ORDER_PRODUCT_NUM = "ORDER_NUM:"; + public static final String ORDER_CART_EXISTS = "ORDER_CART_EXISTS:"; } diff --git a/src/main/resources/mapper/TbProductSkuMapper.xml b/src/main/resources/mapper/TbProductSkuMapper.xml index 1ed3165..cbad263 100644 --- a/src/main/resources/mapper/TbProductSkuMapper.xml +++ b/src/main/resources/mapper/TbProductSkuMapper.xml @@ -16,6 +16,7 @@ + @@ -29,15 +30,15 @@ - id, shop_id, bar_code, product_id, origin_price, cost_price, member_price, meal_price, - sale_price, guide_price, strategy_price, stock_number, cover_img, warn_line, weight, - volume, real_sales_number, first_shared, second_shared, created_at, updated_at + id, shop_id, bar_code, product_id, origin_price, cost_price, member_price, meal_price, + sale_price, guide_price, strategy_price, stock_number, cover_img, warn_line, weight, + volume, real_sales_number, first_shared, second_shared, created_at, updated_at,suit spec_info, spec_snap