Procházet zdrojové kódy

项目功能优化

liukaixiong před 4 roky
rodič
revize
eb4e9a4a9f

+ 2 - 1
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/controllers/ApiController.java

@@ -50,7 +50,8 @@ public class ApiController {
         if (StringUtils.isEmpty(date)) {
             date = sdf.format(new Date());
         }
-        return storeDataManager.selectContentById(MsgTypeEnums.URL, date, id);
+        String body = storeDataManager.selectContentById(MsgTypeEnums.URL, date, id);
+        return body == null ? JSON.toJSONString(ResponseUtils.falses(CommonEnums.COMMON_DATA_NOT_FOUND)) : body;
     }
 
     @RequestMapping(value = "/alert/send", method = RequestMethod.GET, produces = "application/json; charset=utf-8")

+ 48 - 16
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/models/dto/alert/RealTimeAlert.java

@@ -1,49 +1,81 @@
 package com.jay.monitor.data.server.models.dto.alert;
 
+import com.alibaba.fastjson.annotation.JSONField;
 import com.jay.monitor.data.core.enums.MsgTypeEnums;
 import com.jay.monitor.data.core.model.serializable.base.ApplicationData;
 import com.jay.monitor.data.core.model.serializable.base.LogDataData;
 import com.jay.monitor.data.core.model.serializable.base.RequestDataData;
 import com.jay.monitor.data.core.model.serializable.base.SearchIndexData;
