package com.panzhihua.service_community.service.impl;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.metadata.IPage;
|
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.PageComShopGoodsDTO;
|
import com.panzhihua.common.model.dtos.shop.ComShopGoodsDTO;
|
import com.panzhihua.common.model.vos.R;
|
import com.panzhihua.common.model.vos.shop.AddShopGoodsAttrVO;
|
import com.panzhihua.common.model.vos.shop.PageShopGoodsVO;
|
import com.panzhihua.common.model.vos.shop.AddShopGoodsVO;
|
import com.panzhihua.common.utlis.StringUtils;
|
import com.panzhihua.service_community.dao.ComShopGoodsAttrDAO;
|
import com.panzhihua.common.model.vos.shop.ComShopGoodsAttrVO;
|
import com.panzhihua.common.model.vos.shop.ComShopGoodsVO;
|
import com.panzhihua.common.model.vos.shop.PageShopStoreVO;
|
import com.panzhihua.service_community.dao.ComShopGoodsDAO;
|
import com.panzhihua.service_community.model.dos.ComShopGoodsAttrDO;
|
import com.panzhihua.service_community.dao.ComShopStoreDAO;
|
import com.panzhihua.service_community.model.dos.ComShopGoodsDO;
|
import com.panzhihua.service_community.model.dos.ComShopStoreDO;
|
import com.panzhihua.service_community.service.ComShopGoodsService;
|
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;
|
|
/**
|
* @auther lyq
|
* @create 2021-04-14 15:02:35
|
* @describe 商品表服务实现类
|
*/
|
@Slf4j
|
@Service
|
public class ComShopGoodsServiceImpl extends ServiceImpl<ComShopGoodsDAO, ComShopGoodsDO> implements ComShopGoodsService {
|
@Resource
|
private ComShopGoodsAttrServiceImpl goodsAttrService;
|
@Resource
|
private ComShopGoodsAttrDAO shopGoodsAttrDAO;
|
@Resource
|
private ComShopStoreDAO shopStoreDAO;
|
|
@Override
|
public R saveShopGoods(AddShopGoodsVO addShopGoodsVO) {
|
if (addShopGoodsVO == null) {
|
return R.ok("500", "数据为空!");
|
}
|
String[] images = addShopGoodsVO.getGoodsPic().split(",");
|
ComShopGoodsDO shopGoodsDO = new ComShopGoodsDO();
|
BeanUtils.copyProperties(addShopGoodsVO, shopGoodsDO);
|
shopGoodsDO.setOriginalPrice(addShopGoodsVO.getPrice());
|
if (images.length > 1) {
|
shopGoodsDO.setGoodsPic(images[0]);
|
}
|
shopGoodsDO.setImages(addShopGoodsVO.getGoodsPic());
|
shopGoodsDO.setSale(0);
|
shopGoodsDO.setDetails(addShopGoodsVO.getDetails());
|
int goodsId = this.baseMapper.insert(shopGoodsDO);
|
if (goodsId > 0) {
|
ArrayList<ComShopGoodsAttrDO> goodsAttrDOS = Lists.newArrayList();
|
ComShopGoodsDO goodDO = this.baseMapper.selectById(shopGoodsDO.getId());
|
addShopGoodsVO.getGoodsAttrVOList().forEach(goodsAttr -> {//维护商品规格表
|
if (goodDO == null) {
|
throw new ServiceException("商家id不存在!");
|
}
|
ComShopGoodsAttrDO shopGoodsAttrDO = new ComShopGoodsAttrDO();
|
shopGoodsAttrDO.setGoodsId(shopGoodsDO.getId());
|
shopGoodsAttrDO.setStoreId(goodDO.getStoreId());
|
shopGoodsAttrDO.setGoodsName(goodDO.getName());
|
shopGoodsAttrDO.setGoodsAttr(goodsAttr.getGoodsAttr());
|
shopGoodsAttrDO.setIsDefault(1);
|
shopGoodsAttrDO.setPrice(goodsAttr.getAttrPrice());
|
shopGoodsAttrDO.setAttrPic(images[0]);
|
goodsAttrDOS.add(shopGoodsAttrDO);
|
});
|
if (addShopGoodsVO.getGoodsAttrVOList().size() < 1) {//如果没有规格参数加默认
|
ComShopGoodsAttrDO shopGoodsAttrDO = new ComShopGoodsAttrDO();
|
shopGoodsAttrDO.setGoodsId(shopGoodsDO.getId());
|
shopGoodsAttrDO.setStoreId(goodDO.getStoreId());
|
shopGoodsAttrDO.setGoodsName(goodDO.getName());
|
shopGoodsAttrDO.setGoodsAttr("默认");
|
shopGoodsAttrDO.setIsDefault(1);
|
shopGoodsAttrDO.setPrice(goodDO.getPrice());
|
shopGoodsAttrDO.setAttrPic(images[0]);
|
goodsAttrService.save(shopGoodsAttrDO);
|
}
|
if (goodsAttrDOS.size() > 0) {
|
goodsAttrService.saveBatch(goodsAttrDOS);
|
}
|
}
|
return R.ok();
|
}
|
|
@Override
|
public R pageGoodsList(PageComShopGoodsDTO pageComShopGoodsDTO) {
|
Page page = new Page<>(pageComShopGoodsDTO.getPageNum(), pageComShopGoodsDTO.getPageSize());
|
IPage<PageShopGoodsVO> comShopStoreVOIPage = this.baseMapper.pageShopGoods(page, pageComShopGoodsDTO);
|
if (!comShopStoreVOIPage.getRecords().isEmpty()) {
|
comShopStoreVOIPage.getRecords().forEach(shopGoods -> {
|
List<ComShopGoodsAttrDO> goodsAttrDOs = shopGoodsAttrDAO.selectList(new QueryWrapper<ComShopGoodsAttrDO>().lambda().eq(ComShopGoodsAttrDO::getGoodsId, shopGoods.getId()));
|
ArrayList<AddShopGoodsAttrVO> goodsAttrVOList = Lists.newArrayList();
|
for (ComShopGoodsAttrDO oneGoodsAttrDO : goodsAttrDOs) {
|
AddShopGoodsAttrVO goodsAttrVO = new AddShopGoodsAttrVO();
|
goodsAttrVO.setGoodsAttrId(oneGoodsAttrDO.getId());
|
goodsAttrVO.setGoodsAttr(oneGoodsAttrDO.getGoodsAttr());
|
goodsAttrVO.setAttrPrice(oneGoodsAttrDO.getPrice());
|
goodsAttrVOList.add(goodsAttrVO);
|
}
|
shopGoods.setGoodsAttts(goodsAttrVOList);
|
});
|
}
|
return R.ok(comShopStoreVOIPage);
|
}
|
|
@Override
|
public R editShopGoods(Long id, AddShopGoodsVO addShopGoodsVO) {
|
if (addShopGoodsVO == null) {
|
return R.ok("500", "数据为空!");
|
}
|
LambdaQueryWrapper<ComShopGoodsDO> query = new LambdaQueryWrapper<ComShopGoodsDO>().eq(ComShopGoodsDO::getId, id);
|
ComShopGoodsDO shopGoodsDO = new ComShopGoodsDO();
|
BeanUtils.copyProperties(addShopGoodsVO, shopGoodsDO);
|
shopGoodsDO.setOriginalPrice(addShopGoodsVO.getPrice());
|
int update = this.baseMapper.update(shopGoodsDO, query);
|
if (update < 1) {
|
throw new ServiceException("修改失败");
|
}
|
addShopGoodsVO.getGoodsAttrVOList().forEach(goodsAttr -> {
|
ComShopGoodsAttrDO comShopGoodsAttrDO = shopGoodsAttrDAO.selectById(goodsAttr.getGoodsAttrId());
|
comShopGoodsAttrDO.setPrice(goodsAttr.getAttrPrice());
|
comShopGoodsAttrDO.setGoodsAttr(goodsAttr.getGoodsAttr());
|
shopGoodsAttrDAO.updateById(comShopGoodsAttrDO);
|
});
|
if (addShopGoodsVO.getGoodsAttrVOList().size() == 0) {
|
shopGoodsAttrDAO.delete(new LambdaQueryWrapper<ComShopGoodsAttrDO>().eq(ComShopGoodsAttrDO::getGoodsId, id));
|
ComShopGoodsAttrDO comShopGoodsAttrDO = new ComShopGoodsAttrDO();
|
comShopGoodsAttrDO.setGoodsId(id);
|
comShopGoodsAttrDO.setStoreId(addShopGoodsVO.getStoreId());
|
comShopGoodsAttrDO.setGoodsName(addShopGoodsVO.getName());
|
comShopGoodsAttrDO.setGoodsAttr("默认");
|
comShopGoodsAttrDO.setAttrPic(addShopGoodsVO.getGoodsPic());
|
comShopGoodsAttrDO.setIsDefault(1);
|
comShopGoodsAttrDO.setPrice(addShopGoodsVO.getPrice());
|
shopGoodsAttrDAO.insert(comShopGoodsAttrDO);
|
}
|
return R.ok();
|
}
|
|
@Override
|
public R deleteShopGoods(Long[] id) {
|
LambdaQueryWrapper<ComShopGoodsDO> query = new LambdaQueryWrapper<ComShopGoodsDO>().in(ComShopGoodsDO::getId, id);
|
List<ComShopGoodsDO> comShopGoodsDOS = this.baseMapper.selectList(query);
|
for (ComShopGoodsDO one : comShopGoodsDOS) {
|
one.setDeleteStatus(2);
|
this.baseMapper.updateById(one);
|
}
|
return R.ok();
|
}
|
|
@Override
|
public R changeStatus(Long id, Integer status) {
|
ComShopGoodsDO shopGoodsDO = this.baseMapper.selectById(id);
|
if (shopGoodsDO == null) {
|
return R.fail("id有误!");
|
}
|
shopGoodsDO.setStatus(status);
|
this.baseMapper.updateById(shopGoodsDO);
|
return R.ok();
|
}
|
|
/**
|
* 分页查询商品列表
|
*
|
* @param comShopGoodsDTO 请求参数
|
* @return 商品列表
|
*/
|
@Override
|
public R pageShopGoods(ComShopGoodsDTO comShopGoodsDTO) {
|
Page page = new Page<>(comShopGoodsDTO.getPageNum(), comShopGoodsDTO.getPageSize());
|
IPage<ComShopGoodsVO> goodsVOIPage = this.baseMapper.pageShopGoodByApps(page, comShopGoodsDTO);
|
if (!goodsVOIPage.getRecords().isEmpty()) {
|
goodsVOIPage.getRecords().forEach(goodsVo -> {
|
List<ComShopGoodsAttrVO> goodsAttrList = shopGoodsAttrDAO.getGoodsAttr(goodsVo.getId());
|
if (!goodsAttrList.isEmpty()) {
|
goodsVo.setGoodsAttrList(goodsAttrList);
|
}
|
});
|
}
|
return R.ok(goodsVOIPage);
|
}
|
|
/**
|
* 根据商品id查询商品信息
|
*
|
* @param goodsId 商品id
|
* @return 商品信息
|
*/
|
@Override
|
public R shopGoodsDetail(Long goodsId) {
|
|
//根据id查询商品信息
|
ComShopGoodsDO goodsDO = this.baseMapper.selectById(goodsId);
|
if (goodsDO == null || goodsDO.getDeleteStatus().equals(ComShopGoodsDO.deleteStatus.yes)) {
|
return R.fail(403, "商品不存在");
|
}
|
if (!goodsDO.getStatus().equals(ComShopGoodsDO.status.sell)) {
|
return R.fail(405, "商品已下架");
|
}
|
|
//根据商品id查询商品规格信息
|
List<ComShopGoodsAttrVO> goodsAttrList = new ArrayList<>();
|
List<ComShopGoodsAttrDO> goodsAttrDOS = shopGoodsAttrDAO.selectList(new QueryWrapper<ComShopGoodsAttrDO>().eq("goods_id", goodsId));
|
goodsAttrDOS.forEach(attrDO -> {
|
ComShopGoodsAttrVO goodsAttrVO = new ComShopGoodsAttrVO();
|
BeanUtils.copyProperties(attrDO, goodsAttrVO);
|
goodsAttrList.add(goodsAttrVO);
|
});
|
|
//查询商品店铺信息
|
ComShopStoreDO shopStoreDO = shopStoreDAO.selectById(goodsDO.getStoreId());
|
PageShopStoreVO shopStoreVO = new PageShopStoreVO();
|
BeanUtils.copyProperties(shopStoreDO, shopStoreVO);
|
|
//设置值
|
ComShopGoodsVO shopGoods = new ComShopGoodsVO();
|
BeanUtils.copyProperties(goodsDO, shopGoods);
|
shopGoods.setGoodsAttrList(goodsAttrList);
|
shopGoods.setShopStoreVO(shopStoreVO);
|
return R.ok(shopGoods);
|
}
|
|
}
|