package cn.lili.modules.goods.serviceimpl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.collection.CollUtil; import cn.hutool.json.JSONArray; import cn.hutool.json.JSONUtil; import cn.lili.modules.goods.entity.dos.*; import cn.lili.modules.goods.entity.dto.*; import cn.lili.modules.goods.entity.vos.DraftGoodsVO; import cn.lili.modules.goods.mapper.DraftGoodsMapper; import cn.lili.modules.goods.service.*; import cn.lili.modules.goods.sku.GoodsSkuBuilder; import cn.lili.mybatis.util.PageUtil; import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.Arrays; import java.util.List; /** * 草稿商品业务层实现 * * @author paulG * @since 2020/12/19 **/ @Service public class DraftGoodsServiceImpl extends ServiceImpl implements DraftGoodsService { /** * 分类 */ @Autowired private CategoryService categoryService; /** * 商品相册 */ @Autowired private GoodsGalleryService goodsGalleryService; /** * 规格商品 */ @Autowired private GoodsSkuService goodsSkuService; @Autowired private WholesaleService wholesaleService; @Override public boolean addGoodsDraft(DraftGoodsDTO draftGoods) { draftGoods.setGoodsGalleryListJson(JSONUtil.toJsonStr(draftGoods.getGoodsGalleryList())); draftGoods.setSkuListJson(JSONUtil.toJsonStr(draftGoods.getSkuList())); draftGoods.setGoodsParamsListJson(JSONUtil.toJsonStr(draftGoods.getGoodsParamsDTOList())); return this.save(draftGoods); } @Override public boolean updateGoodsDraft(DraftGoodsDTO draftGoods) { draftGoods.setGoodsGalleryListJson(JSONUtil.toJsonStr(draftGoods.getGoodsGalleryList())); draftGoods.setSkuListJson(JSONUtil.toJsonStr(draftGoods.getSkuList())); draftGoods.setGoodsParamsListJson(JSONUtil.toJsonStr(draftGoods.getGoodsParamsDTOList())); return this.updateById(draftGoods); } @Override public void saveGoodsDraft(DraftGoodsDTO draftGoods) { if (draftGoods.getGoodsGalleryList() != null && !draftGoods.getGoodsGalleryList().isEmpty()) { GoodsGallery goodsGallery = goodsGalleryService.getGoodsGallery(draftGoods.getGoodsGalleryList().get(0)); draftGoods.setOriginal(goodsGallery.getOriginal()); draftGoods.setSmall(goodsGallery.getSmall()); draftGoods.setThumbnail(goodsGallery.getThumbnail()); } // 商品图片 draftGoods.setGoodsGalleryListJson(JSONUtil.toJsonStr(draftGoods.getGoodsGalleryList())); // 商品参数 draftGoods.setGoodsParamsListJson(JSONUtil.toJsonStr(draftGoods.getGoodsParamsDTOList())); boolean result = this.saveOrUpdate(draftGoods); if (result && draftGoods.getSkuList() != null && !draftGoods.getSkuList().isEmpty()) { List goodsSkus = GoodsSkuBuilder.buildBatch(new Goods(draftGoods), draftGoods.getSkuList()); GoodsOperationDTO.GoodsOperationDTOBuilder goodsOperationDTOBuilder = GoodsOperationDTO.builder().goodsTemplateFlag(true).salesModel(draftGoods.getSalesModel()); if (draftGoods.getWholesaleList() != null && !draftGoods.getWholesaleList().isEmpty()) { for (WholesaleDTO wholesaleDTO : draftGoods.getWholesaleList()) { wholesaleDTO.setTemplateId(draftGoods.getId()); } goodsOperationDTOBuilder.wholesaleList(draftGoods.getWholesaleList()); } goodsSkuService.renderGoodsSkuList(goodsSkus, goodsOperationDTOBuilder.build()); LambdaUpdateWrapper updateWrapper = new LambdaUpdateWrapper<>(); updateWrapper.eq(DraftGoods::getId, draftGoods.getId()); updateWrapper.set(DraftGoods::getSkuListJson, JSONUtil.toJsonStr(goodsSkus)); this.update(updateWrapper); } } @Override public void deleteGoodsDraft(String id) { this.removeById(id); this.wholesaleService.removeByTemplateId(id); } @Override public DraftGoodsVO getDraftGoods(String id) { DraftGoods draftGoods = this.getById(id); DraftGoodsVO draftGoodsVO = new DraftGoodsVO(); BeanUtil.copyProperties(draftGoods, draftGoodsVO); //商品分类名称赋值 List categoryName = new ArrayList<>(); String[] strArray = draftGoods.getCategoryPath().split(","); List categories = categoryService.listByIds(Arrays.asList(strArray)); for (Category category : categories) { categoryName.add(category.getName()); } draftGoodsVO.setCategoryName(categoryName); draftGoodsVO.setGoodsParamsDTOList(JSONUtil.toList(JSONUtil.parseArray(draftGoods.getGoodsParamsListJson()), GoodsParamsDTO.class)); draftGoodsVO.setGoodsGalleryList(JSONUtil.toList(JSONUtil.parseArray(draftGoods.getGoodsGalleryListJson()), String.class)); JSONArray jsonArray = JSONUtil.parseArray(draftGoods.getSkuListJson()); List list = JSONUtil.toList(jsonArray, GoodsSku.class); draftGoodsVO.setSkuList(goodsSkuService.getGoodsSkuVOList(list)); List wholesaleList = wholesaleService.findByTemplateId(draftGoods.getId()); if (CollUtil.isNotEmpty(wholesaleList)) { draftGoodsVO.setWholesaleList(wholesaleList); } return draftGoodsVO; } @Override public IPage getDraftGoods(DraftGoodsSearchParams searchParams) { return this.page(PageUtil.initPage(searchParams), searchParams.queryWrapper()); } }