-import com.jay.monitor.data.server.anno.Description;
+import com.jay.monitor.data.server.enums.AlertRuleEnums;
+
+import java.util.Date;
 
 /**
  * @Module 告警模块
- * @Description 实时告警对象
+ * @JSONField 实时告警对象
  * @Author liukaixiong
  * @Date 2021/1/14 17:40
  */
 public class RealTimeAlert implements ApplicationData, SearchIndexData, RequestDataData, LogDataData {
 
-    @Description(value = "监控类型")
+    @JSONField(name = "触发原因",ordinal = 1)
+    private AlertRuleEnums triggerType;
+    @JSONField(name = "触发总数",ordinal = 2)
+    private Integer triggerCount;
+    @JSONField(name = "监控类型",ordinal = 3)
     private MsgTypeEnums type;
-    @Description(value = "服务名称")
+    @JSONField(name = "服务名称",ordinal = 4)
     private String applicationName;
-    @Description(value = "服务器ip")
+    @JSONField(name = "服务器ip",ordinal = 5)
     private String ip;
-    @Description(value ="请求url")
+    @JSONField(name = "请求url",ordinal = 6)
     private String url;
-    @Description(value ="用户编号")
+    @JSONField(name = "用户编号",ordinal = 7)
     private String userId;
-    @Description(value = "消息队列类型")
+    @JSONField(name = "消息队列类型",ordinal = 8)
     private String mqType;
-    @Description(value ="主题类型")
+    @JSONField(name = "主题类型",ordinal = 9)
     private String topic;
-    @Description(value ="消息编号")
+    @JSONField(name = "消息编号",ordinal = 10)
     private String msgId;
-    @Description(value = "组名称")
+    @JSONField(name = "组名称",ordinal = 11)
     private String groupName;
-    @Description(value = "组key名称")
+    @JSONField(name = "组key名称",ordinal = 12)
     private String groupKeyName;
-    @Description(value = "数据编号")
+    @JSONField(name = "数据编号",ordinal = 13)
     private String dataId;
-    @Description(value = "状态")
+    @JSONField(name = "状态",ordinal = 14)
     private Integer status;
-    @Description(value = "请求时长")
+    @JSONField(name = "请求时长",ordinal = 15)
     private Long requestTime;
+    @JSONField(name = "创建时间", format = "yyyy-MM-dd HH:mm:ss",ordinal = 16)
+    private Date createDate;
+
+    private transient String logId;
+
+    public Integer getTriggerCount() {
+        return triggerCount;
+    }
+
+    public void setTriggerCount(Integer triggerCount) {
+        this.triggerCount = triggerCount;
+    }
 
-    private String logId;
+    public AlertRuleEnums getTriggerType() {
+        return triggerType;
+    }
+
+    public void setTriggerType(AlertRuleEnums triggerType) {
+        this.triggerType = triggerType;
+    }
 
+    public Date getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(Date createDate) {
+        this.createDate = createDate;
+    }
 
     public String getUserId() {
         return userId;

+ 11 - 11
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/report/alert/notify/DingDingRealTimeAlertProcess.java

@@ -9,12 +9,13 @@ import com.jay.monitor.data.server.models.config.AlertConfigModel;
 import com.jay.monitor.data.server.models.dto.alert.RealTimeAlert;
 import com.jay.monitor.data.server.models.request.dingding.ActionCardModel;
 import com.jay.monitor.data.server.store.ConfigStoreManager;
-import com.jay.monitor.data.server.utils.DataUtils;
 import com.jay.monitor.data.server.utils.DingDingUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.util.*;
+import java.util.Arrays;
+import java.util.Comparator;
+import java.util.List;
 
 /**
  * @Module 告警
@@ -40,21 +41,20 @@ public class DingDingRealTimeAlertProcess implements AlertRealTimeMsg {
         String consoleUrl = configStoreManager.getConsoleUrl();
         String logMonitorUrl = configStoreManager.getLogMonitorUrl();
 
-        LinkedHashMap dataMap = new LinkedHashMap();
-        dataMap.put("触发原因", triggerRule);
-        dataMap.put("触发数量", msg.size());
-
         msg.sort(Comparator.comparingLong(RealTimeAlert::getRequestTime).reversed());
 
         RealTimeAlert realTimeAlert = msg.get(0);
+        realTimeAlert.setTriggerType(triggerRule);
 
-        String logUrl = logMonitorUrl + realTimeAlert.getLogId();
+        if (msg.size() > 1) {
+            realTimeAlert.setTriggerCount(msg.size());
+        }
 
-        Map<String, Object> objectMap = DataUtils.parseFieldDescription(realTimeAlert);
-        dataMap.putAll(objectMap);
 
-        String object = JSON.toJSONString(dataMap, SerializerFeature.PrettyFormat, SerializerFeature.WriteMapNullValue,
-                SerializerFeature.WriteDateUseDateFormat);
+        String logUrl = logMonitorUrl + realTimeAlert.getLogId();
+
+        String object = JSON.toJSONString(realTimeAlert, SerializerFeature.PrettyFormat,
+                SerializerFeature.WriteDateUseDateFormat, SerializerFeature.SkipTransientField);
 
         StringBuilder mdText = new StringBuilder();
         mdText.append("【[日志跳转明细](" + logUrl + ")】");

+ 1 - 13
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/utils/DataUtils.java

@@ -1,6 +1,5 @@
 package com.jay.monitor.data.server.utils;
 
-import com.jay.monitor.data.server.anno.Description;
 import org.apache.commons.beanutils.BeanUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.core.annotation.AnnotationUtils;
@@ -49,15 +48,6 @@ public class DataUtils {
     }
 
 
-    /**
-     * 解析字段描述
-     *
-     * @param obj
-     * @return
-     */
-    public static Map<String, Object> parseFieldDescription(Object obj) {
-        return parseFieldAnnotation(obj, Description.class, "value");
-    }
 
     public static Map<String, Object> parseFieldAnnotation(Object obj, Class<? extends Annotation> annotation, String annotationName) {
         Map<String, Object> fieldMap = new LinkedHashMap<>();
@@ -70,9 +60,7 @@ public class DataUtils {
                 Object defaultValue = AnnotationUtils.getValue(declaredAnnotation, annotationName);
                 if (defaultValue != null) {
                     String propertyValue = BeanUtils.getProperty(obj, name);
-                    if (propertyValue != null) {
-                        fieldMap.put(defaultValue.toString(), propertyValue);
-                    }
+                    fieldMap.put(defaultValue.toString(), propertyValue);
                 }
             }
         } catch (Exception e) {

+ 1 - 1
jay-monitor-data-server/src/main/resources/templates/trace/mqList.html

@@ -251,7 +251,7 @@
             }
             , {
                 fixed: 'right', title: '操作',  width: 100, templet: function (res) {
-                    return '<em><a className="layui-btn layui-btn-xs" lay-event="findDetail"><i class="layui-icon" style="font-size: 30px; color: #1E9FFF;">&#xe62a;</i></a></em>'
+                    return '<em><a className="layui-btn layui-btn-xs" lay-event="findDetail"><i class="layui-icon" style="font-size: 30px; color: #1E9FFF;">&#xe64c;</i></a></em>'
                 }
             }
         ];

+ 5 - 1
jay-monitor-data-server/src/main/resources/templates/trace/urlList.html

@@ -166,7 +166,11 @@
                     return '<em>' + elab_common.longConvertDateTime(res.createdTime) + '</em>'
                 }
             }
