yujian
2020-05-09 7e7db2fa55a9a3af46d4fd8ede0dee147f101d64
fanli/src/main/java/com/yeshi/fanli/service/impl/dynamic/GoodsEvaluateServiceImpl.java
@@ -54,6 +54,7 @@
import com.yeshi.fanli.service.inter.config.ConfigService;
import com.yeshi.fanli.service.inter.dynamic.GoodsEvaluateService;
import com.yeshi.fanli.service.inter.goods.ShareGoodsService;
import com.yeshi.fanli.service.inter.order.OrderHongBaoMoneyComputeService;
import com.yeshi.fanli.service.inter.order.config.HongBaoManageService;
import com.yeshi.fanli.service.inter.taobao.dataoke.DaTaoKeGoodsDetailV2Service;
import com.yeshi.fanli.service.manger.goods.ConvertLinkManager;
@@ -89,6 +90,9 @@
   @Resource
   private HongBaoManageService hongBaoManageService;
   @Resource
   private OrderHongBaoMoneyComputeService orderHongBaoMoneyComputeService;
   @Resource(name = "taskExecutor")
   private TaskExecutor executor;
@@ -111,6 +115,28 @@
   @Resource
   private DaTaoKeGoodsDetailV2Service daTaoKeGoodsDetailV2Service;
   @Override
   public void switchState(String id) throws GoodsEvaluateException {
      if (id == null) {
         throw new GoodsEvaluateException(1, "请传递正确参数");
      }
      GoodsEvaluate resultObj = goodsEvaluateDao.getById(id);
      if (resultObj == null) {
         throw new GoodsEvaluateException(1, "此内容已不存在");
      }
      Integer state = resultObj.getState();
      if (state == null || state == 0) {
         state = 1;
      } else {
         state = 0;
      }
      goodsEvaluateDao.updateSatate(id, state);
   }
   @Override
   public String saveHead(MultipartFile file, GoodsEvaluate record) throws GoodsEvaluateException {
      Integer state = record.getState();
@@ -137,7 +163,11 @@
         if (record.getStartTime() != null && record.getEndTime().getTime() <= record.getStartTime().getTime())
            throw new GoodsEvaluateException(1, "截止时间必须大于开始时间");
      } else {
         record.setEndTime(DateUtil.plusDayDate(3, new Date()));
         if (record.getStartTime() == null) {
            record.setEndTime(DateUtil.plusDayDate(3, new Date()));
         } else {
            record.setEndTime(DateUtil.plusDayDate(3, record.getStartTime()));
         }
      }
      Integer dynamicType = record.getDynamicType();
