|
@@ -15,12 +15,15 @@ import edu.travel.commodity.constant.RedisKey;
|
|
|
import edu.travel.commodity.entity.ShopAddress;
|
|
|
import edu.travel.commodity.entity.ShopProduct;
|
|
|
import edu.travel.commodity.entity.ShopProductSku;
|
|
|
+import edu.travel.commodity.entity.ShopSkuSpecValue;
|
|
|
import edu.travel.commodity.enums.OrderStateEnum;
|
|
|
import edu.travel.commodity.mapper.ShopProductSkuMapper;
|
|
|
import edu.travel.commodity.mapper.ShopProductSpecMapper;
|
|
|
import edu.travel.commodity.service.ShopAddressService;
|
|
|
import edu.travel.commodity.service.ShopProductService;
|
|
|
import edu.travel.commodity.service.ShopProductSkuService;
|
|
|
+import edu.travel.commodity.service.ShopSkuSpecValueService;
|
|
|
+import edu.travel.commodity.utils.StringUtil;
|
|
|
import edu.travel.commodity.utils.TokenData;
|
|
|
import edu.travel.exception.BaseException;
|
|
|
import edu.travel.remote.dto.*;
|
|
@@ -31,10 +34,12 @@ import edu.travel.rpc.RPCBaseResponse;
|
|
|
import edu.travel.vo.BaseCountryServeVo;
|
|
|
import edu.travel.vo.ShopCurrencyVo;
|
|
|
import io.seata.spring.annotation.GlobalTransactional;
|
|
|
+import org.checkerframework.checker.units.qual.C;
|
|
|
import org.redisson.api.RLock;
|
|
|
import org.redisson.api.RedissonClient;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
import org.springframework.web.context.request.RequestContextHolder;
|
|
|
import org.springframework.web.context.request.ServletRequestAttributes;
|
|
|
|
|
@@ -71,6 +76,8 @@ public class ShopProductSkuServiceImpl extends ServiceImpl<ShopProductSkuMapper,
|
|
|
private ShopOrderLogAdapter shopOrderLogAdapter;
|
|
|
@Autowired
|
|
|
private ShopProductSkuService shopProductSkuService;
|
|
|
+ @Autowired
|
|
|
+ private ShopSkuSpecValueService shopSkuSpecValueService;
|
|
|
/**
|
|
|
* 查询SKU下的规格和对应的规格值 规格 排序 规格值排序
|
|
|
* sku -> 规格 ->规格值
|
|
@@ -209,6 +216,54 @@ public class ShopProductSkuServiceImpl extends ServiceImpl<ShopProductSkuMapper,
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ @Transactional
|
|
|
+ public boolean insertProductSku(List<InsertProductSpecDto> specs,List<InsertProductSkuDto> skus, ShopProduct product) {
|
|
|
+ ArrayList<ShopProductSku> shopProductSkus = new ArrayList<>();
|
|
|
+ ArrayList<ShopSkuSpecValue> shopSkuSpecValues = new ArrayList<>();
|
|
|
+ if(ObjectUtil.isEmpty(skus)){
|
|
|
+ ShopProductSku bean = new ShopProductSku();
|
|
|
+ bean.setProductId(product.getId());
|
|
|
+ Snowflake snowflake = IdUtil.createSnowflake(1, 1);
|
|
|
+ long sku = snowflake.nextId();
|
|
|
+ bean.setSkuId(sku);
|
|
|
+ bean.setPrice(product.getDefaultPrice());
|
|
|
+ bean.setImageUrl(product.getMainImageUrl());
|
|
|
+ shopProductSkus.add(bean);
|
|
|
+ ShopSkuSpecValue skuValue = new ShopSkuSpecValue();
|
|
|
+ skuValue.setSkuId(sku);
|
|
|
+ skuValue.setSpecValueId(-1L);
|
|
|
+ skuValue.setSpecId(-1L);
|
|
|
+ shopSkuSpecValues.add(skuValue);
|
|
|
+ }else {
|
|
|
+ for (InsertProductSkuDto insertProductSkuDto : skus) {
|
|
|
+ ShopProductSku bean = BeanUtil.toBean(insertProductSkuDto, ShopProductSku.class);
|
|
|
+ bean.setProductId(product.getId());
|
|
|
+ bean.setImageUrl(StringUtil.toListString(insertProductSkuDto.getImageUrl()));
|
|
|
+ shopProductSkus.add(bean);
|
|
|
+ for (SkuValueDto skuValues : insertProductSkuDto.getSkuValues()) {
|
|
|
+ ShopSkuSpecValue skuValue = new ShopSkuSpecValue();
|
|
|
+ skuValue.setSkuId(bean.getSkuId());
|
|
|
+ skuValue.setSpecId(Long.valueOf(skuValues.getSpecId()));
|
|
|
+ List<InsertProductSpecDto> collect = specs.stream().filter(spec -> spec.getSpecId().equals(skuValues.getSpecId()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ if(ObjectUtil.isEmpty(collect)){
|
|
|
+ throw new BaseException("规格不存在");
|
|
|
+ }
|
|
|
+ InsertProductSpecDto insertProductSpecDto = collect.get(0);
|
|
|
+
|
|
|
+ List<SpecValueDto> collect1 = insertProductSpecDto.getSpecValues().stream()
|
|
|
+ .filter(specValue -> specValue.getSpecValueName().equals(skuValues.getSpecValueName())).collect(Collectors.toList());
|
|
|
+ skuValue.setSpecValueId(Long.valueOf(collect1.get(0).getSpecValueId()));
|
|
|
+
|
|
|
+ shopSkuSpecValues.add(skuValue);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ shopSkuSpecValueService.saveBatch(shopSkuSpecValues);
|
|
|
+ return saveBatch(shopProductSkus);
|
|
|
+ }
|
|
|
+
|
|
|
|
|
|
//获取商品快照信息
|
|
|
public Map<String,ShopSnapshotVo> getSnapshot(List<AddShopProductOrderDto> products) {
|