Commit 5b75e32175105dbe3642fd73160326ef8cd88363

Authored by 徐近程
1 parent 7cdf285e

易盾

src/main/java/com/cnlive/shenhe/api/YiDunControllerApi.java 0 → 100644
  1 +package com.cnlive.shenhe.api;
  2 +
  3 +import com.alibaba.fastjson.JSONObject;
  4 +import com.cnlive.shenhe.entity.ShyYidun;
  5 +import com.cnlive.shenhe.serviceImpl.YiDunServiceImpl;
  6 +import com.cnlive.shenhe.utils.HttpClientUtils;
  7 +import com.cnlive.shenhe.utils.YiDunAntiFraudUtil;
  8 +import org.slf4j.Logger;
  9 +import org.slf4j.LoggerFactory;
  10 +import org.springframework.beans.factory.annotation.Autowired;
  11 +import org.springframework.stereotype.Controller;
  12 +import org.springframework.web.bind.annotation.PostMapping;
  13 +import org.springframework.web.bind.annotation.RequestMapping;
  14 +import org.springframework.web.bind.annotation.ResponseBody;
  15 +
  16 +import java.util.*;
  17 +
  18 +/**
  19 + * @Author: xujincheng
  20 + * @Date: 2020/3/26 13:43
  21 + */
  22 +@Controller
  23 +@RequestMapping("/api/yiDun")
  24 +public class YiDunControllerApi {
  25 +
  26 + private static Logger logger = LoggerFactory.getLogger(YiDunControllerApi.class);
  27 +
  28 + @Autowired
  29 + YiDunServiceImpl yiDunServiceImpl;
  30 +
  31 + /**
  32 + * 网站地址URL产品密钥ID,产品标识
  33 + */
  34 + private final static String SECRETID = "c7f33c191020bcc9cbacb7d70417fd2f";
  35 + /**
  36 + * 网站地址URL产品私有密钥,服务端生成签名信息使用,请严格保管,避免泄露
  37 + */
  38 + private final static String SECRETKEY = "833222b4951a67a9bc63b5ed0c24d07d";
  39 + /**
  40 + * 网站地址URL提交接口地址
  41 + */
  42 + private final static String URL_SUBMIT = "https://as.dun.163yun.com/v1/crawler/submit";
  43 +
  44 + /**
  45 + * 向易盾提交网站检测地址(用于测试)
  46 + *
  47 + * @param url 网站地址
  48 + */
  49 + @PostMapping("/submitYiDunUrl")
  50 + @ResponseBody
  51 + public void submitYiDunUrl(String url) {
  52 + Map<String, String> params = new HashMap<String, String>();
  53 +
  54 + // 1.设置公共参数
  55 + params.put("secretId", SECRETID);
  56 + params.put("version", "v1.0");
  57 + params.put("timestamp", String.valueOf(System.currentTimeMillis()));
  58 + params.put("nonce", String.valueOf(new Random().nextInt()));
  59 +
  60 + // 2.设置私有参数
  61 + //数据唯一标识,能够根据该值定位到该条数据(查询作用)
  62 + params.put("dataId", UUID.randomUUID().toString());
  63 + //网页URL, 支持contentType类型: html、txt、doc、docx、ppt、pptx、xls、xlsx、pdf
  64 + params.put("url", url);
  65 + //1:检测文本,2:检测图片,同时检测文本+图片则以逗号分隔,例:1,2。
  66 + params.put("checkFlags", "1,2");
  67 + //不是必传参数
  68 + params.put("callback", UUID.randomUUID().toString());
  69 +
  70 + // 3.生成签名信息
  71 + String signature = YiDunAntiFraudUtil.genSignature(SECRETKEY, params);
  72 + params.put("signature", signature);
  73 +
  74 + // 4.发送HTTP请求
  75 + //String response = HttpClient4Utils.sendPost(httpClient, API_URL, params, Consts.UTF_8);
  76 + String s = HttpClientUtils.post_str(URL_SUBMIT, params);
  77 + logger.info("向易盾提交网站检测地址返回的结果:{}", s);
  78 + JSONObject jsonObject = JSONObject.parseObject(s);
  79 + int code = jsonObject.getIntValue("code");
  80 + String msg = jsonObject.getString("msg");
  81 + if (code == 200 && "ok".equals(msg)) {
  82 + //:正常(建议通过) 2:异常(建议拦截) 3:疑似(建议人工确认)0:无结果(检测失败)
  83 + JSONObject result = jsonObject.getJSONObject("result");
  84 + String dataId = result.getString("dataId");
  85 + ShyYidun shyYidun = new ShyYidun();
  86 + shyYidun.setId(dataId);
  87 + shyYidun.setCreate_time(new Date());
  88 + yiDunServiceImpl.addYiDunMsg(shyYidun);
  89 + }
  90 +
  91 + }
  92 +}
