|
@@ -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;
|
|
|
}
|
|
|
|