Browse Source

发布计划开启账号未开启计划报警

wangyunpeng 7 months ago
parent
commit
a73d49319e

+ 2 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/mapper/aigc/AigcBaseMapper.java

@@ -40,4 +40,6 @@ public interface AigcBaseMapper {
     List<ProduceContentDTO> getProduceContentByPlanId(String planId);
 
     List<ProducePlanExeRecord> getAllByProducePlanId(List<String> producePlanIds);
+
+    List<PublishPlanAccountNotifyDTO> checkPublishPlanAccount();
 }

+ 10 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/dto/PublishPlanAccountNotifyDTO.java

@@ -0,0 +1,10 @@
+package com.tzld.longarticle.recommend.server.model.dto;
+
+import lombok.Data;
+
+@Data
+public class PublishPlanAccountNotifyDTO {
+    private String planId;
+    private String planName;
+    private String accountName;
+}

+ 25 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/XxlJobService.java

@@ -16,6 +16,7 @@ import com.tzld.longarticle.recommend.server.mapper.growth.NewPushMessageCallbac
 import com.tzld.longarticle.recommend.server.mapper.longArticle.LongArticleBaseMapper;
 import com.tzld.longarticle.recommend.server.model.dto.AccountTypeFansDTO;
 import com.tzld.longarticle.recommend.server.model.dto.NotPublishPlan;
+import com.tzld.longarticle.recommend.server.model.dto.PublishPlanAccountNotifyDTO;
 import com.tzld.longarticle.recommend.server.model.entity.aigc.PublishAccount;
 import com.tzld.longarticle.recommend.server.model.entity.crawler.AccountAvgInfo;
 import com.tzld.longarticle.recommend.server.model.entity.crawler.GetOffVideoCrawler;
@@ -178,6 +179,30 @@ public class XxlJobService {
                         + "<at user_id=\"all\">所有人</at> ");
     }
 
+    @XxlJob("checkPublishPlanAccount")
+    public ReturnT<String> checkPublishPlanAccount(String param) {
+        List<PublishPlanAccountNotifyDTO> notifyAccounts = aigcBaseMapper.checkPublishPlanAccount();
+        Map<String, List<PublishPlanAccountNotifyDTO>> notifyAccountMap = notifyAccounts.stream()
+                .collect(Collectors.groupingBy(PublishPlanAccountNotifyDTO::getPlanId));
+        for (Map.Entry<String, List<PublishPlanAccountNotifyDTO>> entry : notifyAccountMap.entrySet()) {
+            String planId = entry.getKey();
+            List<PublishPlanAccountNotifyDTO> list = entry.getValue();
+            if (CollectionUtil.isEmpty(list)) {
+                continue;
+            }
+            String planName = list.get(0).getPlanName();
+            List<String> accountNames = list.stream().map(PublishPlanAccountNotifyDTO::getAccountName).collect(Collectors.toList());
+            log.info("checkPublishPlanAccount planId: {}, planName: {}, accountNames: {}", planId, planName, JSONObject.toJSONString(accountNames));
+            FeishuMessageSender.sendWebHookMessage(FeishuRobotIdEnum.RECOMMEND.getRobotId(),
+                    "发布计划开启账号未开启计划报警\n"
+                            + "发布计划ID: " + planId + "\n"
+                            + "发布计划名称: " + planName + "\n"
+                            + "开关关闭账号: " + JSONObject.toJSONString(accountNames) + "\n"
+                            + "<at user_id=\"all\">所有人</at> ");
+        }
+        return ReturnT.SUCCESS;
+    }
+
     @XxlJob("migrateCrawlerRootSourceId")
     public ReturnT<String> migrateCrawlerRootSourceId(String param) {
         try {

+ 5 - 0
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/web/XxlJobController.java

@@ -19,6 +19,11 @@ public class XxlJobController {
         service.checkPublishPlan(null);
     }
 
+    @GetMapping("/checkPublishPlanAccount")
+    public void checkPublishPlanAccount() {
+        service.checkPublishPlanAccount(null);
+    }
+
     @GetMapping("/migrateCrawlerRootSourceId")
     public void migrateCrawlerRootSourceId(String dateStr) {
         service.migrateCrawlerRootSourceId(dateStr);

+ 8 - 0
long-article-recommend-service/src/main/resources/mapper/aigc/AigcBaseMapper.xml

@@ -199,5 +199,13 @@
         </foreach>
     </select>
 
+    <select id="checkPublishPlanAccount" resultType="com.tzld.longarticle.recommend.server.model.dto.PublishPlanAccountNotifyDTO">
+        select ppa.plan_id, pp.name as planName, pa.name as accountName
+        from publish_plan_account ppa
+        join publish_account pa on ppa.account_id = pa.id
+        join publish_plan pp on ppa.plan_id = pp.id
+        where pp.plan_status = 1 and pp.channel = 5 and pp.content_modal = 3 and ppa.publish_open_flag = 0
+    </select>
+
 
 </mapper>