... ...
src/main/java/com/cnlive/shenhe/entity/ShyYidun.java 0 → 100644
  1 +package com.cnlive.shenhe.entity;
  2 +
  3 +import java.util.Date;
  4 +import javax.persistence.*;
  5 +
  6 +@Table(name = "shy_yidun")
  7 +public class ShyYidun {
  8 + /**
  9 + * 网站审核-dataId 图文审核文本审核-taskId
  10 + */
  11 + @Id
  12 + private String id;
  13 +
  14 + /**
  15 + * 视频内容id 网站内容id
  16 + */
  17 + private String content_id;
  18 +
  19 + /**
  20 + * 网站审核url
  21 + */
  22 + private String url;
  23 +
  24 + /**
  25 + * 审核结果 2:建议删除,1:建议审核,0:建议通过
  26 + */
  27 + private String result_type;
  28 +
  29 + /**
  30 + * 检测描述信息
  31 + */
  32 + private String desc_msg;
  33 +
  34 + /**
  35 + * 视频时长,单位s
  36 + */
  37 + private Integer duration;
  38 +
  39 + /**
  40 + * 创建时间
  41 + */
  42 + private Date create_time;
  43 +
  44 + /**
  45 + * 修改时间
  46 + */
  47 + private Date update_time;
  48 +
  49 + /**
  50 + * 获取网站审核-dataId 图文审核文本审核-taskId
  51 + *
  52 + * @return id - 网站审核-dataId 图文审核文本审核-taskId
  53 + */
  54 + public String getId() {
  55 + return id;
  56 + }
  57 +
  58 + /**
  59 + * 设置网站审核-dataId 图文审核文本审核-taskId
  60 + *
  61 + * @param id 网站审核-dataId 图文审核文本审核-taskId
  62 + */
  63 + public void setId(String id) {
  64 + this.id = id;
  65 + }
  66 +
  67 + /**
  68 + * 获取视频内容id 网站内容id
  69 + *
  70 + * @return content_id - 视频内容id 网站内容id
  71 + */
  72 + public String getContent_id() {
  73 + return content_id;
  74 + }
  75 +
  76 + /**
  77 + * 设置视频内容id 网站内容id
  78 + *
  79 + * @param content_id 视频内容id 网站内容id
  80 + */
  81 + public void setContent_id(String content_id) {
  82 + this.content_id = content_id;
  83 + }
  84 +
  85 + /**
  86 + * 获取网站审核url
  87 + *
  88 + * @return url - 网站审核url
  89 + */
  90 + public String getUrl() {
  91 + return url;
  92 + }
  93 +
  94 + /**
  95 + * 设置网站审核url
  96 + *
  97 + * @param url 网站审核url
  98 + */
  99 + public void setUrl(String url) {
  100 + this.url = url;
  101 + }
  102 +
  103 + /**
  104 + * 获取审核结果 2:建议删除,1:建议审核,0:建议通过
  105 + *
  106 + * @return result_type - 审核结果 2:建议删除,1:建议审核,0:建议通过
  107 + */
  108 + public String getResult_type() {
  109 + return result_type;
  110 + }
  111 +
  112 + /**
  113 + * 设置审核结果 2:建议删除,1:建议审核,0:建议通过
  114 + *
  115 + * @param result_type 审核结果 2:建议删除,1:建议审核,0:建议通过
  116 + */
  117 + public void setResult_type(String result_type) {
  118 + this.result_type = result_type;
  119 + }
  120 +
  121 + /**
  122 + * 获取检测描述信息
  123 + *
  124 + * @return desc_msg - 检测描述信息
  125 + */
  126 + public String getDesc_msg() {
  127 + return desc_msg;
  128 + }
  129 +
  130 + /**
  131 + * 设置检测描述信息
  132 + *
  133 + * @param desc_msg 检测描述信息
  134 + */
  135 + public void setDesc_msg(String desc_msg) {
  136 + this.desc_msg = desc_msg;
  137 + }
  138 +
  139 + /**
  140 + * 获取视频时长,单位s
  141 + *
  142 + * @return duration - 视频时长,单位s
  143 + */
  144 + public Integer getDuration() {
  145 + return duration;
  146 + }
  147 +
  148 + /**
  149 + * 设置视频时长,单位s
  150 + *
  151 + * @param duration 视频时长,单位s
  152 + */
  153 + public void setDuration(Integer duration) {
  154 + this.duration = duration;
  155 + }
  156 +
  157 + /**
  158 + * 获取创建时间
  159 + *
  160 + * @return create_time - 创建时间
  161 + */
  162 + public Date getCreate_time() {
  163 + return create_time;
  164 + }
  165 +
  166 + /**
  167 + * 设置创建时间
  168 + *
  169 + * @param create_time 创建时间
  170 + */
  171 + public void setCreate_time(Date create_time) {
  172 + this.create_time = create_time;
  173 + }
  174 +
  175 + /**
  176 + * 获取修改时间
  177 + *
  178 + * @return update_time - 修改时间
  179 + */
  180 + public Date getUpdate_time() {
  181 + return update_time;
  182 + }
  183 +
  184 + /**
  185 + * 设置修改时间
  186 + *
  187 + * @param update_time 修改时间
  188 + */
  189 + public void setUpdate_time(Date update_time) {
  190 + this.update_time = update_time;
  191 + }
  192 +
  193 + public ShyYidun() {
  194 + }
  195 +
  196 + public ShyYidun(String id, String content_id, String url, String result_type, String desc_msg, Integer duration, Date create_time, Date update_time) {
  197 + this.id = id;
  198 + this.content_id = content_id;
  199 + this.url = url;
  200 + this.result_type = result_type;
  201 + this.desc_msg = desc_msg;
  202 + this.duration = duration;
  203 + this.create_time = create_time;
  204 + this.update_time = update_time;
  205 + }
  206 +}
