|
@@ -947,6 +947,8 @@ public class CartClubServiceImpl implements CartClubService {
|
|
|
List<Integer> promotionsIds = new ArrayList<>();
|
|
|
// 供应商Id集合,用户判断赠品供应商是否在当前供应商中
|
|
|
List<Integer> shopIds = new ArrayList<>();
|
|
|
+ // 运费模板是否异常
|
|
|
+ AtomicInteger templateFlag = new AtomicInteger(0);
|
|
|
// 用户身份
|
|
|
Integer userIdentity = baseMapper.getIdentityByUserId(userId);
|
|
|
if (null == userIdentity) {
|
|
@@ -1011,6 +1013,10 @@ public class CartClubServiceImpl implements CartClubService {
|
|
|
AtomicDouble shopSvipReducedPrice = new AtomicDouble(0);
|
|
|
// 该供应商划线价
|
|
|
AtomicDouble shopOriginalPrice = new AtomicDouble(0);
|
|
|
+ // 运费方式 0 包邮 1 到付 2 运费模板
|
|
|
+ List<Integer> shopPostageFlag = new ArrayList<>();
|
|
|
+ // 运费
|
|
|
+ AtomicDouble shopPostage = new AtomicDouble(0);
|
|
|
// 供应商促销优惠活动
|
|
|
PromotionsVo shopPromotion = baseMapper.getPromotionByShopId(shop.getShopId());
|
|
|
if (shopPromotion != null && shopPromotion.getSeen() != null && shopPromotion.getSeen() == 2 && finalUserIdentity1 == 1) {
|
|
@@ -1033,9 +1039,15 @@ public class CartClubServiceImpl implements CartClubService {
|
|
|
// 去除库存不足商品
|
|
|
productList.removeIf(cartItemVo -> !(cartItemVo.getStock() != null && cartItemVo.getStock() > 0 && cartItemVo.getStock() >= cartItemVo.getMin() && cartItemVo.getStock() >= cartItemVo.getNumber()));
|
|
|
}
|
|
|
- List<Integer> collect = productList.stream().map(CartItemVo::getSkuId).collect(Collectors.toList());
|
|
|
- List<String> skuIdsList = collect.stream().map(String::valueOf).collect(Collectors.toList());
|
|
|
-
|
|
|
+ // 是否包含需要冷链运输商品
|
|
|
+ List<Integer> collect = productList.stream().map(CartItemVo::getProductId).collect(Collectors.toList());
|
|
|
+ if (collect.stream().allMatch(c -> c == 7881)) {
|
|
|
+ shop.setDesignatedFlag(1);
|
|
|
+ } else if (!collect.contains(7881)) {
|
|
|
+ shop.setDesignatedFlag(2);
|
|
|
+ } else {
|
|
|
+ shop.setDesignatedFlag(3);
|
|
|
+ }
|
|
|
// 冷链费
|
|
|
Double coldChain = 0d;
|
|
|
// 迭代器设置商品信息
|
|
@@ -1147,19 +1159,34 @@ public class CartClubServiceImpl implements CartClubService {
|
|
|
}
|
|
|
// 设置商品运费
|
|
|
if (null != cityId) {
|
|
|
- Map<String, Object> postageMap = productService.computePostage(userId, cityId, cartItemVo.getNumber(), MathUtil.mul(cartItemVo.getNumber(), cartItemVo.getPrice()).doubleValue(), skuIdsList);
|
|
|
- shop.setPostage((Double) postageMap.get("postage"));
|
|
|
- shop.setPostageFlag((Integer) postageMap.get("postageFlag"));
|
|
|
+ List<String> cartSkuIds = new ArrayList<>();
|
|
|
+ cartSkuIds.add(cartItemVo.getSkuId().toString());
|
|
|
+ Map<String, Object> postageMap = productService.computePostage(userId, cityId, cartItemVo.getNumber(), MathUtil.mul(cartItemVo.getNumber(), cartItemVo.getPrice()).doubleValue(), cartSkuIds);
|
|
|
+ Integer postageFlag = (Integer) postageMap.get("postageFlag");
|
|
|
+ shopPostageFlag.add(postageFlag);
|
|
|
+ if (999 == postageFlag) {
|
|
|
+ templateFlag.set(-1);
|
|
|
+ } else {
|
|
|
+ Double postage = (Double) postageMap.get("postage");
|
|
|
+ shopPostage.set(MathUtil.add(shopPostage.get(), postage).doubleValue());
|
|
|
+
|
|
|
+ }
|
|
|
shop.setUserBeans((Integer) postageMap.get("userBeans"));
|
|
|
- shop.setFreePostTage((Integer) postageMap.get("freePostTage"));
|
|
|
- shop.setFreePostTagePayment((Integer) postageMap.get("freePostTagePayment"));
|
|
|
}
|
|
|
// 该供应商下商品种类 +1
|
|
|
shopKindCount.incrementAndGet();
|
|
|
// 总数量 + 当前商品购买数量
|
|
|
totalCount.updateAndGet(v -> v + cartItemVo.getNumber());
|
|
|
}
|
|
|
-
|
|
|
+ // 运费方式
|
|
|
+ if (shopPostageFlag.contains(1)) {
|
|
|
+ shop.setPostageFlag(1);
|
|
|
+ } else if (!shopPostageFlag.contains(1) && shopPostageFlag.contains(2)) {
|
|
|
+ shop.setPostageFlag(2);
|
|
|
+ } else {
|
|
|
+ shop.setPostageFlag(0);
|
|
|
+ }
|
|
|
+ shop.setPostage(shopPostage.get());
|
|
|
shop.setColdChain(coldChain);
|
|
|
if (700 == coldChain) {
|
|
|
shop.setIsColdChina(true);
|
|
@@ -1330,6 +1357,7 @@ public class CartClubServiceImpl implements CartClubService {
|
|
|
resultData.put("totalCount", totalCount);
|
|
|
resultData.put("totalPrice", totalPrice);
|
|
|
resultData.put("reducedPrice", reducedPrice);
|
|
|
+ resultData.put("templateFlag", templateFlag.get());
|
|
|
resultData.put("svipReducedPrice", svipReducedPrice);
|
|
|
resultData.put("totalOriginalPrice", totalOriginalPrice);
|
|
|
resultData.put("promotions", totalPromotions);
|
|
@@ -1406,6 +1434,8 @@ public class CartClubServiceImpl implements CartClubService {
|
|
|
List<String> productIdList = new ArrayList<>();
|
|
|
//skuIdList
|
|
|
List<Integer> skuIdList = new ArrayList<>();
|
|
|
+ // 运费模板是否异常
|
|
|
+ AtomicInteger templateFlag = new AtomicInteger(0);
|
|
|
// 用户身份
|
|
|
Integer userIdentity = baseMapper.getIdentityByUserId(userId);
|
|
|
if (null == userIdentity) {
|
|
@@ -1473,6 +1503,10 @@ public class CartClubServiceImpl implements CartClubService {
|
|
|
AtomicDouble shopSvipReducedPrice = new AtomicDouble(0);
|
|
|
// 该供应商划线价
|
|
|
AtomicDouble shopOriginalPrice = new AtomicDouble(0);
|
|
|
+ // 运费方式 0 包邮 1 到付 2 运费模板
|
|
|
+ List<Integer> shopPostageFlag = new ArrayList<>();
|
|
|
+ // 运费
|
|
|
+ AtomicDouble shopPostage = new AtomicDouble(0);
|
|
|
// 供应商促销优惠活动
|
|
|
PromotionsVo shopPromotion = baseMapper.getPromotionByShopId(shop.getShopId());
|
|
|
if (shopPromotion != null && shopPromotion.getSeen() != null && shopPromotion.getSeen() == 2 && finalUserIdentity1 == 1) {
|
|
@@ -1483,15 +1517,22 @@ public class CartClubServiceImpl implements CartClubService {
|
|
|
List<CartItemVo> productList = cartClubMapper.getProductsByShopIdAndProductIds(shop.getShopId(), finalIdList);
|
|
|
productList.forEach(p -> p.setNumber(productInfos.get(p.getSkuId().toString())));
|
|
|
if (null != productList && productList.size() > 0) {
|
|
|
+ // 是否包含需要冷链运输商品
|
|
|
+ List<Integer> collect = productList.stream().map(CartItemVo::getProductId).collect(Collectors.toList());
|
|
|
+ if (collect.stream().allMatch(c -> c == 7881)) {
|
|
|
+ shop.setDesignatedFlag(1);
|
|
|
+ } else if (!collect.contains(7881)) {
|
|
|
+ shop.setDesignatedFlag(2);
|
|
|
+ } else {
|
|
|
+ shop.setDesignatedFlag(3);
|
|
|
+ }
|
|
|
// 去除不可见商品,visibility商品可见度: 3:所有人可见,2:普通机构可见,1:会员机构可见,4:仅医美机构可见
|
|
|
productList.removeIf(cartItemVo -> !(cartItemVo.getVisibility() == 3 || cartItemVo.getVisibility() == 2 || (cartItemVo.getVisibility() == 1 && (finalUserIdentity == 2 || svipUserFlag)) || (cartItemVo.getVisibility() == 4 && finalUserClubType == 1)));
|
|
|
// 去除价格不可见商品,价格可见度: 0公开价格,1不公开价格,2仅对会员机构公开,3仅对医美机构公开
|
|
|
productList.removeIf(cartItemVo -> !(cartItemVo.getPriceFlag() == 0 || (cartItemVo.getPriceFlag() == 2 && (finalUserIdentity == 2 || svipUserFlag)) || (cartItemVo.getPriceFlag() == 3 && finalUserClubType == 1)));
|
|
|
// 去除库存不足商品
|
|
|
productList.removeIf(cartItemVo -> !(cartItemVo.getStock() != null && cartItemVo.getStock() > 0 && cartItemVo.getStock() >= cartItemVo.getMin() && cartItemVo.getStock() >= cartItemVo.getNumber()));
|
|
|
- // 设置商品运费
|
|
|
- List<Integer> collect = productList.stream().map(CartItemVo::getSkuId).collect(Collectors.toList());
|
|
|
- List<String> skuIdsList = collect.stream().map(String::valueOf).collect(Collectors.toList());
|
|
|
+
|
|
|
|
|
|
Double coldChain = 0d;
|
|
|
// 迭代器设置商品信息
|
|
@@ -1596,19 +1637,33 @@ public class CartClubServiceImpl implements CartClubService {
|
|
|
shopPromotionFee.set(MathUtil.add(shopPromotionFee, MathUtil.mul(cartItemVo.getNumber(), cartItemVo.getPrice())).doubleValue());
|
|
|
}
|
|
|
if (null != cityId) {
|
|
|
- Map<String, Object> postageMap = productService.computePostage(userId, cityId, cartItemVo.getNumber(), MathUtil.mul(cartItemVo.getNumber(), cartItemVo.getPrice()).doubleValue(), skuIdsList);
|
|
|
- shop.setPostage((Double) postageMap.get("postage"));
|
|
|
- shop.setPostageFlag((Integer) postageMap.get("postageFlag"));
|
|
|
+ List<String> cartSkuIds = new ArrayList<>();
|
|
|
+ cartSkuIds.add(cartItemVo.getSkuId().toString());
|
|
|
+ Map<String, Object> postageMap = productService.computePostage(userId, cityId, cartItemVo.getNumber(), MathUtil.mul(cartItemVo.getNumber(), cartItemVo.getPrice()).doubleValue(), cartSkuIds);
|
|
|
+ Integer postageFlag = (Integer) postageMap.get("postageFlag");
|
|
|
+ shopPostageFlag.add(postageFlag);
|
|
|
+ if (999 == postageFlag) {
|
|
|
+ templateFlag.set(-1);
|
|
|
+ } else {
|
|
|
+ Double postage = (Double) postageMap.get("postage");
|
|
|
+ shopPostage.set(MathUtil.add(shopPostage.get(), postage).doubleValue());
|
|
|
+ }
|
|
|
shop.setUserBeans((Integer) postageMap.get("userBeans"));
|
|
|
- shop.setFreePostTage((Integer) postageMap.get("freePostTage"));
|
|
|
- shop.setFreePostTagePayment((Integer) postageMap.get("freePostTagePayment"));
|
|
|
}
|
|
|
// 该供应商下商品种类 +1
|
|
|
shopKindCount.incrementAndGet();
|
|
|
// 总数量 + 当前商品购买数量
|
|
|
totalCount.updateAndGet(v -> v + cartItemVo.getNumber());
|
|
|
}
|
|
|
-
|
|
|
+ // 运费方式
|
|
|
+ if (shopPostageFlag.contains(1)) {
|
|
|
+ shop.setPostageFlag(1);
|
|
|
+ } else if (!shopPostageFlag.contains(1) && shopPostageFlag.contains(2)) {
|
|
|
+ shop.setPostageFlag(2);
|
|
|
+ } else {
|
|
|
+ shop.setPostageFlag(0);
|
|
|
+ }
|
|
|
+ shop.setPostage(shopPostage.get());
|
|
|
shop.setColdChain(coldChain);
|
|
|
if (700 == coldChain) {
|
|
|
shop.setIsColdChina(true);
|
|
@@ -1778,6 +1833,7 @@ public class CartClubServiceImpl implements CartClubService {
|
|
|
resultData.put("totalCount", totalCount);
|
|
|
resultData.put("totalPrice", totalPrice);
|
|
|
resultData.put("reducedPrice", reducedPrice);
|
|
|
+ resultData.put("templateFlag", templateFlag.get());
|
|
|
resultData.put("svipReducedPrice", svipReducedPrice);
|
|
|
resultData.put("totalOriginalPrice", totalOriginalPrice);
|
|
|
resultData.put("promotions", totalPromotions);
|
|
@@ -1983,14 +2039,24 @@ public class CartClubServiceImpl implements CartClubService {
|
|
|
// 计算运费
|
|
|
Double coldChain = 0d;
|
|
|
if (null != cartDto.getCityId()) {
|
|
|
+ // 是否包含需要冷链运输商品 1 冷链费商品 2 不含冷链费商品 3 包含冷链费商品
|
|
|
+ if (cartDto.getProductId() == 7881) {
|
|
|
+ shop.setDesignatedFlag(1);
|
|
|
+ } else {
|
|
|
+ shop.setDesignatedFlag(2);
|
|
|
+ }
|
|
|
List<String> skuIds = new ArrayList<>();
|
|
|
skuIds.add(cartDto.getSkuId().toString());
|
|
|
Map<String, Object> postageMap = productService.computePostage(cartDto.getUserId(), cartDto.getCityId(), cartItemVo.getNumber(), MathUtil.mul(cartItemVo.getNumber(), cartItemVo.getPrice()).doubleValue(), skuIds);
|
|
|
- shop.setPostage((Double) postageMap.get("postage"));
|
|
|
- shop.setPostageFlag((Integer) postageMap.get("postageFlag"));
|
|
|
- shop.setUserBeans((Integer) postageMap.get("userBeans"));
|
|
|
- shop.setFreePostTage((Integer) postageMap.get("freePostTage"));
|
|
|
- shop.setFreePostTagePayment((Integer) postageMap.get("freePostTagePayment"));
|
|
|
+ Integer postageFlag = (Integer) postageMap.get("postageFlag");
|
|
|
+ if (999 == postageFlag) {
|
|
|
+ return ResponseJson.error(-1,"商品运费规则异常",null);
|
|
|
+ } else {
|
|
|
+ shop.setPostageFlag(postageFlag);
|
|
|
+ shop.setPostage((Double) postageMap.get("postage"));
|
|
|
+ shop.setUserBeans((Integer) postageMap.get("userBeans"));
|
|
|
+ }
|
|
|
+
|
|
|
if (7881 == cartItemVo.getProductId()) {
|
|
|
if (cartItemVo.getNumber() >= 100) {
|
|
|
coldChain = 0d;
|