|  | @ -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 { | 
			
		
	
	
		
		
			
				
					|  | 
 |