From 81da61b828e29b7745e1382dfbbaeb685dc083ef Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期二, 23 一月 2024 17:17:55 +0800 Subject: [PATCH] 抖音转链修改 --- fanli/src/main/java/com/yeshi/fanli/service/impl/help/HelpCenterServiceImpl.java | 679 +++++++++++++++++++++++++++++--------------------------- 1 files changed, 351 insertions(+), 328 deletions(-) diff --git a/fanli/src/main/java/com/yeshi/fanli/service/impl/help/HelpCenterServiceImpl.java b/fanli/src/main/java/com/yeshi/fanli/service/impl/help/HelpCenterServiceImpl.java index f60e158..70de69d 100644 --- a/fanli/src/main/java/com/yeshi/fanli/service/impl/help/HelpCenterServiceImpl.java +++ b/fanli/src/main/java/com/yeshi/fanli/service/impl/help/HelpCenterServiceImpl.java @@ -1,328 +1,351 @@ -package com.yeshi.fanli.service.impl.help; - -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.UUID; - -import javax.annotation.Resource; - -import org.springframework.cache.annotation.Cacheable; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.yeshi.utils.tencentcloud.COSManager; - -import com.yeshi.fanli.dao.mybatis.help.HelpCenterMapper; -import com.yeshi.fanli.entity.AppVersionInfo; -import com.yeshi.fanli.entity.bus.help.HelpCenter; -import com.yeshi.fanli.entity.bus.help.HelpInfo; -import com.yeshi.fanli.entity.bus.homemodule.AdActivityVersionControl; -import com.yeshi.fanli.entity.bus.homemodule.AdActivityVersionControl.AdActivityType; -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.StringUtil; -import com.yeshi.fanli.util.db.MongoDBManager; - -@Service -public class HelpCenterServiceImpl implements HelpCenterService { - - @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 { - return helpCenterMapper.updateByPrimaryKey(record); - } - - @Override - public int updateByPrimaryKeySelective(HelpCenter record) throws HelpCenterException { - return helpCenterMapper.updateByPrimaryKeySelective(record); - } - - @Override - public HelpCenter selectByPrimaryKey(Long id) throws HelpCenterException { - return helpCenterMapper.selectByPrimaryKey(id); - } - - @Override - public HelpCenter selectByPrimaryKeyCache(Long id) throws HelpCenterException { - return selectByPrimaryKey(id); - } - - @Override - public String save(HelpCenter helpCenter, String content, String html) throws HelpCenterException,Exception { - if (StringUtil.isNullOrEmpty(helpCenter.getTitle())) - throw new HelpCenterException(1,"鏍囬涓嶈兘涓虹┖"); - - if (helpCenter.getHelpClass() == null || helpCenter.getHelpClass().getId() <= 0) - throw new HelpCenterException(1,"鍒嗙被棰樹笉鑳戒负绌�"); - - helpCenter.setUpdatetime(new Date()); - Long id = helpCenter.getId(); - if (id == null) { - helpCenter.setCreatetime(new Date()); - helpCenterMapper.insert(helpCenter); - } else { - HelpCenter result = helpCenterMapper.selectByPrimaryKey(id); - 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"); - byte[] b = decoder.decodeBuffer(base64Img); - for (int j = 0; j < b.length; ++j) { - if (b[j] < 0) { - b[j] += 256; - } - } - - String type = (String) map.get("type"); - // 涓婁紶鏂囦欢鐩稿浣嶇疆 - String fileUrl = "helpInfo/" + UUID.randomUUID().toString().replace("-", "") + "." +type; - /* 涓婁紶鏂板浘鐗� */ - String uploadFilePath = COSManager.getInstance().uploadFileByte(b, fileUrl).getUrl(); - - if (!StringUtil.isNullOrEmpty(uploadFilePath)) { - String header = (String) map.get("header"); - html = html.replace(header, uploadFilePath); - } - } - } - - - String replaceHtml = replaceIframe(html); - Long backId = helpCenter.getId(); - HelpInfo helpInfo = new HelpInfo(backId, content, replaceHtml); - mongoDBManager.saveHelpInfo(helpInfo); - return html; - } - - public List<Map<String, Object>> getPosition(String content) { - - List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>(); - - // 闇�瑕佸姣旂殑瀛楃涓� - String compareStr = "base64"; - String compareStrStart = "data:image/"; - // 瀛楃涓叉煡鎵惧垵濮嬩粠0寮�濮嬫煡鎵� - int indexStart = 0; - int indexTypeStart = 0; - // 鑾峰彇鏌ユ壘瀛楃涓茬殑闀垮害锛岃繖閲屾湁涓寰嬶細绗簩娆℃煡鎵惧嚭瀛楃涓茬殑璧峰浣嶇疆绛変簬 绗竴娆b瀛楃涓插嚭鐜扮殑浣嶇疆+ab鐨勯暱搴� - int compareStrLength = compareStr.length(); - - while (true) { - Map<String, Object> place = new HashMap<String, Object>(); - - int tm = content.indexOf(compareStr, indexStart); - int typetm = content.indexOf(compareStrStart, indexTypeStart); - - if (tm <= 0) { - // 鐩村埌娌℃湁鍖归厤缁撴灉涓烘 - break; - } else { - // 娌℃煡鎵句竴娆″氨浠庢柊璁$畻涓嬫寮�濮嬫煡鎵剧殑浣嶇疆 - indexStart = tm + compareStrLength; - indexTypeStart = typetm + compareStrLength; - - //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; - place.put("header", header); - - - listMap.add(place); - } - } - - return listMap; - } - - 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); - - 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 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); - } - - @Override - public long countQuery(String key, Long cid) throws HelpCenterException { - return helpCenterMapper.countQuery(key, cid); - } - - - @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); - } - - @Override - public int deleteBatchById(List<String> idList) throws HelpCenterException { - return helpCenterMapper.deleteBatchById(idList); - } - - @Override - public HelpInfo getHelpInfo(Long id) throws HelpCenterException { - return mongoDBManager.getHelpInfo(id); - } - - @Override - @Cacheable(value = "helpCenterCache",key="'getHelpInfoCache-'+#id") - public HelpInfo getHelpInfoCache(Long id) throws HelpCenterException { - return getHelpInfo(id); - } - - - - @Override - @Transactional - public void deleteInfoBatchById(List<String> idList) throws HelpCenterException { - if (idList != null) { - for (String id : idList) { - mongoDBManager.removeHelpInfo(Long.parseLong(id)); - } - } - } - - - - - @Transactional(rollbackFor = Exception.class) - @Override - public void setVersions(Long id, List<Long> versions) throws HelpCenterException { - HelpCenter helpCenter = helpCenterMapper.selectByPrimaryKey(id); - if (helpCenter == null) { - throw new HelpCenterException(1, "姝や俊鎭笉瀛樺湪锛岃鍒锋柊閲嶈瘯"); - } - - Set<Long> oldSet = new HashSet<>(); - List<AdActivityVersionControl> versionList = adActivityVersionControlService - .listByTypeAndSourceId(AdActivityType.helpCenter, id); - if (versionList != null) { - for (AdActivityVersionControl control : versionList) - oldSet.add(control.getVersion().getId()); - } - - Set<Long> newSet = new HashSet<>(); - for (Long version : versions) { - newSet.add(version); - } - - Set<Long> delSet = new HashSet<>(); - delSet.addAll(oldSet); - delSet.removeAll(newSet); - for (Long versionId : delSet) { - adActivityVersionControlService.deleteBySourceAndVersion(id, AdActivityType.helpCenter, versionId); - } - - Set<Long> addSet = new HashSet<>(); - addSet.addAll(newSet); - addSet.removeAll(oldSet); - - // 娣诲姞鏄犲皠 - for (Long versionId : addSet) { - AdActivityVersionControl control = new AdActivityVersionControl(); - control.setCreateTime(new Date()); - control.setSourceId(id); - control.setType(AdActivityType.helpCenter); - control.setVersion(new AppVersionInfo(versionId)); - try { - adActivityVersionControlService.addVersionControl(control); - } catch (Exception e) { - throw new HelpCenterException(2, e.getMessage()); - } - } - } -} +package com.yeshi.fanli.service.impl.help; + +import java.util.ArrayList; +import java.util.Date; +import java.util.HashMap; +import java.util.HashSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.UUID; + +import javax.annotation.Resource; + +import com.yeshi.fanli.entity.SystemEnum; +import org.springframework.cache.annotation.Cacheable; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import org.yeshi.utils.tencentcloud.COSManager; + +import com.yeshi.fanli.dao.mybatis.help.HelpCenterMapper; +import com.yeshi.fanli.entity.AppVersionInfo; +import com.yeshi.fanli.entity.bus.help.HelpCenter; +import com.yeshi.fanli.entity.bus.help.HelpInfo; +import com.yeshi.fanli.entity.bus.homemodule.AdActivityVersionControl; +import com.yeshi.fanli.entity.bus.homemodule.HomeNavbar; +import com.yeshi.fanli.entity.bus.homemodule.AdActivityVersionControl.AdActivityType; +import com.yeshi.fanli.exception.config.HelpCenterException; +import com.yeshi.fanli.exception.homemodule.HomeNavbarException; +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; + +@Service +public class HelpCenterServiceImpl implements HelpCenterService { + + @Resource + private HelpCenterMapper helpCenterMapper; + + @Resource + private MongoDBManager mongoDBManager; + + @Resource + private AdActivityVersionControlService adActivityVersionControlService; + + @Override + public int updateByPrimaryKey(HelpCenter record) { + return helpCenterMapper.updateByPrimaryKey(record); + } + + @Override + public int updateByPrimaryKeySelective(HelpCenter record) { + return helpCenterMapper.updateByPrimaryKeySelective(record); + } + + @Override + public HelpCenter selectByPrimaryKey(Long id) { + return helpCenterMapper.selectByPrimaryKey(id); + } + + @Override + public HelpCenter selectByPrimaryKeyCache(Long id) { + return selectByPrimaryKey(id); + } + + @Override + public String save(HelpCenter helpCenter, String content, String html) throws HelpCenterException, Exception { + if (StringUtil.isNullOrEmpty(helpCenter.getTitle())) + throw new HelpCenterException(1, "鏍囬涓嶈兘涓虹┖"); + + if (helpCenter.getHelpClass() == null || helpCenter.getHelpClass().getId() <= 0) + 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) { + helpCenter.setCreatetime(new Date()); + helpCenterMapper.insert(helpCenter); + } else { + HelpCenter result = helpCenterMapper.selectByPrimaryKey(id); + if (result == null) + throw new HelpCenterException(1, "姝ょ被鍐呭宸蹭笉瀛樺湪锛岃鍒锋柊"); + + helpCenter.setCreatetime(result.getCreatetime()); + 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"); + byte[] b = decoder.decodeBuffer(base64Img); + for (int j = 0; j < b.length; ++j) { + if (b[j] < 0) { + b[j] += 256; + } + } + + String type = (String) map.get("type"); + // 涓婁紶鏂囦欢鐩稿浣嶇疆 + String fileUrl = FilePathEnum.helpCenterContent + UUID.randomUUID().toString().replace("-", "") + "." + + type; + /* 涓婁紶鏂板浘鐗� */ + String uploadFilePath = COSManager.getInstance().uploadFileByte(b, fileUrl).getUrl(); + + if (!StringUtil.isNullOrEmpty(uploadFilePath)) { + String header = (String) map.get("header"); + html = html.replace(header, uploadFilePath); + } + } + } + + String replaceHtml = replaceIframe(html); + Long backId = helpCenter.getId(); + HelpInfo helpInfo = new HelpInfo(backId, content, replaceHtml); + mongoDBManager.saveHelpInfo(helpInfo); + return html; + } + + + @Override + public void switchState(Long id) throws HelpCenterException { + if (id == null) { + throw new HelpCenterException(1, "璇蜂紶閫掓纭弬鏁�"); + } + + HelpCenter resultObj = helpCenterMapper.selectByPrimaryKey(id); + if (resultObj == null) { + throw new HelpCenterException(1, "姝ゅ唴瀹瑰凡涓嶅瓨鍦�"); + } + + Integer state = resultObj.getState(); + if (state == null || state == 0) { + state = 1; + } else { + state = 0; + } + + HelpCenter updateObj = new HelpCenter(); + updateObj.setId(id); + updateObj.setState(state); + helpCenterMapper.updateByPrimaryKeySelective(updateObj); + } + + + public List<Map<String, Object>> getPosition(String content) { + + List<Map<String, Object>> listMap = new ArrayList<Map<String, Object>>(); + + // 闇�瑕佸姣旂殑瀛楃涓� + String compareStr = "base64"; + String compareStrStart = "data:image/"; + // 瀛楃涓叉煡鎵惧垵濮嬩粠0寮�濮嬫煡鎵� + int indexStart = 0; + int indexTypeStart = 0; + // 鑾峰彇鏌ユ壘瀛楃涓茬殑闀垮害锛岃繖閲屾湁涓寰嬶細绗簩娆℃煡鎵惧嚭瀛楃涓茬殑璧峰浣嶇疆绛変簬 绗竴娆b瀛楃涓插嚭鐜扮殑浣嶇疆+ab鐨勯暱搴� + int compareStrLength = compareStr.length(); + + while (true) { + Map<String, Object> place = new HashMap<String, Object>(); + + int tm = content.indexOf(compareStr, indexStart); + int typetm = content.indexOf(compareStrStart, indexTypeStart); + + if (tm <= 0) { + // 鐩村埌娌℃湁鍖归厤缁撴灉涓烘 + break; + } else { + // 娌℃煡鎵句竴娆″氨浠庢柊璁$畻涓嬫寮�濮嬫煡鎵剧殑浣嶇疆 + indexStart = tm + compareStrLength; + indexTypeStart = typetm + compareStrLength; + + // 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; + place.put("header", header); + + listMap.add(place); + } + } + + return listMap; + } + + 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); + + 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 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, Integer state, SystemEnum system) { + return helpCenterMapper.query(pageIndex, pageSize, key, cid, orderMode, state,system); + } + + @Override + public long countQuery(String key, Long cid, Integer state, SystemEnum system) { + return helpCenterMapper.countQuery(key, cid, state,system); + } + + @Override + @Cacheable(value = "helpCenterCache", key = "'queryIdAndTitle-'+#pageId+'-'+#key+'-'+#cid+'-'+#system") + public List<HelpCenter> listValid(long pageId, int pageSize, String key, Long cid, SystemEnum system) { + return helpCenterMapper.listValid(pageId, pageSize, key, cid,system); + } + + @Override + public int deleteBatchById(List<String> idList) { + return helpCenterMapper.deleteBatchById(idList); + } + + @Override + public HelpInfo getHelpInfo(Long id) { + return mongoDBManager.getHelpInfo(id); + } + + @Override + @Cacheable(value = "helpCenterCache", key = "'getHelpInfoCache-'+#id") + public HelpInfo getHelpInfoCache(Long id) { + return getHelpInfo(id); + } + + @Override + @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 + public void setVersions(Long id, List<Long> versions) throws HelpCenterException { + HelpCenter helpCenter = helpCenterMapper.selectByPrimaryKey(id); + if (helpCenter == null) { + throw new HelpCenterException(1, "姝や俊鎭笉瀛樺湪锛岃鍒锋柊閲嶈瘯"); + } + + Set<Long> oldSet = new HashSet<>(); + List<AdActivityVersionControl> versionList = adActivityVersionControlService + .listByTypeAndSourceId(AdActivityType.helpCenter, id); + if (versionList != null) { + for (AdActivityVersionControl control : versionList) + oldSet.add(control.getVersion().getId()); + } + + Set<Long> newSet = new HashSet<>(); + for (Long version : versions) { + newSet.add(version); + } + + Set<Long> delSet = new HashSet<>(); + delSet.addAll(oldSet); + delSet.removeAll(newSet); + for (Long versionId : delSet) { + adActivityVersionControlService.deleteBySourceAndVersion(id, AdActivityType.helpCenter, versionId); + } + + Set<Long> addSet = new HashSet<>(); + addSet.addAll(newSet); + addSet.removeAll(oldSet); + + // 娣诲姞鏄犲皠 + for (Long versionId : addSet) { + AdActivityVersionControl control = new AdActivityVersionControl(); + control.setCreateTime(new Date()); + control.setSourceId(id); + control.setType(AdActivityType.helpCenter); + control.setVersion(new AppVersionInfo(versionId)); + try { + adActivityVersionControlService.addVersionControl(control); + } catch (Exception e) { + throw new HelpCenterException(2, e.getMessage()); + } + } + } +} -- Gitblit v1.8.0