ソースを参照

Merge branch 'wyp/0121-checkPublishPlan' of Server/long-article-recommend into master

wangyunpeng 3 ヶ月 前
コミット
c0f5137ddc

+ 13 - 2
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/model/vo/FeishuTableDTO.java

@@ -14,6 +14,7 @@ public class FeishuTableDTO {
     @Data
     public static class Element {
         private String tag;
+        private JSONObject text;
         private long page_size;
         private String row_height;
         private HeaderStyle header_style;
@@ -55,7 +56,7 @@ public class FeishuTableDTO {
         private String tag;
     }
 
-    public static FeishuTableDTO createTable(String title, List<Column> columns, List<JSONObject> rows) {
+    public static FeishuTableDTO createTable(String title, List<Column> columns, List<JSONObject> rows, boolean atAll) {
         String tableStr = "{\n" +
                 "    \"header\":\n" +
                 "    {\n" +
@@ -89,7 +90,17 @@ public class FeishuTableDTO {
                 "        }\n" +
                 "    ]\n" +
                 "}";
-        return JSONObject.parseObject(tableStr, FeishuTableDTO.class);
+        FeishuTableDTO result =  JSONObject.parseObject(tableStr, FeishuTableDTO.class);
+        if (atAll) {
+            FeishuTableDTO.Element atAllElement = new FeishuTableDTO.Element();
+            atAllElement.setTag("div");
+            JSONObject atAllElementText = new JSONObject();
+            atAllElementText.put("content", "<at id=all></at>");
+            atAllElementText.put("tag", "lark_md");
+            atAllElement.setText(atAllElementText);
+            result.getElements().add(atAllElement);
+        }
+        return result;
     }
 
     public static Column createFeishuColumns(

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

@@ -121,6 +121,8 @@ public class XxlJobService {
     public ReturnT<String> checkPublishPlan(String param) {
         Long todayStart = DateUtils.getTodayStart();
         List<NotPublishPlan> notPublishPlan = publishContentMapper.getNotPublishPlan(todayStart);
+        List<FeishuTableDTO.Column> columns = buildCheckPublishPlanColumns();
+        List<JSONObject> rows = new ArrayList<>();
         for (NotPublishPlan publishPlan : notPublishPlan) {
             long now = System.currentTimeMillis();
             int nowHour = DateUtils.getHourByTimestamp(now / 1000);
@@ -131,15 +133,53 @@ public class XxlJobService {
             LocalTime time = LocalTime.parse(publishPlan.getPublishPushTime());
             int planHour = time.getHour();
             int planMinute = time.getMinute();
+            JSONObject obj = null;
             if (nowHour - planHour == 1 && nowMinute > planMinute) {
-                sendFeishuPublishPlanNotPushWarn(publishPlan);
+                obj = sendFeishuPublishPlanNotPushWarn(publishPlan);
             } else if (nowHour - planHour > 1) {
-                sendFeishuPublishPlanNotPushWarn(publishPlan);
+                obj = sendFeishuPublishPlanNotPushWarn(publishPlan);
+            }
+            if (obj != null) {
+                rows.add(obj);
             }
         }
+
+        FeishuTableDTO tableDTO = FeishuTableDTO.createTable("发布计划超1H未发送完成", columns, rows, true);
+        JSONObject content = JSONObject.parseObject(JSONObject.toJSONString(tableDTO));
+        JSONObject bodyParam = new JSONObject();
+        bodyParam.put("msg_type", "interactive");
+        bodyParam.put("card", content);
+        FeishuMessageSender.sendWebHookMessage(FeishuRobotIdEnum.RECOMMEND.getRobotId(), bodyParam);
         return ReturnT.SUCCESS;
     }
 
+    private List<FeishuTableDTO.Column> buildCheckPublishPlanColumns() {
+        List<FeishuTableDTO.Column> columns = new ArrayList<>();
+        FeishuTableDTO.Column planIdColumn = FeishuTableDTO.createFeishuColumns(
+                FieshuTableColumnDataTypeEnum.TEXT.getType(), "plan_id", "发布计划ID", null);
+        columns.add(planIdColumn);
+        FeishuTableDTO.Column planNameColumn = FeishuTableDTO.createFeishuColumns(
+                FieshuTableColumnDataTypeEnum.TEXT.getType(), "plan_name", "发布计划名称", null);
+        columns.add(planNameColumn);
+        FeishuTableDTO.Column exceptCountColumn = FeishuTableDTO.createFeishuColumns(
+                FieshuTableColumnDataTypeEnum.TEXT.getType(), "expect_count", "预计数量", null);
+        columns.add(exceptCountColumn);
+        FeishuTableDTO.Column publishCountColumn = FeishuTableDTO.createFeishuColumns(
+                FieshuTableColumnDataTypeEnum.TEXT.getType(), "publish_count", "实际数量", null);
+        columns.add(publishCountColumn);
+        FeishuTableDTO.Column accountNamesColumn = FeishuTableDTO.createFeishuColumns(
+                FieshuTableColumnDataTypeEnum.TEXT.getType(), "account_names", "发送失败账号", null);
+        columns.add(accountNamesColumn);
+        FeishuTableDTO.Column errorMsgColumn = FeishuTableDTO.createFeishuColumns(
+                FieshuTableColumnDataTypeEnum.TEXT.getType(), "error_msg", "发布计划失败原因", null);
+        columns.add(errorMsgColumn);
+        FeishuTableDTO.Column publishPushTimeColumn = FeishuTableDTO.createFeishuColumns(
+                FieshuTableColumnDataTypeEnum.TEXT.getType(), "publish_push_time", "发布时间", null);
+        columns.add(publishPushTimeColumn);
+
+        return columns;
+    }
+
     @Getter
     @Setter
     @Accessors(chain = true)
@@ -156,20 +196,20 @@ public class XxlJobService {
         private String errorMsg;
     }
 
-    private void sendFeishuPublishPlanNotPushWarn(NotPublishPlan publishPlan) {
+    private JSONObject sendFeishuPublishPlanNotPushWarn(NotPublishPlan publishPlan) {
         Long todayStart = DateUtils.getTodayStart();
         List<PublishAccount> publishAccounts = publishContentMapper.getPublishAccounts(publishPlan.getPlanId(), todayStart);
         List<String> accountNames;
         if (CollectionUtil.isNotEmpty(publishAccounts)) {
             accountNames = publishAccounts.stream().map(PublishAccount::getName).collect(Collectors.toList());
         } else {
-            return;
+            return null;
         }
         PlanErrorMsg planErrorMsg = JSONObject.parseObject(publishPlan.getErrorMsg(), PlanErrorMsg.class);
         if (planErrorMsg == null) {
-            return;
+            return null;
         } else if (CollectionUtil.isEmpty(planErrorMsg.getErrorMsgDetails())) {
-            return;
+            return null;
         }
         Iterator<PlanErrorMsgDetail> iterator = planErrorMsg.getErrorMsgDetails().iterator();
         while (iterator.hasNext()) {
@@ -183,18 +223,17 @@ public class XxlJobService {
         }
         if (CollectionUtil.isEmpty(planErrorMsg.getErrorMsgDetails())
                 || CollectionUtil.isEmpty(accountNames)) {
-            return;
+            return null;
         }
-        FeishuMessageSender.sendWebHookMessage(FeishuRobotIdEnum.RECOMMEND.getRobotId(),
-                "发布计划超1H未发送完成\n"
-                        + "发布计划ID: " + publishPlan.getPlanId() + "\n"
-                        + "发布计划名称: " + publishPlan.getPlanName() + "\n"
-                        + "预计数量: " + publishPlan.getExpectCount() + "\n"
-                        + "实际数量: " + publishPlan.getPublishCount() + "\n"
-                        + "发送失败账号: " + JSONObject.toJSONString(accountNames) + "\n"
-                        + "发布计划失败原因: " + JSONObject.toJSONString(planErrorMsg) + "\n"
-                        + "发布时间: " + publishPlan.getPublishPushTime() + "\n"
-                        + "<at user_id=\"all\">所有人</at> ");
+        JSONObject result = new JSONObject();
+        result.put("plan_id", publishPlan.getPlanId());
+        result.put("plan_name", publishPlan.getPlanName());
+        result.put("expect_count", publishPlan.getExpectCount());
+        result.put("publish_count", publishPlan.getPublishCount());
+        result.put("account_names", accountNames);
+        result.put("error_msg", JSONObject.toJSONString(planErrorMsg));
+        result.put("publish_push_time", publishPlan.getPublishPushTime());
+        return result;
     }
 
     @XxlJob("checkPublishPlanAccount")
@@ -220,7 +259,7 @@ public class XxlJobService {
             row.put("account_names", accountNames);
             rows.add(row);
         }
-        FeishuTableDTO tableDTO = FeishuTableDTO.createTable("发布计划开启账号未开启计划报警", columns, rows);
+        FeishuTableDTO tableDTO = FeishuTableDTO.createTable("发布计划开启账号未开启计划报警", columns, rows, false);
         JSONObject content = JSONObject.parseObject(JSONObject.toJSONString(tableDTO));
         // 无法自动删除 发送飞书通知 人工删除
         JSONObject bodyParam = new JSONObject();
@@ -232,15 +271,15 @@ public class XxlJobService {
 
     private List<FeishuTableDTO.Column> buildCheckPublishPlanAccountColumns() {
         List<FeishuTableDTO.Column> columns = new ArrayList<>();
-        FeishuTableDTO.Column accountNameColumn = FeishuTableDTO.createFeishuColumns(
+        FeishuTableDTO.Column planIdColumn = FeishuTableDTO.createFeishuColumns(
                 FieshuTableColumnDataTypeEnum.TEXT.getType(), "plan_id", "发布计划ID", null);
-        columns.add(accountNameColumn);
-        FeishuTableDTO.Column accountGhIdColumn = FeishuTableDTO.createFeishuColumns(
+        columns.add(planIdColumn);
+        FeishuTableDTO.Column planNameColumn = FeishuTableDTO.createFeishuColumns(
                 FieshuTableColumnDataTypeEnum.TEXT.getType(), "plan_name", "发布计划名称", null);
-        columns.add(accountGhIdColumn);
-        FeishuTableDTO.Column accountTypeColumn = FeishuTableDTO.createFeishuColumns(
+        columns.add(planNameColumn);
+        FeishuTableDTO.Column accountNamesColumn = FeishuTableDTO.createFeishuColumns(
                 FieshuTableColumnDataTypeEnum.TEXT.getType(), "account_names", "开关关闭账号", null);
-        columns.add(accountTypeColumn);
+        columns.add(accountNamesColumn);
         return columns;
     }
 

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

@@ -647,7 +647,7 @@ public class ArticleAuditService {
             row.put("err_msg", alarm.getString("errMsg"));
             rows.add(row);
         }
-        FeishuTableDTO tableDTO = FeishuTableDTO.createTable("文章删除失败", columns, rows);
+        FeishuTableDTO tableDTO = FeishuTableDTO.createTable("文章删除失败", columns, rows, false);
         JSONObject content = JSONObject.parseObject(JSONObject.toJSONString(tableDTO));
         // 无法自动删除 发送飞书通知 人工删除
         JSONObject bodyParam = new JSONObject();

+ 1 - 1
long-article-recommend-service/src/main/java/com/tzld/longarticle/recommend/server/service/recommend/filter/strategy/SensitiveStrategy.java

@@ -38,7 +38,7 @@ public class SensitiveStrategy implements FilterStrategy {
     private static List<String> UnSafeTitles;
 
     Cache<String, Boolean> similarityCache = CacheBuilder.newBuilder()
-            .expireAfterWrite(60 * 15, TimeUnit.SECONDS).build();
+            .expireAfterWrite(60 * 60, TimeUnit.SECONDS).build();
 
     @Override
     public FilterResult filter(FilterParam param) {