|
@ -19,9 +19,7 @@ import com.epmet.openapi.scan.support.param.*; |
|
|
import com.epmet.openapi.scan.support.param.video.VideoAsyncScanParam; |
|
|
import com.epmet.openapi.scan.support.param.video.VideoAsyncScanParam; |
|
|
import com.epmet.openapi.scan.support.param.video.VideoAsyncScanTask; |
|
|
import com.epmet.openapi.scan.support.param.video.VideoAsyncScanTask; |
|
|
import com.epmet.openapi.scan.support.result.*; |
|
|
import com.epmet.openapi.scan.support.result.*; |
|
|
import com.epmet.openapi.scan.support.result.video.VideoAsyncScanTaskDataDTO; |
|
|
import com.epmet.openapi.scan.support.result.video.*; |
|
|
import com.epmet.openapi.scan.support.result.video.VideoAsyncScanTaskResultDTO; |
|
|
|
|
|
import com.epmet.openapi.scan.support.result.video.VideoResultDTO; |
|
|
|
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import lombok.extern.slf4j.Slf4j; |
|
|
import org.apache.commons.collections4.ListUtils; |
|
|
import org.apache.commons.collections4.ListUtils; |
|
|
import org.apache.commons.lang3.StringUtils; |
|
|
import org.apache.commons.lang3.StringUtils; |
|
@ -630,7 +628,104 @@ public class ScanServiceImpl implements ScanService { |
|
|
**/ |
|
|
**/ |
|
|
@Override |
|
|
@Override |
|
|
public Result<VideoResultDTO> videoResults(List<String> taskIds) { |
|
|
public Result<VideoResultDTO> videoResults(List<String> taskIds) { |
|
|
//todo 未完待续
|
|
|
VideoAsyncScanResultsRequest videoAsyncScanResultsRequest = new VideoAsyncScanResultsRequest(); |
|
|
return null; |
|
|
videoAsyncScanResultsRequest.setAcceptFormat(FormatType.JSON); |
|
|
|
|
|
videoAsyncScanResultsRequest.setMethod(com.aliyuncs.http.MethodType.POST); |
|
|
|
|
|
videoAsyncScanResultsRequest.setConnectTimeout(3000); |
|
|
|
|
|
videoAsyncScanResultsRequest.setReadTimeout(6000); |
|
|
|
|
|
try { |
|
|
|
|
|
videoAsyncScanResultsRequest.setHttpContent(JSON.toJSONString(taskIds).getBytes("UTF-8"), "UTF-8", FormatType.JSON); |
|
|
|
|
|
} catch (UnsupportedEncodingException e) { |
|
|
|
|
|
log.error("videoResults parse param exception", e); |
|
|
|
|
|
return new Result<VideoResultDTO>().error(SysResponseEnum.SCAN_PARAM_ERROR.getCode(), SysResponseEnum.SCAN_PARAM_ERROR.getMsg()); |
|
|
|
|
|
} |
|
|
|
|
|
try { |
|
|
|
|
|
HttpResponse httpResponse = IAcsClientUtil.getIAcsClient().doAction(videoAsyncScanResultsRequest); |
|
|
|
|
|
if (httpResponse.isSuccess()) { |
|
|
|
|
|
JSONObject responseObject = JSON.parseObject(new String(httpResponse.getHttpContent(), "UTF-8")); |
|
|
|
|
|
log.info("查询视频检测结果返参"+JSON.toJSONString(responseObject)); |
|
|
|
|
|
if (HttpStatus.SC_OK == responseObject.getInteger(SysConstant.CODE)) { |
|
|
|
|
|
//获取data列表
|
|
|
|
|
|
JSONArray dataResults = responseObject.getJSONArray(SysConstant.DATA); |
|
|
|
|
|
List<VideoScanOriginalResultDTO> resultList = dataResults.toJavaList(VideoScanOriginalResultDTO.class); |
|
|
|
|
|
//解析数据
|
|
|
|
|
|
VideoResultDTO resultDTO = processVideoResults(resultList); |
|
|
|
|
|
//成功返回
|
|
|
|
|
|
return new Result<VideoResultDTO>().ok(resultDTO); |
|
|
|
|
|
} else { |
|
|
|
|
|
log.warn("查询视频检测结果,接口返回code=" + responseObject.getInteger(SysConstant.CODE)); |
|
|
|
|
|
throw new ExecuteHttpException(SysResponseEnum.THIRD_PLATFORM_RESP_CODE_ERROR.getCode(), |
|
|
|
|
|
SysResponseEnum.THIRD_PLATFORM_RESP_CODE_ERROR.getMsg() + ",status:" + httpResponse.getStatus()); |
|
|
|
|
|
} |
|
|
|
|
|
} else { |
|
|
|
|
|
log.warn("查询视频检测结果,API返回失败"); |
|
|
|
|
|
throw new ExecuteHttpException(SysResponseEnum.THIRD_PLATFORM_RESP_STATUS_ERROR.getCode(), |
|
|
|
|
|
SysResponseEnum.THIRD_PLATFORM_RESP_STATUS_ERROR.getMsg() + ",status:" + httpResponse.getStatus()); |
|
|
|
|
|
} |
|
|
|
|
|
} catch (Exception e) { |
|
|
|
|
|
log.error("videoResults exception ", e); |
|
|
|
|
|
throw new ExecuteHttpException(SysResponseEnum.THIRD_PLATFORM_SERVER_ERROR.getCode(), SysResponseEnum.THIRD_PLATFORM_SERVER_ERROR.getMsg()); |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* @author yinzuomei |
|
|
|
|
|
* @description |
|
|
|
|
|
**/ |
|
|
|
|
|
private VideoResultDTO processVideoResults(List<VideoScanOriginalResultDTO> resultList) { |
|
|
|
|
|
VideoResultDTO videoResultDTO = new VideoResultDTO(); |
|
|
|
|
|
resultList.forEach(result -> { |
|
|
|
|
|
result.setCodeDesc(CommonErrorCodeEnum.getErrorMsg(result.getCode())); |
|
|
|
|
|
if (result.getCode().equals(CommonErrorCodeEnum.PROCESSING.getCode())) { |
|
|
|
|
|
//任务正在检测中,继续轮询
|
|
|
|
|
|
} else if (result.getCode().equals(CommonErrorCodeEnum.OK.getCode())) { |
|
|
|
|
|
//成功=>分析结果
|
|
|
|
|
|
boolean videoPassFlag = getVideoFlag(result.getResults()); |
|
|
|
|
|
boolean voicePassFlag = getVoiceFlag(result.getAudioScanResults()); |
|
|
|
|
|
if (videoPassFlag && voicePassFlag) { |
|
|
|
|
|
videoResultDTO.getPassDataIds().add(result.getDataId()); |
|
|
|
|
|
videoResultDTO.getPassTaskIds().add(result.getTaskId()); |
|
|
|
|
|
} else { |
|
|
|
|
|
videoResultDTO.getNoPassDataIds().add(result.getDataId()); |
|
|
|
|
|
videoResultDTO.getNoPassTaskIds().add(result.getTaskId()); |
|
|
|
|
|
} |
|
|
|
|
|
} else { |
|
|
|
|
|
//检测结果走丢了.... (*^▽^*) 默认失败
|
|
|
|
|
|
videoResultDTO.getNoPassDataIds().add(result.getDataId()); |
|
|
|
|
|
videoResultDTO.getNoPassTaskIds().add(result.getTaskId()); |
|
|
|
|
|
} |
|
|
|
|
|
}); |
|
|
|
|
|
videoResultDTO.setDetails(resultList); |
|
|
|
|
|
return videoResultDTO; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* @return boolean |
|
|
|
|
|
* @author yinzuomei |
|
|
|
|
|
* @description 视频检测结果判断 |
|
|
|
|
|
**/ |
|
|
|
|
|
private boolean getVideoFlag(List<VideoScanOriginDetail> results) { |
|
|
|
|
|
for(VideoScanOriginDetail videoRes:results){ |
|
|
|
|
|
if (!SuggestionEnum.PASS.getCode().equals(videoRes.getSuggestion())) { |
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
return true; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
* @return boolean true:内容通过; 建议为内容违规或者需要人工审核的统一视为不通过,返回false |
|
|
|
|
|
* @author yinzuomei |
|
|
|
|
|
* @description 返回视频语音检测结果 |
|
|
|
|
|
**/ |
|
|
|
|
|
private boolean getVoiceFlag(VoiceAsyncScanResultDTO audioScanResults) { |
|
|
|
|
|
if (null == audioScanResults) { |
|
|
|
|
|
return true; |
|
|
|
|
|
} |
|
|
|
|
|
//人工审核或者内容违规,统一视为不通过
|
|
|
|
|
|
if (!SuggestionEnum.PASS.getCode().equals(audioScanResults.getSuggestion())) { |
|
|
|
|
|
return false; |
|
|
|
|
|
} |
|
|
|
|
|
return true; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|