package com.panzhihua.service_community.service.impl;
|
|
import java.math.BigDecimal;
|
|
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.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.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.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.ComShopGoodsAttrDAO;
|
import com.panzhihua.common.model.dtos.shop.PageComShopGoodsDTO;
|
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.ComShopGoodsAttrDO;
|
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.Arrays;
|
import java.util.List;
|
import java.util.stream.Collectors;
|
|
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", "数据为空!");
|
}
|
ComShopGoodsDO shopGoodsDO = new ComShopGoodsDO();
|
BeanUtils.copyProperties(addShopGoodsVO, shopGoodsDO);
|
shopGoodsDO.setSale(0);
|
int goodsId = this.baseMapper.insert(shopGoodsDO);
|
if (goodsId > 0) {
|
ArrayList<ComShopGoodsAttrDO> goodsAttrDOS = Lists.newArrayList();
|
addShopGoodsVO.getGoodsAttrVOList().forEach(goodsAttr -> {
|
ComShopGoodsDO goodDO = this.baseMapper.selectById(shopGoodsDO.getId());
|
//维护商品规格表
|
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());
|
goodsAttrDOS.add(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);
|
List<PageShopGoodsVO> shopGoodsVOS = comShopStoreVOIPage.getRecords();
|
List<Long> goodsIds = shopGoodsVOS.stream().map(PageShopGoodsVO::getId).collect(Collectors.toList());
|
LambdaQueryWrapper<ComShopGoodsAttrDO> in = new LambdaQueryWrapper<ComShopGoodsAttrDO>().in(ComShopGoodsAttrDO::getGoodsId, goodsIds);
|
//分页查询商品规格,组装数据
|
List<ComShopGoodsAttrDO> goodsAttrDOS = goodsAttrService.getBaseMapper().selectList(in);
|
comShopStoreVOIPage.getRecords().forEach(vo -> {
|
List<ComShopGoodsAttrDO> goodsAttrDOs = goodsAttrDOS.stream().filter(goodsAttr -> goodsAttr.getGoodsId().equals(vo.getId())).collect(Collectors.toList());
|
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);
|
}
|
vo.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);
|
int update = this.baseMapper.update(shopGoodsDO, query);
|
if (update < 1) {
|
throw new ServiceException("修改失败");
|
}
|
ArrayList<ComShopGoodsAttrDO> goodsAttrDOS = Lists.newArrayList();
|
addShopGoodsVO.getGoodsAttrVOList().forEach(goodsAttr -> {
|
if (goodsAttr.getGoodsAttrId() == null) {
|
throw new ServiceException("规格Id为空");
|
}
|
//先删除
|
ComShopGoodsAttrDO goodsAttrDO = goodsAttrService.getBaseMapper().selectById(goodsAttr.getGoodsAttrId());
|
if (goodsAttrDO == null) {
|
throw new ServiceException("规格为空,请检查规格Id");
|
}
|
ComShopGoodsAttrDO shopGoodsAttrDO = new ComShopGoodsAttrDO();
|
shopGoodsAttrDO.setGoodsId(id);
|
shopGoodsAttrDO.setStoreId(shopGoodsDO.getStoreId());
|
shopGoodsAttrDO.setGoodsName(shopGoodsDO.getName());
|
//如果没有规格加默认
|
shopGoodsAttrDO.setGoodsAttr(goodsAttr.getGoodsAttr());
|
shopGoodsAttrDO.setIsDefault(1);
|
shopGoodsAttrDO.setPrice(goodsAttr.getAttrPrice());
|
goodsAttrDOS.add(shopGoodsAttrDO);
|
});
|
if (goodsAttrDOS.size() > 0) {
|
LambdaQueryWrapper<ComShopGoodsAttrDO> oldGoodsAttrQuery = new LambdaQueryWrapper<ComShopGoodsAttrDO>().eq(ComShopGoodsAttrDO::getGoodsId, id);
|
//删除旧商品规格,再行添加
|
goodsAttrService.getBaseMapper().delete(oldGoodsAttrQuery);
|
goodsAttrService.saveBatch(goodsAttrDOS);
|
}
|
return R.ok();
|
}
|
|
@Override
|
public R deleteShopGoods(Long[] id) {
|
ComShopGoodsDO storeDO = new ComShopGoodsDO();
|
storeDO.setDeleteStatus(2);
|
LambdaQueryWrapper<ComShopGoodsDO> query = new LambdaQueryWrapper<ComShopGoodsDO>().eq(ComShopGoodsDO::getId, id);
|
int update = this.baseMapper.update(storeDO, query);
|
return update > 0 ? R.ok() : R.fail();
|
}
|
|
@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());
|
return R.ok(this.baseMapper.pageShopGoodByApps(page,comShopGoodsDTO));
|
}
|
|
/**
|
* 根据商品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);
|
}
|
|
}
|