@@ -362,7 +392,7 @@
      GoodsDetailVO goodsDetailVO = null;
      JDGoods jdGoods = null;
      PDDGoodsDetail pddGoods = null;
      ConfigParamsDTO params = hongBaoManageService.getShowComputeRate("android", "55");
      ConfigParamsDTO params = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55");
      params.setBaseFanliRate(hongBaoManageService.getBaseFanliRate());
      if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
         try {
@@ -445,7 +475,7 @@
            lineNum = 1;
         } else if (totalImg == 3) {
            lineNum = 3;
         } else if (totalImg <= 4) {
         } else if (totalImg == 2 || totalImg == 4) {
            lineNum = 2;
         } else {
            lineNum = 3;
@@ -584,7 +614,7 @@
   public GoodsDetailVO getGoodsDetailVO(Long goodsId, Integer goodsType) throws GoodsEvaluateException {
      GoodsDetailVO goodsDetail = null;
      ConfigParamsDTO params = hongBaoManageService.getShowComputeRate("android", "55");
      ConfigParamsDTO params = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55");
      params.setBaseFanliRate(hongBaoManageService.getBaseFanliRate());
      if (goodsType == Constant.SOURCE_TYPE_TAOBAO) {
         try {
@@ -780,7 +810,7 @@
            lineNum = 1;
         } else if (totalImg == 3) {
            lineNum = 3;
         } else if (totalImg <= 4) {
         } else if (totalImg == 2 || totalImg == 4) {
            lineNum = 2;
         } else {
            lineNum = 3;
@@ -971,7 +1001,7 @@
   }
   @Override
   public void saveActivityPic(String pid, ImgInfo imgInfo, MultipartHttpServletRequest fileRequest)
   public void saveActivityPic(String pid, ImgInfo imgInfo, String picUrls, MultipartHttpServletRequest fileRequest)
         throws GoodsEvaluateException, Exception {
      if (StringUtil.isNullOrEmpty(pid)) {
         throw new GoodsEvaluateException(1, "请保存第一部分信息");
@@ -980,122 +1010,166 @@
      GoodsEvaluate resultObj = goodsEvaluateDao.getById(pid);
      if (resultObj == null)
         throw new GoodsEvaluateException(1, "第一部分信息缺失");
      if (imgInfo == null || StringUtil.isNullOrEmpty(imgInfo.getActivityUrl())) {
         throw new GoodsEvaluateException(1, "活动链接不能为空");
      }
      String videoPic = null;
      String activityPic = null;
      ImgInfo imgVideo = null;
      ImgInfo imgactivity = null;
      List<String> listDel = new ArrayList<String>();
      List<ImgInfo> listOld = new ArrayList<ImgInfo>();
      List<ImgInfo> resultList = resultObj.getImgList();
      if (resultList != null && resultList.size() > 0) {
         for (ImgInfo info : resultList) {
            if (info.getType() == ImgEnum.activity) {
               activityPic = info.getActivityPic();
               imgactivity = info;
            } else {
            if (info.getType() == ImgEnum.video) {
               imgVideo = info;
               videoPic = info.getUrl();
            } else {
               listOld.add(info);
            }
         }
      }
      // 视频部分
      if (fileRequest != null) {
         MultipartFile filevideo = fileRequest.getFile("filevideo");
         if (filevideo != null) {
            if (StringUtil.isNullOrEmpty(imgInfo.getVideoUrl())) {
               throw new GoodsEvaluateException(1, "视频链接不能为空");
            }
            ImgInfo info = uploadVideoPicture(filevideo);
            if (info == null)
               throw new GoodsEvaluateException(2, "视频图片上传失败");
            if (imgVideo != null) {
               String url = imgVideo.getUrl();
               if (!StringUtil.isNullOrEmpty(url)) {
                  listDel.add(url);
               }
               imgVideo.setUrl(info.getUrl());
               imgVideo.setUrlHD(info.getUrl());
            } else {
               imgVideo = new ImgInfo();
               imgVideo.setId(UUID.randomUUID().toString().replace("-", ""));
               imgVideo.setLarge(true);
               imgVideo.setPid(pid);
               imgVideo.setUrl(info.getUrl());
               imgVideo.setUrlHD(info.getUrl());
               imgVideo.setVideoUrl(imgInfo.getVideoUrl());
               imgVideo.setType(ImgEnum.video);
            }
            imgVideo.setW(info.getW());
            imgVideo.setH(info.getH());
         }
      }
      List<ImgInfo> listImg = new ArrayList<ImgInfo>();
      if (imgVideo != null) {
         if (!StringUtil.isNullOrEmpty(imgInfo.getVideoUrl())) {
            if (imgVideo != null && StringUtil.isNullOrEmpty(imgVideo.getUrl())) {
               throw new GoodsEvaluateException(1, "视频封面图不能为空");
            }
            imgVideo.setVideoUrl(imgInfo.getVideoUrl());
            listImg.add(imgVideo);
         } else {
            String url = imgVideo.getUrl();
            if (!StringUtil.isNullOrEmpty(url)) {
               listDel.add(url);
            }
         }
      }
      // 编辑图片
      List<ImgInfo> tempList = new ArrayList<ImgInfo>();
      if (!StringUtil.isNullOrEmpty(picUrls)) {
         String[] pics = picUrls.split(",");
         if (pics != null) {
            for (int i = 0; i < pics.length; i++) {
               String picLink = pics[i];
               if (picLink.startsWith("http")) {
                  if (listOld != null) {
                     for (ImgInfo info: listOld) {
                        if (info.getUrl().equals(picLink)) {
                           tempList.add(info);
                           break;
                        }
                     }
                  }
               }
            }
         }
      }
      int width = 0;
      int height = 0;
      int width2 = 0;
      int height2 = 0;
      List<ImgInfo> listImg = new ArrayList<ImgInfo>();
      // 上传文件替换
      if (fileRequest != null) {
         MultipartFile filevideo = fileRequest.getFile("filevideo");
         if (filevideo != null) {
            removePicture(videoPic);
            ImgInfo info = uploadVideoPicture(filevideo);
            if (info == null)
               throw new GoodsEvaluateException(2, "视频图片上传失败");
            videoPic = info.getUrl();
            width = info.getW();
            height = info.getH();
         }
         MultipartFile activityfile = fileRequest.getFile("activityfile");
         if (activityfile != null) {
            removePicture(activityPic);
            InputStream inputStream = activityfile.getInputStream();
            BufferedImage sourceImg = ImageIO.read(inputStream);
            width2 = sourceImg.getWidth();
            height2 = sourceImg.getHeight();
            String picLink = uploadPicture(activityfile);
            activityPic = picLink;
         for (int i = 0; i < 9; i++) {
            MultipartFile file = fileRequest.getFile("file" + i);
            if (file != null) {
               ImgInfo info = uploadVideoPicture(file);
               ImgInfo imgInfo0 = new ImgInfo();
               imgInfo0.setId(UUID.randomUUID().toString().replace("-", ""));
               imgInfo0.setLarge(false);
               imgInfo0.setPid(pid);
               imgInfo0.setUrl(info.getUrl());
               imgInfo0.setUrlHD(info.getUrl());
               imgInfo0.setType(ImgEnum.img);
               imgInfo0.setW(info.getW());
               imgInfo0.setH(info.getH());
               if (i < tempList.size()) {
                  tempList.set(i, imgInfo0);
               } else {
                  tempList.add(imgInfo0);
               }
            }
         }
      }
      if (!StringUtil.isNullOrEmpty(videoPic) || !StringUtil.isNullOrEmpty(imgInfo.getVideoUrl())) {
         if (imgVideo != null) {
            imgVideo.setUrl(videoPic);
            imgVideo.setUrlHD(videoPic);
            imgVideo.setVideoUrl(imgInfo.getVideoUrl());
         } else {
            imgVideo = new ImgInfo();
            imgVideo.setId(UUID.randomUUID().toString().replace("-", ""));
            imgVideo.setLarge(true);
            imgVideo.setPid(pid);
            imgVideo.setUrl(videoPic);
            imgVideo.setUrlHD(videoPic);
            imgVideo.setVideoUrl(imgInfo.getVideoUrl());
            imgVideo.setType(ImgEnum.video);
         }
         if (width > 0) {
            imgVideo.setW(width);
            imgVideo.setH(height);
         } else {
            imgVideo.setW(imgVideo.getW());
            imgVideo.setH(imgVideo.getH());
         }
         listImg.add(imgVideo);
      }
      int totalImg = 0;
      if (!StringUtil.isNullOrEmpty(activityPic) || !StringUtil.isNullOrEmpty(imgInfo.getActivityUrl())) {
         if (imgactivity != null) {
            imgactivity.setUrl(activityPic);
            imgactivity.setUrlHD(activityPic);
            imgactivity.setActivityUrl(imgInfo.getActivityUrl());
         } else {
            imgactivity = new ImgInfo();
            imgactivity.setId(UUID.randomUUID().toString().replace("-", ""));
            imgactivity.setLarge(true);
            imgactivity.setPid(pid);
            imgactivity.setUrl(activityPic);
            imgactivity.setUrlHD(activityPic);
            imgactivity.setActivityUrl(imgInfo.getActivityUrl());
            imgactivity.setType(ImgEnum.activity);
         }
         if (width2 > 0) {
            imgactivity.setW(width2);
            imgactivity.setH(height2);
         } else {
            imgactivity.setW(imgactivity.getW());
            imgactivity.setH(imgactivity.getH());
         }
         listImg.add(imgactivity);
         totalImg++;
      }
      int lineNum = 0;
      int totalImg = tempList.size();
      if (totalImg > 0) {
         if (totalImg == 1) {
            lineNum = 1;
         } else if (totalImg == 3) {
            lineNum = 3;
         } else if (totalImg <= 4) {
         } else if (totalImg == 2 || totalImg == 4) {
            lineNum = 2;
         } else {
            lineNum = 3;
         }
      }
      if (tempList.size() > 0) {
         listImg.addAll(tempList);
      }
      // 清理老图片
      if (listOld != null && listOld.size() > 0) {
         for (ImgInfo infoOld: listOld) {
            boolean del = true;
            String oldPic = infoOld.getUrl();
            for (ImgInfo info : listImg) {
               if (info.getUrl().equals(oldPic)) {
                  del = false;
               }
            }
            if (del)
               listDel.add(infoOld.getUrl());
         }
      }
      resultObj.setJumpLink(imgInfo.getActivityUrl());
      resultObj.setLineNum(lineNum);
      resultObj.setImgList(listImg);
      goodsEvaluateDao.save(resultObj);
      // 删除图片
      if (listDel.size() > 0) {
         for (String url : listDel) {
            if (url.contains(FilePathEnum.goodsEvaluate.getPath())) {
               removePicture(url);
            }
         }
      }
   }
   @Override
@@ -1276,7 +1350,7 @@
            lineNum = 1;
         } else if (totalImg == 3) {
            lineNum = 3;
         } else if (totalImg <= 4) {
         } else if (totalImg == 2 || totalImg == 4) {
            lineNum = 2;
         } else {
            lineNum = 3;
@@ -1428,13 +1502,13 @@
   }
   @Override
   public List<GoodsEvaluate> query(int start, int count, String key, Integer state, int dynamicType) {
      return goodsEvaluateDao.query(start, count, key, state, dynamicType);
   public List<GoodsEvaluate> query(int start, int count, String key, Integer state, int dynamicType, String typeEnum) {
      return goodsEvaluateDao.query(start, count, key, state, dynamicType, typeEnum);
   }
   @Override
   public long count(String key, Integer state, int dynamicType) {
      return goodsEvaluateDao.count(key, state, dynamicType);
   public long count(String key, Integer state, int dynamicType, String typeEnum) {
      return goodsEvaluateDao.count(key, state, dynamicType, typeEnum);
   }
   @Override
@@ -1488,6 +1562,8 @@
            // 删除已过期
            removeOverdue();
            removeDownGoods();
         }
      });
@@ -1655,6 +1731,8 @@
            // 删除已过期
            removeOverdue();
            removeDownGoods();
         }
      });
@@ -1681,7 +1759,7 @@
      try {
         Date now = new Date();
         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
         ConfigParamsDTO params = hongBaoManageService.getShowComputeRate("android", "55");
         ConfigParamsDTO params = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55");
         params.setBaseFanliRate(hongBaoManageService.getBaseFanliRate());
         for (GoodsEvaluate goodsEvaluate : list) {
            // 是否2个小时之内已更新
@@ -1836,7 +1914,7 @@
      imgs.addAll(goodsBrief.getImgList());
      // 商品VO
      ConfigParamsDTO paramsDTO = hongBaoManageService.getShowComputeRate("android", "55");
      ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55");
      paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate());
      GoodsDetailVO goodsVO = GoodsDetailVOFactory.convertTaoBao(goodsBrief, paramsDTO);
@@ -1903,7 +1981,7 @@
            lineNum = 1;
         } else if (imgList.size() == 3) {
            lineNum = 3;
         } else if (imgList.size() <= 4) {
         } else if (imgList.size() == 2 || imgList.size() == 4) {
            lineNum = 2;
         } else {
            lineNum = 3;
@@ -1977,7 +2055,7 @@
            return false;
         }
         ConfigParamsDTO paramsDTO = hongBaoManageService.getShowComputeRate("android", "55");
         ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55");
         paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate());
         GoodsDetailVO goodsVO = GoodsDetailVOFactory.convertTaoBao(goodsBrief, paramsDTO);
         // 发布用户
