Преглед на файлове

Merge branch 'wyp/0111-articleBatchDelete' of Server/long-article-recommend into master

wangyunpeng преди 5 месеца
родител
ревизия
5ff7c26387

+ 3 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/entity/longArticle/LongArticleAuditDelete.java

@@ -42,6 +42,9 @@ public class LongArticleAuditDelete {
     @Column(name = "fail_reason")
     private String failReason;
 
+    @Column(name = "delete_all")
+    private Integer deleteAll;
+
     @Column(name = "create_timestamp")
     private Long createTimestamp;
 

+ 2 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/repository/longArticle/LongArticleAuditDeleteRepository.java

@@ -11,4 +11,6 @@ public interface LongArticleAuditDeleteRepository extends JpaRepository<LongArti
     List<LongArticleAuditDelete> getByStatus(Integer status);
 
     List<LongArticleAuditDelete> getByPublishContentIdIn(List<String> publishContentIds);
+
+    List<LongArticleAuditDelete> getByGhIdAndMsgIdIn(String ghId, List<String> msgIds);
 }

+ 65 - 13
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/recommend/ArticleAuditService.java

@@ -524,25 +524,77 @@ public class ArticleAuditService {
                     // 获取token
                     String token = wxAccessTokenRemoteService.getAccessToken(entry.getKey());
                     List<LongArticleAuditDelete> list = entry.getValue();
-                    for (LongArticleAuditDelete delete : list) {
-                        try {
-                            if (Objects.equals(delete.getPushType(), PushTypeEnum.AUTO_GROUP_PUBLISH.getVal())) {
-                                // 删除文章
-                                RequestResult<String> result = wxArticleDeleteService.deleteArticle(token, delete.getMsgId(), delete.getIndex());
+                    Map<String, List<LongArticleAuditDelete>> msgIdMap = list.stream()
+                            .collect(Collectors.groupingBy(LongArticleAuditDelete::getMsgId));
+                    List<String> msgIds = new ArrayList<>(msgIdMap.keySet());
+                    List<LongArticleAuditDelete> accountAllDeleteList = longArticleAuditDeleteRepository.getByGhIdAndMsgIdIn(entry.getKey(), msgIds);
+                    Map<String, List<LongArticleAuditDelete>> accountAllDeleteMap = accountAllDeleteList.stream()
+                           .collect(Collectors.groupingBy(LongArticleAuditDelete::getMsgId));
+                    for (Map.Entry<String, List<LongArticleAuditDelete>> msgIdEntry : msgIdMap.entrySet()) {
+                        String msgId = msgIdEntry.getKey();
+                        List<LongArticleAuditDelete> msgIdList = msgIdEntry.getValue();
+                        Integer pushType = msgIdList.get(0).getPushType();
+                        List<LongArticleAuditDelete> msgIdDeleteList = accountAllDeleteMap.get(msgId);
+                        List<LongArticleAuditDelete> deleteAllCount = msgIdDeleteList.stream()
+                                .filter(o -> Objects.equals(o.getStatus(), ArticleDeleteStatusEnum.SUCCESS.getCode()))
+                                .filter(o -> o.getDeleteAll() == 1)
+                                .collect(Collectors.toList());
+                        int count = msgIdDeleteList.size();
+                        int status;
+                        String errMsg;
+                        // 执行过全部删除,则自动置为历史状态
+                        if (!deleteAllCount.isEmpty()) {
+                            LongArticleAuditDelete statusDelete = deleteAllCount.get(0);
+                            msgIdList.forEach(delete -> {
+                                delete.setStatus(statusDelete.getStatus());
+                                delete.setFailReason(statusDelete.getFailReason());
+                                delete.setFinishTimestamp(System.currentTimeMillis());
+                                longArticleAuditDeleteRepository.save(delete);
+                            });
+                            continue;
+                        }
+                        if (Objects.equals(pushType, PushTypeEnum.AUTO_GROUP_PUBLISH.getVal())) {
+                            // 删除文章
+                            if (count > 1) {
+                                RequestResult<String> result = wxArticleDeleteService.deleteArticle(token, msgId, 0);
                                 if (result.isSuccess()) {
-                                    delete.setStatus(ArticleDeleteStatusEnum.SUCCESS.getCode());
+                                    errMsg = null;
+                                    status = ArticleDeleteStatusEnum.SUCCESS.getCode();
                                 } else {
-                                    delete.setStatus(ArticleDeleteStatusEnum.FAIL.getCode());
-                                    delete.setFailReason(result.getFailReason());
+                                    status = ArticleDeleteStatusEnum.FAIL.getCode();
+                                    errMsg = result.getFailReason();
                                 }
+                                msgIdList.forEach(delete -> {
+                                    delete.setStatus(status);
+                                    delete.setFailReason(errMsg);
+                                    delete.setDeleteAll(1);
+                                    delete.setFinishTimestamp(System.currentTimeMillis());
+                                    longArticleAuditDeleteRepository.save(delete);
+                                });
                             } else {
+                                LongArticleAuditDelete delete = msgIdList.get(0);
+                                try {
+                                    RequestResult<String> result = wxArticleDeleteService.deleteArticle(token,
+                                            delete.getMsgId(), delete.getIndex());
+                                    if (result.isSuccess()) {
+                                        delete.setStatus(ArticleDeleteStatusEnum.SUCCESS.getCode());
+                                    } else {
+                                        delete.setStatus(ArticleDeleteStatusEnum.FAIL.getCode());
+                                        delete.setFailReason(result.getFailReason());
+                                    }
+                                    delete.setFinishTimestamp(System.currentTimeMillis());
+                                    longArticleAuditDeleteRepository.save(delete);
+                                } catch (Exception e) {
+                                    log.error("articleVideoDelete ghId:{} error", delete.getGhId(), e);
+                                }
+                            }
+                        } else {
+                            msgIdList.forEach(delete -> {
                                 deleteFailAlarmAdd(alarmList, delete.getPublishContentId(), "非自动群发", delete.getIndex());
                                 delete.setStatus(ArticleDeleteStatusEnum.SUCCESS.getCode());
-                            }
-                            delete.setFinishTimestamp(System.currentTimeMillis());
-                            longArticleAuditDeleteRepository.save(delete);
-                        } catch (Exception e) {
-                            log.error("articleVideoDelete ghId:{} error", delete.getGhId(), e);
+                                delete.setFinishTimestamp(System.currentTimeMillis());
+                                longArticleAuditDeleteRepository.save(delete);
+                            });
                         }
                     }
                 } finally {