Commit b94fa912 by ping.wu

购物车限购数量调整

parent 1fa7810e
......@@ -362,7 +362,7 @@ public abstract class AbstractAddGoodsService implements AddGoodsService {
//购物车添加数量限制
CartGoods addGoods = baseRequestDTO.getAddGoods();
this.limitGoodsQty(checkBussinessRulesBO.getCartGoods(), addGoods, baseRequestDTO.getAppId());
this.limitGoodsQty(checkBussinessRulesBO.getCartGoods(), addGoods, baseRequestDTO.getAppId(),baseRequestDTO.getPartnerId());
// 校验数量, 库存
this.checkStocks(baseRequestDTO, checkBussinessRulesBO);
......@@ -684,7 +684,7 @@ public abstract class AbstractAddGoodsService implements AddGoodsService {
/**
* 查询生态配置限制加购开关与限制数量
*/
private Integer limitGoodsQty(List<CartGoods> oldCartGoodsList, CartGoods addGoods, String appid) {
private Integer limitGoodsQty(List<CartGoods> oldCartGoodsList, CartGoods addGoods, String appid,String partnerId) {
Integer qty = 0;
if (CollectionUtils.isNotEmpty(oldCartGoodsList)) {
for (CartGoods goods : oldCartGoodsList) {
......@@ -693,57 +693,50 @@ public abstract class AbstractAddGoodsService implements AddGoodsService {
}
qty += addGoods.getQty();
Long expire = 5L;
int cartLimitCount = 0;
String redisKey = RedisUtil.limitCart + partnerId + "_" + appid;
//购物车内部缓存
Integer limitCount = redisCache.getValue(RedisUtil.limitCart + appid);
if (limitCount != null) {
if (qty > limitCount) {
throw new ServiceException(ResponseResult.SHOPPING_CART_LIMIT_ADD);
}
return qty;
String value = redisCache.hashGet(redisKey, "cartLimitType");
if (StringUtils.isNotBlank(value)) {
cartLimitCount = Integer.parseInt(value);
}
String redisKey = limitCartKey + appid;
//生态缓存获取慢
Object value = redisCache.hashGet(redisKey, "2");
if (value == null) {
redisCache.save(RedisUtil.limitCart + appid, 0, expire, TimeUnit.MINUTES);
return qty;
} else {
boolean bool = value.getClass().getName().equals("java.lang.String");
if (bool) {
redisCache.save(RedisUtil.limitCart + appid, 0, expire, TimeUnit.MINUTES);
return qty;
}
JSONArray jsonArray = (JSONArray) value;
int cartLimitFlag = 0;
int cartLimitCount = 0;
for (Object object : jsonArray) {
JSONObject jsonObject = (JSONObject) object;
HashMap hashMap = JSONObject.parseObject(jsonObject.toJSONString(), HashMap.class);
if ("cartLimitFlag".equals(hashMap.get("appKey"))) {
if (StringUtils.isBlank((String) hashMap.get("appValue"))) {
redisCache.save(RedisUtil.limitCart + appid, 0, expire, TimeUnit.MINUTES);
return qty;
}
cartLimitFlag = Integer.parseInt((String) hashMap.get("appValue"));
if (cartLimitFlag != 1) {
redisCache.save(RedisUtil.limitCart + appid, 0, expire, TimeUnit.MINUTES);
return qty;
}
}
if ("cartLimitCount".equals(hashMap.get("appKey"))) {
if (StringUtils.isBlank((String) hashMap.get("appValue"))) {
redisCache.save(RedisUtil.limitCart + appid, 0, expire, TimeUnit.MINUTES);
return qty;
}
cartLimitCount = Integer.parseInt((String) hashMap.get("appValue"));
redisCache.save(RedisUtil.limitCart + appid, cartLimitCount, expire, TimeUnit.MINUTES);
}
}
if (cartLimitFlag == 1 && cartLimitCount != 0 && qty > cartLimitCount) {
throw new ServiceException(ResponseResult.SHOPPING_CART_LIMIT_ADD);
}
// String redisKey = limitCartKey + appid;
// //生态缓存获取慢
// Object value = redisCache.hashGet(redisKey, "2");
// if (value == null) {
// return qty;
// } else {
// boolean bool = value.getClass().getName().equals("java.lang.String");
// if (bool) {
// return qty;
// }
// JSONArray jsonArray = (JSONArray) value;
// int cartLimitFlag = 0;
// int cartLimitCount = 0;
// for (Object object : jsonArray) {
// JSONObject jsonObject = (JSONObject) object;
// HashMap hashMap = JSONObject.parseObject(jsonObject.toJSONString(), HashMap.class);
// if ("cartLimitFlag".equals(hashMap.get("appKey"))) {
// if (StringUtils.isBlank((String) hashMap.get("appValue"))) {
// return qty;
// }
// cartLimitFlag = Integer.parseInt((String) hashMap.get("appValue"));
// if (cartLimitFlag != 1) {
// return qty;
// }
// }
// if ("cartLimitCount".equals(hashMap.get("appKey"))) {
// if (StringUtils.isBlank((String) hashMap.get("appValue"))) {
// return qty;
// }
// cartLimitCount = Integer.parseInt((String) hashMap.get("appValue"));
// }
// }
//
// }
if (cartLimitCount != 0 && qty > cartLimitCount) {
throw new ServiceException(ResponseResult.SHOPPING_CART_LIMIT_ADD);
}
return qty;
}
......
......@@ -354,7 +354,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
Integer checkQty = this.checkSkuQty(allCartGoodsList, cartGoods);
//购物车添加数量限制
Integer productsCount = limitGoodsQty(allCartGoodsList, cartGoods, appId);
Integer productsCount = limitGoodsQty(allCartGoodsList, cartGoods, appId,partnerId);
//查询多个商品库存信息 TODO
queryManyGoodsStocks(addShoppingCartGoodsRequestVo, productIds, productBeanListSpuClass, skuId, checkQty);
String productName = null;
......@@ -2610,7 +2610,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
/**
* 查询生态配置限制加购开关与限制数量
*/
public Integer limitGoodsQty(List<CartGoods> oldCartGoodsList, CartGoods cartGoods, String appid) {
public Integer limitGoodsQty(List<CartGoods> oldCartGoodsList, CartGoods cartGoods, String appid, String partnerId) {
Integer qty = 0;
if (CollectionUtils.isNotEmpty(oldCartGoodsList)) {
for (CartGoods goods : oldCartGoodsList) {
......@@ -2620,7 +2620,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
if (Objects.nonNull(cartGoods)) {
qty += cartGoods.getQty();
}
int limitCount = queryLimitCount(appid);
int limitCount = queryLimitCount(partnerId,appid);
if (qty > limitCount) {
throw new ServiceException(ResponseResult.SHOPPING_CART_LIMIT_ADD);
}
......@@ -2630,59 +2630,50 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
/**
* 查询购物车限购数量
*/
public int queryLimitCount(String appid) {
int qty = 0;
Long expire = 1L;
public int queryLimitCount(String partnerId,String appid) {
int limitCount = 0;
String redisKey = RedisUtil.limitCart + partnerId + "_" + appid;
//购物车内部缓存
Integer limitCount = redisCache.getValue(RedisUtil.limitCart + appid);
if (limitCount != null) {
if (qty > limitCount) {
throw new ServiceException(ResponseResult.SHOPPING_CART_LIMIT_ADD);
}
return qty;
}
String redisKey = limitCartKey + appid;
//生态缓存获取慢
Object value = redisCache.hashGet(redisKey, "2");
if (value == null) {
redisCache.save(RedisUtil.limitCart + appid, 0, expire, TimeUnit.MINUTES);
return qty;
} else {
boolean bool = value.getClass().getName().equals("java.lang.String");
if (bool) {
redisCache.save(RedisUtil.limitCart + appid, 0, expire, TimeUnit.MINUTES);
return qty;
}
JSONArray jsonArray = (JSONArray) value;
int cartLimitFlag = 0;
int cartLimitCount = 0;
for (Object object : jsonArray) {
JSONObject jsonObject = (JSONObject) object;
HashMap hashMap = JSONObject.parseObject(jsonObject.toJSONString(), HashMap.class);
if ("cartLimitFlag".equals(hashMap.get("appKey"))) {
if (StringUtils.isBlank((String) hashMap.get("appValue"))) {
redisCache.save(RedisUtil.limitCart + appid, 0, expire, TimeUnit.MINUTES);
return qty;
}
cartLimitFlag = Integer.parseInt((String) hashMap.get("appValue"));
if (cartLimitFlag != 1) {
redisCache.save(RedisUtil.limitCart + appid, 0, expire, TimeUnit.MINUTES);
return qty;
}
}
if ("cartLimitCount".equals(hashMap.get("appKey"))) {
if (StringUtils.isBlank((String) hashMap.get("appValue"))) {
redisCache.save(RedisUtil.limitCart + appid, 0, expire, TimeUnit.MINUTES);
return qty;
}
cartLimitCount = Integer.parseInt((String) hashMap.get("appValue"));
redisCache.save(RedisUtil.limitCart + appid, cartLimitCount, expire, TimeUnit.MINUTES);
return cartLimitCount;
}
}
}
return qty;
String value = redisCache.hashGet(redisKey, "cartLimitType");
if (StringUtils.isNotBlank(value)) {
return Integer.parseInt(value);
}
// String redisKey = limitCartKey + appid;
// //生态缓存获取慢
// Object value = redisCache.hashGet(redisKey, "2");
// if (value == null) {
// return qty;
// } else {
// boolean bool = value.getClass().getName().equals("java.lang.String");
// if (bool) {
// return qty;
// }
// JSONArray jsonArray = (JSONArray) value;
// int cartLimitFlag = 0;
// int cartLimitCount = 0;
// for (Object object : jsonArray) {
// JSONObject jsonObject = (JSONObject) object;
// HashMap hashMap = JSONObject.parseObject(jsonObject.toJSONString(), HashMap.class);
// if ("cartLimitFlag".equals(hashMap.get("appKey"))) {
// if (StringUtils.isBlank((String) hashMap.get("appValue"))) {
// return qty;
// }
// cartLimitFlag = Integer.parseInt((String) hashMap.get("appValue"));
// if (cartLimitFlag != 1) {
// return qty;
// }
// }
// if ("cartLimitCount".equals(hashMap.get("appKey"))) {
// if (StringUtils.isBlank((String) hashMap.get("appValue"))) {
// return qty;
// }
// cartLimitCount = Integer.parseInt((String) hashMap.get("appValue"));
// return cartLimitCount;
// }
// }
// }
return limitCount;
}
......@@ -2699,7 +2690,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
sendQty += sendGoods.getSendNumber();
}
}
int cartLimitCount = queryLimitCount(appid);
int cartLimitCount = queryLimitCount(partnerId,appid);
if (checkQty + sendQty > cartLimitCount) {
assortmentSdkService.setShoppingCart(partnerId, storeId, userId, oldCartGoodsList, null, tableNumber, shoppingCartService);
throw new ServiceException(ResponseResult.SHOPPING_CART_LIMIT_ADD);
......@@ -2717,7 +2708,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
}
}
int cartLimitCount = queryLimitCount(appid);
int cartLimitCount = queryLimitCount(partnerId,appid);
int sendQty = 0;
if (CollectionUtils.isNotEmpty(sendActivitys)) {
for (ActivityCalculationDiscountResponseDto.CalculationDiscountResult.SendActivity sendActivity : sendActivitys) {
......@@ -3259,7 +3250,7 @@ public class ShoppingCartNewServiceImpl implements ShoppingCartNewService {
Integer checkQty = this.checkSkuQty(allCartGoodsList, cartGoods);
//购物车添加数量限制
Integer productsCount = limitGoodsQty(allCartGoodsList, cartGoods, appId);
Integer productsCount = limitGoodsQty(allCartGoodsList, cartGoods, appId,partnerId);
//查询多个商品库存信息 TODO
queryManyGoodsStocks(replaceGoodsRequestVo.getMenuType(), replaceGoodsRequestVo.getPartnerId(), replaceGoodsRequestVo.getShopId(), productIds, productBeanListSpuClass, skuId, checkQty);
......
......@@ -5,7 +5,7 @@ public class RedisUtil {
private final static String ENTER_SHOP_KEY = BASE_URL + "ENTER_SHOP_KEY_";
private final static String JOIN_FISSION_ACTIVITIES_KEY = BASE_URL + "JOIN_FISSION_ACTIVITIES_KEY_";
private final static String COUPON_APP_SECRET = "coupon:app_secret_";
public static String limitCart = "kgd:shoppingcart:cartLimitCount:";
public static String limitCart = "kgd:cart_limit_";
public static String getEnterShopKey(String userId) {
return ENTER_SHOP_KEY + userId;
......
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