|
@@ -1,27 +1,34 @@
|
|
|
package edu.travel.commodity.service.impl;
|
|
|
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
import edu.travel.commodity.constant.BaseConstant;
|
|
|
-import edu.travel.commodity.dto.AddShopCartDto;
|
|
|
-import edu.travel.commodity.dto.BaseDto;
|
|
|
import edu.travel.commodity.entity.ShopProduct;
|
|
|
import edu.travel.commodity.entity.ShopProductSku;
|
|
|
import edu.travel.commodity.entity.ShopShoppingCart;
|
|
|
+import edu.travel.commodity.mapper.ShopProductSpecMapper;
|
|
|
import edu.travel.commodity.mapper.ShopShoppingCartMapper;
|
|
|
import edu.travel.commodity.service.ShopProductService;
|
|
|
import edu.travel.commodity.service.ShopProductSkuService;
|
|
|
import edu.travel.commodity.service.ShopShoppingCartService;
|
|
|
import edu.travel.commodity.utils.PageUtil;
|
|
|
import edu.travel.commodity.utils.TokenData;
|
|
|
-import edu.travel.commodity.vo.ShopCartListVo;
|
|
|
+import edu.travel.dto.AddShopCartDto;
|
|
|
+import edu.travel.dto.BaseDto;
|
|
|
import edu.travel.exception.BaseException;
|
|
|
+import edu.travel.vo.ShopCartListVo;
|
|
|
+import edu.travel.vo.ShopSkuSpecValueVo;
|
|
|
+import edu.travel.vo.SpecValueVo;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.web.context.request.RequestContextHolder;
|
|
|
+import org.springframework.web.context.request.ServletRequestAttributes;
|
|
|
|
|
|
+import javax.servlet.http.HttpServletRequest;
|
|
|
import java.util.*;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -31,7 +38,8 @@ public class ShopShoppingCartServiceImpl extends ServiceImpl<ShopShoppingCartMap
|
|
|
private ShopProductSkuService shopProductSkuService;
|
|
|
@Autowired
|
|
|
private ShopProductService shopProductService;
|
|
|
-
|
|
|
+ @Autowired
|
|
|
+ private ShopProductSpecMapper shopProductSpecMapper;
|
|
|
@Override
|
|
|
public Boolean addShopCart(AddShopCartDto params) {
|
|
|
// 获取用户id
|
|
@@ -67,13 +75,7 @@ public class ShopShoppingCartServiceImpl extends ServiceImpl<ShopShoppingCartMap
|
|
|
if(ObjectUtil.isEmpty(records)){
|
|
|
return pageEntity;
|
|
|
}
|
|
|
- // 商品ID
|
|
|
- Set<String> collect = records.stream().map(ShopCartListVo::getProductId).collect(Collectors.toSet());
|
|
|
- List<ShopProduct> shopProducts = shopProductService.listByIds(collect);
|
|
|
- HashMap<String, ShopProduct> map = new HashMap<>();
|
|
|
- for (ShopProduct shopProduct : shopProducts) {
|
|
|
- map.put(shopProduct.getId().toString(), shopProduct);
|
|
|
- }
|
|
|
+
|
|
|
//商品和sku关联表的id
|
|
|
Set<String> collect1 = records.stream().map(ShopCartListVo::getProductSkuId).collect(Collectors.toSet());
|
|
|
|
|
@@ -82,34 +84,41 @@ public class ShopShoppingCartServiceImpl extends ServiceImpl<ShopShoppingCartMap
|
|
|
for (ShopProductSku shopProduct : shopProductSkus) {
|
|
|
productSkuMap.put(shopProduct.getId().toString(), shopProduct);
|
|
|
}
|
|
|
-// Map<String, List<SortSpecVo>> Specmap = shopProductSkuService.getShopProductSkuId(collect1);
|
|
|
+ // 商品ID
|
|
|
+ Set<String> collect = shopProductSkus.stream().map(item->item.getProductId().toString()).collect(Collectors.toSet());
|
|
|
+ Set<String> skus = shopProductSkus.stream().map(item->item.getSkuId().toString()).collect(Collectors.toSet());
|
|
|
+ HttpServletRequest request = ((ServletRequestAttributes) (RequestContextHolder.currentRequestAttributes())).getRequest();
|
|
|
+ String project = request.getHeader("project");
|
|
|
+ List<ShopSkuSpecValueVo> skuValue = shopProductSpecMapper.getSkuValue(skus, project);
|
|
|
+ Map<String, List<ShopSkuSpecValueVo>> sku = skuValue.stream().collect(Collectors.groupingBy(ShopSkuSpecValueVo::getSkuId));
|
|
|
+
|
|
|
|
|
|
+ List<ShopProduct> shopProducts = shopProductService.listByIds(collect);
|
|
|
+ HashMap<String, ShopProduct> map = new HashMap<>();
|
|
|
+ for (ShopProduct shopProduct : shopProducts) {
|
|
|
+ map.put(shopProduct.getId().toString(), shopProduct);
|
|
|
+ }
|
|
|
//封装结果集
|
|
|
for (ShopCartListVo record : records) {
|
|
|
ShopProduct shopProduct = map.get(record.getProductId());
|
|
|
- if(!ObjectUtil.isNotEmpty(shopProduct)){
|
|
|
+ if(ObjectUtil.isNotEmpty(shopProduct)){
|
|
|
record.setProductName(shopProduct.getProductName());
|
|
|
record.setDescription(shopProduct.getDescription());
|
|
|
ShopProductSku shopProductSku = productSkuMap.get(record.getProductSkuId());
|
|
|
- if(!ObjectUtil.isNotEmpty(shopProductSku)){
|
|
|
+ if(ObjectUtil.isNotEmpty(shopProductSku)){
|
|
|
record.setSkuImage(shopProductSku.getImageUrl());
|
|
|
- record.setSalesVolume(shopProductSku.getSalesVolume());
|
|
|
+ record.setProductSkuId(shopProductSku.getId().toString());
|
|
|
record.setPrice(shopProductSku.getPrice());
|
|
|
+ record.setInventory(shopProductSku.getInventory());
|
|
|
+ record.setSkuId(shopProductSku.getSkuId().toString());
|
|
|
+ }
|
|
|
+ String skuId = record.getSkuId();
|
|
|
+ if(ObjectUtil.isEmpty(skuId))continue;
|
|
|
+ List<ShopSkuSpecValueVo> shopSkuSpecValueVos = sku.get(skuId);
|
|
|
+ if(!ObjectUtil.isEmpty(shopSkuSpecValueVos)){
|
|
|
+ List<SpecValueVo> specValueVos = BeanUtil.copyToList(shopSkuSpecValueVos, SpecValueVo.class);
|
|
|
+ record.setSpecValue(specValueVos);
|
|
|
}
|
|
|
- String productSkuId = record.getProductSkuId();
|
|
|
-// List<SortSpecVo> sortSpecVos = Specmap.get(productSkuId);
|
|
|
-// ArrayList<SpecValueVo> specValueVos = new ArrayList<>();
|
|
|
-// if(ObjectUtil.isEmpty(sortSpecVos)){
|
|
|
-// for (SortSpecVo sortSpecVo : sortSpecVos) {
|
|
|
-// SpecValueVo specValueVo = new SpecValueVo();
|
|
|
-// specValueVo.setKeyId(sortSpecVo.getSpecId());
|
|
|
-// specValueVo.setKey(sortSpecVo.getSpecName());
|
|
|
-// specValueVo.setValueId(sortSpecVo.getSpecValueId());
|
|
|
-// specValueVo.setValue(sortSpecVo.getSpecValue());
|
|
|
-// specValueVos.add(specValueVo);
|
|
|
-// }
|
|
|
-// }
|
|
|
-// record.setSpecValue(specValueVos);
|
|
|
}
|
|
|
}
|
|
|
return pageEntity;
|