silence丶你的名字
生活随笔
收集整理的這篇文章主要介紹了
silence丶你的名字
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
/*** 自媒體文章自動審核服務** @author silence丶你的名字* createTime 2021-08-22-17:57*/
@Service
@Log4j2
public class WemediaNewsAutoScanServiceImpl implements WemediaNewsAutoScanService {/*** fastServer 地址*/@Value("${fdfs.url}")private String fileServerUrl;/*** 自媒體微服務遠程調用接口*/@Autowiredprivate WemediaFeign wemediaFeign;/*** 自維護敏感詞*/@Autowiredprivate AdSensitiveService adSensitiveService;/*** 文章信息表,存儲已發布的文章(遠程 接口)*/@Autowiredprivate ArticleFeign articleFeign;/*** 文章頻道*/@Autowiredprivate AdChannelMapper adChannelMapper;/*** 自媒體文章審核** @param id 自媒體文章id*/@Overridepublic void autoScanByMediaNewsId(Integer id) {if (ObjectUtil.isEmpty(id)) {log.error("當前審核的id為空");return;}//自媒體圖文內容信息表WmNews wmNews = wemediaFeign.findById(id);if (Objects.isNull(wmNews)) {log.error("審核的自媒體文章不存在,自媒體的id:{}", id);return;}//2.文章狀態為4(人工審核通過)直接保存數據和創建索引if (WmNewsStatus.ADMIN_SUCCESS.getCode().equals(wmNews.getStatus())) {saveAppArticle(wmNews);return;}//3.文章狀態為8 8 審核通過(待發布) 發布時間小于等于當前時間 直接保存數據 保存數據if (WmNewsStatus.SUCCESS.getCode().equals(wmNews.getStatus()) &&wmNews.getPublishTime().getTime() <= System.currentTimeMillis()) {saveAppArticle(wmNews);return;}//4.文章狀態為1:待審核if (WmNewsStatus.SUBMIT.getCode().equals(wmNews.getStatus())) {//4.1 文本審核 通過為trueif (!handleTextScan(wmNews)) {updateWmNews(wmNews);return;}//圖片審核 通過為trueif (!handleImagesScan(wmNews)) {updateWmNews(wmNews);return;}//自管理 敏感詞審核 通過為trueif (!handleSensitive(wmNews)) {updateWmNews(wmNews);return;}// 發布時間大于當前時間, 8 審核通過(待發布) 9 已發布int status = wmNews.getPublishTime().getTime() > System.currentTimeMillis() ?WmNewsStatus.SUCCESS.getCode() : WmNewsStatus.PUBLISHED.getCode();//修改當前文章狀態if (WmNewsStatus.SUCCESS.getCode().equals(wmNews.getStatus())) {wmNews.setStatus(status);wmNews.setReason("審核通過,待發布");updateWmNews(wmNews);return;}//5.審核通過,修改自媒體文章狀態為9 保存app端相關文章信息saveAppArticle(wmNews);}}/*** 保存app端相關文章信息** @param wmNews 自媒體圖文內容信息表*/private void saveAppArticle(WmNews wmNews) {//保存app文章 文章信息表,存儲已發布的文章ApArticle apArticle = saveArticle(wmNews);// ApArticleConfig 初始化一個對象 保存app文章配置ApArticleConfig apArticleConfig = ApArticleConfig.init(apArticle.getId());articleFeign.saveArticleConfig(apArticleConfig);//保存app文章內容saveArticleContent(apArticle, wmNews);//修改自媒體文章的狀態為9 發布狀態wmNews.setStatus(WmNewsStatus.PUBLISHED.getCode());wmNews.setReason("審核通過");updateWmNews(wmNews);//TODO es索引創建}/*** 創建app端文章內容信息** @param apArticle 文章信息表,存儲已發布的文章* @param wmNews 自媒體圖文內容信息表*/private void saveArticleContent(ApArticle apArticle, WmNews wmNews) {ApArticleContent apArticleContent = new ApArticleContent();apArticleContent.setArticleId(apArticle.getId());apArticleContent.setContent(wmNews.getContent());articleFeign.saveArticleContent(apArticleContent);}/*** 創建app端文章內容信息** @param wmNews 自媒體圖文內容信息表* @return 文章信息表,存儲已發布的文章*/private ApArticle saveArticle(WmNews wmNews) {ApArticle apArticle = new ApArticle();apArticle.setTitle(wmNews.getTitle());apArticle.setLayout(wmNews.getType());apArticle.setImages(wmNews.getImages());//獲取作者相關信息WmUser wmUser = wemediaFeign.findWmUserById(wmNews.getUserId());if (Objects.nonNull(wmUser)) {//查詢作者信息ApAuthor apAuthor = articleFeign.selectAuthorByName(wmUser.getName());if (Objects.nonNull(apAuthor)) {apArticle.setAuthorId(apAuthor.getId().longValue());apArticle.setAuthorName(apAuthor.getName());}}//獲取頻道相關信息AdChannel channel = adChannelMapper.selectById(wmNews.getChannelId());if (Objects.nonNull(channel)) {apArticle.setChannelId(channel.getId());apArticle.setChannelName(channel.getName());}return articleFeign.saveArticle(apArticle);}/*** 自管理 敏感詞審核** @param wmNews 自媒體圖文內容信息表* @return boolean true:成功 false:失敗*/private boolean handleSensitive(WmNews wmNews) {try {String contentText = wmNews.getContentText();if (ObjectUtil.isEmpty(contentText)) {return false;}//查詢 所有敏感詞 并初始化SensitiveUtil.init(adSensitiveService.findSensitives());List<String> result = SensitiveUtil.getFindedAllSensitive(contentText);if (CollUtil.isEmpty(result)) {return true;}String join = CollUtil.join(result, ",");log.error("敏感詞過濾沒有通過,包含了敏感詞:{}", join);//找到了敏感詞,審核不通過wmNews.setStatus(WmNewsStatus.FAIL.getCode());wmNews.setReason("文章中包含了敏感詞:" + join);} catch (Exception e) {e.printStackTrace();}return false;}/*** 圖片審核* true:成功 false:失敗** @param wmNews 自媒體圖文內容信息表* @return boolean true:成功 false:失敗*/private boolean handleImagesScan(WmNews wmNews) {try {//抽取文章的圖片wmNews.getImagesUrls(fileServerUrl);//抽取封面圖片wmNews.splitMainImages(fileServerUrl);//TODO 需要阿里云 或騰訊云審核 返回結果。 參考文本審核return true;} catch (Exception e) {e.printStackTrace();}return false;}/*** 阿里云文本審核* true:成功 false:失敗** @param wmNews 自媒體圖文內容信息表* @return boolean true:成功 false:失敗*/private boolean handleTextScan(WmNews wmNews) {try {//阿里云審核 并獲取結果Map<String, String> map = TextReviews.senText(wmNews.getContentText());//審核通過if ("Pass".equals(map.get("suggestion"))) {return true;}//修改失敗狀態 "Block":不通過 "Review":建議人工審核wmNews.setStatus(WmNewsStatus.FAIL.getCode());wmNews.setReason(map.get("suggestion") + " : " + map.get("evilType"));} catch (Exception e) {e.printStackTrace();}return false;}/*** 修改自媒體文章** @param wmNews 自媒體圖文內容信息表*/private void updateWmNews(WmNews wmNews) {wemediaFeign.updateWmNews(wmNews);}}
?
總結
以上是生活随笔為你收集整理的silence丶你的名字的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 星纪时代战略投资魅族 黄章发声:魅族明天
- 下一篇: 垂直梯形校正画质损失多少_投影小常识 梯