| 
					
				 | 
			
			
				@@ -6,9 +6,11 @@ import com.alibaba.fastjson.JSONObject; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.google.common.collect.Lists; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.common.enums.FieshuTableColumnDataTypeEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.common.enums.StatusEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.tzld.longarticle.recommend.server.common.enums.VideoAuditTypeEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.common.enums.aigc.PublishContentStatusEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.common.enums.aigc.PublishPlanInputSourceTypesEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.common.enums.aigc.PushTypeEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.tzld.longarticle.recommend.server.common.enums.cgi.FindFaceStatusEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.common.enums.cgi.PQVideoAuditResultEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.common.enums.cgi.PQVideoSensitiveLevelEnum; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.common.enums.recommend.ArticleDeleteStatusEnum; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -17,6 +19,7 @@ import com.tzld.longarticle.recommend.server.common.enums.recommend.FeishuRobotI 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.mapper.aigc.AigcBaseMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.mapper.crawler.ArticleMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.mapper.longArticle.LongArticleBaseMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.tzld.longarticle.recommend.server.model.cgi.AlgFaceRecognizeResult; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.model.cgi.PQVideoAuditResult; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.model.dto.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.model.entity.aigc.PublishAccount; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -30,11 +33,11 @@ import com.tzld.longarticle.recommend.server.model.vo.ArticleDeleteListVO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.model.vo.FeishuTableDTO; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.remote.WxAccessTokenRemoteService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.remote.WxArticleDeleteService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import com.tzld.longarticle.recommend.server.remote.alg.DangerFaceRecognizeService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.remote.pq.PQVideoAuditResultService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.remote.pq.PQVideoAuditStartProcessService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.repository.aigc.PublishAccountRepository; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.repository.aigc.PublishContentRepository; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import com.tzld.longarticle.recommend.server.repository.aigc.PublishPlanRepository; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.repository.crawler.ArticleRepository; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.repository.longArticle.*; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import com.tzld.longarticle.recommend.server.util.DateUtils; 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -91,7 +94,7 @@ public class ArticleAuditService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     private ArticleMapper articleMapper; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @Autowired 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    private PublishPlanRepository publishPlanRepository; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    private DangerFaceRecognizeService dangerFaceRecognizeService; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @XxlJob("articleVideoAudit") 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -110,7 +113,7 @@ public class ArticleAuditService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<LongArticlesMatchVideo> longArticlesMatchVideoList = longArticlesMatchVideoRepository.getByTraceIdIn(traceIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Map<String, LongArticlesMatchVideo> longarticlesMatchVideoMap = longArticlesMatchVideoList.stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .collect(Collectors.toMap(LongArticlesMatchVideo::getTraceId, Function.identity())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<String> existsOssPath = longArticleBaseMapper.getExistsOssPath(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<String> existsOssPath = longArticleBaseMapper.getExistsOssPath(VideoAuditTypeEnum.PQ.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (String traceId : traceIds) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 LongArticlesMatchVideo longArticlesMatchVideo = longarticlesMatchVideoMap.get(traceId); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -127,6 +130,7 @@ public class ArticleAuditService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     LongArticleVideoAudit videoAudit = new LongArticleVideoAudit(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     videoAudit.setVideoId(response.getVideoID()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     videoAudit.setTraceId(traceId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    videoAudit.setType(VideoAuditTypeEnum.PQ.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     videoAudit.setContentId(longArticlesMatchVideo.getContentId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     videoAudit.setOssPath(ossPath); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     videoAudit.setStatus(StatusEnum.ZERO.getCode()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -169,7 +173,7 @@ public class ArticleAuditService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         List<LongArticlesMatchVideo> longArticlesMatchVideoList = longArticlesMatchVideoRepository.getByTraceIdIn(traceIds); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         Map<String, LongArticlesMatchVideo> longarticlesMatchVideoMap = longArticlesMatchVideoList.stream() 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 .collect(Collectors.toMap(LongArticlesMatchVideo::getTraceId, Function.identity())); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<String> existsOssPath = longArticleBaseMapper.getExistsOssPath(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<String> existsOssPath = longArticleBaseMapper.getExistsOssPath(VideoAuditTypeEnum.COVER.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (String traceId : traceIds) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 LongArticlesMatchVideo longArticlesMatchVideo = longarticlesMatchVideoMap.get(traceId); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -186,6 +190,7 @@ public class ArticleAuditService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     LongArticleVideoAudit videoAudit = new LongArticleVideoAudit(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     videoAudit.setVideoId(response.getVideoID()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     videoAudit.setTraceId(traceId); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    videoAudit.setType(VideoAuditTypeEnum.COVER.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     videoAudit.setContentId(longArticlesMatchVideo.getContentId()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     videoAudit.setOssPath(ossPath); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     videoAudit.setStatus(StatusEnum.ZERO.getCode()); 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -193,22 +198,17 @@ public class ArticleAuditService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     longArticleVideoAuditRepository.save(videoAudit); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     try { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         // 调用封面检测 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        PQVideoAuditResult result = pqVideoAuditResultService.getResult(null).get(0); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        AlgFaceRecognizeResult result = dangerFaceRecognizeService.getResult(response.getVideoCover()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        if (Objects.equals(result.getAuditResult(), PQVideoAuditResultEnum.PASS.getStatus())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        if (Objects.equals(result.getFind_face_status(), FindFaceStatusEnum.NOT_EXIST.getStatus())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             // 审核通过,更新文章状态 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             videoAudit.setStatus(PQVideoAuditResultEnum.PASS.getStatus()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             videoAudit.setFinishTimestamp(System.currentTimeMillis()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             longArticleVideoAuditRepository.save(videoAudit); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                        } else if (Objects.equals(result.getAuditResult(), PQVideoAuditResultEnum.REJECT.getStatus())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        } else if (Objects.equals(result.getFind_face_status(), FindFaceStatusEnum.EXIST.getStatus())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             // 审核不通过,删除文章 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            PQVideoSensitiveLevelEnum sensitiveLevelEnum = PQVideoSensitiveLevelEnum.from(result.getSensitiveLevel()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            if (sensitiveLevelEnum.getLevel() >= PQVideoSensitiveLevelEnum.MID_SENSITIVE.getLevel()) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                videoAudit.setStatus(PQVideoAuditResultEnum.REJECT.getStatus()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                videoAudit.setStatus(PQVideoAuditResultEnum.PASS.getStatus()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                            videoAudit.setFailReason(sensitiveLevelEnum.getDescription()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            videoAudit.setStatus(PQVideoAuditResultEnum.REJECT.getStatus()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                            videoAudit.setFailReason("封面存在违规头像"); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             videoAudit.setFinishTimestamp(System.currentTimeMillis()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             longArticleVideoAuditRepository.save(videoAudit); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             // 构建删除文章记录 并保存 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -216,7 +216,7 @@ public class ArticleAuditService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             // 暂时不做删除 先发送通知 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                             if (videoAudit.getStatus().equals(PQVideoAuditResultEnum.REJECT.getStatus())) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                 FeishuMessageSender.sendWebHookMessage(FeishuRobotIdEnum.ARTICLE_DELETE.getRobotId(), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                                        "视频封面识别不通过【" + sensitiveLevelEnum.getDescription() + "】\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                                        "视频封面识别不通过【存在违规头像】\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                 "traceId:" + videoAudit.getTraceId() + "\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                 "视频id:" + videoAudit.getVideoId() + "\n" + 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                                                 "管理后台地址:https://admin.piaoquantv.com/cms/post-detail/" + videoAudit.getVideoId() + "/detail\n" + 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -260,7 +260,8 @@ public class ArticleAuditService { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     @XxlJob("articleVideoAuditResult") 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     public ReturnT<String> articleVideoAuditResult(String param) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-        List<LongArticleVideoAudit> list = longArticleVideoAuditRepository.getByStatusAndTaskIdIsNotNull(StatusEnum.ZERO.getCode()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        List<LongArticleVideoAudit> list = longArticleVideoAuditRepository.getByStatusAndTypeAndTaskIdIsNotNull( 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                StatusEnum.ZERO.getCode(), VideoAuditTypeEnum.PQ.getType()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         for (List<LongArticleVideoAudit> partition : Lists.partition(list, 10)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             List<Long> taskIds = partition.stream().map(LongArticleVideoAudit::getTaskId).collect(Collectors.toList()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             Map<Long, LongArticleVideoAudit> map = partition.stream().collect(Collectors.toMap(LongArticleVideoAudit::getTaskId, Function.identity())); 
			 |