admin
2025-02-25 30d8e227e8d823b6c38c3b9c90ac2df03b63befe
fanli/src/main/java/com/yeshi/fanli/service/impl/shop/BanLiShopGoodsServiceImpl.java
@@ -1,171 +1,290 @@
package com.yeshi.fanli.service.impl.shop;
import java.util.Date;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.yeshi.fanli.dao.mybatis.shop.BanLiShopGoodsMapper;
import com.yeshi.fanli.entity.shop.BanLiShopGoods;
import com.yeshi.fanli.entity.shop.BanLiShopGoodsImg;
import com.yeshi.fanli.entity.shop.BanLiShopGoodsSets;
import com.yeshi.fanli.exception.shop.BanLiShopGoodsException;
import com.yeshi.fanli.exception.shop.BanLiShopGoodsSetException;
import com.yeshi.fanli.exception.shop.BanLiShopGoodsSetPayException;
import com.yeshi.fanli.service.inter.shop.BanLiShopGoodsImgService;
import com.yeshi.fanli.service.inter.shop.BanLiShopGoodsService;
import com.yeshi.fanli.service.inter.shop.BanLiShopGoodsSetService;
import com.yeshi.fanli.util.StringUtil;
@Service
public class BanLiShopGoodsServiceImpl implements BanLiShopGoodsService {
   @Resource
   private BanLiShopGoodsSetService banLiShopGoodsSetService;
   @Resource
   private BanLiShopGoodsImgService banLiShopGoodsImgService;
   @Resource
   private BanLiShopGoodsMapper banLiShopGoodsMapper;
   @Override
   public List<BanLiShopGoods> listGoods(String key, Integer state, int page, int pageSize) {
      return banLiShopGoodsMapper.listGoods(key, state, (page - 1) * pageSize, pageSize);
   }
   @Override
   public long countGoods(String key, Integer state) {
      return banLiShopGoodsMapper.countGoods(key, state);
   }
   @Override
   public BanLiShopGoods getGoodsDetail(Long goodsId) {
      return banLiShopGoodsMapper.selectDetailByPrimaryKey(goodsId);
   }
   @Override
   public BanLiShopGoods selectByPrimaryKey(Long id) {
      return banLiShopGoodsMapper.selectByPrimaryKey(id);
   }
   @Override
   public void addGoods(BanLiShopGoods goods)
         throws BanLiShopGoodsException, BanLiShopGoodsSetException, BanLiShopGoodsSetPayException {
      if (goods.getId() == null) {// 新增
         if (goods.getGoodsClass() == null || goods.getGoodsClass().getId() == null) {
            throw new BanLiShopGoodsSetException(1, "请指定商品分类");
         }
         if (StringUtil.isNullOrEmpty(goods.getTitle()))
            throw new BanLiShopGoodsSetException(1, "缺少标题");
         if (StringUtil.isNullOrEmpty(goods.getPicture()))
            throw new BanLiShopGoodsSetException(1, "缺少封面图");
         // 默认上线
         if (goods.getState() == null)
            goods.setState(BanLiShopGoods.STATE_ONLINE);
         if (goods.getSalesCount() == null)
            goods.setSalesCount(0L);
         if (goods.getCreateTime() == null)
            goods.setCreateTime(new Date());
         banLiShopGoodsMapper.insertSelective(goods);
         if (goods.getWeight() == null) {// 权重更新
            BanLiShopGoods update = new BanLiShopGoods();
            update.setId(goods.getId());
            update.setWeight((int) goods.getId().longValue());
            banLiShopGoodsMapper.updateByPrimaryKeySelective(update);
         }
         if (goods.getSetsList() != null && goods.getSetsList().size() > 0) {
            for (BanLiShopGoodsSets set : goods.getSetsList())// 更新支付方式
            {
               set.setGoods(goods);
               banLiShopGoodsSetService.addSet(set);
            }
         }
         // TODO 更改图片
         if (goods.getImgList() != null)
            for (BanLiShopGoodsImg img : goods.getImgList()) {
               banLiShopGoodsImgService.addImg(img.getUrl(), goods.getId());
            }
      } else {// 修改
         updateSelectiveByPrimaryKey(goods);
         // 更新支付方式
         if (goods.getSetsList() != null && goods.getSetsList().size() > 0) {
            // 删除原有套餐
            List<BanLiShopGoodsSets> setList = banLiShopGoodsSetService.listByGoodsId(goods.getId());
            for (BanLiShopGoodsSets set : setList)
               banLiShopGoodsSetService.deleteByPrimaryKey(set.getId());
            // 添加新的套餐
            for (BanLiShopGoodsSets set : goods.getSetsList())// 更新支付方式
               banLiShopGoodsSetService.addSet(set);
         }
         // 更新图片
         if (goods.getImgList() != null && goods.getImgList().size() > 0) {
            // 删除原有图片
            List<BanLiShopGoodsImg> imgList = banLiShopGoodsImgService.listByGoodsId(goods.getId());
            for (BanLiShopGoodsImg img : imgList)
               banLiShopGoodsImgService.deleteByPrimaryKey(img.getId());
            // 添加新的图片
            for (BanLiShopGoodsImg img : goods.getImgList())// 更新支付方式
               banLiShopGoodsImgService.addImg(img.getUrl(), goods.getId());
         }
      }
   }
   @Override
   public void updateSelectiveByPrimaryKey(BanLiShopGoods goods) {
      if (goods == null || goods.getId() == null)
         return;
      if (goods.getUpdateTime() == null)
         goods.setUpdateTime(new Date());
      banLiShopGoodsMapper.updateByPrimaryKeySelective(goods);
   }
   @Transactional
   @Override
   public void delete(List<Long> idsList) {
      if (idsList != null)
         for (Long id : idsList)
            deleteByPrimaryKey(id);
   }
   @Transactional
   @Override
   public void deleteByPrimaryKey(Long id) {
      banLiShopGoodsMapper.deleteByPrimaryKey(id);
      List<BanLiShopGoodsSets> setList = banLiShopGoodsSetService.listByGoodsId(id);
      if (setList != null)
         for (BanLiShopGoodsSets set : setList)
            banLiShopGoodsSetService.deleteByPrimaryKey(set.getId());
   }
   @Override
   public void addSalesCount(Long id, int count) {
      BanLiShopGoods goods = selectByPrimaryKey(id);
      if (goods != null) {
         BanLiShopGoods update = new BanLiShopGoods(id);
         update.setSalesCount(goods.getSalesCount() + count);
         update.setUpdateTime(new Date());
         updateSelectiveByPrimaryKey(goods);
      }
   }
}
package com.yeshi.fanli.service.impl.shop;
import java.io.InputStream;
import java.util.Date;
import java.util.List;
import java.util.UUID;
import javax.annotation.Resource;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.multipart.MultipartFile;
import org.yeshi.utils.tencentcloud.COSManager;
import com.yeshi.fanli.dao.mybatis.shop.BanLiShopGoodsMapper;
import com.yeshi.fanli.entity.shop.BanLiShopGoods;
import com.yeshi.fanli.entity.shop.BanLiShopGoodsImg;
import com.yeshi.fanli.entity.shop.BanLiShopGoodsSets;
import com.yeshi.fanli.exception.shop.BanLiShopGoodsException;
import com.yeshi.fanli.exception.shop.BanLiShopGoodsSetException;
import com.yeshi.fanli.exception.shop.BanLiShopGoodsSetPayException;
import com.yeshi.fanli.service.inter.shop.BanLiShopGoodsImgService;
import com.yeshi.fanli.service.inter.shop.BanLiShopGoodsService;
import com.yeshi.fanli.service.inter.shop.BanLiShopGoodsSetService;
import com.yeshi.fanli.util.FilePathEnum;
import com.yeshi.fanli.util.StringUtil;
@Service
public class BanLiShopGoodsServiceImpl implements BanLiShopGoodsService {
   @Resource
   private BanLiShopGoodsSetService banLiShopGoodsSetService;
   @Resource
   private BanLiShopGoodsImgService banLiShopGoodsImgService;
   @Resource
   private BanLiShopGoodsMapper banLiShopGoodsMapper;
   @Override
   public List<BanLiShopGoods> listGoods(String key, Integer state, int page, int pageSize) {
      return banLiShopGoodsMapper.listGoods(key, state, (page - 1) * pageSize, pageSize);
   }
   @Override
   public long countGoods(String key, Integer state) {
      return banLiShopGoodsMapper.countGoods(key, state);
   }
   @Override
   public BanLiShopGoods getGoodsDetail(Long goodsId) {
      return banLiShopGoodsMapper.selectDetailByPrimaryKey(goodsId);
   }
   @Override
   public BanLiShopGoods selectByPrimaryKey(Long id) {
      return banLiShopGoodsMapper.selectByPrimaryKey(id);
   }
   @Override
   public void addGoods(BanLiShopGoods goods)
         throws BanLiShopGoodsException, BanLiShopGoodsSetException, BanLiShopGoodsSetPayException {
      if (goods.getId() == null) {// 新增
         if (goods.getGoodsClass() == null || goods.getGoodsClass().getId() == null) {
            throw new BanLiShopGoodsSetException(1, "请指定商品分类");
         }
         if (StringUtil.isNullOrEmpty(goods.getTitle()))
            throw new BanLiShopGoodsSetException(1, "缺少标题");
         if (StringUtil.isNullOrEmpty(goods.getPicture()))
            throw new BanLiShopGoodsSetException(1, "缺少封面图");
         // 默认上线
         if (goods.getState() == null)
            goods.setState(BanLiShopGoods.STATE_ONLINE);
         if (goods.getSalesCount() == null)
            goods.setSalesCount(0L);
         if (goods.getCreateTime() == null)
            goods.setCreateTime(new Date());
         banLiShopGoodsMapper.insertSelective(goods);
         if (goods.getWeight() == null) {// 权重更新
            BanLiShopGoods update = new BanLiShopGoods();
            update.setId(goods.getId());
            update.setWeight((int) goods.getId().longValue());
            banLiShopGoodsMapper.updateByPrimaryKeySelective(update);
         }
         if (goods.getSetsList() != null && goods.getSetsList().size() > 0) {
            for (BanLiShopGoodsSets set : goods.getSetsList())// 更新支付方式
            {
               set.setGoods(goods);
               banLiShopGoodsSetService.addSet(set);
            }
         }
         // TODO 更改图片
         if (goods.getImgList() != null)
            for (BanLiShopGoodsImg img : goods.getImgList()) {
               banLiShopGoodsImgService.addImg(img.getUrl(), goods.getId());
            }
      } else {// 修改
         updateSelectiveByPrimaryKey(goods);
         // 更新支付方式
         if (goods.getSetsList() != null && goods.getSetsList().size() > 0) {
            // 删除原有套餐
            List<BanLiShopGoodsSets> setList = banLiShopGoodsSetService.listByGoodsId(goods.getId());
            for (BanLiShopGoodsSets set : setList)
               banLiShopGoodsSetService.deleteByPrimaryKey(set.getId());
            // 添加新的套餐
            for (BanLiShopGoodsSets set : goods.getSetsList())// 更新支付方式
               banLiShopGoodsSetService.addSet(set);
         }
         // 更新图片
         if (goods.getImgList() != null && goods.getImgList().size() > 0) {
            // 删除原有图片
            List<BanLiShopGoodsImg> imgList = banLiShopGoodsImgService.listByGoodsId(goods.getId());
            for (BanLiShopGoodsImg img : imgList)
               banLiShopGoodsImgService.deleteByPrimaryKey(img.getId());
            // 添加新的图片
            for (BanLiShopGoodsImg img : goods.getImgList())// 更新支付方式
               banLiShopGoodsImgService.addImg(img.getUrl(), goods.getId());
         }
      }
   }
   @Override
   public void saveObject(MultipartFile file, MultipartFile file2, BanLiShopGoods record) throws BanLiShopGoodsException, Exception{
      if (record.getGoodsClass() == null || record.getGoodsClass().getId() == null)
         throw new BanLiShopGoodsException(1, "请指定商品分类");
      if (StringUtil.isNullOrEmpty(record.getTitle()))
         throw new BanLiShopGoodsException(1, "缺少标题");
      if (file != null)
         record.setPicture(uploadPicture(file));
      if (file2 != null)
         record.setSquarePicture(uploadPicture(file2));
      if (record.getState() == null)
         record.setState(BanLiShopGoods.STATE_ONLINE);
      if (record.getSalesCount() == null)
         record.setSalesCount(0L);
      record.setUpdateTime(new Date());
      if (record.getId() == null) {
         if (StringUtil.isNullOrEmpty(record.getPicture()))
            throw new BanLiShopGoodsException(1, "缺少封面图");
         record.setCreateTime(new Date());
         banLiShopGoodsMapper.insertSelective(record);
      } else {
         BanLiShopGoods resultObj = banLiShopGoodsMapper.selectDetailByPrimaryKey(record.getId());
         if (resultObj == null)
            throw new BanLiShopGoodsException(1, "修改内容已不存在");
         if (StringUtil.isNullOrEmpty(record.getPicture())) {
            record.setPicture(resultObj.getPicture());
         } else {
            removePicture(resultObj.getPicture());
         }
         if (StringUtil.isNullOrEmpty(record.getSquarePicture())) {
            record.setSquarePicture(resultObj.getSquarePicture());
         } else {
            removePicture(resultObj.getSquarePicture());
         }
         if (StringUtil.isNullOrEmpty(record.getPicture()))
            throw new BanLiShopGoodsException(1, "缺少封面图");
         record.setCreateTime(resultObj.getCreateTime());
         banLiShopGoodsMapper.updateByPrimaryKey(record);
      }
   }
   @Override
   public void switchState(Long id) throws BanLiShopGoodsException {
      if (id == null) {
         throw new BanLiShopGoodsException(1, "请传递正确参数");
      }
      BanLiShopGoods resultObj = banLiShopGoodsMapper.selectByPrimaryKey(id);
      if (resultObj == null) {
         throw new BanLiShopGoodsException(1, "此内容已不存在");
      }
      Integer state = resultObj.getState();
      if (state == null || state == 0) {
         state = 1;
      } else {
         state = 0;
      }
      BanLiShopGoods updateObj = new BanLiShopGoods();
      updateObj.setId(id);
      updateObj.setState(state);
      banLiShopGoodsMapper.updateByPrimaryKeySelective(updateObj);
   }
   /**
    * 上传图片
    * @param file
    * @return
    * @throws Exception
    */
   public String uploadPicture(MultipartFile file) throws Exception {
      // 文件解析
      InputStream inputStream = file.getInputStream();
      String contentType = file.getContentType();
      String type = contentType.substring(contentType.indexOf("/") + 1);
      // 文件路径
      String filePath=FilePathEnum.banLiShopGoods.getPath() +UUID.randomUUID().toString().replace("-", "") + "." + type;
      // 执行上传
      String fileLink= COSManager.getInstance().uploadFile(inputStream, filePath).getUrl();
      return fileLink;
   }
   /**
    * 删除图片-不更新数据库
    * @param record
    * @throws Exception
    */
   public void removePicture(String picture) throws Exception {
      if (picture != null && picture.trim().length() > 0) {
         COSManager.getInstance().deleteFile(picture);
      }
   }
   @Override
   public void updateSelectiveByPrimaryKey(BanLiShopGoods goods) {
      if (goods == null || goods.getId() == null)
         return;
      if (goods.getUpdateTime() == null)
         goods.setUpdateTime(new Date());
      banLiShopGoodsMapper.updateByPrimaryKeySelective(goods);
   }
   @Transactional
   @Override
   public void delete(List<Long> idsList) {
      if (idsList != null)
         for (Long id : idsList)
            deleteByPrimaryKey(id);
   }
   @Transactional
   @Override
   public void deleteByPrimaryKey(Long id) {
      banLiShopGoodsMapper.deleteByPrimaryKey(id);
      List<BanLiShopGoodsSets> setList = banLiShopGoodsSetService.listByGoodsId(id);
      if (setList != null)
         for (BanLiShopGoodsSets set : setList)
            banLiShopGoodsSetService.deleteByPrimaryKey(set.getId());
   }
   @Override
   public void addSalesCount(Long id, int count) {
      BanLiShopGoods goods = selectByPrimaryKey(id);
      if (goods != null) {
         BanLiShopGoods update = new BanLiShopGoods(id);
         update.setSalesCount(goods.getSalesCount() + count);
         update.setUpdateTime(new Date());
         updateSelectiveByPrimaryKey(goods);
      }
   }
}