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,47 +684,60 @@ public abstract class AbstractAddGoodsService implements AddGoodsService { ...@@ -686,47 +684,60 @@ 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");
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; int cartLimitCount = 0;
for (Object object : jsonArray){ String redisKey = RedisUtil.limitCart + partnerId + "_" + appid;
JSONObject jsonObject = (JSONObject)object; //购物车内部缓存
HashMap hashMap = JSONObject.parseObject(jsonObject.toJSONString(),HashMap.class); String value = redisCache.hashGet(redisKey, "cartLimitType");
if("cartLimitFlag".equals(hashMap.get("appKey"))){ if (StringUtils.isNotBlank(value)) {
if (StringUtils.isBlank((String)hashMap.get("appValue"))) { cartLimitCount = Integer.parseInt(value);
return qty; }
}
cartLimitFlag = Integer.parseInt((String)hashMap.get("appValue")); // String redisKey = limitCartKey + appid;
} // //生态缓存获取慢
if("cartLimitCount".equals(hashMap.get("appKey"))){ // Object value = redisCache.hashGet(redisKey, "2");
if (StringUtils.isBlank((String)hashMap.get("appValue"))) { // if (value == null) {
return qty; // return qty;
} // } else {
cartLimitCount = Integer.parseInt((String)hashMap.get("appValue")); // boolean bool = value.getClass().getName().equals("java.lang.String");
} // if (bool) {
} // return qty;
if(cartLimitFlag == 1 && cartLimitCount != 0 && qty > cartLimitCount){ // }
// 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); 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