0 207 \ No newline at end of file
... ...
src/main/java/com/cnlive/shenhe/job/YiDunUrlResultJob.java 0 → 100644
  1 +package com.cnlive.shenhe.job;
  2 +
  3 +import com.alibaba.fastjson.JSONArray;
  4 +import com.alibaba.fastjson.JSONObject;
  5 +import com.cnlive.shenhe.entity.ShyYidun;
  6 +import com.cnlive.shenhe.serviceImpl.YiDunServiceImpl;
  7 +import com.cnlive.shenhe.utils.HttpClientUtils;
  8 +import com.cnlive.shenhe.utils.YiDunAntiFraudUtil;
  9 +import org.slf4j.Logger;
  10 +import org.slf4j.LoggerFactory;
  11 +import org.springframework.beans.factory.annotation.Autowired;
  12 +import org.springframework.scheduling.annotation.Scheduled;
  13 +import org.springframework.stereotype.Component;
  14 +
  15 +import java.util.Date;
  16 +import java.util.HashMap;
  17 +import java.util.Map;
  18 +import java.util.Random;
  19 +
  20 +/**
  21 + * 易盾网站检测
  22 + *
  23 + * @Author: xujincheng
  24 + * @Date: 2020/3/23 15:16
  25 + */
  26 +@Component
  27 +public class YiDunUrlResultJob {
  28 +
  29 + private static Logger logger = LoggerFactory.getLogger(YiDunUrlResultJob.class);
  30 +
  31 + /**
  32 + * 网站地址URL产品密钥ID,产品标识
  33 + */
  34 + private final static String SECRETID = "c7f33c191020bcc9cbacb7d70417fd2f";
  35 + /**
  36 + * 网站地址URL产品私有密钥,服务端生成签名信息使用,请严格保管,避免泄露
  37 + */
  38 + private final static String SECRETKEY = "833222b4951a67a9bc63b5ed0c24d07d";
  39 + /**
  40 + * 网站地址URL检测结果获取接口地址
  41 + */
  42 + private final static String URL_RESULT = "https://as.dun.163yun.com/v1/crawler/callback/results";
  43 +
  44 +
  45 + @Autowired
  46 + YiDunServiceImpl yiDunServiceImpl;
  47 +
  48 +
  49 + /**
  50 + * 查询易盾网站检测结果接口
  51 + */
  52 + @Scheduled(cron = "0/1 * 10-23 * * ? ")//每天10点到23点执行,每分钟一次
  53 + public void YiDunUrl() {
  54 + Map<String, String> params1 = new HashMap<String, String>(5);
  55 + // 1.设置公共参数
  56 + params1.put("secretId", SECRETID);
  57 + params1.put("version", "v1.0");
  58 + params1.put("timestamp", String.valueOf(System.currentTimeMillis()));
  59 + params1.put("nonce", String.valueOf(new Random().nextInt()));
  60 +
  61 + // 2.生成签名信息
  62 + String signature1 = YiDunAntiFraudUtil.genSignature(SECRETKEY, params1);
  63 + params1.put("signature", signature1);
  64 +
  65 + // 3.发送HTTP请求
  66 + String s1 = HttpClientUtils.post_str(URL_RESULT, params1);
  67 + logger.info("查询易盾网站检测结果:{}", s1);
  68 +
  69 + // 4.解析接口返回值
  70 + JSONObject resultObject = JSONObject.parseObject(s1);
  71 + int code = resultObject.getIntValue("code");
  72 + String msg = resultObject.getString("msg");
  73 + if (code == 200 && "ok".equals(msg)){
  74 + JSONArray resultJSONArray = resultObject.getJSONArray("result");
  75 + for(int i=0;i<resultJSONArray.size();i++){
  76 +
  77 + JSONObject jsonObject = resultJSONArray.getJSONObject(i);
  78 + String dataId = jsonObject.getString("dataId");
  79 + //检测结果, 1:正常(建议通过) 2:异常(建议拦截) 3:疑似(建议人工确认)0:无结果(检测失败)
  80 + int result= jsonObject.getIntValue("result");
  81 + if(result==1){
  82 +
  83 + }
  84 +
  85 + ShyYidun yiDunMsg = yiDunServiceImpl.getYiDunMsg(dataId);
  86 + ShyYidun newYiDunMsg = new ShyYidun();
  87 + newYiDunMsg.setId(yiDunMsg.getId());
  88 + newYiDunMsg.setUpdate_time(new Date());
  89 + yiDunServiceImpl.updateYiDunMsg(newYiDunMsg);
  90 + }
  91 + }
  92 +
  93 + }
  94 +}
