下单增加起售校验

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" />
@@ -29,15 +30,15 @@
<result column="spec_snap" jdbcType="LONGVARCHAR" property="specSnap" /> <result column="spec_snap" jdbcType="LONGVARCHAR" property="specSnap" />
</resultMap> </resultMap>
<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
</sql> </sql>
<select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="ResultMapWithBLOBs"> <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="ResultMapWithBLOBs">
select select
<include refid="Base_Column_List" /> <include refid="Base_Column_List" />
, ,
<include refid="Blob_Column_List" /> <include refid="Blob_Column_List" />
@@ -49,21 +50,21 @@
where id = #{id,jdbcType=INTEGER} where id = #{id,jdbcType=INTEGER}
</delete> </delete>
<insert id="insert" parameterType="com.chaozhanggui.system.cashierservice.entity.TbProductSkuWithBLOBs"> <insert id="insert" parameterType="com.chaozhanggui.system.cashierservice.entity.TbProductSkuWithBLOBs">
insert into tb_product_sku (id, shop_id, bar_code, insert into tb_product_sku (id, shop_id, bar_code,
product_id, origin_price, cost_price, product_id, origin_price, cost_price,
member_price, meal_price, sale_price, member_price, meal_price, sale_price,
guide_price, strategy_price, stock_number, guide_price, strategy_price, stock_number,
cover_img, warn_line, weight, cover_img, warn_line, weight,
volume, real_sales_number, first_shared, volume, real_sales_number, first_shared,
second_shared, created_at, updated_at, second_shared, created_at, updated_at,
spec_info, spec_snap) spec_info, spec_snap)
values (#{id,jdbcType=INTEGER}, #{shopId,jdbcType=VARCHAR}, #{barCode,jdbcType=VARCHAR}, values (#{id,jdbcType=INTEGER}, #{shopId,jdbcType=VARCHAR}, #{barCode,jdbcType=VARCHAR},
#{productId,jdbcType=VARCHAR}, #{originPrice,jdbcType=DECIMAL}, #{costPrice,jdbcType=DECIMAL}, #{productId,jdbcType=VARCHAR}, #{originPrice,jdbcType=DECIMAL}, #{costPrice,jdbcType=DECIMAL},
#{memberPrice,jdbcType=DECIMAL}, #{mealPrice,jdbcType=DECIMAL}, #{salePrice,jdbcType=DECIMAL}, #{memberPrice,jdbcType=DECIMAL}, #{mealPrice,jdbcType=DECIMAL}, #{salePrice,jdbcType=DECIMAL},
#{guidePrice,jdbcType=DECIMAL}, #{strategyPrice,jdbcType=DECIMAL}, #{stockNumber,jdbcType=DOUBLE}, #{guidePrice,jdbcType=DECIMAL}, #{strategyPrice,jdbcType=DECIMAL}, #{stockNumber,jdbcType=DOUBLE},
#{coverImg,jdbcType=VARCHAR}, #{warnLine,jdbcType=INTEGER}, #{weight,jdbcType=DOUBLE}, #{coverImg,jdbcType=VARCHAR}, #{warnLine,jdbcType=INTEGER}, #{weight,jdbcType=DOUBLE},
#{volume,jdbcType=REAL}, #{realSalesNumber,jdbcType=DOUBLE}, #{firstShared,jdbcType=DECIMAL}, #{volume,jdbcType=REAL}, #{realSalesNumber,jdbcType=DOUBLE}, #{firstShared,jdbcType=DECIMAL},
#{secondShared,jdbcType=DECIMAL}, #{createdAt,jdbcType=BIGINT}, #{updatedAt,jdbcType=BIGINT}, #{secondShared,jdbcType=DECIMAL}, #{createdAt,jdbcType=BIGINT}, #{updatedAt,jdbcType=BIGINT},
#{specInfo,jdbcType=LONGVARCHAR}, #{specSnap,jdbcType=LONGVARCHAR}) #{specInfo,jdbcType=LONGVARCHAR}, #{specSnap,jdbcType=LONGVARCHAR})
</insert> </insert>
<insert id="insertSelective" parameterType="com.chaozhanggui.system.cashierservice.entity.TbProductSkuWithBLOBs"> <insert id="insertSelective" parameterType="com.chaozhanggui.system.cashierservice.entity.TbProductSkuWithBLOBs">
@@ -364,4 +365,4 @@
</foreach> </foreach>
</update> </update>
</mapper> </mapper>