|
@@ -1,14 +1,26 @@
|
|
|
package com.sckw.product.service;
|
|
package com.sckw.product.service;
|
|
|
|
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
+import com.sckw.core.exception.BusinessException;
|
|
|
|
|
+import com.sckw.core.model.constant.Global;
|
|
|
|
|
+import com.sckw.core.model.vo.TableStatisticRes;
|
|
|
import com.sckw.core.utils.BeanUtils;
|
|
import com.sckw.core.utils.BeanUtils;
|
|
|
|
|
+import com.sckw.core.utils.CollectionUtils;
|
|
|
import com.sckw.core.web.context.LoginUserHolder;
|
|
import com.sckw.core.web.context.LoginUserHolder;
|
|
|
-import com.sckw.core.web.model.LoginUserInfo;
|
|
|
|
|
import com.sckw.product.dao.KwpGoodsMapper;
|
|
import com.sckw.product.dao.KwpGoodsMapper;
|
|
|
-import com.sckw.product.model.KwpGoods;
|
|
|
|
|
-import com.sckw.product.model.vo.req.AddGoodsParam;
|
|
|
|
|
|
|
+import com.sckw.product.model.*;
|
|
|
|
|
+import com.sckw.product.model.vo.req.*;
|
|
|
|
|
+import com.sckw.product.model.vo.res.GoodsDetail;
|
|
|
|
|
+import com.sckw.product.model.vo.res.GoodsList;
|
|
|
import lombok.RequiredArgsConstructor;
|
|
import lombok.RequiredArgsConstructor;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
+
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
|
+import java.util.Date;
|
|
|
|
|
+import java.util.List;
|
|
|
|
|
+import java.util.Objects;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* @desc: 商品service
|
|
* @desc: 商品service
|
|
@@ -21,6 +33,10 @@ import org.springframework.stereotype.Service;
|
|
|
public class KwpGoodsService {
|
|
public class KwpGoodsService {
|
|
|
|
|
|
|
|
private final KwpGoodsMapper kwpGoodsMapper;
|
|
private final KwpGoodsMapper kwpGoodsMapper;
|
|
|
|
|
+ private final KwpGoodsAddressService kwpGoodsAddressService;
|
|
|
|
|
+ private final KwpGoodsAttributeService kwpGoodsAttributeService;
|
|
|
|
|
+ private final KwpGoodsImageService kwpGoodsImageService;
|
|
|
|
|
+ private final KwpGoodsPriceRangeService kwpGoodsPriceRangeService;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* @desc: 添加草稿商品
|
|
* @desc: 添加草稿商品
|
|
@@ -29,12 +45,14 @@ public class KwpGoodsService {
|
|
|
* @Param addGoodsParam:
|
|
* @Param addGoodsParam:
|
|
|
* @return: void
|
|
* @return: void
|
|
|
*/
|
|
*/
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public void addDraft(AddGoodsParam addGoodsParam) {
|
|
public void addDraft(AddGoodsParam addGoodsParam) {
|
|
|
- KwpGoods kwpGoods = new KwpGoods();
|
|
|
|
|
- BeanUtils.copyProperties(addGoodsParam, kwpGoods);
|
|
|
|
|
- LoginUserInfo userInfo = LoginUserHolder.get();
|
|
|
|
|
- kwpGoods.setEntId(LoginUserHolder.getEntId());
|
|
|
|
|
- kwpGoodsMapper.insert(kwpGoods);
|
|
|
|
|
|
|
+ Long entId = LoginUserHolder.getEntId();
|
|
|
|
|
+ //添加商品信息
|
|
|
|
|
+ KwpGoods goods = BeanUtils.copyProperties(addGoodsParam, KwpGoods.class);
|
|
|
|
|
+ goods.setEntId(entId).setStatus(0);
|
|
|
|
|
+ kwpGoodsMapper.insert(goods);
|
|
|
|
|
+ addGoodsOtherInfo(goods.getId(), addGoodsParam);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -44,7 +62,131 @@ public class KwpGoodsService {
|
|
|
* @Param addGoodsParam:
|
|
* @Param addGoodsParam:
|
|
|
* @return: void
|
|
* @return: void
|
|
|
*/
|
|
*/
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public void addShelves(AddGoodsParam addGoodsParam) {
|
|
public void addShelves(AddGoodsParam addGoodsParam) {
|
|
|
|
|
+ Long entId = LoginUserHolder.getEntId();
|
|
|
|
|
+ //添加商品信息
|
|
|
|
|
+ KwpGoods goods = BeanUtils.copyProperties(addGoodsParam, KwpGoods.class);
|
|
|
|
|
+ goods.setEntId(entId).setShelfTime(new Date()).setStatus(1);
|
|
|
|
|
+ kwpGoodsMapper.insert(goods);
|
|
|
|
|
+ addGoodsOtherInfo(goods.getId(), addGoodsParam);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @desc: 添加商品其他信息
|
|
|
|
|
+ * @author: yzc
|
|
|
|
|
+ * @date: 2023-07-05 11:45
|
|
|
|
|
+ * @Param goodsId:
|
|
|
|
|
+ * @Param addGoodsParam:
|
|
|
|
|
+ * @return: void
|
|
|
|
|
+ */
|
|
|
|
|
+ private void addGoodsOtherInfo(Long goodsId, AddGoodsParam addGoodsParam) {
|
|
|
|
|
+ //添加商品地址信息
|
|
|
|
|
+ KwpGoodsAddress address = BeanUtils.copyProperties(addGoodsParam.getAddressInfo(), KwpGoodsAddress.class);
|
|
|
|
|
+ address.setGoodsId(goodsId);
|
|
|
|
|
+ kwpGoodsAddressService.insert(address);
|
|
|
|
|
+ //添加商品属性信息
|
|
|
|
|
+ List<GoodsAttributes> attributes = addGoodsParam.getAttributes();
|
|
|
|
|
+ if (CollectionUtils.isNotEmpty(attributes)) {
|
|
|
|
|
+ List<KwpGoodsAttribute> list = new ArrayList<>(attributes.size());
|
|
|
|
|
+ attributes.forEach(e -> {
|
|
|
|
|
+ KwpGoodsAttribute attribute = BeanUtils.copyProperties(e, KwpGoodsAttribute.class);
|
|
|
|
|
+ attribute.setGoodsId(goodsId);
|
|
|
|
|
+ list.add(attribute);
|
|
|
|
|
+ });
|
|
|
|
|
+ kwpGoodsAttributeService.insertBatch(list);
|
|
|
|
|
+ }
|
|
|
|
|
+ //添加商品图片信息
|
|
|
|
|
+ List<GoodsImages> images = addGoodsParam.getImages();
|
|
|
|
|
+ if (CollectionUtils.isNotEmpty(images)) {
|
|
|
|
|
+ List<KwpGoodsImage> list = new ArrayList<>(images.size());
|
|
|
|
|
+ images.forEach(e -> {
|
|
|
|
|
+ KwpGoodsImage image = BeanUtils.copyProperties(e, KwpGoodsImage.class);
|
|
|
|
|
+ image.setGoodsId(goodsId);
|
|
|
|
|
+ list.add(image);
|
|
|
|
|
+ });
|
|
|
|
|
+ kwpGoodsImageService.insertBatch(list);
|
|
|
|
|
+ }
|
|
|
|
|
+ //添加商品价格梯度信息
|
|
|
|
|
+ List<GoodsPriceRanges> priceRanges = addGoodsParam.getPriceRanges();
|
|
|
|
|
+ if (CollectionUtils.isNotEmpty(priceRanges)) {
|
|
|
|
|
+ List<KwpGoodsPriceRange> list = new ArrayList<>(priceRanges.size());
|
|
|
|
|
+ priceRanges.forEach(e -> {
|
|
|
|
|
+ KwpGoodsPriceRange priceRange = BeanUtils.copyProperties(e, KwpGoodsPriceRange.class);
|
|
|
|
|
+ priceRange.setGoodsId(goodsId);
|
|
|
|
|
+ list.add(priceRange);
|
|
|
|
|
+ });
|
|
|
|
|
+ kwpGoodsPriceRangeService.insertBatch(list);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @desc: 获取商品详情
|
|
|
|
|
+ * @author: yzc
|
|
|
|
|
+ * @date: 2023-07-05 11:57
|
|
|
|
|
+ * @Param id:
|
|
|
|
|
+ * @return: com.sckw.product.model.vo.res.GoodsDetail
|
|
|
|
|
+ */
|
|
|
|
|
+ public GoodsDetail detail(Long id) {
|
|
|
|
|
+ Long entId = LoginUserHolder.getEntId();
|
|
|
|
|
+ LambdaQueryWrapper<KwpGoods> wrapper = new LambdaQueryWrapper<>();
|
|
|
|
|
+ wrapper.eq(KwpGoods::getId, id);
|
|
|
|
|
+ KwpGoods goods = getGoods(wrapper);
|
|
|
|
|
+ if (Objects.isNull(goods)) {
|
|
|
|
|
+ throw new BusinessException("当前商品信息为空!");
|
|
|
|
|
+ }
|
|
|
|
|
+ GoodsDetail detail = BeanUtils.copyProperties(goods, GoodsDetail.class);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ List<KwpGoodsImage> goodsImages = kwpGoodsImageService.getByGoodsId(id);
|
|
|
|
|
+ List<GoodsImages> images = BeanUtils.copyToList(goodsImages, GoodsImages.class);
|
|
|
|
|
+
|
|
|
|
|
+ List<KwpGoodsPriceRange> priceRanges = kwpGoodsPriceRangeService.getByGoodsId(id);
|
|
|
|
|
+ List<GoodsPriceRanges> ranges = BeanUtils.copyToList(priceRanges, GoodsPriceRanges.class);
|
|
|
|
|
+
|
|
|
|
|
+ List<KwpGoodsAttribute> attributesList = kwpGoodsAttributeService.getByGoodsId(id);
|
|
|
|
|
+ List<GoodsAttributes> attributes = BeanUtils.copyToList(attributesList, GoodsAttributes.class);
|
|
|
|
|
|
|
|
|
|
+ KwpGoodsAddress goodsAddress = kwpGoodsAddressService.getByGoodsId(id);
|
|
|
|
|
+ AddressInfo addressInfo = BeanUtils.copyProperties(goodsAddress, AddressInfo.class);
|
|
|
|
|
+
|
|
|
|
|
+ detail.setImages(images).setPriceRanges(ranges).setAttributes(attributes).setAddressInfo(addressInfo);
|
|
|
|
|
+
|
|
|
|
|
+ return detail;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @desc: 分页查询商品信息
|
|
|
|
|
+ * @author: yzc
|
|
|
|
|
+ * @date: 2023-07-05 11:58
|
|
|
|
|
+ * @Param params:
|
|
|
|
|
+ * @return: java.util.List<com.sckw.product.model.vo.res.GoodsList>
|
|
|
|
|
+ */
|
|
|
|
|
+ public List<GoodsList> select(SelectGoodsListParam params) {
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @desc: 条件获取商品信息
|
|
|
|
|
+ * @author: yzc
|
|
|
|
|
+ * @date: 2023-07-05 14:25
|
|
|
|
|
+ * @Param wrapper:
|
|
|
|
|
+ * @return: com.sckw.product.model.KwpGoods
|
|
|
|
|
+ */
|
|
|
|
|
+ public KwpGoods getGoods(LambdaQueryWrapper<KwpGoods> wrapper) {
|
|
|
|
|
+ LambdaQueryWrapper<KwpGoods> last = wrapper.eq(KwpGoods::getEntId, LoginUserHolder.getEntId())
|
|
|
|
|
+ .eq(KwpGoods::getDelFlag, Global.NO).last("LIMIT 1");
|
|
|
|
|
+ return kwpGoodsMapper.selectOne(last);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ /**
|
|
|
|
|
+ * @desc: TODO
|
|
|
|
|
+ * @author: yzc
|
|
|
|
|
+ * @date: 2023-07-05 17:55
|
|
|
|
|
+ * @Param params:
|
|
|
|
|
+ * @return: com.sckw.core.model.vo.TableRes
|
|
|
|
|
+ */
|
|
|
|
|
+ public TableStatisticRes statistic(GoodsListParam params) {
|
|
|
|
|
+ return null;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|