下单增加起售校验

This commit is contained in:
2024-07-11 11:45:18 +08:00
parent 2818f8afff
commit 4691b12fb3
3 changed files with 48 additions and 26 deletions

View File

@@ -113,17 +113,27 @@ public class OrderService {
return Result.fail(CodeEnum.PRODUCTSKUERROR); 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.getIsStock().toString())){
if ("1".equals(product.getIsDistribute().toString())) { if ("1".equals(product.getIsDistribute().toString())) {
if((message == null && product.getStockNumber()-number<0) || if(product.getStockNumber()-number<0){
(product.getStockNumber()-number<0 && message != null && Integer.parseInt(message) < number)){
return Result.fail(CodeEnum.STOCKERROR); return Result.fail(CodeEnum.STOCKERROR);
} }
} else if (product.getId().intValue()==Integer.valueOf(skuWithBLOBs.getProductId()).intValue()){ } else if (product.getId().intValue()==Integer.valueOf(skuWithBLOBs.getProductId()).intValue()){
if((message == null && skuWithBLOBs.getStockNumber()-number<0) || if(skuWithBLOBs.getStockNumber()-number<0){
(skuWithBLOBs.getStockNumber()-number<0 && message != null && Integer.parseInt(message) < number)){
return Result.fail(CodeEnum.STOCKERROR); return Result.fail(CodeEnum.STOCKERROR);
} }
} }
@@ -162,6 +172,7 @@ public class OrderService {
cart.setTotalNumber(number); cart.setTotalNumber(number);
cart.setUuid(uuid); cart.setUuid(uuid);
cashierCartMapper.updateByPrimaryKeySelective(cart); cashierCartMapper.updateByPrimaryKeySelective(cart);
} else { } else {
List<TbCashierCart> list = cashierCartMapper.selectALlByMasterId(masterId, "create"); List<TbCashierCart> list = cashierCartMapper.selectALlByMasterId(masterId, "create");
TbCashierCart cashierCart = cashierCartMapper.selectByDetail(masterId, productId, shopId, skuId.toString(), DateUtils.getDay(), uuid); TbCashierCart cashierCart = cashierCartMapper.selectByDetail(masterId, productId, shopId, skuId.toString(), DateUtils.getDay(), uuid);
@@ -223,8 +234,10 @@ public class OrderService {
} }
cart=cashierCart; 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); // skuWithBLOBs.setStockNumber(skuWithBLOBs.getStockNumber()-number);
@@ -351,6 +364,13 @@ public class OrderService {
// skuWithBLOBs.setUpdatedAt(System.currentTimeMillis()); // skuWithBLOBs.setUpdatedAt(System.currentTimeMillis());
// tbProductSkuMapper.updateByPrimaryKey(skuWithBLOBs); // 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<String> skuIds=new ArrayList<>(); List<String> skuIds=new ArrayList<>();
skuIds.add(cashierCart.getSkuId()); skuIds.add(cashierCart.getSkuId());
@@ -504,13 +524,13 @@ public class OrderService {
} else { } else {
productService.decrStock(cashierCart.getProductId(), cashierCart.getSkuId(), cashierCart.getNumber() - lastNum); 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 { }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()); productService.decrStock(cashierCart.getProductId(), cashierCart.getSkuId(), cashierCart.getNumber());
} }

View File

@@ -19,4 +19,5 @@ public class RedisCst {
public static final String ORDER_MESSAGE="ORDER:MESSAGE:"; public static final String ORDER_MESSAGE="ORDER:MESSAGE:";
public static final String ORDER_PRODUCT_NUM = "ORDER_NUM:"; public static final String ORDER_PRODUCT_NUM = "ORDER_NUM:";
public static final String ORDER_CART_EXISTS = "ORDER_CART_EXISTS:";
} }

View File

@@ -16,6 +16,7 @@
<result column="stock_number" jdbcType="DOUBLE" property="stockNumber" /> <result column="stock_number" jdbcType="DOUBLE" property="stockNumber" />
<result column="cover_img" jdbcType="VARCHAR" property="coverImg" /> <result column="cover_img" jdbcType="VARCHAR" property="coverImg" />
<result column="warn_line" jdbcType="INTEGER" property="warnLine" /> <result column="warn_line" jdbcType="INTEGER" property="warnLine" />
<result column="suit" jdbcType="INTEGER" property="suit" />
<result column="weight" jdbcType="DOUBLE" property="weight" /> <result column="weight" jdbcType="DOUBLE" property="weight" />
<result column="volume" jdbcType="REAL" property="volume" /> <result column="volume" jdbcType="REAL" property="volume" />
<result column="real_sales_number" jdbcType="DOUBLE" property="realSalesNumber" /> <result column="real_sales_number" jdbcType="DOUBLE" property="realSalesNumber" />
@@ -31,7 +32,7 @@
<sql id="Base_Column_List"> <sql id="Base_Column_List">
id, shop_id, bar_code, product_id, origin_price, cost_price, member_price, meal_price, 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, 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 volume, real_sales_number, first_shared, second_shared, created_at, updated_at,suit
</sql> </sql>
<sql id="Blob_Column_List"> <sql id="Blob_Column_List">
spec_info, spec_snap spec_info, spec_snap