Browse Source

图片检测代码调整-添加检测详情

dev
jianjun 5 years ago
parent
commit
45e54beae2
  1. 3
      epmet-openapi/epmet-openapi-scan/src/main/java/com/epmet/openapi/scan/common/constant/SysConstant.java
  2. 6
      epmet-openapi/epmet-openapi-scan/src/main/java/com/epmet/openapi/scan/common/util/HttpClientManager.java
  3. 1
      epmet-openapi/epmet-openapi-scan/src/main/java/com/epmet/openapi/scan/common/util/IAcsClientUtil.java
  4. 2
      epmet-openapi/epmet-openapi-scan/src/main/java/com/epmet/openapi/scan/controller/ScanController.java
  5. 56
      epmet-openapi/epmet-openapi-scan/src/main/java/com/epmet/openapi/scan/service/impl/ScanServiceImpl.java
  6. 18
      epmet-openapi/epmet-openapi-scan/src/main/java/com/epmet/openapi/scan/support/result/ImgAcsReponse.java
  7. 6
      epmet-openapi/epmet-openapi-scan/src/main/java/com/epmet/openapi/scan/support/result/ScanTaskResult.java
  8. 4
      epmet-openapi/epmet-openapi-scan/src/main/java/com/epmet/openapi/scan/support/result/SceneDetailResult.java
  9. 9
      epmet-openapi/epmet-openapi-scan/src/main/java/com/epmet/openapi/scan/support/result/SyncScanResult.java
  10. 41
      epmet-openapi/epmet-openapi-scan/src/main/java/com/epmet/openapi/scan/support/result/TextScanResult.java

3
epmet-openapi/epmet-openapi-scan/src/main/java/com/epmet/openapi/scan/common/constant/SysConstant.java

@ -12,4 +12,7 @@ public class SysConstant {
public static final Integer MAX_TEXT_TASKS = 100; public static final Integer MAX_TEXT_TASKS = 100;
public static final Integer MAX_IMG_TASKS = 10; public static final Integer MAX_IMG_TASKS = 10;
public static final String CODE = "code";
public static final String DATA = "data";
} }

6
epmet-openapi/epmet-openapi-scan/src/main/java/com/epmet/openapi/scan/common/util/HttpClientManager.java