-            , {fixed: 'right', title: '操作', toolbar: '#barDemo', width: 100}
+            , {
+                fixed: 'right', title: '操作',  width: 100, templet: function (res) {
+                    return '<em><a className="layui-btn layui-btn-xs" lay-event="findDetail"><i class="layui-icon" style="font-size: 30px; color: #1E9FFF;">&#xe62a;</i></a></em>'
+                }
+            }
         ];
 
 

+ 67 - 0
jay-monitor-data-server/src/test/java/com/jay/monitor/data/server/model/TestJsonModel.java

@@ -0,0 +1,67 @@
+package com.jay.monitor.data.server.model;
+
+import com.alibaba.fastjson.annotation.JSONField;
+import com.alibaba.fastjson.annotation.JSONType;
+
+import java.util.Date;
+
+/**
+ * @Module TODO
+ * @Description TODO
+ * @Author liukaixiong
+ * @Date 2021/1/15 14:34
+ */
+@JSONType(orders = { "username", "date"})
+public class TestJsonModel {
+
+    @JSONField(name = "用户名称",label = "asdadfasdf",format="ffff" )
+    private String username;
+    @JSONField(name = "你好啊",label = "时间",format="yyyy-MM-dd HH:mm:ss" )
+    private String test1;
+    @JSONField(name = "我好啊",label = "时间",format="yyyy-MM-dd HH:mm:ss" )
+    private String test2;
+    @JSONField(name = "他好啊",label = "时间",format="yyyy-MM-dd HH:mm:ss" )
+    private String test3;
+    @JSONField(name = "时间类型",label = "时间",format="yyyy-MM-dd HH:mm:ss" )
+    private Date date;
+
+    public String getTest1() {
+        return test1;
+    }
+
+    public void setTest1(String test1) {
+        this.test1 = test1;
+    }
+
+    public String getTest2() {
+        return test2;
+    }
+
+    public void setTest2(String test2) {
+        this.test2 = test2;
+    }
+
+    public String getTest3() {
+        return test3;
+    }
+
+    public void setTest3(String test3) {
+        this.test3 = test3;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public Date getDate() {
+        return date;
+    }
+
+    public void setDate(Date date) {
+        this.date = date;
+    }
+}

+ 2 - 0
jay-monitor-data-server/src/test/java/com/jay/monitor/data/server/process/MQUserProcessTest.java

@@ -32,4 +32,6 @@ public class MQUserProcessTest {
         storeDataManager.store(MsgTypeEnums.MQ, mqDataDTO);
         System.in.read();
     }
+
+
 }

Rozdílová data souboru nebyla zobrazena, protože soubor je příliš velký
+ 22 - 19
jay-monitor-data-server/src/test/java/com/jay/monitor/data/server/utils/DataUtilsTest.java