Commit bbf533f7 by ping.wu

Merge branches 'feature/20210806_购物车限购数量redis_wuping' and 'master' of…

Merge branches 'feature/20210806_购物车限购数量redis_wuping' and 'master' of http://gitlab.freemud.com/order-group-application/order-group
parents d6aca701 c5f258c6
...@@ -35,10 +35,7 @@ import cn.freemud.interceptor.ServiceException; ...@@ -35,10 +35,7 @@ import cn.freemud.interceptor.ServiceException;
import cn.freemud.redis.RedisCache; import cn.freemud.redis.RedisCache;
import cn.freemud.service.impl.AssortmentSdkService; import cn.freemud.service.impl.AssortmentSdkService;
import cn.freemud.service.impl.calculate.CalculationCommonService; import cn.freemud.service.impl.calculate.CalculationCommonService;
import cn.freemud.utils.BeanUtil; import cn.freemud.utils.*;
import cn.freemud.utils.LogUtil;
import cn.freemud.utils.ResponseUtil;
import cn.freemud.utils.WebUtil;
import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import com.alibaba.fastjson.JSONObject;
import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant; import com.freemud.sdk.api.assortment.shoppingcart.constant.CommonsConstant;
...@@ -52,6 +49,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -52,6 +49,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.*; import java.util.*;
import java.util.concurrent.TimeUnit;
import java.util.function.Function; import java.util.function.Function;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -364,7 +362,7 @@ public abstract class AbstractAddGoodsService implements AddGoodsService { ...@@ -364,7 +362,7 @@ public abstract class AbstractAddGoodsService implements AddGoodsService {
//购物车添加数量限制 //购物车添加数量限制
CartGoods addGoods = baseRequestDTO.getAddGoods(); CartGoods addGoods = baseRequestDTO.getAddGoods();
this.limitGoodsQty(checkBussinessRulesBO.getCartGoods(), addGoods, baseRequestDTO.getAppId()); this.limitGoodsQty(checkBussinessRulesBO.getCartGoods(), addGoods, baseRequestDTO.getAppId(),baseRequestDTO.getPartnerId());
// 校验数量, 库存 // 校验数量, 库存
this.checkStocks(baseRequestDTO, checkBussinessRulesBO); this.checkStocks(baseRequestDTO, checkBussinessRulesBO);
...@@ -686,46 +684,59 @@ public abstract class AbstractAddGoodsService implements AddGoodsService { ...@@ -686,46 +684,59 @@ 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; Integer qty = 0;
if(CollectionUtils.isNotEmpty(oldCartGoodsList)){ if (CollectionUtils.isNotEmpty(oldCartGoodsList)) {
for (CartGoods goods : oldCartGoodsList) { for (CartGoods goods : oldCartGoodsList) {
qty += goods.getQty(); qty += goods.getQty();
} }
} }
qty += addGoods.getQty(); qty += addGoods.getQty();
String redisKey = limitCartKey + appid;
Object value = redisCache.hashGet(redisKey, "2"); int cartLimitCount = 0;
if (value == null) { String redisKey = RedisUtil.limitCart + partnerId + "_" + appid;
return qty; //购物车内部缓存
} else { String value = redisCache.hashGet(redisKey, "cartLimitType");
boolean bool = value.getClass().getName().equals("java.lang.String"); if (StringUtils.isNotBlank(value)) {
if(bool){ cartLimitCount = Integer.parseInt(value);
return qty; }
}
JSONArray jsonArray = (JSONArray)value; // String redisKey = limitCartKey + appid;
int cartLimitFlag = 0; // //生态缓存获取慢
int cartLimitCount = 0; // Object value = redisCache.hashGet(redisKey, "2");
for (Object object : jsonArray){ // if (value == null) {
JSONObject jsonObject = (JSONObject)object; // return qty;
HashMap hashMap = JSONObject.parseObject(jsonObject.toJSONString(),HashMap.class); // } else {
if("cartLimitFlag".equals(hashMap.get("appKey"))){ // boolean bool = value.getClass().getName().equals("java.lang.String");
if (StringUtils.isBlank((String)hashMap.get("appValue"))) { // if (bool) {
return qty; // return qty;
} // }
cartLimitFlag = Integer.parseInt((String)hashMap.get("appValue")); // JSONArray jsonArray = (JSONArray) value;
} // int cartLimitFlag = 0;
if("cartLimitCount".equals(hashMap.get("appKey"))){ // int cartLimitCount = 0;
if (StringUtils.isBlank((String)hashMap.get("appValue"))) { // for (Object object : jsonArray) {
return qty; // JSONObject jsonObject = (JSONObject) object;
} // HashMap hashMap = JSONObject.parseObject(jsonObject.toJSONString(), HashMap.class);
cartLimitCount = Integer.parseInt((String)hashMap.get("appValue")); // if ("cartLimitFlag".equals(hashMap.get("appKey"))) {
} // if (StringUtils.isBlank((String) hashMap.get("appValue"))) {
} // return qty;
if(cartLimitFlag == 1 && cartLimitCount != 0 && qty > cartLimitCount){ // }
throw new ServiceException(ResponseResult.SHOPPING_CART_LIMIT_ADD); // 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; return qty;
} }
......
...@@ -1474,53 +1474,6 @@ public class AbstractApportionService implements GetShoppingCartGoodsApportionSe ...@@ -1474,53 +1474,6 @@ public class AbstractApportionService implements GetShoppingCartGoodsApportionSe
} }
/** /**
* 查询生态配置限制加购开关与限制数量
*/
private Integer limitGoodsQty(List<CartGoods> oldCartGoodsList, CartGoods addGoods,String appid){
Integer qty = 0;
if(CollectionUtils.isNotEmpty(oldCartGoodsList)){
for (CartGoods goods : oldCartGoodsList) {
qty += goods.getQty();
}
}
qty += addGoods.getQty();
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("cartLimitCount".equals(hashMap.get("appKey"))){
if (StringUtils.isBlank((String)hashMap.get("appValue"))) {
return qty;
}
cartLimitCount = Integer.parseInt((String)hashMap.get("appValue"));
}
}
if(cartLimitFlag == 1 && cartLimitCount != 0 && qty > cartLimitCount){
throw new ServiceException(ResponseResult.SHOPPING_CART_LIMIT_ADD);
}
}
return qty;
}
/**
* 初始化价格 * 初始化价格
*/ */
public ShoppingGoodsAmountBO initShoppingCart(CalculationDiscountBO calculationDiscountBO public ShoppingGoodsAmountBO initShoppingCart(CalculationDiscountBO calculationDiscountBO
......
...@@ -1326,53 +1326,6 @@ public class AbstractListCartGoodsService implements ListCartGoodsService { ...@@ -1326,53 +1326,6 @@ public class AbstractListCartGoodsService implements ListCartGoodsService {
return cartContext; return cartContext;
} }
/**
* 查询生态配置限制加购开关与限制数量
*/
private Integer limitGoodsQty(List<CartGoods> oldCartGoodsList, CartGoods addGoods,String appid){
Integer qty = 0;
if(CollectionUtils.isNotEmpty(oldCartGoodsList)){
for (CartGoods goods : oldCartGoodsList) {
qty += goods.getQty();
}
}
qty += addGoods.getQty();
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("cartLimitCount".equals(hashMap.get("appKey"))){
if (StringUtils.isBlank((String)hashMap.get("appValue"))) {
return qty;
}
cartLimitCount = Integer.parseInt((String)hashMap.get("appValue"));
}
}
if(cartLimitFlag == 1 && cartLimitCount != 0 && qty > cartLimitCount){
throw new ServiceException(ResponseResult.SHOPPING_CART_LIMIT_ADD);
}
}
return qty;
}
private void checkStocks(ListCartGoodsBO baseRequestDTO, CheckBussinessRulesBO checkBussinessRulesBO){ private void checkStocks(ListCartGoodsBO baseRequestDTO, CheckBussinessRulesBO checkBussinessRulesBO){
......
...@@ -5,6 +5,7 @@ public class RedisUtil { ...@@ -5,6 +5,7 @@ public class RedisUtil {
private final static String ENTER_SHOP_KEY = BASE_URL + "ENTER_SHOP_KEY_"; 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 JOIN_FISSION_ACTIVITIES_KEY = BASE_URL + "JOIN_FISSION_ACTIVITIES_KEY_";
private final static String COUPON_APP_SECRET = "coupon:app_secret_"; private final static String COUPON_APP_SECRET = "coupon:app_secret_";
public static String limitCart = "kgd:open_store_cart_limit_";
public static String getEnterShopKey(String userId) { public static String getEnterShopKey(String userId) {
return ENTER_SHOP_KEY + 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