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);}}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/442691.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java.security.invalidkeyexception: illegal key size or default parameters

解决原文摘自&#xff1a;Java实现AES加密,异常java.security.InvalidKeyException: Illegal key size 的解决_走过的足迹-CSDN博客Java实现AES加密&#xff0c;抛出异常如下&#xff1a;java.security.InvalidKeyException: Illegal key size代码参考 http://my.oschina.net/J…

Caused by: org.springframework.boot.web.server.PortInUseException: Port 8081 is already in use 端口占用

Caused by: org.springframework.boot.web.server.PortInUseException: Port 8081 is already in use 解决引用&#xff1a; 在dos下&#xff0c;输入 netstat -ano|findstr 8080 //说明&#xff1a;查看占用8080端口的进程 显示占用端口的进程 taskkill /pid 9476 …

java关机命令收集cmd关机命令

package cn.silence.demo;import java.io.IOException;/*** author silence* createTime 2021-12-21-21:46* shutdown 关机 shutdown /? 查看帮助* -s 关机&#xff08;shutdown缩写&#xff09;* -r 重启&#xff08;restart的缩写&#xff09;* -l 注销&#xff08;logo…

java反射基本使用,反射泛型参数类型获取

背景&#xff1a; 因为项目controller层入参Req 和service 层DTO 入参&#xff0c;是两个类。需要在controller层将api接收到的参数向下传递到service层&#xff0c;参数名基本都是一致的。但是有时req会新增参数&#xff0c;类&#xff0c;方法过多时&#xff0c;确保一致就要…

Linux+Docker+腾讯云/阿里云服务器 安装MySQL相关命令整理

注&#xff1a;主要是收集整理一些常用的命令 主要参考&#xff1a;狂神说docker以及其他的一些命令收集。主要是因为平常安装的mysql外部无法访问 MYSQL的创建用户&#xff0c;授权用户&#xff0c;删除用户&#xff0c;查看用户_ZJE-CSDN博客_mysql 显示用户1.查看用户2.创…

list.size为1但是内容为null

又是一件离奇的事被我遇到了&#xff0c;哈哈。测试环境暴露出来的问题。还奇怪了好一会儿。然后查了一下资料。原来很多人都遇到了。大概原因就是 sql语句使用了计算函数sum(),但是where条件出来的数据为空&#xff0c;最后返回到java 映射进list了。 造成了list.size为1但是内…

FileIo 删除类中的private方法

/*** 删除接口中的私有方法*/private static void removePrivate(SilenceEntity entity) {List<String> document entity.getDocument();int startIndex 0;for (int i 0; i < document.size(); i) {String s document.get(i);if (s.contains("}")) {sta…

File Io 删除类中的引用

/*** 删除引用*/private static void removeResource(SilenceEntity entity) {List<String> document entity.getDocument();for (int i 0; i < document.size(); i) {String s document.get(i);if (s.contains("Resource") || s.contains("Autowir…

获取该字符串第N次出现的位置

/*** 删除指定的列** param str | 参数名称 | 参数说明 | 是否必须 | 数据类型 | schema |* param column 6* return | 参数名称 | 参数说明 | 是否必须 | 数据类型 |* throws Exception Exception*/private static String removeColumn(String str, int column) throws Exc…

遍历这些字符串,如果字符串没有包含数字的,就将字符串中的小写字母转成大写字母并打印字符串

package cn.silence;public class StrDemo3 {/*** 有如下字符串:"12ab","java","cd","Server78"* //遍历这些字符串&#xff0c;如果字符串没有包含数字的&#xff0c;就将字符串中的小写字母转成大写字母并打印字符串*/public static…

idea springboot一直卡在启动 没有日志输出

断点从 springApplication.run(args)&#xff0c;进入 在 SpringApplication&#xff0c;322行 handleRunFailure(context, ex, exceptionReporters, listeners); 可以看到错误信息。 修改后正常启动

40029错误{“errcode“:40029,“errmsg“:“invalid code, rid: 623bbdcd-3c97f4af-5a2c06d6“}

背景&#xff1a;服务器获取微信小程序openid的时候&#xff0c;报code无效。 但是code是根据开发者文档生成的。服务器配置也没有问题。 因为服务器&#xff0c;wechatAppId 和 wechatSecret不一致&#xff0c;会分别报这两个的错误。 最终检查为&#xff0c;生成code的APP…

java内容置剪贴板

/*** 把文本内容设置到系统剪贴板** param list list*/ public static void setClipboardString(List<String> list) {StringBuilder sb new StringBuilder();list.forEach(s -> sb.append(s).append("\n"));// 获取系统剪贴板Clipboard clipboard Toolki…

CORS error 状态码451

项目背景&#xff0c;测试环境的前端代码&#xff0c;指向本地开发机。访问451 谷歌浏览器 查询错误码猜测&#xff0c;可能是跨域问题。其实具体错误也不是特别清楚。就想着换个浏览器。 换搜狗浏览器。问题解决了。记录一下

javassist将类的类型修改,将接口修改为类

将接口interface 修改为class 接口 接口字节码 修改为class类后的字节码 将接口修改成为了&#xff0c;class类 但是这里还有一个坑&#xff0c;是class 没有默认构造&#xff0c;需要添加一个无参构造&#xff0c;不然不能实例化对象 这是生成构造方法后的字节码&#xff0c;…

根据字节码获取类的绝对路径

适用于当前模块或引入模块。 不适用于第三方jar包 /*** 根据字节码获取类绝对路径** param clazz clazz* return classRealPath*/private static String getClassRealPath(Class<?> clazz) {String classPath clazz.getName().replace(".", "/") …

Javassist给方法添加形参,给方法添加参数

前言&#xff1a; 此次用到的jar包 Javassist 此篇博文不是教大家怎么去了解他&#xff0c;因为我也不是很了解 主要是因为这两天有一个需求是扩展knife4j 需要用到大量反射了解到的。 因为这方面资料太少了。我也是慢慢摸索出来的。把这些发出来吧。 我理解的 Javassist 主…

javassist动态给方法添加注解,动态给形参添加注解,动态给类添加注解

参考文档 这个写的挺全的&#xff0c;就是写的有点丑 javassist教程_不懂人情世故的博客-CSDN博客_java javassist转载 https://www.cnblogs.com/rickiyang/p/11336268.htmljavassist使用全解析Java 字节码以二进制的形式存储在 .class 文件中&#xff0c;每一个 .class 文件包…

解决javassist不能重复加载字节码的问题

因为我的是一个接口&#xff0c;所以麻烦诸多。 事实上在类加载前做好准备工作&#xff0c;不会遇到这个问题&#xff0c;但是我正巧&#xff0c;在使用javassist的时候需要加载类&#xff0c;因为我要读取源码&#xff0c;拿到注释&#xff0c;再通过ssit 修改字节码&#xf…

根据type类型判断是否为基本数据类型,或基本数据类型的包装类,或泛型为基本数据类型

根据type类型判断是否为基本数据类型&#xff0c;或基本数据类型的包装类&#xff0c;或泛型为基本数据类型 /*** 判断是否为基本数据类型&#xff0c;或基本数据类型的包装类&#xff0c;或泛型为基本数据类型* string true* int true* Integer true* String[] true* user[] …