@ -58,7 +58,7 @@ public class HttpClientManager {
/** /**
* desc: 发送json post 请求 * desc: 发送json post 请求
* param: url,jsonStrParam * param: url,jsonStrParam
* return: CallResult<String> * return: Result<String>
* date: 2019/2/21 9:12 * date: 2019/2/21 9:12
* *
* @author: jianjun liu * @author: jianjun liu
@ -89,7 +89,7 @@ public class HttpClientManager {
/** /**
* desc: 发送json post 请求 * desc: 发送json post 请求
* param: url,jsonStrParam * param: url,jsonStrParam
* return: CallResult<String> * return: Result<String>
* date: 2019/2/21 9:12 * date: 2019/2/21 9:12
* *
* @author: jianjun liu * @author: jianjun liu
@ -116,7 +116,7 @@ public class HttpClientManager {
/** /**
* desc: 发送get请求 * desc: 发送get请求
* param:url, params * param:url, params
* return: CallResult<String> * return: Result<String>
* date: 2019/2/21 9:16 * date: 2019/2/21 9:16
* *
* @author: jianjun liu * @author: jianjun liu

1
epmet-openapi/epmet-openapi-scan/src/main/java/com/epmet/openapi/scan/common/util/IAcsClientUtil.java

@ -2,7 +2,6 @@ package com.epmet.openapi.scan.common.util;
/** /**
* @author jianjun liu * @author jianjun liu
* @email liujianjun@yunzongnet.com
* @date 2020-06-05 10:03 * @date 2020-06-05 10:03
**/ **/

2
epmet-openapi/epmet-openapi-scan/src/main/java/com/epmet/openapi/scan/controller/ScanController.java

@ -48,7 +48,7 @@ public class ScanController {
return scanResultResult; return scanResultResult;
} }
@RequestMapping("imgAsyncScan") //@RequestMapping("imgAsyncScan")
public Result<ImgAsyncScanResult> ImgAsyncScan(@RequestBody ImgScanParam param) { public Result<ImgAsyncScanResult> ImgAsyncScan(@RequestBody ImgScanParam param) {
Result<ImgAsyncScanResult> scanResultResult = scanService.sendASyncImgScan(param); Result<ImgAsyncScanResult> scanResultResult = scanService.sendASyncImgScan(param);
return scanResultResult; return scanResultResult;

56
epmet-openapi/epmet-openapi-scan/src/main/java/com/epmet/openapi/scan/service/impl/ScanServiceImpl.java

@ -23,11 +23,12 @@ import com.epmet.openapi.scan.support.param.ImgScanParam;
import com.epmet.openapi.scan.support.param.ImgTask; import com.epmet.openapi.scan.support.param.ImgTask;
import com.epmet.openapi.scan.support.param.TextScanParam; import com.epmet.openapi.scan.support.param.TextScanParam;
import com.epmet.openapi.scan.support.param.TextTask; import com.epmet.openapi.scan.support.param.TextTask;
import com.epmet.openapi.scan.support.result.BaseScanResult; import com.epmet.openapi.scan.support.result.SceneDetailResult;
import com.epmet.openapi.scan.support.result.ImgAsyncScanResult; import com.epmet.openapi.scan.support.result.ImgAsyncScanResult;
import com.epmet.openapi.scan.support.result.ScanTaskResult; import com.epmet.openapi.scan.support.result.ScanTaskResult;
import com.epmet.openapi.scan.support.result.SyncScanResult; import com.epmet.openapi.scan.support.result.SyncScanResult;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.http.HttpStatus;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils; import org.springframework.util.CollectionUtils;
@ -176,17 +177,18 @@ public class ScanServiceImpl implements ScanService {
if (httpResponse.isSuccess()) { if (httpResponse.isSuccess()) {
JSONObject scrResponse = JSON.parseObject(new String(httpResponse.getHttpContent(), SysConstant.UTF8)); JSONObject scrResponse = JSON.parseObject(new String(httpResponse.getHttpContent(), SysConstant.UTF8));
System.out.println(JSON.toJSONString(scrResponse, true)); //System.out.println(JSON.toJSONString(scrResponse, true));
if (200 == scrResponse.getInteger("code")) { if (HttpStatus.SC_OK == scrResponse.getInteger(SysConstant.CODE)) {
//任务 列表 //任务 列表
List<ScanTaskResult> scanTaskResults = scrResponse.getJSONArray("data").toJavaList(ScanTaskResult.class); List<ScanTaskResult> scanTaskResults = scrResponse.getJSONArray(SysConstant.DATA).toJavaList(ScanTaskResult.class);
for (ScanTaskResult taskResult : scanTaskResults) { for (ScanTaskResult taskResult : scanTaskResults) {
result.getDetails().add(taskResult);
//又根据场景不同 //又根据场景不同
if (200 == taskResult.getCode()) { if (HttpStatus.SC_OK == taskResult.getCode()) {
//如果是多个场景 则为对个 BaseScanResult //如果是多个场景 则为对个 BaseScanResult
List<BaseScanResult> sceneResults = taskResult.getResults(); List<SceneDetailResult> sceneResults = taskResult.getResults();
//是文本检测 目前就一种场景 //是文本检测 目前就一种场景
for (BaseScanResult sceneResult : sceneResults) { for (SceneDetailResult sceneResult : sceneResults) {
String suggestion = sceneResult.getSuggestion(); String suggestion = sceneResult.getSuggestion();
if (SuggestionEnum.BLOCK.getCode().equals(suggestion)) { if (SuggestionEnum.BLOCK.getCode().equals(suggestion)) {
result.getFailDataIds().add(taskResult.getDataId()); result.getFailDataIds().add(taskResult.getDataId());
@ -202,7 +204,7 @@ public class ScanServiceImpl implements ScanService {
} }
return result; return result;
} else { } else {
throw new ExeCuteHttpException("executeSyncText detect not success. code:" + scrResponse.getInteger("code")); throw new ExeCuteHttpException("executeSyncText detect not success. code:" + scrResponse.getInteger(SysConstant.CODE));
} }
} else { } else {
log.warn("executeSyncText response not success. status:" + httpResponse.getStatus()); log.warn("executeSyncText response not success. status:" + httpResponse.getStatus());
@ -227,28 +229,26 @@ public class ScanServiceImpl implements ScanService {
try { try {
HttpResponse httpResponse = IAcsClientUtil.getIAcsClient().doAction(request); HttpResponse httpResponse = IAcsClientUtil.getIAcsClient().doAction(request);
if (httpResponse.isSuccess()) { if (httpResponse.isSuccess()) {
JSONObject scrResponse = JSON.parseObject(new String(httpResponse.getHttpContent(), "UTF-8")); JSONObject scrResponse = JSON.parseObject(new String(httpResponse.getHttpContent(), SysConstant.UTF8));
System.out.println(JSON.toJSONString(scrResponse, true)); //System.out.println(JSON.toJSONString(scrResponse, true));
if (200 == scrResponse.getInteger("code")) { if (HttpStatus.SC_OK == scrResponse.getInteger(SysConstant.CODE)) {
JSONArray taskResults = scrResponse.getJSONArray("data"); JSONArray taskResults = scrResponse.getJSONArray(SysConstant.DATA);
for (Object taskResult : taskResults) { for (Object taskResult : taskResults) {
if (200 == ((JSONObject) taskResult).getInteger("code")) { if (HttpStatus.SC_OK == ((JSONObject) taskResult).getInteger(SysConstant.CODE)) {
String taskId = ((JSONObject) taskResult).getString("taskId"); String taskId = ((JSONObject) taskResult).getString("taskId");
// 将taskId 保存下来,间隔一段时间来轮询结果, 参照ImageAsyncScanResultsRequest // 将taskId 保存下来,间隔一段时间来轮询结果, 参照ImageAsyncScanResultsRequest
System.out.println("args = [" + taskId + "]");
result.getSuccessTaskIds().add(taskId); result.getSuccessTaskIds().add(taskId);
} else { } else {
//TODO 细化失败结果 属性 code等
String taskId = ((JSONObject) taskResult).getString("taskId"); String taskId = ((JSONObject) taskResult).getString("taskId");
result.getFailTaskIds().add(taskId); result.getFailTaskIds().add(taskId);
log.warn("task process fail:{}", ((JSONObject) taskResult).getInteger("code")); log.warn("task process fail:{}", ((JSONObject) taskResult).getInteger(SysConstant.CODE));
throw new ExeCuteHttpException("task process fail:" + ((JSONObject) taskResult).getInteger("code")); continue;
} }
} }
return result; return result;
} else { } else {
System.out.println("detect not success. code:" + scrResponse.getInteger("code")); System.out.println("detect not success. code:" + scrResponse.getInteger(SysConstant.CODE));
throw new ExeCuteHttpException("detect not success. code:" + scrResponse.getInteger("code")); throw new ExeCuteHttpException("detect not success. code:" + scrResponse.getInteger(SysConstant.CODE));
} }
} else { } else {
System.out.println("response not success. status:" + httpResponse.getStatus()); System.out.println("response not success. status:" + httpResponse.getStatus());
@ -269,22 +269,22 @@ public class ScanServiceImpl implements ScanService {
try { try {
HttpResponse httpResponse = IAcsClientUtil.getIAcsClient().doAction(request); HttpResponse httpResponse = IAcsClientUtil.getIAcsClient().doAction(request);
if (httpResponse.isSuccess()) { if (httpResponse.isSuccess()) {
JSONObject scrResponse = JSON.parseObject(new String(httpResponse.getHttpContent(), "UTF-8")); JSONObject scrResponse = JSON.parseObject(new String(httpResponse.getHttpContent(), SysConstant.UTF8));
System.out.println(JSON.toJSONString(scrResponse, true)); if (HttpStatus.SC_OK == scrResponse.getInteger(SysConstant.CODE)) {
if (200 == scrResponse.getInteger("code")) { JSONArray taskResults = scrResponse.getJSONArray(SysConstant.DATA);
JSONArray taskResults = scrResponse.getJSONArray("data");
List<ScanTaskResult> scanTaskResults = taskResults.toJavaList(ScanTaskResult.class); List<ScanTaskResult> scanTaskResults = taskResults.toJavaList(ScanTaskResult.class);
for (ScanTaskResult taskResult : scanTaskResults) { for (ScanTaskResult taskResult : scanTaskResults) {
if(200 != taskResult.getCode()){ result.getDetails().add(taskResult);
if (HttpStatus.SC_OK != taskResult.getCode()) {
if (!result.getFailDataIds().contains(taskResult.getDataId())) { if (!result.getFailDataIds().contains(taskResult.getDataId())) {
result.getFailDataIds().add(taskResult.getDataId()); result.getFailDataIds().add(taskResult.getDataId());
} }
continue; continue;
} }
//如果是多个场景 则为对个 BaseScanResult //如果是多个场景 则为对个 BaseScanResult
List<BaseScanResult> sceneResults = taskResult.getResults(); List<SceneDetailResult> sceneResults = taskResult.getResults();
//是文本检测 目前就一种场景 //是文本检测 目前就一种场景
for (BaseScanResult sceneResult : sceneResults) { for (SceneDetailResult sceneResult : sceneResults) {
String suggestion = sceneResult.getSuggestion(); String suggestion = sceneResult.getSuggestion();
if (SuggestionEnum.BLOCK.getCode().equals(suggestion)) { if (SuggestionEnum.BLOCK.getCode().equals(suggestion)) {
if (result.getFailDataIds().contains(taskResult.getDataId())) { if (result.getFailDataIds().contains(taskResult.getDataId())) {
@ -301,8 +301,8 @@ public class ScanServiceImpl implements ScanService {
} }
return result; return result;
} else { } else {
log.warn("executeSyncImg detect not success. code:", scrResponse.getInteger("code")); log.warn("executeSyncImg detect not success. code:", scrResponse.getInteger(SysConstant.CODE));
throw new ExeCuteHttpException("detect not success. code:" + scrResponse.getInteger("code")); throw new ExeCuteHttpException("detect not success. code:" + scrResponse.getInteger(SysConstant.CODE));
} }
} else { } else {
log.warn("executeSyncImg response not success. status:" + httpResponse.getStatus()); log.warn("executeSyncImg response not success. status:" + httpResponse.getStatus());

18
epmet-openapi/epmet-openapi-scan/src/main/java/com/epmet/openapi/scan/support/result/ImgAcsReponse.java

@ -1,18 +0,0 @@
package com.epmet.openapi.scan.support.result;
import com.aliyuncs.AcsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.transform.UnmarshallerContext;
/**
* @author jianjun liu
* @email liujianjun@yunzongnet.com
* @date 2020-06-05 10:24
**/
public class ImgAcsReponse extends AcsResponse {
@Override
public AcsResponse getInstance(UnmarshallerContext context) throws ClientException, ServerException {
return null;
}
}

6
epmet-openapi/epmet-openapi-scan/src/main/java/com/epmet/openapi/scan/support/result/ScanTaskResult.java

@ -2,6 +2,7 @@ package com.epmet.openapi.scan.support.result;
import lombok.Data; import lombok.Data;
import java.io.Serializable;
import java.util.List; import java.util.List;
/** /**
@ -11,8 +12,9 @@ import java.util.List;
* @date 2020-06-05 14:24 * @date 2020-06-05 14:24
**/ **/
@Data @Data
public class ScanTaskResult { public class ScanTaskResult implements Serializable {
private static final long serialVersionUID = -7905091710384256911L;
private Integer code; private Integer code;
@ -22,5 +24,5 @@ public class ScanTaskResult {
private String dataId; private String dataId;
private List<BaseScanResult> results; private List<SceneDetailResult> results;
} }

4
epmet-openapi/epmet-openapi-scan/src/main/java/com/epmet/openapi/scan/support/result/BaseScanResult.java → epmet-openapi/epmet-openapi-scan/src/main/java/com/epmet/openapi/scan/support/result/SceneDetailResult.java

@ -3,12 +3,12 @@ package com.epmet.openapi.scan.support.result;
import lombok.Data; import lombok.Data;
/** /**
* desc:场景扫描结果
* @author jianjun liu * @author jianjun liu
* @email liujianjun@yunzongnet.com
* @date 2020-06-05 14:24 * @date 2020-06-05 14:24
**/ **/
@Data @Data
public class BaseScanResult { public class SceneDetailResult {
/** /**
* 结果为该分类的概率 * 结果为该分类的概率
*/ */

9
epmet-openapi/epmet-openapi-scan/src/main/java/com/epmet/openapi/scan/support/result/SyncScanResult.java

@ -2,6 +2,7 @@ package com.epmet.openapi.scan.support.result;
import lombok.Data; import lombok.Data;
import java.io.Serializable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -9,11 +10,10 @@ import java.util.List;
* 检测结果 * 检测结果
* *
* @author jianjun liu * @author jianjun liu
* @email liujianjun@yunzongnet.com
* @date 2020-06-05 10:52 * @date 2020-06-05 10:52
**/ **/
@Data @Data
public class SyncScanResult { public class SyncScanResult implements Serializable {
/** /**
* 执行成功的任务Id集合 * 执行成功的任务Id集合
*/ */
@ -23,6 +23,11 @@ public class SyncScanResult {
*/ */
private List<String> failDataIds = new ArrayList<>(); private List<String> failDataIds = new ArrayList<>();
/**
* desc:检测详情
*/
private List<ScanTaskResult> details = new ArrayList<>();
/** /**
* 本地是否全部通过 * 本地是否全部通过
*/ */

41
epmet-openapi/epmet-openapi-scan/src/main/java/com/epmet/openapi/scan/support/result/TextScanResult.java

@ -1,41 +0,0 @@
package com.epmet.openapi.scan.support.result;
import lombok.Data;
import java.util.ArrayList;
import java.util.List;
/**
* 检测结果
*
* @author jianjun liu
* @email liujianjun@yunzongnet.com
* @date 2020-06-05 10:52
**/
@Data
public class TextScanResult {
/**
* 执行成功的任务Id集合
*/
private List<String> successDataIds = new ArrayList<>();
/**
* 执行失败的任务Id集合
*/
private List<String> failDataIds = new ArrayList<>();
/**
* 本地是否全部通过
*/
private boolean isAllPass;
public boolean isAllPass() {
if (failDataIds.isEmpty() && !successDataIds.isEmpty()) {
return true;
}
return isAllPass;
}
public void setAllPass(boolean allPass) {
isAllPass = allPass;
}
}
Loading…
Cancel
Save