|
@ -24,6 +24,7 @@ import com.epmet.openapi.scan.support.result.ScanTaskResult; |
|
|
import com.epmet.openapi.scan.support.result.SceneDetailResult; |
|
|
import com.epmet.openapi.scan.support.result.SceneDetailResult; |
|
|
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.commons.collections4.ListUtils; |
|
|
import org.apache.http.HttpStatus; |
|
|
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; |
|
@ -53,29 +54,19 @@ public class ScanServiceImpl implements ScanService { |
|
|
textScanParam.setBizType(bizType); |
|
|
textScanParam.setBizType(bizType); |
|
|
|
|
|
|
|
|
List<TextTask> textTasks = textScanParam.getTasks(); |
|
|
List<TextTask> textTasks = textScanParam.getTasks(); |
|
|
if (CollectionUtils.isEmpty(textTasks) || textTasks.size() > SysConstant.MAX_TEXT_TASKS) { |
|
|
if (CollectionUtils.isEmpty(textTasks) || textTasks.size() > SysConstant.MAX_TASK_SIZE) { |
|
|
return new Result<SyncScanResult>().error(SysResponseEnum.SCAN_TASK_LIST_PARAM_ERROR.getCode(), SysResponseEnum.SCAN_TASK_LIST_PARAM_ERROR.getMsg()); |
|
|
return new Result<SyncScanResult>().error(SysResponseEnum.SCAN_TASK_LIST_PARAM_ERROR.getCode(), SysResponseEnum.SCAN_TASK_LIST_PARAM_ERROR.getMsg().concat(SysConstant.MAX_TASK_SIZE.toString())); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
TextScanRequest textScanRequest = new TextScanRequest(); |
|
|
TextScanRequest textScanRequest = getTextScanRequest(); |
|
|
textScanRequest.setAcceptFormat(FormatType.JSON); // 指定api返回格式
|
|
|
|
|
|
textScanRequest.setMethod(com.aliyuncs.http.MethodType.POST); // 指定请求方法
|
|
|
|
|
|
textScanRequest.setEncoding(SysConstant.UTF8); |
|
|
|
|
|
textScanRequest.setRegionId(regionId); |
|
|
|
|
|
|
|
|
|
|
|
try { |
|
|
try { |
|
|
textScanRequest.setHttpContent(JSON.toJSONString(textScanParam).getBytes(SysConstant.UTF8), SysConstant.UTF8, FormatType.JSON); |
|
|
textScanRequest.setHttpContent(JSON.toJSONString(textScanParam).getBytes(SysConstant.UTF8), SysConstant.UTF8, FormatType.JSON); |
|
|
} catch (UnsupportedEncodingException e) { |
|
|
} catch (UnsupportedEncodingException e) { |
|
|
log.error("sendTextScan parse param exception", e); |
|
|
log.error("sendTextScan parse param exception", e); |
|
|
|
|
|
return new Result<SyncScanResult>().error(SysResponseEnum.SCAN_PARAM_ERROR.getCode(), SysResponseEnum.SCAN_PARAM_ERROR.getMsg()); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 请务必设置超时时间 |
|
|
|
|
|
*/ |
|
|
|
|
|
textScanRequest.setConnectTimeout(3000); |
|
|
|
|
|
textScanRequest.setReadTimeout(6000); |
|
|
|
|
|
|
|
|
|
|
|
try { |
|
|
try { |
|
|
SyncScanResult textScanResult = executeSyncText(textScanRequest); |
|
|
SyncScanResult textScanResult = executeSyncText(textScanRequest); |
|
|
return new Result<SyncScanResult>().ok(textScanResult); |
|
|
return new Result<SyncScanResult>().ok(textScanResult); |
|
@ -85,24 +76,63 @@ public class ScanServiceImpl implements ScanService { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private TextScanRequest getTextScanRequest() { |
|
|
|
|
|
TextScanRequest textScanRequest = new TextScanRequest(); |
|
|
|
|
|
textScanRequest.setAcceptFormat(FormatType.JSON); // 指定api返回格式
|
|
|
|
|
|
textScanRequest.setMethod(com.aliyuncs.http.MethodType.POST); // 指定请求方法
|
|
|
|
|
|
textScanRequest.setEncoding(SysConstant.UTF8); |
|
|
|
|
|
textScanRequest.setRegionId(regionId); |
|
|
|
|
|
textScanRequest.setConnectTimeout(3000); |
|
|
|
|
|
textScanRequest.setReadTimeout(6000); |
|
|
|
|
|
return textScanRequest; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
@Override |
|
|
@Override |
|
|
public Result<SyncScanResult> sendSyncImgScan(ImgScanParam imgScanParam) { |
|
|
public Result<SyncScanResult> sendSyncImgScan(ImgScanParam imgScanParam) { |
|
|
ImageSyncScanRequest imageSyncScanRequest = new ImageSyncScanRequest(); |
|
|
|
|
|
imageSyncScanRequest.setAcceptFormat(FormatType.JSON); // 指定api返回格式
|
|
|
|
|
|
imageSyncScanRequest.setMethod(com.aliyuncs.http.MethodType.POST); // 指定请求方法
|
|
|
|
|
|
imageSyncScanRequest.setEncoding(SysConstant.UTF8); |
|
|
|
|
|
imageSyncScanRequest.setRegionId(regionId); |
|
|
|
|
|
|
|
|
|
|
|
//默认参数
|
|
|
//默认参数
|
|
|
// 鉴黄 暴恐涉政
|
|
|
// 鉴黄 暴恐涉政
|
|
|
imgScanParam.setScenes(ImgSceneEnum.getImgSceneList()); |
|
|
imgScanParam.setScenes(ImgSceneEnum.getImgSceneList()); |
|
|
imgScanParam.setBizType(bizType); |
|
|
imgScanParam.setBizType(bizType); |
|
|
|
|
|
|
|
|
List<ImgTask> imgTasks = imgScanParam.getTasks(); |
|
|
List<ImgTask> imgTasks = imgScanParam.getTasks(); |
|
|
if (CollectionUtils.isEmpty(imgTasks) || imgTasks.size() > SysConstant.MAX_IMG_TASKS) { |
|
|
if (CollectionUtils.isEmpty(imgTasks) || imgTasks.size() > SysConstant.MAX_TASK_SIZE) { |
|
|
return new Result<SyncScanResult>().error(SysResponseEnum.SCAN_TASK_LIST_PARAM_ERROR.getCode(), SysResponseEnum.SCAN_TASK_LIST_PARAM_ERROR.getMsg()); |
|
|
return new Result<SyncScanResult>().error(SysResponseEnum.SCAN_TASK_LIST_PARAM_ERROR.getCode(), SysResponseEnum.SCAN_TASK_LIST_PARAM_ERROR.getMsg().concat(SysConstant.MAX_TASK_SIZE.toString())); |
|
|
|
|
|
} |
|
|
|
|
|
if (imgTasks.size() <= SysConstant.MAX_SCAN_IMG_TASK_SIZE) { |
|
|
|
|
|
return doScanImg(imgScanParam); |
|
|
} |
|
|
} |
|
|
|
|
|
log.info("sendSyncImgScan tasks size:{} over 10", imgTasks.size()); |
|
|
|
|
|
List<List<ImgTask>> partition = ListUtils.partition(imgTasks, SysConstant.MAX_SCAN_IMG_TASK_SIZE); |
|
|
|
|
|
SyncScanResult finalResult = new SyncScanResult(); |
|
|
|
|
|
for (List<ImgTask> tasks : partition) { |
|
|
|
|
|
ImgScanParam scanParam = new ImgScanParam(); |
|
|
|
|
|
scanParam.setBizType(imgScanParam.getBizType()); |
|
|
|
|
|
scanParam.setScenes(imgScanParam.getScenes()); |
|
|
|
|
|
scanParam.setTasks(tasks); |
|
|
|
|
|
scanParam.setCallback(imgScanParam.getCallback()); |
|
|
|
|
|
scanParam.setSeed(imgScanParam.getSeed()); |
|
|
|
|
|
Result<SyncScanResult> partResult = doScanImg(scanParam); |
|
|
|
|
|
try { |
|
|
|
|
|
Thread.sleep(5L); |
|
|
|
|
|
} catch (InterruptedException e) { |
|
|
|
|
|
log.error("sendSyncImgScan InterruptedException"); |
|
|
|
|
|
} |
|
|
|
|
|
if (partResult.success()) { |
|
|
|
|
|
SyncScanResult data = partResult.getData(); |
|
|
|
|
|
finalResult.getSuccessDataIds().addAll(data.getSuccessDataIds()); |
|
|
|
|
|
finalResult.getFailDataIds().addAll(data.getFailDataIds()); |
|
|
|
|
|
finalResult.getDetails().addAll(data.getDetails()); |
|
|
|
|
|
} else { |
|
|
|
|
|
return partResult; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
return new Result<SyncScanResult>().ok(finalResult); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private Result<SyncScanResult> doScanImg(ImgScanParam imgScanParam) { |
|
|
|
|
|
ImageSyncScanRequest imageSyncScanRequest = getImgScanRequest(); |
|
|
try { |
|
|
try { |
|
|
imageSyncScanRequest.setHttpContent(JSON.toJSONString(imgScanParam).getBytes(SysConstant.UTF8), SysConstant.UTF8, FormatType.JSON); |
|
|
imageSyncScanRequest.setHttpContent(JSON.toJSONString(imgScanParam).getBytes(SysConstant.UTF8), SysConstant.UTF8, FormatType.JSON); |
|
|
} catch (UnsupportedEncodingException e) { |
|
|
} catch (UnsupportedEncodingException e) { |
|
@ -110,12 +140,6 @@ public class ScanServiceImpl implements ScanService { |
|
|
return new Result<SyncScanResult>().error(SysResponseEnum.SCAN_PARAM_ERROR.getCode(), SysResponseEnum.SCAN_PARAM_ERROR.getMsg()); |
|
|
return new Result<SyncScanResult>().error(SysResponseEnum.SCAN_PARAM_ERROR.getCode(), SysResponseEnum.SCAN_PARAM_ERROR.getMsg()); |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* 请务必设置超时时间 |
|
|
|
|
|
*/ |
|
|
|
|
|
imageSyncScanRequest.setConnectTimeout(3000); |
|
|
|
|
|
imageSyncScanRequest.setReadTimeout(6000); |
|
|
|
|
|
|
|
|
|
|
|
try { |
|
|
try { |
|
|
SyncScanResult scanResult = executeSyncImg(imageSyncScanRequest); |
|
|
SyncScanResult scanResult = executeSyncImg(imageSyncScanRequest); |
|
|
return new Result<SyncScanResult>().ok(scanResult); |
|
|
return new Result<SyncScanResult>().ok(scanResult); |
|
@ -125,6 +149,17 @@ public class ScanServiceImpl implements ScanService { |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private ImageSyncScanRequest getImgScanRequest() { |
|
|
|
|
|
ImageSyncScanRequest imageSyncScanRequest = new ImageSyncScanRequest(); |
|
|
|
|
|
imageSyncScanRequest.setAcceptFormat(FormatType.JSON); // 指定api返回格式
|
|
|
|
|
|
imageSyncScanRequest.setMethod(com.aliyuncs.http.MethodType.POST); // 指定请求方法
|
|
|
|
|
|
imageSyncScanRequest.setEncoding(SysConstant.UTF8); |
|
|
|
|
|
imageSyncScanRequest.setRegionId(regionId); |
|
|
|
|
|
imageSyncScanRequest.setConnectTimeout(3000); |
|
|
|
|
|
imageSyncScanRequest.setReadTimeout(6000); |
|
|
|
|
|
return imageSyncScanRequest; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
public SyncScanResult executeSyncText(AcsRequest<?> textScanRequest) { |
|
|
public SyncScanResult executeSyncText(AcsRequest<?> textScanRequest) { |
|
|
SyncScanResult result = new SyncScanResult(); |
|
|
SyncScanResult result = new SyncScanResult(); |
|
|
try { |
|
|
try { |
|
|