@@ -2131,7 +2209,7 @@
               lineNum = 1;
            } else if (imgList.size() == 3) {
               lineNum = 3;
            } else if (imgList.size() <= 4) {
            } else if (imgList.size() == 2 || imgList.size() == 4) {
               lineNum = 2;
            } else {
               lineNum = 3;
@@ -2202,7 +2280,7 @@
            return;
         }
         ConfigParamsDTO paramsDTO = hongBaoManageService.getShowComputeRate("android", "55");
         ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55");
         paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate());
         GoodsDetailVO goodsNew = GoodsDetailVOFactory.convertTaoBao(goods, paramsDTO);
         updateGoods(queryExist, goodsNew);
@@ -2222,7 +2300,7 @@
         return;
      }
      ConfigParamsDTO paramsDTO = hongBaoManageService.getShowComputeRate("android", "55");
      ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55");
      paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate());
      GoodsDetailVO goodsNew = GoodsDetailVOFactory.convertJDGoods(jdGoods, paramsDTO);
@@ -2239,7 +2317,7 @@
         return;
      }
      ConfigParamsDTO paramsDTO = hongBaoManageService.getShowComputeRate("android", "55");
      ConfigParamsDTO paramsDTO = orderHongBaoMoneyComputeService.getShowComputeRate("android", "55");
      paramsDTO.setBaseFanliRate(hongBaoManageService.getBaseFanliRate());
      GoodsDetailVO goodsNew = GoodsDetailVOFactory.convertPDDGoods(pddGoods, paramsDTO);
      updateGoods(queryExist, goodsNew);
@@ -2343,6 +2421,9 @@
   }
   
   /**
    * 删除已过期时间
    */
   private void removeOverdue() {
      List<GoodsEvaluate> list = goodsEvaluateDao.queryOverdue();
      if (list == null || list.size() == 0) {
@@ -2364,4 +2445,21 @@
      }
   }
   /**
    * 删除商品已下架-单品
    */
   private void removeDownGoods() {
      try {
         List<GoodsEvaluate> list = goodsEvaluateDao.removeDownGoods();
         if (list == null || list.size() == 0) {
            return;
         }
         for (GoodsEvaluate goodsEvaluate : list) {
            goodsEvaluateDao.remove(goodsEvaluate);
         }
      } catch (Exception e) {
         e.printStackTrace();
      }
   }
}