|
@@ -2,15 +2,16 @@ package com.tzld.longarticle.recommend.server.service.recommend;
|
|
|
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
-import com.tzld.longarticle.recommend.server.model.dto.LongArticlesMatchVideoResponse;
|
|
|
-import com.tzld.longarticle.recommend.server.model.entity.longArticle.GetOffVideoArticle;
|
|
|
-import com.tzld.longarticle.recommend.server.model.entity.longArticle.LongArticleCrawlerVideo;
|
|
|
-import com.tzld.longarticle.recommend.server.model.entity.longArticle.LongArticleVideoAudit;
|
|
|
-import com.tzld.longarticle.recommend.server.model.entity.longArticle.LongArticlesMatchVideo;
|
|
|
+import com.tzld.longarticle.recommend.server.common.enums.StatusEnum;
|
|
|
+import com.tzld.longarticle.recommend.server.mapper.aigc.AigcBaseMapper;
|
|
|
+import com.tzld.longarticle.recommend.server.model.dto.*;
|
|
|
+import com.tzld.longarticle.recommend.server.model.entity.aigc.PublishAccount;
|
|
|
+import com.tzld.longarticle.recommend.server.model.entity.longArticle.*;
|
|
|
import com.tzld.longarticle.recommend.server.model.param.ArticleVideoAuditResultParam;
|
|
|
-import com.tzld.longarticle.recommend.server.repository.longArticle.GetOffVideoArticleRepository;
|
|
|
-import com.tzld.longarticle.recommend.server.repository.longArticle.LongArticleCrawlerVideoRepository;
|
|
|
-import com.tzld.longarticle.recommend.server.repository.longArticle.LongArticlesMatchVideoRepository;
|
|
|
+import com.tzld.longarticle.recommend.server.remote.WxAccessTokenRemoteService;
|
|
|
+import com.tzld.longarticle.recommend.server.remote.WxArticleDeleteService;
|
|
|
+import com.tzld.longarticle.recommend.server.repository.aigc.PublishAccountRepository;
|
|
|
+import com.tzld.longarticle.recommend.server.repository.longArticle.*;
|
|
|
import com.tzld.longarticle.recommend.server.util.DateUtils;
|
|
|
import com.xxl.job.core.biz.model.ReturnT;
|
|
|
import com.xxl.job.core.handler.annotation.XxlJob;
|
|
@@ -19,8 +20,6 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.util.StringUtils;
|
|
|
|
|
|
-import java.util.ArrayList;
|
|
|
-import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.function.Function;
|
|
@@ -36,6 +35,18 @@ public class ArticleAuditService {
|
|
|
private LongArticlesMatchVideoRepository longArticlesMatchVideoRepository;
|
|
|
@Autowired
|
|
|
private LongArticleCrawlerVideoRepository longArticleCrawlerVideoRepository;
|
|
|
+ @Autowired
|
|
|
+ private LongArticleAuditDeleteRepository longArticleAuditDeleteRepository;
|
|
|
+ @Autowired
|
|
|
+ private LongArticleVideoAuditRepository longArticleVideoAuditRepository;
|
|
|
+ @Autowired
|
|
|
+ private WxArticleDeleteService wxArticleDeleteService;
|
|
|
+ @Autowired
|
|
|
+ private WxAccessTokenRemoteService wxAccessTokenRemoteService;
|
|
|
+ @Autowired
|
|
|
+ private AigcBaseMapper aigcBaseMapper;
|
|
|
+ @Autowired
|
|
|
+ private PublishAccountRepository publishAccountRepository;
|
|
|
|
|
|
|
|
|
@XxlJob("articleVideoAudit")
|
|
@@ -52,43 +63,117 @@ public class ArticleAuditService {
|
|
|
List<LongArticlesMatchVideo> longArticlesMatchVideoList = longArticlesMatchVideoRepository.getByTraceIdIn(traceIds);
|
|
|
Map<String, LongArticlesMatchVideo> longarticlesMatchVideoMap = longArticlesMatchVideoList.stream()
|
|
|
.collect(Collectors.toMap(LongArticlesMatchVideo::getTraceId, Function.identity()));
|
|
|
- List<LongArticleCrawlerVideo> longArticleCrawlerVideoList = longArticleCrawlerVideoRepository.getByTraceIdIn(traceIds);
|
|
|
- Map<String, List<LongArticleCrawlerVideo>> longArticleCrawlerVideoMap = longArticleCrawlerVideoList.stream()
|
|
|
- .collect(Collectors.groupingBy(LongArticleCrawlerVideo::getTraceId));
|
|
|
- Map<String, LongArticleVideoAudit> traceIdMap = new HashMap<>();
|
|
|
for (String traceId : traceIds) {
|
|
|
LongArticlesMatchVideo longArticlesMatchVideo = longarticlesMatchVideoMap.get(traceId);
|
|
|
List<LongArticlesMatchVideoResponse> responseList = JSONArray.parseArray(longArticlesMatchVideo.getResponse()
|
|
|
, LongArticlesMatchVideoResponse.class);
|
|
|
- List<String> videoOssList = new ArrayList<>();
|
|
|
- responseList.forEach(item -> {
|
|
|
- if (StringUtils.hasText(item.getVideoOSS())) {
|
|
|
- videoOssList.add(item.getVideoOSS());
|
|
|
- }
|
|
|
- });
|
|
|
- List<LongArticleCrawlerVideo> longArticleCrawlerVideos = longArticleCrawlerVideoMap.get(traceId);
|
|
|
+ for (LongArticlesMatchVideoResponse response : responseList) {
|
|
|
+ LongArticleVideoAudit videoAudit = new LongArticleVideoAudit();
|
|
|
+ videoAudit.setVideoId(response.getVideoID());
|
|
|
+ videoAudit.setTraceId(traceId);
|
|
|
+ videoAudit.setContentId(longArticlesMatchVideo.getContentId());
|
|
|
+ videoAudit.setOssPath(response.getVideoOSS());
|
|
|
+ videoAudit.setStatus(StatusEnum.ZERO.getCode());
|
|
|
+ videoAudit.setCreateTimestamp(System.currentTimeMillis());
|
|
|
+ longArticleVideoAuditRepository.save(videoAudit);
|
|
|
+ // todo 调用PQ 审核视频
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
return ReturnT.SUCCESS;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- *
|
|
|
+ * 视频审核结果处理
|
|
|
* @param param
|
|
|
* @return
|
|
|
*/
|
|
|
public void articleVideoAuditResult(ArticleVideoAuditResultParam param) {
|
|
|
+ LongArticleVideoAudit longArticleVideoAudit = longArticleVideoAuditRepository.getByVideoId(param.getVideoId());
|
|
|
+ if (param.getResult() == 1) {
|
|
|
+ // 审核通过,更新文章状态
|
|
|
+ longArticleVideoAudit.setStatus(StatusEnum.ONE.getCode());
|
|
|
+ longArticleVideoAudit.setFinishTimestamp(System.currentTimeMillis());
|
|
|
+ longArticleVideoAuditRepository.save(longArticleVideoAudit);
|
|
|
+ } else {
|
|
|
+ // 审核不通过,删除文章
|
|
|
+ longArticleVideoAudit.setStatus(StatusEnum.TWO.getCode());
|
|
|
+ longArticleVideoAudit.setFinishTimestamp(System.currentTimeMillis());
|
|
|
+ longArticleVideoAuditRepository.save(longArticleVideoAudit);
|
|
|
+ // 构建删除文章记录 并保存
|
|
|
+ saveDeleteRecord(longArticleVideoAudit.getOssPath());
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
+ private void saveDeleteRecord(String ossPath) {
|
|
|
+ List<LongArticleCrawlerVideo> crawlerVideoList = longArticleCrawlerVideoRepository.getByVideoOssPath(ossPath);
|
|
|
+ List<String> traceIds = crawlerVideoList.stream().map(LongArticleCrawlerVideo::getTraceId).collect(Collectors.toList());
|
|
|
+ List<PublishContentMiniprogramDTO> publishContentList = aigcBaseMapper.getPublishContentByTraceIdIn(traceIds);
|
|
|
+ List<String> publishContentIds = publishContentList.stream().map(PublishContentMiniprogramDTO::getPublishContentId).collect(Collectors.toList());
|
|
|
+ Map<String, String> publishContentIdMap = publishContentList.stream()
|
|
|
+ .collect(Collectors.toMap(PublishContentMiniprogramDTO::getTraceId, PublishContentMiniprogramDTO::getPublishContentId));
|
|
|
+ List<PublishGzhPushContentRelDTO> pushContentRelList = aigcBaseMapper.getPushContentRelByPublishContentIdIn(publishContentIds);
|
|
|
+ List<String> pushIds = pushContentRelList.stream().map(PublishGzhPushContentRelDTO::getPushId).collect(Collectors.toList());
|
|
|
+ Map<String, String> publishPushIdMap = pushContentRelList.stream()
|
|
|
+ .collect(Collectors.toMap(PublishGzhPushContentRelDTO::getPublishContentId, PublishGzhPushContentRelDTO::getPushId));
|
|
|
+ List<PublishGzhPushDTO> pushList = aigcBaseMapper.getPushByPushIdIn(pushIds);
|
|
|
+ Map<String, String> pushIdMap = pushList.stream()
|
|
|
+ .collect(Collectors.toMap(PublishGzhPushDTO::getPushId, PublishGzhPushDTO::getGroupPushMsgId));
|
|
|
+ List<String> publishAccountIds = pushList.stream().map(PublishGzhPushDTO::getPublishAccountId).collect(Collectors.toList());
|
|
|
+ Map<String, String> pushAccountMap = pushList.stream()
|
|
|
+ .collect(Collectors.toMap(PublishGzhPushDTO::getPushId, PublishGzhPushDTO::getPublishAccountId));
|
|
|
+ List<PublishAccount> publishAccountList = publishAccountRepository.getByIdIn(publishAccountIds);
|
|
|
+ Map<String, String> publishAccountMap = publishAccountList.stream()
|
|
|
+ .collect(Collectors.toMap(PublishAccount::getId, PublishAccount::getGhId));
|
|
|
+ List<PublishGzhPushContentRelDTO> groupPushRelList = aigcBaseMapper.getGroupPushRelByPushIdIn(pushIds);
|
|
|
+ Map<String, List<PublishGzhPushContentRelDTO>> groupPushRelMap = groupPushRelList.stream()
|
|
|
+ .collect(Collectors.groupingBy(PublishGzhPushContentRelDTO::getPushId));
|
|
|
+ for (String traceId : traceIds) {
|
|
|
+ String publishContentId = publishContentIdMap.get(traceId);
|
|
|
+ String pushId = publishPushIdMap.get(publishContentId);
|
|
|
+ String groupPushMsgId = pushIdMap.get(pushId);
|
|
|
+ String publishAccountId = pushAccountMap.get(pushId);
|
|
|
+ String ghId = publishAccountMap.get(publishAccountId);
|
|
|
+ List<PublishGzhPushContentRelDTO> relList = groupPushRelMap.get(pushId);
|
|
|
+ int index = 1;
|
|
|
+ for (int i = 0; i < relList.size(); i++) {
|
|
|
+ if (relList.get(i).getPublishContentId().equals(publishContentId)) {
|
|
|
+ index = i + 1;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ LongArticleAuditDelete delete = new LongArticleAuditDelete();
|
|
|
+ delete.setGhId(ghId);
|
|
|
+ delete.setMsgId(groupPushMsgId);
|
|
|
+ delete.setIndex(index);
|
|
|
+ delete.setStatus(StatusEnum.ZERO.getCode());
|
|
|
+ delete.setCreateTimestamp(System.currentTimeMillis());
|
|
|
+ longArticleAuditDeleteRepository.save(delete);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 删除审核不通过,已发布文章
|
|
|
+ *
|
|
|
* @param param
|
|
|
* @return
|
|
|
*/
|
|
|
@XxlJob("articleVideoDelete")
|
|
|
public ReturnT<String> articleVideoDelete(String param) {
|
|
|
-
|
|
|
+ List<LongArticleAuditDelete> dealList = longArticleAuditDeleteRepository.getByStatus(StatusEnum.ZERO.getCode());
|
|
|
+ for (LongArticleAuditDelete delete : dealList) {
|
|
|
+ // 获取token
|
|
|
+ String token = wxAccessTokenRemoteService.getAccessToken(delete.getGhId());
|
|
|
+ // 删除文章
|
|
|
+ RequestResult<String> result = wxArticleDeleteService.deleteArticle(token, delete.getMsgId(), delete.getIndex());
|
|
|
+ if (result.isSuccess()) {
|
|
|
+ delete.setStatus(StatusEnum.ONE.getCode());
|
|
|
+ } else {
|
|
|
+ delete.setStatus(StatusEnum.TWO.getCode());
|
|
|
+ delete.setFinishTimestamp(System.currentTimeMillis());
|
|
|
+ }
|
|
|
+ longArticleAuditDeleteRepository.save(delete);
|
|
|
+ }
|
|
|
return ReturnT.SUCCESS;
|
|
|
}
|
|
|
}
|