... ...
src/main/java/com/cnlive/shenhe/mapper/ShyYidunMapper.java 0 → 100644
  1 +package com.cnlive.shenhe.mapper;
  2 +
  3 +import com.cnlive.shenhe.entity.ShyYidun;
  4 +import tk.mybatis.mapper.common.Mapper;
  5 +
  6 +public interface ShyYidunMapper extends Mapper<ShyYidun> {
  7 +}
0 8 \ No newline at end of file
... ...
src/main/java/com/cnlive/shenhe/serviceImpl/YiDunServiceImpl.java 0 → 100644
  1 +package com.cnlive.shenhe.serviceImpl;
  2 +
  3 +import com.cnlive.shenhe.entity.ShyYidun;
  4 +import com.cnlive.shenhe.mapper.ShyYidunMapper;
  5 +import org.slf4j.Logger;
  6 +import org.slf4j.LoggerFactory;
  7 +import org.springframework.beans.factory.annotation.Autowired;
  8 +import org.springframework.stereotype.Service;
  9 +
  10 +/**
  11 + * @Author: xujincheng
  12 + * @Date: 2020/3/27 17:31
  13 + */
  14 +@Service
  15 +public class YiDunServiceImpl {
  16 +
  17 + private static Logger logger = LoggerFactory.getLogger(YiDunServiceImpl.class);
  18 +
  19 + @Autowired
  20 + ShyYidunMapper shyYidunMapper;
  21 +
  22 + public boolean addYiDunMsg(ShyYidun shyYidun) {
  23 + int result = shyYidunMapper.insert(shyYidun);
  24 + if (result == 0) {
  25 + return false;
  26 + }
  27 + return true;
  28 + }
  29 +
  30 + public ShyYidun getYiDunMsg(String dataId) {
  31 + return shyYidunMapper.selectByPrimaryKey(dataId);
  32 + }
  33 +
  34 + public boolean updateYiDunMsg(ShyYidun shyYidun) {
  35 + int result = shyYidunMapper.updateByPrimaryKeySelective(shyYidun);
  36 + if (result == 0) {
  37 + return false;
  38 + }
  39 + return true;
  40 +
  41 + }
  42 +}
