New file |
| | |
| | | package com.panzhihua.service_community.service.impl; |
| | | |
| | | import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
| | | import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
| | | import com.baomidou.mybatisplus.core.metadata.IPage; |
| | | import com.baomidou.mybatisplus.extension.plugins.pagination.Page; |
| | | import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; |
| | | import com.google.common.collect.Lists; |
| | | import com.panzhihua.common.exceptions.ServiceException; |
| | | import com.panzhihua.common.model.dtos.shop.ComShopFlowerGoodsDTO; |
| | | import com.panzhihua.common.model.dtos.shop.PageComShopFlowerGoodsDTO; |
| | | import com.panzhihua.common.model.vos.R; |
| | | import com.panzhihua.common.model.vos.community.convenient.ConvenientMerchantVO; |
| | | import com.panzhihua.common.model.vos.shop.*; |
| | | import com.panzhihua.common.utlis.DifferentLongListUtil; |
| | | import com.panzhihua.service_community.dao.ComShopFlowerGoodsAttrDAO; |
| | | import com.panzhihua.service_community.dao.ComShopFlowerGoodsDAO; |
| | | import com.panzhihua.service_community.dao.ConvenientMerchantDAO; |
| | | import com.panzhihua.service_community.model.dos.*; |
| | | import com.panzhihua.service_community.service.ComShopFlowerGoodsAttrService; |
| | | import com.panzhihua.service_community.service.ComShopFlowerGoodsService; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.beans.BeanUtils; |
| | | import org.springframework.stereotype.Service; |
| | | |
| | | import javax.annotation.Resource; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.stream.Collectors; |
| | | |
| | | /** |
| | | * @ClassName: ComShopFlowerGoodsServiceImpl |
| | | * @Author: yh |
| | | * @Date: 2022/11/8 17:17 |
| | | * @Description: 商品 |
| | | */ |
| | | @Service |
| | | @Slf4j |
| | | public class ComShopFlowerGoodsServiceImpl extends ServiceImpl<ComShopFlowerGoodsDAO, ComShopFlowerGoodsDO> implements ComShopFlowerGoodsService { |
| | | |
| | | @Resource |
| | | private ComShopFlowerGoodsAttrService comShopFlowerGoodsAttrService; |
| | | @Resource |
| | | private ComShopFlowerGoodsAttrDAO shopFlowerGoodsAttrDAO; |
| | | @Resource |
| | | private ConvenientMerchantDAO convenientMerchantDAO; |
| | | |
| | | @Override |
| | | public R saveShopFlowerGoods(AddShopFlowerGoodsVO addShopFlowerGoodsVO) { |
| | | if (addShopFlowerGoodsVO == null) { |
| | | return R.ok("500", "数据为空!"); |
| | | } |
| | | String[] images = addShopFlowerGoodsVO.getGoodsPic().split(","); |
| | | ComShopFlowerGoodsDO shopGoodsDO = new ComShopFlowerGoodsDO(); |
| | | BeanUtils.copyProperties(addShopFlowerGoodsVO, shopGoodsDO); |
| | | shopGoodsDO.setOriginalPrice(addShopFlowerGoodsVO.getPrice()); |
| | | if (images.length > 1) { |
| | | shopGoodsDO.setGoodsPic(images[0]); |
| | | } |
| | | shopGoodsDO.setImages(addShopFlowerGoodsVO.getGoodsPic()); |
| | | shopGoodsDO.setSale(0); |
| | | shopGoodsDO.setDetails(addShopFlowerGoodsVO.getDetails()); |
| | | int goodsId = this.baseMapper.insert(shopGoodsDO); |
| | | if (goodsId > 0) { |
| | | ArrayList<ComShopFlowerGoodsAttrDO> goodsAttrDOS = Lists.newArrayList(); |
| | | ComShopFlowerGoodsDO goodDO = this.baseMapper.selectById(shopGoodsDO.getId()); |
| | | addShopFlowerGoodsVO.getGoodsAttrVOList().forEach(goodsAttr -> { |
| | | // 维护商品规格表 |
| | | if (goodDO == null) { |
| | | throw new ServiceException("商品id不存在!"); |
| | | } |
| | | ComShopFlowerGoodsAttrDO shopGoodsAttrDO = new ComShopFlowerGoodsAttrDO(); |
| | | shopGoodsAttrDO.setGoodsId(shopGoodsDO.getId()); |
| | | shopGoodsAttrDO.setStoreId(goodDO.getStoreId()); |
| | | shopGoodsAttrDO.setGoodsName(goodDO.getName()); |
| | | shopGoodsAttrDO.setGoodsAttrName(goodsAttr.getGoodsAttrName()); |
| | | shopGoodsAttrDO.setIsDefault(1); |
| | | shopGoodsAttrDO.setPrice(goodsAttr.getPrice()); |
| | | shopGoodsAttrDO.setCollatePrice(goodsAttr.getCollatePrice()); |
| | | shopGoodsAttrDO.setFreeShippingPrice(goodsAttr.getFreeShippingPrice()); |
| | | shopGoodsAttrDO.setAttrPic(goodsAttr.getAttrPic()); |
| | | shopGoodsAttrDO.setStock(goodsAttr.getStock()); |
| | | shopGoodsAttrDO.setSale(0); |
| | | goodsAttrDOS.add(shopGoodsAttrDO); |
| | | }); |
| | | if (goodsAttrDOS.size() > 0) { |
| | | comShopFlowerGoodsAttrService.saveBatch(goodsAttrDOS); |
| | | } |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | /** |
| | | * 分页查询 |
| | | * |
| | | * @param pageComShopFlowerGoodsDTO 查询参数 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public R pageFlowerGoodsList(PageComShopFlowerGoodsDTO pageComShopFlowerGoodsDTO) { |
| | | long pageNum = pageComShopFlowerGoodsDTO.getPageNum() != null ? pageComShopFlowerGoodsDTO.getPageNum() : 1; |
| | | long pageSize = pageComShopFlowerGoodsDTO.getPageSize() != null ? pageComShopFlowerGoodsDTO.getPageSize() : 10; |
| | | Page page = new Page<>(pageNum, pageSize); |
| | | IPage<PageShopFlowerGoodsVO> comShopStoreVOIPage = this.baseMapper.pageShopGoods(page, pageComShopFlowerGoodsDTO); |
| | | if (!comShopStoreVOIPage.getRecords().isEmpty()) { |
| | | comShopStoreVOIPage.getRecords().forEach(shopGoods -> { |
| | | List<ComShopFlowerGoodsAttrDO> goodsAttrDOs = |
| | | shopFlowerGoodsAttrDAO.selectList(new QueryWrapper<ComShopFlowerGoodsAttrDO>().lambda() |
| | | .eq(ComShopFlowerGoodsAttrDO::getGoodsId, shopGoods.getId())); |
| | | ArrayList<AddShopFlowerGoodsAttrVO> goodsAttrVOList = Lists.newArrayList(); |
| | | for (ComShopFlowerGoodsAttrDO oneGoodsAttrDO : goodsAttrDOs) { |
| | | AddShopFlowerGoodsAttrVO goodsAttrVO = new AddShopFlowerGoodsAttrVO(); |
| | | BeanUtils.copyProperties(oneGoodsAttrDO, goodsAttrVO); |
| | | goodsAttrVOList.add(goodsAttrVO); |
| | | } |
| | | shopGoods.setGoodsAttrs(goodsAttrVOList); |
| | | }); |
| | | } |
| | | return R.ok(comShopStoreVOIPage); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 分页查询商品列表 |
| | | * |
| | | * @param comShopFlowerGoodsDTO 请求参数 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public R pageShopFlowerGoodsByApp(ComShopFlowerGoodsDTO comShopFlowerGoodsDTO) { |
| | | Page page = new Page<>(comShopFlowerGoodsDTO.getPageNum(), comShopFlowerGoodsDTO.getPageSize()); |
| | | IPage<ComShopFlowerGoodsVO> goodsVOIPage = this.baseMapper.pageShopGoodByApps(page, comShopFlowerGoodsDTO); |
| | | if (!goodsVOIPage.getRecords().isEmpty()) { |
| | | goodsVOIPage.getRecords().forEach(goodsVo -> { |
| | | List<ComShopFlowerGoodsAttrVO> goodsAttrList = shopFlowerGoodsAttrDAO.getGoodsAttr(goodsVo.getId()); |
| | | if (!goodsAttrList.isEmpty()) { |
| | | ComShopFlowerGoodsAttrVO comShopFlowerGoodsAttrVO = goodsAttrList.get(0); |
| | | |
| | | goodsVo.setGoodsAttrList(goodsAttrList); |
| | | goodsVo.setGoodsPic(comShopFlowerGoodsAttrVO.getAttrPic()); |
| | | goodsVo.setOriginalPrice(comShopFlowerGoodsAttrVO.getPrice()); |
| | | goodsVo.setPrice(comShopFlowerGoodsAttrVO.getCollatePrice()); |
| | | } |
| | | }); |
| | | } |
| | | return R.ok(goodsVOIPage); |
| | | } |
| | | |
| | | @Override |
| | | public R shopFlowerGoodsDetail(Long goodsId) { |
| | | // 根据id查询商品信息 |
| | | ComShopFlowerGoodsDO goodsDO = this.baseMapper.selectById(goodsId); |
| | | if (goodsDO == null || goodsDO.getDeleteStatus().equals(ComShopFlowerGoodsDO.deleteStatus.yes)) { |
| | | return R.fail(403, "商品不存在"); |
| | | } |
| | | if (!goodsDO.getStatus().equals(ComShopFlowerGoodsDO.status.sell)) { |
| | | return R.fail(405, "商品已下架"); |
| | | } |
| | | |
| | | // 根据商品id查询商品规格信息 |
| | | List<ComShopFlowerGoodsAttrVO> goodsAttrList = new ArrayList<>(); |
| | | List<ComShopFlowerGoodsAttrDO> goodsAttrDOS = |
| | | shopFlowerGoodsAttrDAO.selectList(new QueryWrapper<ComShopFlowerGoodsAttrDO>().eq("goods_id", goodsId)); |
| | | goodsAttrDOS.forEach(attrDO -> { |
| | | ComShopFlowerGoodsAttrVO goodsAttrVO = new ComShopFlowerGoodsAttrVO(); |
| | | BeanUtils.copyProperties(attrDO, goodsAttrVO); |
| | | goodsAttrList.add(goodsAttrVO); |
| | | }); |
| | | |
| | | // 查询商品店铺信息 |
| | | ConvenientMerchantDO convenientMerchantDO = convenientMerchantDAO.selectById(goodsDO.getStoreId()); |
| | | ConvenientMerchantVO convenientMerchantVO = new ConvenientMerchantVO(); |
| | | BeanUtils.copyProperties(convenientMerchantDO, convenientMerchantVO); |
| | | |
| | | // 设置值 |
| | | ComShopFlowerGoodsVO shopGoods = new ComShopFlowerGoodsVO(); |
| | | BeanUtils.copyProperties(goodsDO, shopGoods); |
| | | shopGoods.setGoodsAttrList(goodsAttrList); |
| | | shopGoods.setConvenientMerchantVO(convenientMerchantVO); |
| | | return R.ok(shopGoods); |
| | | } |
| | | |
| | | @Override |
| | | public R editFlowerShopGoods(Long id, AddShopFlowerGoodsVO addShopFlowerGoodsVO) { |
| | | if (addShopFlowerGoodsVO == null) { |
| | | return R.ok("500", "数据为空!"); |
| | | } |
| | | LambdaQueryWrapper<ComShopFlowerGoodsDO> query = |
| | | new LambdaQueryWrapper<ComShopFlowerGoodsDO>().eq(ComShopFlowerGoodsDO::getId, id); |
| | | ComShopFlowerGoodsDO shopGoodsDO = new ComShopFlowerGoodsDO(); |
| | | BeanUtils.copyProperties(addShopFlowerGoodsVO, shopGoodsDO); |
| | | shopGoodsDO.setOriginalPrice(addShopFlowerGoodsVO.getPrice()); |
| | | int update = this.baseMapper.update(shopGoodsDO, query); |
| | | if (update < 1) { |
| | | throw new ServiceException("修改失败"); |
| | | } |
| | | // 修改规格表 |
| | | List<ComShopFlowerGoodsAttrDO> comShopFlowerGoodsAttrDOS = shopFlowerGoodsAttrDAO |
| | | .selectList(new LambdaQueryWrapper<ComShopFlowerGoodsAttrDO>().eq(ComShopFlowerGoodsAttrDO::getGoodsId, id)); |
| | | if (addShopFlowerGoodsVO.getGoodsAttrVOList().size() == 0) { |
| | | shopFlowerGoodsAttrDAO |
| | | .delete(new LambdaQueryWrapper<ComShopFlowerGoodsAttrDO>().eq(ComShopFlowerGoodsAttrDO::getGoodsId, id)); |
| | | ComShopFlowerGoodsAttrDO comShopFlowerGoodsAttrDO = new ComShopFlowerGoodsAttrDO(); |
| | | comShopFlowerGoodsAttrDO.setGoodsId(id); |
| | | comShopFlowerGoodsAttrDO.setStoreId(addShopFlowerGoodsVO.getStoreId()); |
| | | comShopFlowerGoodsAttrDO.setGoodsName(addShopFlowerGoodsVO.getName()); |
| | | comShopFlowerGoodsAttrDO.setGoodsAttrName("默认"); |
| | | comShopFlowerGoodsAttrDO.setAttrPic(addShopFlowerGoodsVO.getGoodsPic()); |
| | | comShopFlowerGoodsAttrDO.setIsDefault(1); |
| | | comShopFlowerGoodsAttrDO.setPrice(addShopFlowerGoodsVO.getPrice()); |
| | | shopFlowerGoodsAttrDAO.insert(comShopFlowerGoodsAttrDO); |
| | | } else { |
| | | List<Long> attrIds = |
| | | comShopFlowerGoodsAttrDOS.stream().map(ComShopFlowerGoodsAttrDO::getId).collect(Collectors.toList()); |
| | | List<Long> voAttrIds = addShopFlowerGoodsVO.getGoodsAttrVOList().stream().map(AddShopFlowerGoodsAttrVO::getGoodsAttrId) |
| | | .collect(Collectors.toList()); |
| | | // 需要删除的规格ID——针对编辑时删除了规格的情况 |
| | | List<Long> deleteIds = DifferentLongListUtil.getDiffrent(attrIds, voAttrIds); |
| | | if (deleteIds.size() != 0) { |
| | | shopFlowerGoodsAttrDAO.deleteBatchIds(deleteIds); |
| | | } |
| | | addShopFlowerGoodsVO.getGoodsAttrVOList().forEach(goodsAttr -> { |
| | | ComShopFlowerGoodsAttrDO comShopGoodsAttrDO = shopFlowerGoodsAttrDAO.selectById(goodsAttr.getGoodsAttrId()); |
| | | if (comShopGoodsAttrDO != null) { |
| | | comShopGoodsAttrDO.setPrice(goodsAttr.getPrice()); |
| | | comShopGoodsAttrDO.setCollatePrice(goodsAttr.getCollatePrice()); |
| | | comShopGoodsAttrDO.setFreeShippingPrice(goodsAttr.getFreeShippingPrice()); |
| | | comShopGoodsAttrDO.setGoodsAttrName(goodsAttr.getGoodsAttrName()); |
| | | comShopGoodsAttrDO.setAttrPic(goodsAttr.getAttrPic()); |
| | | comShopGoodsAttrDO.setStock(goodsAttr.getStock()); |
| | | shopFlowerGoodsAttrDAO.updateById(comShopGoodsAttrDO); |
| | | } else { |
| | | comShopGoodsAttrDO = new ComShopFlowerGoodsAttrDO(); |
| | | comShopGoodsAttrDO.setGoodsId(shopGoodsDO.getId()); |
| | | comShopGoodsAttrDO.setStoreId(shopGoodsDO.getStoreId()); |
| | | comShopGoodsAttrDO.setGoodsName(shopGoodsDO.getName()); |
| | | comShopGoodsAttrDO.setGoodsAttrName(goodsAttr.getGoodsAttrName()); |
| | | comShopGoodsAttrDO.setIsDefault(1); |
| | | comShopGoodsAttrDO.setPrice(goodsAttr.getPrice()); |
| | | comShopGoodsAttrDO.setCollatePrice(goodsAttr.getCollatePrice()); |
| | | comShopGoodsAttrDO.setFreeShippingPrice(goodsAttr.getFreeShippingPrice()); |
| | | comShopGoodsAttrDO.setAttrPic(goodsAttr.getAttrPic()); |
| | | comShopGoodsAttrDO.setStock(goodsAttr.getStock()); |
| | | comShopGoodsAttrDO.setSale(0); |
| | | shopFlowerGoodsAttrDAO.insert(comShopGoodsAttrDO); |
| | | } |
| | | }); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | @Override |
| | | public R deleteShopFlowerGoods(Long[] id) { |
| | | LambdaQueryWrapper<ComShopFlowerGoodsDO> query = new LambdaQueryWrapper<ComShopFlowerGoodsDO>().in(ComShopFlowerGoodsDO::getId, id); |
| | | List<ComShopFlowerGoodsDO> comShopGoodsDOS = this.baseMapper.selectList(query); |
| | | for (ComShopFlowerGoodsDO one : comShopGoodsDOS) { |
| | | one.setDeleteStatus(ComShopFlowerGoodsDO.deleteStatus.yes); |
| | | this.baseMapper.updateById(one); |
| | | } |
| | | return R.ok(); |
| | | } |
| | | |
| | | @Override |
| | | public R changeStatus(Long id, Integer status) { |
| | | ComShopFlowerGoodsDO shopGoodsDO = this.baseMapper.selectById(id); |
| | | if (shopGoodsDO == null) { |
| | | return R.fail("id有误!"); |
| | | } |
| | | shopGoodsDO.setStatus(status); |
| | | this.baseMapper.updateById(shopGoodsDO); |
| | | return R.ok(); |
| | | } |
| | | } |