admin
2020-05-06 24a8d17e007545f7426c48352109aa1a9c6587ee
fanli/src/main/java/com/yeshi/fanli/service/impl/brand/BrandInfoServiceImpl.java
@@ -1,7 +1,6 @@
package com.yeshi.fanli.service.impl.brand;
import java.io.InputStream;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
@@ -34,9 +33,11 @@
import com.yeshi.fanli.service.inter.brand.BrandShopCaheService;
import com.yeshi.fanli.service.inter.goods.TaoBaoGoodsBriefService;
import com.yeshi.fanli.service.inter.lable.QualityGoodsService;
import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService;
import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
import com.yeshi.fanli.service.inter.taobao.TaoBaoGoodsUpdateService;
import com.yeshi.fanli.util.Constant;
import com.yeshi.fanli.util.FilePathEnum;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.factory.goods.GoodsDetailVOFactory;
import com.yeshi.fanli.vo.brand.BrandInfoVO;
@@ -51,6 +52,9 @@
   @Resource
   private HongBaoManageService hongBaoManageService;
   @Resource
   private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService;
   @Resource
   private QualityGoodsService qualityGoodsService;
@@ -75,8 +79,7 @@
   @Resource(name = "taskExecutor")
   private TaskExecutor executor;
   @Override
   public void saveObject(MultipartFile file, BrandInfo record) throws BrandInfoException {
      String name = record.getName();
@@ -84,20 +87,19 @@
         throw new BrandInfoException(1, "名称不能为空");
      BrandClass brandClass = record.getBrandClass();
      if (brandClass ==null || brandClass.getId() == null)
      if (brandClass == null || brandClass.getId() == null)
         throw new BrandInfoException(1, "分类不能为空");
      BrandInfo existBrand = brandInfoMapper.selectByUniqueName(name.trim(), brandClass.getId(), record.getId());
      if (existBrand != null)
         throw new BrandInfoException(1, "该分类中已存在:" + name.trim());
      Integer state = record.getState();
      if (state == null) {
         state = 0;
         record.setState(state);
      }
      String picture = null;
      if (file != null) {
         try { // 图片上传
@@ -106,27 +108,27 @@
            throw new BrandInfoException(1, "图片上传失败");
         }
      }
      String searchKey = record.getSearchKey();
      if (!StringUtil.isNullOrEmpty(searchKey)) {
         if (StringUtil.isNullOrEmpty(record.getSearchKeyJD()))
            record.setSearchKeyJD(searchKey);
         if (StringUtil.isNullOrEmpty(record.getSearchKeyPDD()))
            record.setSearchKeyPDD(searchKey);
      }
      String shopKey = record.getShopKey();
      if (!StringUtil.isNullOrEmpty(shopKey)) {
         if (StringUtil.isNullOrEmpty(record.getShopKeyJD()))
            record.setShopKeyJD(shopKey);
         if (StringUtil.isNullOrEmpty(record.getShopKeyPDD()))
            record.setShopKeyPDD(shopKey);
      }
      record.setName(name.trim());
      record.setUpdateTime(new Date());
      Long id = record.getId();
      if (id == null) {
         record.setIcon(picture);
@@ -135,7 +137,7 @@
         record.setShopTotal(0);
         record.setCreateTime(new Date());
         brandInfoMapper.insert(record);
         BrandInfo resultObj = new BrandInfo();
         resultObj.setId(record.getId());
         resultObj.setOrder(Integer.valueOf(record.getId().toString()));
@@ -149,14 +151,15 @@
            // 删除老图
            if (resultObj.getIcon() != null && resultObj.getIcon().trim().length() > 0 && !Constant.IS_TEST) {
               COSManager.getInstance().deleteFile(resultObj.getIcon());
            };
            }
            ;
            // 存储新图
            record.setIcon(picture);
         } else {
            record.setIcon(resultObj.getIcon());
         }
         if (state == 0){
         if (state == 0) {
            record.setGoodsTotal(0);
            record.setShopTotal(0);
         } else {
@@ -167,8 +170,8 @@
         record.setWeight(resultObj.getWeight());
         record.setCreateTime(resultObj.getCreateTime());
         brandInfoMapper.updateByPrimaryKey(record);
         if (state == 0){
         if (state == 0) {
            executor.execute(new Runnable() {
               @Override
               public void run() {
@@ -184,7 +187,7 @@
            @Override
            public void run() {
               BrandInfo numInfo = brandGoodsCaheService.addBrandGoods(record);
               BrandInfo update = new BrandInfo();
               update.setId(record.getId());
               update.setGoodsTotal(numInfo.getGoodsTotal());
@@ -195,76 +198,98 @@
      }
   }
   /**
    * 上传图片
    *
    * @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="/img/brand/"+UUID.randomUUID().toString().replace("-", "") + "." + type;
      String filePath = FilePathEnum.brand.getPath() + UUID.randomUUID().toString().replace("-", "") + "." + type;
      // 执行上传
      String fileLink= COSManager.getInstance().uploadFile(inputStream, filePath).getUrl();
      return fileLink;
      return COSManager.getInstance().uploadFile(inputStream, filePath).getUrl();
   }
   @Override
   public void switchState(Long id) throws BrandInfoException {
      if (id == null) {
         throw new BrandInfoException(1, "请传递正确参数");
      }
      BrandInfo resultObj = brandInfoMapper.selectByPrimaryKey(id);
      if (resultObj == null) {
         throw new BrandInfoException(1, "此内容已不存在");
      }
      Integer state = resultObj.getState();
      if (state == null || state == 0) {
         state = 1;
      } else {
         state = 0;
      }
      BrandInfo updateObj = new BrandInfo();
      updateObj.setId(id);
      updateObj.setState(state);
      brandInfoMapper.updateByPrimaryKeySelective(updateObj);
   }
   
   @Override
   public int deleteBatchByPrimaryKey(List<Long> list) {
      executor.execute(new Runnable() {
         @Override
         public void run() {
            for (Long id: list) {
            for (Long id : list) {
               brandGoodsCaheService.removeByBrandId(id);
               brandShopCaheService.removeByBrandId(id);
            }
         }
      });
      return brandInfoMapper.deleteBatchByPrimaryKey(list);
   }
   @Override
   public void updateOrder(Long id, Integer moveType) throws BrandInfoException {
      if (moveType == null || (!moveType.equals(1) && !moveType.equals(-1)))
         throw new BrandInfoException(1, "传递的类型不正确");
      if (id == null)
         throw new BrandInfoException(1, "ID不能为空");
      BrandInfo resultObj = brandInfoMapper.selectByPrimaryKey(id);
      if (resultObj == null)
      if (resultObj == null)
         throw new BrandInfoException(1, "操作数据已不存在");
      Integer oldOrder = resultObj.getOrder();
      BrandInfo changeObj = brandInfoMapper.getByAdjoinOrder(resultObj.getBrandClass().getId(),oldOrder, moveType);
      if (changeObj == null )
      BrandInfo changeObj = brandInfoMapper.getByAdjoinOrder(resultObj.getBrandClass().getId(), oldOrder, moveType);
      if (changeObj == null)
         throw new BrandInfoException(1, "已经在最边缘,无可交换的位置");
      BrandInfo changeObj1 = new BrandInfo();
      changeObj1.setId(id);
      changeObj1.setOrder(changeObj.getOrder());
      BrandInfo changeObj2 = new BrandInfo();
      changeObj2.setId(changeObj.getId());
      changeObj2.setOrder(oldOrder);
      brandInfoMapper.updateByPrimaryKeySelective(changeObj1);
      brandInfoMapper.updateByPrimaryKeySelective(changeObj2);
   }
   @Override
   public List<BrandInfo> listQuery(long start, int count, List<String> keys, Long cid, Integer state, Integer showState) {
      return brandInfoMapper.listQuery(start, count, keys, cid, state,showState);
   public List<BrandInfo> listQuery(long start, int count, List<String> keys, Long cid, Integer state,
         Integer showState) {
      return brandInfoMapper.listQuery(start, count, keys, cid, state, showState);
   }
   @Override
@@ -291,11 +316,11 @@
   }
   @Override
   @Cacheable(value = "brandCache", key = "'listBrandInfoCache-'+#start+'-'+#start +'-'+#cid")
   public List<BrandInfoVO> listBrandInfoCache(long start, int count, Long cid) {
   @Cacheable(value = "brandCache", key = "'listBrandInfoCache-'+#start+'-'+#start +'-'+#cid+'-'+#platform+'-'+#version")
   public List<BrandInfoVO> listBrandInfoCache(long start, int count, Long cid, String platform, String version) {
      List<BrandInfoVO> listInfo = new ArrayList<BrandInfoVO>();
      List<TaoBaoShopVO> listShop = brandClassShopService.listEffectiveShop(start, count, cid);
      List<TaoBaoShopVO> listShop = brandClassShopService.listEffectiveShop(start, count, cid, platform, version);
      if (listShop == null || listShop.size() == 0)
         return listInfo;
@@ -324,15 +349,14 @@
      return brandClassShopService.countBrandShopinfo(cid);
   }
   @Override
   public void removeAgoByDate(Date date) {
      // 删除商品
      brandGoodsCaheService.removeAgoByDate(date);
      // 删除店铺
      brandShopCaheService.removeAgoByDate(date);
      long count = brandInfoMapper.countValidByCid(null);
      if (count == 0)
         return;
@@ -344,6 +368,7 @@
   /**
    * 更新商品数量
    *
    * @param start
    * @param count
    */
@@ -351,13 +376,13 @@
      List<BrandInfo> list = brandInfoMapper.listValidAll(start, count);
      if (list == null || list.size() == 0)
         return;
      for (BrandInfo brandInfo : list) {
         long goodsTotal = brandGoodsCaheService.countByBrandId(brandInfo.getId());
         BrandInfo updateInfo = new BrandInfo();
         updateInfo.setId(brandInfo.getId());
         updateInfo.setGoodsTotal((int)goodsTotal);
         updateInfo.setGoodsTotal((int) goodsTotal);
         List<BrandShopCahe> listshop = brandShopCaheService.getByBrandId(brandInfo.getId());
         if (listshop == null) {
            updateInfo.setShopTotal(0);
@@ -368,14 +393,19 @@
         brandInfoMapper.updateByPrimaryKeySelective(updateInfo);
      }
   }
   @Override
   public void addShopAndGoods(long start, int count) {
      List<BrandInfo> list = brandInfoMapper.listValidAll(start, count);
      addShopAndGoods(list);
   }
   @Override
   public void addShopAndGoods(List<BrandInfo> list) {
      if (list == null || list.size() == 0)
         return;
      // long startTime = java.lang.System.currentTimeMillis();
      for (BrandInfo brandInfo : list) {
         try {
            String name = brandInfo.getName();
@@ -384,8 +414,8 @@
               continue;
            // 添加商品
            BrandInfo numInfo = brandGoodsCaheService.addBrandGoods(brandInfo);
            BrandInfo updateInfo = new BrandInfo();
            BrandInfo updateInfo = new BrandInfo();
            updateInfo.setId(brandInfo.getId());
            updateInfo.setWeight(Math.random() * 1000);
            updateInfo.setGoodsTotal(numInfo.getGoodsTotal());
@@ -395,8 +425,8 @@
         } catch (Exception e) {
            LogHelper.errorDetailInfo(e);
         }
      }
      // long endTime = java.lang.System.currentTimeMillis();
   }
   @Override
@@ -419,20 +449,19 @@
   @Cacheable(value = "brandCache", key = "'listValidToApp-'+#start+'-'+#cid")
   @Override
   public List<BrandInfoVO> listValidToApp(long start, int count, Long cid) {
   public List<BrandInfoVO> listValidToApp(long start, int count, Long cid, String platform, String version) {
      List<BrandInfoVO> list = brandInfoMapper.listBrandInfoVO(start, count, cid);
      if (list == null || list.size() == 0)
         return null;
      BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
      BigDecimal shareRate = hongBaoManageService.getShareRate();
      ConfigParamsDTO configParamsDTO = new ConfigParamsDTO(fanLiRate, shareRate, Constant.MAX_REWARD_RATE,hongBaoManageService.getVIPFanLiRate());
      ConfigParamsDTO configParamsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(platform, version);
      List<BrandInfoVO> listInfo = new ArrayList<BrandInfoVO>();
      for (int i = 0; i < list.size(); i++) {
         BrandInfoVO brand = list.get(i);
         if (brand == null)
            continue;
         List<BrandGoodsCahe> listGoods = brandGoodsCaheService.getByBrandId(1, 3, brand.getId());
         if (listGoods == null || listGoods.size() < 3)
            continue;
@@ -465,24 +494,19 @@
      }
      return listInfo;
   }
   @Override
   @Cacheable(value = "brandCache", key = "'listByAlikeName-'+#key")
   public BrandInfoVO listByAlikeName(String key) {
   @Cacheable(value = "brandCache", key = "'listByAlikeName-'+#key+'-'+#platform+'-'+#version")
   public BrandInfoVO listByAlikeName(String key, String platform, String version) {
      if (StringUtil.isNullOrEmpty(key))
         return null;
      List<BrandInfoVO> list = brandInfoMapper.listByAlikeName(key);
      if (list == null || list.size() == 0)
         return null;
      BigDecimal fanLiRate = hongBaoManageService.getFanLiRate();
      BigDecimal shareRate = hongBaoManageService.getShareRate();
      ConfigParamsDTO configParamsDTO = new ConfigParamsDTO(fanLiRate, shareRate, Constant.MAX_REWARD_RATE,hongBaoManageService.getVIPFanLiRate());
      ConfigParamsDTO configParamsDTO = orderHongBaoMoneyComputeService.getShowComputeRate(platform, version);
      BrandInfoVO brand = list.get(0);
      List<BrandGoodsCahe> listGoods = brandGoodsCaheService.getByBrandId(1, 3, brand.getId());
      if (listGoods == null || listGoods.size() < 3)
@@ -509,10 +533,16 @@
         }
      }
      if (listGoodsVO.size() < 3)
      if (listGoodsVO.size() < 3)
         return null;
      brand.setListGoods(listGoodsVO);
      return brand;
   }
   @Override
   public List<BrandInfo> listValidOrderByUpdateTime(int page, int pageSize) {
      return brandInfoMapper.listValidAll((page - 1) * pageSize, pageSize);
   }
}