基于Java得黑马头条项目------day07-CSDN博客

79 阅读2分钟

kafka实战应用&文章自动审核

导入对应得kafka得内置类信息

配置kafka并让他正常运行

消息发送

消息接受成功

2 文章审核自动化

2.1 阿里云服务介绍 内容检测API开发准备 您在使用内容检测API之前,需要先注册阿里云账号,添加Access Key并签约云盾内容安全。 操作步骤

1. 前往阿里云官网注册账号。如果已有注册账号,请跳过此步骤。

2. 打开云盾内容安全产品试用页面,单击立即开通,正式开通服务。

3. 在AccessKey管理页面管理您的AccessKeyID和AccessKeySecret。

2.1.1 文本垃圾内容检测 文本垃圾内容检测接口说明 抽取工具类

云安全内容审核成功

图片审核

下面是审核文章的接口信息

 public void autoReviewArticleByMedia(Integer newsId) {
        //根据文章id查询文章信息
        WmNews wmNews = wmNewsMapper.selectNewsDetailByPrimaryKey(newsId);
        if(wmNews!=null){
            //状态为4的时候,直接保存数据
            if(wmNews.getStatus()==4){
                reviewSuccessSaveAll(wmNews);
                return;
            }
            //审核通过后待发布文章,判断发布时间
            if(wmNews.getStatus()==8 && wmNews.getPublishTime()!=null && wmNews.getPublishTime().getTime()<new Date().getTime()){
                reviewSuccessSaveAll(wmNews);
                return;
            }
            //审核文章
            if(wmNews.getStatus()==1){
                //审核文章的标题与内容的匹配度
                String content = wmNews.getContent();
                String title = wmNews.getTitle();
                double degree = Compute.SimilarDegree(content, title);
                if(degree<=0){
                    //文章标题与内容匹配
                    updateWmNews(wmNews,(short)2,"文章标题与内容不匹配");
                    return;
                }
                //审核文本内容 阿里接口
                List<String> images = new ArrayList<>();
                StringBuilder sb = new StringBuilder();
                JSONArray jsonArray = JSON.parseArray(content);
                handlerTextAndImages(images,sb,jsonArray);

                try {
                    /*String response = aliyunTextScanRequest.textScanRequest(sb.toString());
                    if("review".equals(response)){//人工审核
                        updateWmNews(wmNews,(short)3,"需要人工审核");
                        return;
                    }
                    if("block".equals(response)){//审核失败
                        updateWmNews(wmNews,(short)2,"文本内容审核失败");
                        return;
                    }*/
                    //审核文章中的图片信息,阿里接口
                    /*String imagesResponse = aliyunImageScanRequest.imageScanRequest(images);
                    if(imagesResponse!=null){
                        if("review".equals(imagesResponse)){//人工审核
                            updateWmNews(wmNews,(short)3,"需要人工审核");
                            return;
                        }
                        if("block".equals(imagesResponse)){//审核失败
                            updateWmNews(wmNews,(short)2,"图片内容审核失败");
                            return;
                        }
                    }else{
                        updateWmNews(wmNews,(short)2,"图片审核出现问题");
                        return;
                    }*/

                } catch (Exception e) {
                    e.printStackTrace();
                }


                if(wmNews.getPublishTime()!=null){
                    if(wmNews.getPublishTime().getTime()>new Date().getTime()){
                        //修改wmnews的状态为8
                        updateWmNews(wmNews,(short)8,"待发布");
                    }else{
                        //立即发布
                        reviewSuccessSaveAll(wmNews);
                    }
                }else{
                    //立即发布
                    reviewSuccessSaveAll(wmNews);
                }
            }
        }

    }

在测试的时候出现这种错误,将其enable字段注释掉就可以了

删掉wmnew的xml文件中的enable字段

测试通过

查到新闻id为5104的这篇文章,进行审核业务的测试

在数据库中查看状态

private Boolean origin;插入到ApAritcal这个文章类中

审核成功

数据库中字段修改成功

在NewsServiceImpl这个保存文章的方法下面加入kafka的消息发送的信息,分别设置消息发送的发送体,和发送消息,设置消息发送方

设置接受消息,创建监听

下面就是测试文章审核的前端工程先进行文章发布,然后消息队列监听之后就进行文章审核,审核通过之后修改文章状态为已发表状态,需要启动

前端文章发布

消息队列到medi发送的消息

并处理审结果

 

数据库保存数据成功