... ...
src/main/java/com/cnlive/shenhe/utils/YiDunAntiFraudUtil.java 0 → 100644
  1 +package com.cnlive.shenhe.utils;
  2 +
  3 +import com.alibaba.fastjson.JSONArray;
  4 +import com.alibaba.fastjson.JSONObject;
  5 +import com.cnlive.shenhe.api.AvsampleCallBackControllerApi;
  6 +import org.apache.commons.codec.digest.DigestUtils;
  7 +import org.slf4j.Logger;
  8 +import org.slf4j.LoggerFactory;
  9 +import org.springframework.util.StringUtils;
  10 +
  11 +import java.io.UnsupportedEncodingException;
  12 +import java.util.*;
  13 +
  14 +/**
  15 + * 网易易盾
  16 + *
  17 + * @Author: xujincheng
  18 + * @Date: 2020/3/18 12:47
  19 + */
  20 +public class YiDunAntiFraudUtil {
  21 +
  22 + private static Logger logger = LoggerFactory.getLogger(YiDunAntiFraudUtil.class);
  23 +
  24 + /**
  25 + * 网站地址URL产品密钥ID,产品标识
  26 + */
  27 + private final static String SECRETID = "c7f33c191020bcc9cbacb7d70417fd2f";
  28 + /**
  29 + * 网站地址URL产品私有密钥,服务端生成签名信息使用,请严格保管,避免泄露
  30 + */
  31 + private final static String SECRETKEY = "833222b4951a67a9bc63b5ed0c24d07d";
  32 + /**
  33 + * 网站地址URL提交接口地址
  34 + */
  35 + private final static String URL_SUBMIT = "https://as.dun.163yun.com/v1/crawler/submit";
  36 + /**
  37 + * 需检测的网站地址URL
  38 + */
  39 + private final static String FILE_URL = "http://shen.cnlive.com/api/content/detail/135058.html";
  40 + /**
  41 + * 网站地址URL检测结果获取接口地址
  42 + */
  43 + private final static String URL_RESULT = "https://as.dun.163yun.com/v1/crawler/callback/results";
  44 +
  45 + /**
  46 + * 文本识别图片识别产品密钥ID,产品标识
  47 + */
  48 + private final static String TEXTANDIMAGESECRETID = "11c62726ba11f03f3f7d87acbe2d4f03";
  49 + /**
  50 + * 文本识别图片识别产品私有密钥,服务端生成签名信息使用,请严格保管,避免泄露
  51 + */
  52 + private final static String TEXTANDIMAGESECRETKEY = "3c0d0d44909926f46e79d3518e7dc4e7";
  53 + /**
  54 + * 业务ID,易盾根据产品业务特点分配(文本)
  55 + */
  56 + private final static String TEXTBUSINESSID = "719926f98dc5b9bb9857e1b799ea3f5f";
  57 + /**
  58 + * 易盾内容安全文本在线检测接口地址
  59 + */
  60 + private final static String TEXT_RESULT = "https://as.dun.163yun.com/v3/text/check";
  61 + /**
  62 + * 业务ID,易盾根据产品业务特点分配(图片)
  63 + */
  64 + private final static String IMAGEBUSINESSID = "f84d6ee9f62274243825d3e969ca4c5a";
  65 + /**
  66 + * 易盾内容安全服务图片在线检测接口地址
  67 + */
  68 + private final static String IMAGE_RESULT = "https://as.dun.163yun.com/v4/image/check";
  69 +
  70 + public static void main(String[] args) {
  71 + //智能网页识别审核测试
  72 + //getURLFilter(FILE_URL);
  73 +
  74 + //智能文本识别审核测试
  75 + //getTextFilter("王八蛋");
  76 +
  77 + //智能图片识别审核测试
  78 + /* JSONArray jsonArray = new JSONArray();
  79 + JSONObject image1 = new JSONObject();
  80 + image1.put("name", "http://test.qnvod.cnlive.com/shen/802/2020/03/01/8a8a878c6dce5cfe017096cd07940c84/000001.jpg");
  81 + image1.put("type", 1);
  82 + image1.put("data", "http://test.qnvod.cnlive.com/shen/802/2020/03/01/8a8a878c6dce5cfe017096cd07940c84/000001.jpg");
  83 + jsonArray.add(image1);
  84 + JSONObject image2 = new JSONObject();
  85 + image2.put("name", "http://test.qnvod.cnlive.com/shen/802/2020/03/01/8a8a878c6dce5cfe017096cd07940c84/000002.jpg");
  86 + image2.put("type", 1);
  87 + image2.put("data", "http://test.qnvod.cnlive.com/shen/802/2020/03/01/8a8a878c6dce5cfe017096cd07940c84/000002.jpg");
  88 + jsonArray.add(image2);
  89 + JSONObject image3 = new JSONObject();
  90 + image3.put("name", "https://wjj.ys2.cnliveimg.com/769/img/0/2020/03/21/158474856886077030277.jpg");
  91 + image3.put("type", 1);
  92 + image3.put("data", "https://wjj.ys2.cnliveimg.com/769/img/0/2020/03/21/158474856886077030277.jpg");
  93 + jsonArray.add(image3);
  94 + //
  95 + JSONObject imagesFilter = getImagesFilter(jsonArray.toJSONString());
  96 + System.out.println(imagesFilter.toJSONString());*/
  97 +
  98 + }
  99 +
  100 +
  101 + /**
  102 + * 智能图片审核
  103 + *
  104 + * @param jsonImg //http://test.qnvod.cnlive.com/shen/802/2020/03/01/8a8a878c6dce5cfe017096cd07940c84/000002.jpg
  105 + * @return
  106 + */
  107 + public static JSONObject getImagesFilter(String jsonImg) {
  108 + try {
  109 + Map<String, String> params = new HashMap<String, String>();
  110 + // 1.设置公共参数
  111 + params.put("secretId", TEXTANDIMAGESECRETID);
  112 + params.put("businessId", IMAGEBUSINESSID);
  113 + params.put("version", "v4");
  114 + params.put("timestamp", String.valueOf(System.currentTimeMillis()));
  115 + params.put("nonce", String.valueOf(new Random().nextInt()));
  116 +
  117 + // 2.设置私有参数
  118 + /*JSONArray jsonArray = new JSONArray();
  119 + // 传图片url进行检测,name结构产品自行设计,用于唯一定位该图片数据
  120 + JSONObject image1 = new JSONObject();
  121 + //图片名称(或图片标识), 该字段为回调信号字段,产品可以根据业务情况自行设计,如json结构、或者为图片url均可
  122 + image1.put("name", "http://p1.music.126.net/lEQvXzoC17AFKa6yrf-ldA==/1412872446212751.jpg");
  123 + //类型,分别为1:图片URL,2:图片BASE64值
  124 + image1.put("type", 1);
  125 + image1.put("data",jsonImg);
  126 + //image1.put("data", "http://p1.music.126.net/lEQvXzoC17AFKa6yrf-ldA==/1412872446212751.jpg");
  127 + jsonArray.add(image1);*/
  128 +
  129 + // 传图片base64编码进行检测,name结构产品自行设计,用于唯一定位该图片数据
  130 + /*JSONObject image2 =new JSONObject();
  131 + image2.put("name", "{\"imageId\": 33451123, \"contentId\": 78978}");
  132 + image2.put("type", 2);
  133 + image2.put("data","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");
  134 + jsonArray.add(image2);*/
  135 +
  136 + params.put("images", jsonImg);
  137 + // params.put("account", "java@163.com");
  138 + // params.put("ip", "123.115.77.137");
  139 +
  140 + // 3.生成签名信息
  141 + String signature = genSignature(TEXTANDIMAGESECRETKEY, params);
  142 + params.put("signature", signature);
  143 +
  144 + // 4.发送HTTP请求,这里使用的是HttpClient工具包,产品可自行选择自己熟悉的工具包发送请求
  145 + String result = HttpClientUtils.post_str(IMAGE_RESULT, params);
  146 + logger.info("易盾智能图片识别返回信息:{}", result);
  147 + // 5.解析接口返回值
  148 + if (!StringUtils.isEmpty(result)) {
  149 + JSONObject jsonResult = JSONObject.parseObject(result);
  150 + Integer code = jsonResult.getInteger("code");
  151 + JSONObject jsonObj = new JSONObject();
  152 + int count = 0;
  153 + if (code != null && code == 200) {
  154 + StringBuffer strBuffer = new StringBuffer();
  155 + JSONArray antispam = jsonResult.getJSONArray("antispam");
  156 + if (antispam != null && antispam.size() > 0) {
  157 + for (int i = 0; i < antispam.size(); i++) {
  158 + JSONObject jsonObject = antispam.getJSONObject(i);
  159 + //图片检测状态码,定义为:0:检测成功,610:图片下载失败,620:图片格式错误,630:其它
  160 + Integer status = jsonObject.getInteger("status");
  161 + //建议动作,2:建议删除,1:建议审核,0:建议通过
  162 + Integer action = jsonObject.getInteger("action");
  163 + if (action != null && action == 0 && status != null && status == 0) {
  164 + continue;
  165 + }
  166 + if (action != null && action == 0 && status != null && status != 0) {
  167 + JSONArray labels = jsonObject.getJSONArray("labels");
  168 + if (labels != null && labels.size() > 0) {
  169 + for (int j = 0; j < labels.size(); j++) {
  170 + JSONObject jsonObject1 = labels.getJSONObject(j);
  171 + //分类级别,0:正常,1:不确定,2:确定
  172 + Integer level = jsonObject1.getInteger("level");
  173 + if (level != null && level == 2) {
  174 + jsonObject1.getInteger("");
  175 + }
  176 +
  177 + }
  178 + }
  179 + count++;
  180 + continue;
  181 + }
  182 + count++;
  183 + }
  184 + if (count > 0) {
  185 + jsonObj.put("type", "REJECT");
  186 + } else {
  187 + jsonObj.put("type", "PASS");
  188 + }
  189 + }
  190 +
  191 + } else {
  192 + jsonObj.put("type", "REJECT");
  193 + jsonObj.put("desc", "code:" + code + ",message:" + jsonResult.getString("msg"));
  194 + }
  195 + return jsonObj;
  196 + }
  197 + } catch (Exception e) {
  198 + e.printStackTrace();
  199 + }
  200 + return null;
  201 + }
  202 +
  203 + /**
  204 + * 智能文本审核
  205 + *
  206 + * @param text
  207 + * @return
  208 + */
  209 + public static JSONObject getTextFilter(String text) {
  210 + Map<String, String> params = new HashMap<String, String>();
  211 + // 1.设置公共参数
  212 + params.put("secretId", TEXTANDIMAGESECRETID);
  213 + params.put("businessId", TEXTBUSINESSID);
  214 + params.put("version", "v3.1");
  215 + params.put("timestamp", String.valueOf(System.currentTimeMillis()));
  216 + params.put("nonce", String.valueOf(new Random().nextInt()));
  217 +
  218 + // 2.设置私有参数
  219 + params.put("dataId", UUID.randomUUID().toString());
  220 + params.put("content", text);
  221 + // params.put("dataType", "1");
  222 + // params.put("ip", "123.115.77.137");
  223 + // params.put("account", "java@163.com");
  224 + // params.put("deviceType", "4");
  225 + // params.put("deviceId", "92B1E5AA-4C3D-4565-A8C2-86E297055088");
  226 + // params.put("callback", "ebfcad1c-dba1-490c-b4de-e784c2691768");
  227 + // params.put("publishTime", String.valueOf(System.currentTimeMillis()));
  228 +
  229 + // 3.生成签名信息
  230 + String signature = genSignature(TEXTANDIMAGESECRETKEY, params);
  231 + params.put("signature", signature);
  232 +
  233 + // 4.发送HTTP请求
  234 + String s = HttpClientUtils.post_str(TEXT_RESULT, params);
  235 + System.out.println(s);
  236 +
  237 + JSONObject resultObject = JSONObject.parseObject(s);
  238 + return resultObject;
  239 + }
  240 +
  241 + /**
  242 + * 智能网页识别
  243 + *
  244 + * @param url
  245 + * @return
  246 + */
  247 + public static JSONObject getURLFilter(String url) {
  248 + Map<String, String> params = new HashMap<String, String>();
  249 +
  250 + // 1.设置公共参数
  251 + params.put("secretId", SECRETID);
  252 + params.put("version", "v1.0");
  253 + params.put("timestamp", String.valueOf(System.currentTimeMillis()));
  254 + params.put("nonce", String.valueOf(new Random().nextInt()));
  255 +
  256 + // 2.设置私有参数
  257 + //数据唯一标识,能够根据该值定位到该条数据(查询作用)
  258 + params.put("dataId", UUID.randomUUID().toString());
  259 + //网页URL, 支持contentType类型: html、txt、doc、docx、ppt、pptx、xls、xlsx、pdf
  260 + params.put("url", url);
  261 + //1:检测文本,2:检测图片,同时检测文本+图片则以逗号分隔,例:1,2。
  262 + params.put("checkFlags", "1,2");
  263 + //不是必传参数
  264 + params.put("callback", UUID.randomUUID().toString());
  265 +
  266 + // 3.生成签名信息
  267 + String signature = genSignature(SECRETKEY, params);
  268 + params.put("signature", signature);
  269 +
  270 + // 4.发送HTTP请求
  271 + //String response = HttpClient4Utils.sendPost(httpClient, API_URL, params, Consts.UTF_8);
  272 + String s = HttpClientUtils.post_str(URL_SUBMIT, params);
  273 + System.out.println(s);
  274 +
  275 +
  276 + Map<String, String> params1 = new HashMap<String, String>();
  277 + // 1.设置公共参数
  278 + params1.put("secretId", SECRETID);
  279 + params1.put("version", "v1.0");
  280 + params1.put("timestamp", String.valueOf(System.currentTimeMillis()));
  281 + params1.put("nonce", String.valueOf(new Random().nextInt()));
  282 +
  283 + // 2.生成签名信息
  284 + String signature1 = genSignature(SECRETKEY, params1);
  285 + params1.put("signature", signature1);
  286 +
  287 + // 3.发送HTTP请求
  288 + String s1 = HttpClientUtils.post_str(URL_RESULT, params1);
  289 + System.out.println(s1);
  290 +
  291 + // 4.解析接口返回值
  292 + JSONObject resultObject = JSONObject.parseObject(s1);
  293 + return resultObject;
  294 + }
  295 +
  296 + /**
  297 + * 生成签名信息
  298 + *
  299 + * @param secretKey 产品私钥
  300 + * @param params 接口请求参数名和参数值map,不包括signature参数名
  301 + * @return
  302 + */
  303 + public static String genSignature(String secretKey, Map<String, String> params) {
  304 + // 1. 参数名按照ASCII码表升序排序
  305 + String[] keys = params.keySet().toArray(new String[0]);
  306 + Arrays.sort(keys);
  307 +
  308 + // 2. 按照排序拼接参数名与参数值
  309 + StringBuilder sb = new StringBuilder();
  310 + for (String key : keys) {
  311 + sb.append(key).append(params.get(key));
  312 + }
  313 + // 3. 将secretKey拼接到最后
  314 + sb.append(secretKey);
  315 +
  316 + // 4. MD5是128位长度的摘要算法,转换为十六进制之后长度为32字符
  317 + try {
  318 + String s = DigestUtils.md5Hex(sb.toString().getBytes("UTF-8"));
  319 + return s;
  320 + } catch (UnsupportedEncodingException e) {
  321 + e.printStackTrace();
  322 + }
  323 + return null;
  324 + }
  325 +
  326 +}
... ...
src/main/resources/mapper/ShyYidunMapper.xml 0 → 100644
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
  3 +<mapper namespace="com.cnlive.shenhe.mapper.ShyYidunMapper">
  4 + <resultMap id="BaseResultMap" type="com.cnlive.shenhe.entity.ShyYidun">
  5 + <!--
  6 + WARNING - @mbg.generated
  7 + -->
  8 + <id column="id" jdbcType="VARCHAR" property="id" />
  9 + <result column="content_id" jdbcType="VARCHAR" property="content_id" />
  10 + <result column="url" jdbcType="VARCHAR" property="url" />
  11 + <result column="result_type" jdbcType="VARCHAR" property="result_type" />
  12 + <result column="desc_msg" jdbcType="VARCHAR" property="desc_msg" />
  13 + <result column="duration" jdbcType="INTEGER" property="duration" />
  14 + <result column="create_time" jdbcType="TIMESTAMP" property="create_time" />
  15 + <result column="update_time" jdbcType="TIMESTAMP" property="update_time" />
  16 + </resultMap>
  17 +</mapper>
0 18 \ No newline at end of file
... ...