yujian
2020-04-02 0ec22dcf4fd9c4496e6f681e7fab89f56c6e4e8a
fanli/src/main/java/com/yeshi/fanli/service/impl/help/HelpCenterServiceImpl.java
@@ -25,6 +25,7 @@
import com.yeshi.fanli.exception.config.HelpCenterException;
import com.yeshi.fanli.service.inter.help.HelpCenterService;
import com.yeshi.fanli.service.inter.homemodule.AdActivityVersionControlService;
import com.yeshi.fanli.util.FilePathEnum;
import com.yeshi.fanli.util.StringUtil;
import com.yeshi.fanli.util.db.MongoDBManager;
@@ -33,47 +34,51 @@
   @Resource
   private HelpCenterMapper helpCenterMapper;
   @Resource
   private MongoDBManager mongoDBManager;
   @Resource
   private AdActivityVersionControlService adActivityVersionControlService;
   @Override
   public int insertSelective(HelpCenter record) throws HelpCenterException {
      return helpCenterMapper.insertSelective(record);
   }
   @Override
   public int updateByPrimaryKey(HelpCenter record) throws HelpCenterException {
   public int updateByPrimaryKey(HelpCenter record) {
      return helpCenterMapper.updateByPrimaryKey(record);
   }
   @Override
   public int updateByPrimaryKeySelective(HelpCenter record) throws HelpCenterException {
   public int updateByPrimaryKeySelective(HelpCenter record) {
      return helpCenterMapper.updateByPrimaryKeySelective(record);
   }
   @Override
   public HelpCenter selectByPrimaryKey(Long id) throws HelpCenterException {
   public HelpCenter selectByPrimaryKey(Long id) {
      return helpCenterMapper.selectByPrimaryKey(id);
   }
   @Override
   public HelpCenter selectByPrimaryKeyCache(Long id) throws HelpCenterException {
   public HelpCenter selectByPrimaryKeyCache(Long id) {
      return selectByPrimaryKey(id);
   }
   @Override
   public String save(HelpCenter helpCenter, String content, String html) throws HelpCenterException,Exception {
   public String save(HelpCenter helpCenter, String content, String html) throws HelpCenterException, Exception {
      if (StringUtil.isNullOrEmpty(helpCenter.getTitle()))
         throw new HelpCenterException(1,"标题不能为空");
         throw new HelpCenterException(1, "标题不能为空");
      if (helpCenter.getHelpClass() == null || helpCenter.getHelpClass().getId() <= 0)
         throw new HelpCenterException(1,"分类题不能为空");
         throw new HelpCenterException(1, "分类题不能为空");
      Integer state = helpCenter.getState();
      if (state == null) {
         helpCenter.setState(0);
      }
      Integer weight = helpCenter.getWeight();
      if (weight == null) {
         helpCenter.setWeight(0);
      }
      helpCenter.setUpdatetime(new Date());
      Long id = helpCenter.getId();
      if (id == null) {
@@ -81,19 +86,18 @@
         helpCenterMapper.insert(helpCenter);
      } else {
         HelpCenter result = helpCenterMapper.selectByPrimaryKey(id);
         if (result == null)
            throw new HelpCenterException(1,"此类内容已不存在,请刷新");
         if (result == null)
            throw new HelpCenterException(1, "此类内容已不存在,请刷新");
         helpCenter.setCreatetime(result.getCreatetime());
         helpCenter.setWeight(result.getWeight());
         helpCenterMapper.updateByPrimaryKey(helpCenter);
      }
      List<Map<String, Object>> positions = getPosition(html);
      if (positions != null && positions.size() > 0) {
         @SuppressWarnings("restriction")
         sun.misc.BASE64Decoder decoder = new sun.misc.BASE64Decoder();
         for (int i = 0; i < positions.size(); i++) {
            Map<String, Object> map = positions.get(i);
            String base64Img = (String) map.get("base64Img");
@@ -106,7 +110,8 @@
            String type = (String) map.get("type");
            // 上传文件相对位置
            String fileUrl = "helpInfo/" + UUID.randomUUID().toString().replace("-", "") + "." +type;
            String fileUrl = FilePathEnum.helpCenterContent + UUID.randomUUID().toString().replace("-", "") + "."
                  + type;
            /* 上传新图片 */
            String uploadFilePath = COSManager.getInstance().uploadFileByte(b, fileUrl).getUrl();
@@ -116,8 +121,7 @@
            }
         }
      }
      String replaceHtml = replaceIframe(html);
      Long backId = helpCenter.getId();
      HelpInfo helpInfo = new HelpInfo(backId, content, replaceHtml);
@@ -152,29 +156,26 @@
            indexStart = tm + compareStrLength;
            indexTypeStart = typetm + compareStrLength;
            //System.out.println(indexStart);
            //System.out.println(indexTypeStart);
            // System.out.println(indexStart);
            // System.out.println(indexTypeStart);
            place.put("start", tm + 7);
            String suffix = content.substring(typetm + 11, tm - 1);
            place.put("type", suffix);
            String newContent = content.substring(tm + 7, content.length());
            char qmark = '"';
            int end = newContent.indexOf(qmark);
            place.put("end", end);
            String base64Img = newContent.substring(0, end);
            place.put("base64Img", base64Img);
            String header = compareStrStart + suffix+ ";" + compareStr +"," +base64Img;
            String header = compareStrStart + suffix + ";" + compareStr + "," + base64Img;
            place.put("header", header);
            listMap.add(place);
         }
      }
@@ -183,101 +184,94 @@
   }
   public String replaceIframe(String html) {
      String result = html;
      // 字符串查找初始从0开始查找
      int indexStart = 0;
      // 需要对比的字符串
      String compareStr = "<iframe";
      int compareStrLength = compareStr.length();
      while (true) {
         int tm = html.indexOf(compareStr, indexStart);
         if (tm <= 0) {
            // 直到没有匹配结果为止
            break;
         } else {
            // 起始位置
            indexStart = tm + compareStrLength;
            // 结束位置
            String newContent = html.substring(tm, html.length());
            int end = newContent.indexOf("</iframe>");
            // 替换指定字段  <iframe src=""></iframe>
            String replaceStr = html.substring(tm,  tm +  end + 9);
            // 替换指定字段 <iframe src=""></iframe>
            String replaceStr = html.substring(tm, tm + end + 9);
            char qmark = '"';
            // src 起始位置
            int srcindex = replaceStr.indexOf("src=", 0);
            String replaceSrc = replaceStr.substring(srcindex + 5, replaceStr.length());
            // src "结束位置
            int endsrc = replaceSrc.indexOf(qmark, 0);
            String src = replaceSrc.substring(0, endsrc +1);
            String src = replaceSrc.substring(0, endsrc + 1);
            String voide = "<video src=\"" + src + " controls=\"controls\"> 您的浏览器不支持video标签,请更新浏览器</video>";
            result = html.replace(replaceStr, voide);
         }
      }
      return result;
   }
   @Override
   public List<HelpCenter> query(int pageIndex, int pageSize, String key, Long cid, Integer orderMode) throws HelpCenterException {
      return helpCenterMapper.query(pageIndex, pageSize, key, cid, orderMode);
   public List<HelpCenter> query(int pageIndex, int pageSize, String key, Long cid, Integer orderMode, Integer state) {
      return helpCenterMapper.query(pageIndex, pageSize, key, cid, orderMode, state);
   }
   @Override
   public long countQuery(String key, Long cid) throws HelpCenterException {
      return helpCenterMapper.countQuery(key, cid);
   public long countQuery(String key, Long cid, Integer state) {
      return helpCenterMapper.countQuery(key, cid, state);
   }
   @Override
   @Cacheable(value = "helpCenterCache",key="'queryIdAndTitle-'+#pageIndex+'-'+#key+'-'+#cid")
   public List<HelpCenter> queryIdAndTitle(int pageIndex, int pageSize, String key, Long cid)
         throws HelpCenterException {
      return helpCenterMapper.queryIdAndTitle(pageIndex, pageSize, key, cid);
   @Cacheable(value = "helpCenterCache", key = "'queryIdAndTitle-'+#pageId+'-'+#key+'-'+#cid")
   public List<HelpCenter> listValid(long pageId, int pageSize, String key, Long cid) {
      return helpCenterMapper.listValid(pageId, pageSize, key, cid);
   }
   @Override
   public int deleteBatchById(List<String> idList) throws HelpCenterException {
   public int deleteBatchById(List<String> idList) {
      return helpCenterMapper.deleteBatchById(idList);
   }
   @Override
   public HelpInfo getHelpInfo(Long id) throws HelpCenterException {
   public HelpInfo getHelpInfo(Long id) {
      return mongoDBManager.getHelpInfo(id);
   }
   @Override
   @Cacheable(value = "helpCenterCache",key="'getHelpInfoCache-'+#id")
   public HelpInfo getHelpInfoCache(Long id) throws HelpCenterException {
   @Cacheable(value = "helpCenterCache", key = "'getHelpInfoCache-'+#id")
   public HelpInfo getHelpInfoCache(Long id) {
      return getHelpInfo(id);
   }
   @Override
   @Transactional
   public void deleteInfoBatchById(List<String> idList) throws HelpCenterException {
   @Transactional(rollbackFor = Exception.class)
   public void deleteInfoBatchById(List<String> idList) {
      if (idList != null) {
         for (String id : idList) {
            mongoDBManager.removeHelpInfo(Long.parseLong(id));
         }
      }
   }
   @Transactional(rollbackFor = Exception.class)
   @Override