liukaixiong hace 4 años
padre
commit
2b78f877bc
Se han modificado 47 ficheros con 2351 adiciones y 34 borrados
  1. 2 2
      jay-monitor-data-client/src/main/java/com/jay/monitor/data/client/anno/EnableMonitorData.java
  2. 22 0
      jay-monitor-data-client/src/main/java/com/jay/monitor/data/client/ext/MqMonitorRuleCallback.java
  3. 59 0
      jay-monitor-data-client/src/main/java/com/jay/monitor/data/client/ext/kafka/KafkaMonitorProducer.java
  4. 53 0
      jay-monitor-data-client/src/main/java/com/jay/monitor/data/client/ext/kafka/consumer/KafkaMonitorConsumerListener.java
  5. 25 0
      jay-monitor-data-client/src/main/java/com/jay/monitor/data/client/utils/ClassUtils.java
  6. 90 0
      jay-monitor-data-client/src/main/java/com/jay/monitor/data/client/utils/MonitorUtils.java
  7. 1 0
      jay-monitor-data-client/src/main/resources/META-INF/spring.factories
  8. 29 0
      jay-monitor-data-client/src/test/java/com/jay/monitor/data/client/ext/MonitorRuleCallbackTest.java
  9. 23 0
      jay-monitor-data-client/src/test/java/com/jay/monitor/data/client/ext/TestMQMonitorRule.java
  10. 12 0
      jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/enums/MQInvokeType.java
  11. 11 0
      jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/enums/MQTypeEnum.java
  12. 118 0
      jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/model/serializable/MQDataDTO.java
  13. 37 0
      jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/model/serializable/base/ApplicationData.java
  14. 112 0
      jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/model/serializable/base/CommonDataDTO.java
  15. 23 0
      jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/model/serializable/base/JsonTextData.java
  16. 24 0
      jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/model/serializable/base/LogDataData.java
  17. 23 0
      jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/model/serializable/base/RequestDataData.java
  18. 51 0
      jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/model/serializable/base/SearchIndexDataData.java
  19. 38 0
      jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/model/serializable/base/TranceLogData.java
  20. 17 0
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/MonitorServerApplication.java
  21. 3 7
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/config/BeanConfig.java
  22. 2 6
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/config/MvcConfigBean.java
  23. 27 0
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/controllers/DebugController.java
  24. 32 0
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/daos/JayMonitorMqLogMapper.java
  25. 32 0
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/daos/JayMonitorMqMapper.java
  26. 2 2
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/enums/StoreType.java
  27. 2 2
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/factory/IdGenerateService.java
  28. 1 0
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/factory/callback/DefaultIdChangeCallback.java
  29. 2 2
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/factory/callback/IdChangeCallback.java
  30. 7 2
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/factory/generate/DayIdGenerate.java
  31. 5 3
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/factory/generate/HourIdGenerate.java
  32. 61 0
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/process/MQUserProcess.java
  33. 2 2
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/process/URLUserProcess.java
  34. 29 0
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/store/AbstractStoreProcess.java
  35. 58 0
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/store/StoreDataManager.java
  36. 73 0
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/store/mysql/MysqlMQStoreProcess.java
  37. 81 0
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/store/mysql/MysqlUrlStoreProcess.java
  38. 2 2
      jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/utils/MonitorPropertiesUtil.java
  39. 5 1
      jay-monitor-data-server/src/main/resources/application-dev.yml
  40. 2 1
      jay-monitor-data-server/src/main/resources/application-test.yml
  41. 0 1
      jay-monitor-data-server/src/main/resources/logback.xml
  42. 33 1
      jay-monitor-data-server/src/test/java/com/jay/monitor/data/server/factory/DayIdGenerateTest.java
  43. 64 0
      jay-monitor-data-server/src/test/java/com/jay/monitor/data/server/factory/generate/HourIdGenerateTest.java
  44. 30 0
      src/main/java/com/jay/monitor/data/server/daos/JayMonitorMqLogMapper.java
  45. 100 0
      src/main/java/com/jay/monitor/data/server/models/entity/JayMonitorMqLog.java
  46. 689 0
      src/main/java/com/jay/monitor/data/server/models/entity/JayMonitorMqLogExample.java
  47. 237 0
      src/main/resources/mybatis/mapper/JayMonitorMqLogMapper.xml

+ 2 - 2
jay-monitor-data-client/src/main/java/com/jay/monitor/data/client/anno/EnableMonitorData.java

@@ -7,8 +7,8 @@ import org.springframework.context.annotation.Import;
 import java.lang.annotation.*;
 
 /**
- * @Module TODO
- * @Description TODO
+ * @Module 注解
+ * @Description 开启监控数据传输
  * @Author liukaixiong
  * @Date 2020/10/23 19:47
  */

+ 22 - 0
jay-monitor-data-client/src/main/java/com/jay/monitor/data/client/ext/MqMonitorRuleCallback.java

@@ -0,0 +1,22 @@
+package com.jay.monitor.data.client.ext;
+
+import com.jay.monitor.data.core.model.serializable.MQDataDTO;
+
+import java.util.Map;
+import java.util.function.BiConsumer;
+
+/**
+ * @Module 监控拓展点
+ * @Description 基于请求参数事件回调
+ * @Author liukaixiong
+ * @Date 2020/11/2 10:17
+ */
+public abstract class MqMonitorRuleCallback {
+
+    /**
+     * 获取对应的规则
+     *
+     * @return
+     */
+    public abstract Map<String, BiConsumer<String, MQDataDTO>> getRuleMap();
+}

+ 59 - 0
jay-monitor-data-client/src/main/java/com/jay/monitor/data/client/ext/kafka/KafkaMonitorProducer.java

@@ -0,0 +1,59 @@
+package com.jay.monitor.data.client.ext.kafka;
+
+import com.jay.monitor.data.client.MonitorSendProducer;
+import com.jay.monitor.data.client.ext.MqMonitorRuleCallback;
+import com.jay.monitor.data.client.utils.MonitorUtils;
+import com.jay.monitor.data.core.model.serializable.MQDataDTO;
+import org.apache.kafka.clients.producer.RecordMetadata;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.kafka.support.ProducerListener;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+import java.util.function.BiConsumer;
+
+/**
+ * @Module 生产者监听器
+ * @Description kafka发送的时候会回调该接口告诉你成功或者失败
+ * @Author liukaixiong
+ * @Date 2020/10/29 16:10
+ */
+@Component
+public class KafkaMonitorProducer implements ProducerListener<String, String>, InitializingBean {
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    @Autowired(required = false)
+    private List<MqMonitorRuleCallback> monitorRuleCallbackList;
+
+    private Map<String, BiConsumer<String, MQDataDTO>> ruleMap;
+
+    @Override
+    public void onSuccess(String topic, Integer partition, String key, String value, RecordMetadata recordMetadata) {
+        try {
+            MQDataDTO mq = MonitorUtils.getProducerMqDataDTO(ruleMap, topic, topic, partition, recordMetadata.offset(), value, 1);
+            MonitorSendProducer.sendMsg(mq);
+        } catch (Exception e) {
+            logger.warn("success监控发送器发送失败" + e.getMessage());
+        }
+    }
+
+    @Override
+    public void onError(String topic, Integer partition, String key, String value, Exception exception) {
+        try {
+            MQDataDTO mq = MonitorUtils.getProducerMqDataDTO(ruleMap, topic, topic, partition, null, value, -1);
+            MonitorSendProducer.sendMsg(mq);
+        } catch (Exception e) {
+            logger.warn("error监控发送器发送失败 :" + e.getMessage());
+        }
+    }
+
+    @Override
+    public void afterPropertiesSet() throws Exception {
+        this.ruleMap = MonitorUtils.getMqMonitorCallback(this.monitorRuleCallbackList);
+    }
+
+}

+ 53 - 0
jay-monitor-data-client/src/main/java/com/jay/monitor/data/client/ext/kafka/consumer/KafkaMonitorConsumerListener.java

@@ -0,0 +1,53 @@
+package com.jay.monitor.data.client.ext.kafka.consumer;
+
+import com.jay.monitor.data.client.MonitorSendProducer;
+import com.jay.monitor.data.client.ext.MqMonitorRuleCallback;
+import com.jay.monitor.data.client.utils.MonitorUtils;
+import com.jay.monitor.data.core.model.serializable.MQDataDTO;
+import org.apache.kafka.clients.consumer.ConsumerRecord;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.kafka.listener.AcknowledgingMessageListener;
+import org.springframework.kafka.support.Acknowledgment;
+
+import java.util.List;
+import java.util.Map;
+import java.util.function.BiConsumer;
+
+/**
+ * @Module 监听器
+ * @Description kafka监控消费者监听器
+ * @Author liukaixiong
+ * @Date 2020/10/27 19:14
+ */
+public class KafkaMonitorConsumerListener implements AcknowledgingMessageListener<String, String> {
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    private List<MqMonitorRuleCallback> monitorRuleCallbacks;
+
+    private Map<String, BiConsumer<String, MQDataDTO>> ruleMap;
+
+    public AcknowledgingMessageListener listener;
+
+    public KafkaMonitorConsumerListener(AcknowledgingMessageListener listener, List<MqMonitorRuleCallback> monitorRuleCallbacks) {
+        this.listener = listener;
+        this.monitorRuleCallbacks = monitorRuleCallbacks;
+        this.ruleMap = MonitorUtils.getMqMonitorCallback(monitorRuleCallbacks);
+    }
+
+    @Override
+    public void onMessage(ConsumerRecord<String, String> data, Acknowledgment acknowledgment) {
+        try {
+            listener.onMessage(data, acknowledgment);
+            sendMonitorData(data, 1);
+        } catch (Exception e) {
+            sendMonitorData(data, -1);
+            throw e;
+        }
+    }
+
+    private void sendMonitorData(ConsumerRecord<String, String> data, Integer status) {
+        MQDataDTO mqDataDTO = MonitorUtils.getConsumerMqDataDTO(this.ruleMap, data.topic(), data.key(), data.partition(), data.offset(), data.value(), status);
+        MonitorSendProducer.sendMsg(mqDataDTO);
+    }
+}

+ 25 - 0
jay-monitor-data-client/src/main/java/com/jay/monitor/data/client/utils/ClassUtils.java

@@ -0,0 +1,25 @@
+package com.jay.monitor.data.client.utils;
+
+import java.lang.reflect.ParameterizedType;
+
+/**
+ * @Module TODO
+ * @Description TODO
+ * @Author liukaixiong
+ * @Date 2020/11/2 10:49
+ */
+public class ClassUtils {
+
+    public static Class getClassType(Class cla, int index) {
+        try {
+            return (Class) ((ParameterizedType) cla.getGenericSuperclass()).getActualTypeArguments()[index];
+        } catch (Exception e) {
+            Class superclass = cla.getSuperclass();
+            if (superclass != null) {
+                return getClassType(superclass, 0);
+            }
+            return null;
+        }
+    }
+
+}

+ 90 - 0
jay-monitor-data-client/src/main/java/com/jay/monitor/data/client/utils/MonitorUtils.java

@@ -0,0 +1,90 @@
+package com.jay.monitor.data.client.utils;
+
+import com.jay.monitor.data.client.ext.MqMonitorRuleCallback;
+import com.jay.monitor.data.core.enums.MQInvokeType;
+import com.jay.monitor.data.core.enums.MQTypeEnum;
+import com.jay.monitor.data.core.model.serializable.MQDataDTO;
+
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.function.BiConsumer;
+
+/**
+ * @Module 工具
+ * @Description 将一些通用的监控数据方法进行抽取
+ * @Author liukaixiong
+ * @Date 2020/10/30 17:02
+ */
+public class MonitorUtils {
+
+    public static MQDataDTO getProducerMqDataDTO(String topic, String key, Integer partitionIndex, Long offset, String value, Integer status) {
+        MQDataDTO mq = new MQDataDTO();
+        mq.setTopic(topic);
+        mq.setMsgId(offset + "");
+        mq.setCreateDate(new Date());
+        mq.setMqType(MQTypeEnum.kafka.name());
+        mq.setPartitionName(partitionIndex + "");
+        mq.setJsonContent(value);
+        mq.setGroupKeyName(key);
+        mq.setStatus(status);
+        mq.setInvokeType(MQInvokeType.producer);
+        return mq;
+    }
+
+    public static MQDataDTO getProducerMqDataDTO(Map<String, BiConsumer<String, MQDataDTO>> ruleMap, String topic, String key, Integer partitionIndex, Long offset, String value, Integer status) {
+        MQDataDTO mqDataDTO = getProducerMqDataDTO(topic, key, partitionIndex, offset, value, status);
+        mqDataDTO.setInvokeType(MQInvokeType.producer);
+        MonitorUtils.applyData(ruleMap, topic, value, mqDataDTO);
+        return mqDataDTO;
+    }
+
+    public static MQDataDTO getConsumerMqDataDTO(Map<String, BiConsumer<String, MQDataDTO>> ruleMap, String topic, String key, Integer partitionIndex, Long offset, String value, Integer status) {
+        MQDataDTO mqDataDTO = getProducerMqDataDTO(topic, key, partitionIndex, offset, value, status);
+        mqDataDTO.setInvokeType(MQInvokeType.consumer);
+        MonitorUtils.applyData(ruleMap, topic, value, mqDataDTO);
+        return mqDataDTO;
+    }
+
+    /**
+     * 留给客户端一个回调的扣子,让开发者根据自己的关注的数据去设置
+     *
+     * @param ruleMap
+     * @param topic
+     * @param value
+     * @param mqDataDTO
+     */
+    public static void applyData(Map<String, BiConsumer<String, MQDataDTO>> ruleMap, String topic, String value, MQDataDTO mqDataDTO) {
+        if (ruleMap != null) {
+            // 默认通用的数据处理
+            BiConsumer<String, MQDataDTO> consumer = ruleMap.get("DEFAULT_ALL");
+            if (consumer != null) {
+                consumer.accept(value, mqDataDTO);
+            }
+
+            consumer = ruleMap.get(topic);
+            if (consumer != null) {
+                consumer.accept(value, mqDataDTO);
+            }
+        }
+    }
+
+    /**
+     * 获取监控回调的具体执行规则
+     *
+     * @param monitorRuleCallbackList 执行规则
+     * @return
+     */
+    public static Map<String, BiConsumer<String, MQDataDTO>> getMqMonitorCallback(List<MqMonitorRuleCallback> monitorRuleCallbackList) {
+        if (monitorRuleCallbackList != null && monitorRuleCallbackList.size() > 0) {
+            Map<String, BiConsumer<String, MQDataDTO>> ruleMap = new HashMap<>();
+            for (int i = 0; i < monitorRuleCallbackList.size(); i++) {
+                MqMonitorRuleCallback monitorRuleCallback = monitorRuleCallbackList.get(i);
+                ruleMap.putAll(monitorRuleCallback.getRuleMap());
+            }
+            return ruleMap;
+        }
+        return null;
+    }
+}

+ 1 - 0
jay-monitor-data-client/src/main/resources/META-INF/spring.factories

@@ -0,0 +1 @@
+org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.jay.monitor.data.client.config.ClientMonitorAutoConfiguration

+ 29 - 0
jay-monitor-data-client/src/test/java/com/jay/monitor/data/client/ext/MonitorRuleCallbackTest.java

@@ -0,0 +1,29 @@
+package com.jay.monitor.data.client.ext;
+
+import com.jay.monitor.data.client.ext.kafka.KafkaMonitorProducer;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.context.SpringBootTest;
+import org.springframework.test.context.junit4.SpringRunner;
+
+/**
+ * @Module TODO
+ * @Description TODO
+ * @Author liukaixiong
+ * @Date 2020/11/2 10:30
+ */
+@RunWith(SpringRunner.class)
+@SpringBootTest(classes = {TestMQMonitorRule.class, KafkaMonitorProducer.class})
+public class MonitorRuleCallbackTest {
+
+    @Autowired
+    KafkaMonitorProducer producer;
+
+
+    @Test
+    public void test() {
+        System.out.println("---");
+    }
+
+}

+ 23 - 0
jay-monitor-data-client/src/test/java/com/jay/monitor/data/client/ext/TestMQMonitorRule.java

@@ -0,0 +1,23 @@
+package com.jay.monitor.data.client.ext;
+
+import com.jay.monitor.data.core.model.serializable.MQDataDTO;
+import org.springframework.stereotype.Component;
+
+import java.util.Map;
+import java.util.function.BiConsumer;
+
+/**
+ * @Module TODO
+ * @Description TODO
+ * @Author liukaixiong
+ * @Date 2020/11/2 10:30
+ */
+@Component
+public class TestMQMonitorRule extends MqMonitorRuleCallback {
+
+    @Override
+    public Map<String, BiConsumer<String, MQDataDTO>> getRuleMap() {
+        return null;
+    }
+
+}

+ 12 - 0
jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/enums/MQInvokeType.java

@@ -0,0 +1,12 @@
+package com.jay.monitor.data.core.enums;
+
+/**
+ * @Module 枚举
+ * @Description MQ相关的处理类型
+ * @Author liukaixiong
+ * @Date 2020/10/30 16:04
+ */
+public enum MQInvokeType {
+
+    producer, consumer
+}

+ 11 - 0
jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/enums/MQTypeEnum.java

@@ -0,0 +1,11 @@
+package com.jay.monitor.data.core.enums;
+
+/**
+ * @Module 枚举
+ * @Description MQ的相关类型定义
+ * @Author liukaixiong
+ * @Date 2020/10/29 15:39
+ */
+public enum MQTypeEnum {
+    rocketMQ, kafka, rabbitMQ, otherMQ
+}

+ 118 - 0
jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/model/serializable/MQDataDTO.java

@@ -0,0 +1,118 @@
+package com.jay.monitor.data.core.model.serializable;
+
+import com.jay.monitor.data.core.enums.MQInvokeType;
+import com.jay.monitor.data.core.enums.MsgTypeEnums;
+import com.jay.monitor.data.core.model.serializable.base.*;
+
+import java.util.Date;
+
+/**
+ * @Module TODO
+ * @Description TODO
+ * @Author liukaixiong
+ * @Date 2020/10/27 13:50
+ */
+public class MQDataDTO extends CommonDataDTO implements TranceLogData {
+
+    public MQDataDTO() {
+        super(MsgTypeEnums.MQ);
+    }
+
+    private String rootLogId;
+
+    private String parentLogId;
+    /**
+     * 订阅主题
+     */
+    private String topic;
+    /**
+     * 消息类型
+     */
+    private String mqType;
+    /**
+     * 分区名称
+     */
+    private String partitionName;
+    /**
+     * 执行类型  生产/ 消费
+     */
+    private MQInvokeType invokeType;
+
+    /**
+     * 来源时间
+     */
+    private Date sourceTime;
+
+    /**
+     * 消息编号
+     */
+    private String msgId;
+
+    public Date getSourceTime() {
+        return sourceTime;
+    }
+
+    public void setSourceTime(Date sourceTime) {
+        this.sourceTime = sourceTime;
+    }
+
+    public String getPartitionName() {
+        return partitionName;
+    }
+
+    public void setPartitionName(String partitionName) {
+        this.partitionName = partitionName;
+    }
+
+    public String getMsgId() {
+        return msgId;
+    }
+
+    public void setMsgId(String msgId) {
+        this.msgId = msgId;
+    }
+
+    @Override
+    public String getRootLogId() {
+        return this.rootLogId;
+    }
+
+    @Override
+    public void setRootLogId(String rootLogId) {
+        this.rootLogId = rootLogId;
+    }
+
+    @Override
+    public String getParentLogId() {
+        return this.parentLogId;
+    }
+
+    @Override
+    public void setParentLogId(String parentLogId) {
+        this.parentLogId = parentLogId;
+    }
+
+    public String getTopic() {
+        return topic;
+    }
+
+    public void setTopic(String topic) {
+        this.topic = topic;
+    }
+
+    public String getMqType() {
+        return mqType;
+    }
+
+    public void setMqType(String mqType) {
+        this.mqType = mqType;
+    }
+
+    public MQInvokeType getInvokeType() {
+        return invokeType;
+    }
+
+    public void setInvokeType(MQInvokeType invokeType) {
+        this.invokeType = invokeType;
+    }
+}

+ 37 - 0
jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/model/serializable/base/ApplicationData.java

@@ -0,0 +1,37 @@
+package com.jay.monitor.data.core.model.serializable.base;
+
+/**
+ * @Module 传输层
+ * @Description 应用对象描述
+ * @Author liukaixiong
+ * @Date 2020/10/21 17:28
+ */
+public interface ApplicationData {
+    /**
+     * 获取ip
+     *
+     * @return
+     */
+    public String getIp();
+
+    /**
+     * 设置客户端ip
+     *
+     * @param ip
+     */
+    public void setIp(String ip);
+
+    /**
+     * 获取客户端应用名称
+     *
+     * @return
+     */
+    public String getApplicationName();
+
+    /**
+     * 设置客户端应用名称
+     *
+     * @param applicationName
+     */
+    public void setApplicationName(String applicationName);
+}

+ 112 - 0
jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/model/serializable/base/CommonDataDTO.java

@@ -0,0 +1,112 @@
+package com.jay.monitor.data.core.model.serializable.base;
+
+import com.jay.monitor.data.core.enums.MsgTypeEnums;
+
+/**
+ * @Module TODO
+ * @Description TODO
+ * @Author liukaixiong
+ * @Date 2020/10/27 13:57
+ */
+public class CommonDataDTO extends BaseDTO implements ApplicationData, SearchIndexDataData, JsonTextData, LogDataData, RequestDataData {
+
+    public CommonDataDTO(MsgTypeEnums type) {
+        super(type);
+    }
+
+    private String ip;
+
+    private String applicationName;
+
+    private String groupName;
+
+    private String groupKeyName;
+
+    private String dataId;
+
+    private String logId;
+
+    private String jsonContent;
+
+    private Long requestTime;
+
+    @Override
+    public String getIp() {
+        return ip;
+    }
+
+    @Override
+    public void setIp(String ip) {
+        this.ip = ip;
+    }
+
+    @Override
+    public String getApplicationName() {
+        return applicationName;
+    }
+
+    @Override
+    public void setApplicationName(String applicationName) {
+        this.applicationName = applicationName;
+    }
+
+    @Override
+    public String getGroupName() {
+        return groupName;
+    }
+
+    @Override
+    public void setGroupName(String groupName) {
+        this.groupName = groupName;
+    }
+
+    @Override
+    public String getGroupKeyName() {
+        return groupKeyName;
+    }
+
+    @Override
+    public void setGroupKeyName(String groupKeyName) {
+        this.groupKeyName = groupKeyName;
+    }
+
+    @Override
+    public String getDataId() {
+        return dataId;
+    }
+
+    @Override
+    public void setDataId(String dataId) {
+        this.dataId = dataId;
+    }
+
+    @Override
+    public String getJsonContent() {
+        return jsonContent;
+    }
+
+    @Override
+    public void setJsonContent(String jsonContent) {
+        this.jsonContent = jsonContent;
+    }
+
+    @Override
+    public Long getRequestTime() {
+        return this.requestTime;
+    }
+
+    @Override
+    public void setRequestTime(Long requestTime) {
+        this.requestTime = requestTime;
+    }
+
+    @Override
+    public String getLogId() {
+        return this.logId;
+    }
+
+    @Override
+    public void setLogId(String logId) {
+        this.logId = logId;
+    }
+}

+ 23 - 0
jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/model/serializable/base/JsonTextData.java

@@ -0,0 +1,23 @@
+package com.jay.monitor.data.core.model.serializable.base;
+
+/**
+ * @Module
+ * @Description 设置json文本
+ * @Author liukaixiong
+ * @Date 2020/10/27 10:46
+ */
+public interface JsonTextData {
+    /**
+     * json内容
+     *
+     * @return
+     */
+    public String getJsonContent();
+
+    /**
+     * 设置json内容
+     *
+     * @param jsonContent
+     */
+    public void setJsonContent(String jsonContent);
+}

+ 24 - 0
jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/model/serializable/base/LogDataData.java

@@ -0,0 +1,24 @@
+package com.jay.monitor.data.core.model.serializable.base;
+
+/**
+ * @Module 传输层
+ * @Description 日志对象定义
+ * @Author liukaixiong
+ * @Date 2020/10/23 15:59
+ */
+public interface LogDataData {
+    /**
+     * 消息编号
+     *
+     * @return
+     */
+    public String getLogId();
+
+    /**
+     * 设置消息编号
+     *
+     * @param logId
+     */
+    public void setLogId(String logId);
+
+}

+ 23 - 0
jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/model/serializable/base/RequestDataData.java

@@ -0,0 +1,23 @@
+package com.jay.monitor.data.core.model.serializable.base;
+
+/**
+ * @Module 请求数据
+ * @Description 请求组对象
+ * @Author liukaixiong
+ * @Date 2020/10/23 16:20
+ */
+public interface RequestDataData {
+    /**
+     * 请求耗时
+     *
+     * @return
+     */
+    public Long getRequestTime();
+
+    /**
+     * 设置请求耗时
+     *
+     * @param requestTime
+     */
+    public void setRequestTime(Long requestTime);
+}

+ 51 - 0
jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/model/serializable/base/SearchIndexDataData.java

@@ -0,0 +1,51 @@
+package com.jay.monitor.data.core.model.serializable.base;
+
+/**
+ * @Module 传输层
+ * @Description 搜索组对象
+ * @Author liukaixiong
+ * @Date 2020/10/21 17:18
+ */
+public interface SearchIndexDataData {
+    /**
+     * 组名称
+     *
+     * @return
+     */
+    public String getGroupName();
+
+    /**
+     * 设置组名称
+     *
+     * @param groupName
+     */
+    public void setGroupName(String groupName);
+
+    /**
+     * 组的key名称
+     *
+     * @return
+     */
+    public String getGroupKeyName();
+
+    /**
+     * 设置组的key名称
+     *
+     * @param groupKeyName
+     */
+    public void setGroupKeyName(String groupKeyName);
+
+    /**
+     * 数据编号
+     *
+     * @return
+     */
+    public String getDataId();
+
+    /**
+     * 数据编号
+     *
+     * @param dataId
+     */
+    public void setDataId(String dataId);
+}

+ 38 - 0
jay-monitor-data-core/src/main/java/com/jay/monitor/data/core/model/serializable/base/TranceLogData.java

@@ -0,0 +1,38 @@
+package com.jay.monitor.data.core.model.serializable.base;
+
+/**
+ * @Module TODO
+ * @Description TODO
+ * @Author liukaixiong
+ * @Date 2020/10/27 10:40
+ */
+public interface TranceLogData extends LogDataData {
+    /**
+     * 根日志编号
+     *
+     * @return
+     */
+    public String getRootLogId();
+
+    /**
+     * 设置根日志编号
+     *
+     * @param rootLogId
+     */
+    public void setRootLogId(String rootLogId);
+
+    /**
+     * 上层日志编号
+     *
+     * @return
+     */
+    public String getParentLogId();
+
+    /**
+     * 设置上层日志编号
+     *
+     * @param parentLogId
+     */
+    public void setParentLogId(String parentLogId);
+
+}

+ 17 - 0
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/MonitorServerApplication.java

@@ -0,0 +1,17 @@
+package com.jay.monitor.data.server;
+
+import org.mybatis.spring.annotation.MapperScan;
+import org.springframework.boot.SpringApplication;
+import org.springframework.boot.autoconfigure.SpringBootApplication;
+import org.springframework.scheduling.annotation.EnableScheduling;
+
+@SpringBootApplication
+@MapperScan(basePackages = "com.jay.monitor.data.server.daos")
+@EnableScheduling
+public class MonitorServerApplication {
+
+    public static void main(String[] args) {
+        SpringApplication.run(MonitorServerApplication.class, args);
+    }
+
+}

+ 3 - 7
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/config/BeanConfig.java

@@ -15,11 +15,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 import org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2ClientProperties;
 import org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.FilterType;
-import org.springframework.stereotype.Controller;
-import org.springframework.web.bind.annotation.ControllerAdvice;
 
 import java.util.List;
 
@@ -33,9 +29,9 @@ import java.util.List;
  * @email liuhx@elab-plus.com
  **/
 @Configuration
-@ComponentScan(basePackages = {"com.jay.monitor.data.server"}, excludeFilters = {
-        @ComponentScan.Filter(type = FilterType.ANNOTATION, value = {Controller.class, ControllerAdvice.class})
-})
+//@ComponentScan(basePackages = {"com.jay.monitor.data.server"}, excludeFilters = {
+//        @ComponentScan.Filter(type = FilterType.ANNOTATION, value = {Controller.class, ControllerAdvice.class})
+//})
 @EnableConfigurationProperties({MonitorProperties.class, OAuth2ClientProperties.class})
 public class BeanConfig {
 

+ 2 - 6
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/config/MvcConfigBean.java

@@ -1,10 +1,7 @@
 package com.jay.monitor.data.server.config;
 
-import org.springframework.boot.context.properties.ConfigurationProperties;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.context.annotation.FilterType;
-import org.springframework.stereotype.Controller;
 import org.springframework.web.servlet.config.annotation.EnableWebMvc;
 import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
 import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@@ -19,9 +16,8 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter
 @Configuration
 @EnableWebMvc
 //@EnableSwagger2
-@ComponentScan(basePackages = {"com.jay.monitor.data.server.controllers"}, includeFilters = {
-        @ComponentScan.Filter(type = FilterType.ANNOTATION, value = {Controller.class})})
-@ConfigurationProperties(prefix = "swagger2")
+@ComponentScan(basePackages = {"com.jay.monitor.data.server.controllers"})
+//@ConfigurationProperties(prefix = "swagger2")
 public class MvcConfigBean extends WebMvcConfigurerAdapter {
 
     @Override

+ 27 - 0
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/controllers/DebugController.java

@@ -0,0 +1,27 @@
+package com.jay.monitor.data.server.controllers;
+
+import com.jay.monitor.data.server.factory.generate.DayIdGenerate;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Controller;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+import org.springframework.web.bind.annotation.ResponseBody;
+
+/**
+ * @author : liukx
+ * @describe :首页
+ * @time : 2019/3/1 - 16:31
+ */
+@Controller
+@RequestMapping(value = "/debug/id")
+public class DebugController {
+    @Autowired
+    private DayIdGenerate dayIdGenerate;
+
+    @RequestMapping(value = "/restartTimeStrap", method = RequestMethod.GET)
+    @ResponseBody
+    public String index() throws Exception {
+        dayIdGenerate.setM_timestamp(11110L);
+        return "OK";
+    }
+}

+ 32 - 0
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/daos/JayMonitorMqLogMapper.java

@@ -0,0 +1,32 @@
+package com.jay.monitor.data.server.daos;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jay.monitor.data.server.models.entity.JayMonitorMqLog;
+import com.jay.monitor.data.server.models.entity.JayMonitorMqLogExample;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface JayMonitorMqLogMapper extends BaseMapper<JayMonitorMqLog> {
+    long countByExample(JayMonitorMqLogExample example);
+
+    int deleteByExample(JayMonitorMqLogExample example);
+
+    int deleteByPrimaryKey(Integer id);
+
+    int insert(JayMonitorMqLog record);
+
+    int insertSelective(JayMonitorMqLog record);
+
+    List<JayMonitorMqLog> selectByExample(JayMonitorMqLogExample example);
+
+    JayMonitorMqLog selectByPrimaryKey(Integer id);
+
+    int updateByExampleSelective(@Param("record") JayMonitorMqLog record, @Param("example") JayMonitorMqLogExample example);
+
+    int updateByExample(@Param("record") JayMonitorMqLog record, @Param("example") JayMonitorMqLogExample example);
+
+    int updateByPrimaryKeySelective(JayMonitorMqLog record);
+
+    int updateByPrimaryKey(JayMonitorMqLog record);
+}

+ 32 - 0
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/daos/JayMonitorMqMapper.java

@@ -0,0 +1,32 @@
+package com.jay.monitor.data.server.daos;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.jay.monitor.data.server.models.entity.JayMonitorMq;
+import com.jay.monitor.data.server.models.entity.JayMonitorMqExample;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+public interface JayMonitorMqMapper extends BaseMapper<JayMonitorMq> {
+    long countByExample(JayMonitorMqExample example);
+
+    int deleteByExample(JayMonitorMqExample example);
+
+    int deleteByPrimaryKey(Integer id);
+
+    int insert(JayMonitorMq record);
+
+    int insertSelective(JayMonitorMq record);
+
+    List<JayMonitorMq> selectByExample(JayMonitorMqExample example);
+
+    JayMonitorMq selectByPrimaryKey(Integer id);
+
+    int updateByExampleSelective(@Param("record") JayMonitorMq record, @Param("example") JayMonitorMqExample example);
+
+    int updateByExample(@Param("record") JayMonitorMq record, @Param("example") JayMonitorMqExample example);
+
+    int updateByPrimaryKeySelective(JayMonitorMq record);
+
+    int updateByPrimaryKey(JayMonitorMq record);
+}

+ 2 - 2
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/enums/StoreType.java

@@ -1,8 +1,8 @@
 package com.jay.monitor.data.server.enums;
 
 /**
- * @Module TODO
- * @Description TODO
+ * @Module 枚举
+ * @Description 存储枚举定义
  * @Author liukaixiong
  * @Date 2020/10/29 13:31
  */

+ 2 - 2
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/factory/IdGenerateService.java

@@ -5,8 +5,8 @@ import com.jay.monitor.data.server.enums.DataSplitType;
 import java.util.function.Consumer;
 
 /**
- * @Module TODO
- * @Description TODO
+ * @Module 标识生成器
+ * @Description 生成特定的标识
  * @Author liukaixiong
  * @Date 2020/11/5 15:27
  */

+ 1 - 0
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/factory/callback/DefaultIdChangeCallback.java

@@ -28,6 +28,7 @@ public class DefaultIdChangeCallback implements IdChangeCallback, ApplicationCon
 
     @Override
     public void onChange(DataSplitType splitType, String id) {
+        // todo 后续这里要优化,不是非得指定MYSQL数据库
         getDataManager().generateMysql(splitType);
     }
 

+ 2 - 2
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/factory/callback/IdChangeCallback.java

@@ -3,8 +3,8 @@ package com.jay.monitor.data.server.factory.callback;
 import com.jay.monitor.data.server.enums.DataSplitType;
 
 /**
- * @Module TODO
- * @Description TODO
+ * @Module 回调
+ * @Description 当标识发生改变回调的标记
  * @Author liukaixiong
  * @Date 2020/11/6 16:09
  */

+ 7 - 2
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/factory/generate/DayIdGenerate.java

@@ -17,7 +17,12 @@ import java.util.function.Consumer;
 @Component
 public class DayIdGenerate implements IdGenerateService {
 
-    public static final long DAY = 24 * 3600 * 1000L;
+    private final long DAY = 24 * 3600 * 1000L;
+
+    /**
+     * 算天的时候可能要考虑时区,得先加8小时
+     */
+    private final Long timeZone = 8 * 3600 * 1000L;
 
     private SimpleDateFormat sdf = new SimpleDateFormat("yyMMdd");
 
@@ -42,7 +47,7 @@ public class DayIdGenerate implements IdGenerateService {
     }
 
     protected long getDayTimestamp() {
-        long timestamp = System.currentTimeMillis();
+        long timestamp = System.currentTimeMillis() + timeZone;
         return timestamp / DAY;
     }
 

+ 5 - 3
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/factory/generate/HourIdGenerate.java

@@ -19,7 +19,7 @@ public class HourIdGenerate implements IdGenerateService {
 
     private SimpleDateFormat sdf = new SimpleDateFormat("yyMMddHH");
 
-    public static final long HOUR = 3600 * 1000L;
+    public final long HOUR = 3600 * 1000L;
 
     private volatile long hourTimestamp = getHourTimestamp();
 
@@ -31,8 +31,10 @@ public class HourIdGenerate implements IdGenerateService {
     }
 
     private String resetCounter(long timestamp) {
-        hourTimestamp = timestamp;
-        return sdf.format(new Date(System.currentTimeMillis()));
+        String id = sdf.format(new Date(System.currentTimeMillis()));
+        this.hourTimestamp = timestamp;
+        this.defaultId = id;
+        return id;
     }
 
     @Override

+ 61 - 0
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/process/MQUserProcess.java

@@ -0,0 +1,61 @@
+package com.jay.monitor.data.server.process;
+
+import com.alibaba.fastjson.JSON;
+import com.alipay.remoting.BizContext;
+import com.jay.monitor.data.core.enums.MsgTypeEnums;
+import com.jay.monitor.data.core.model.serializable.MQDataDTO;
+import com.jay.monitor.data.server.store.StoreDataManager;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @Module 消息处理
+ * @Description 消息队列过来的请求参数
+ * @Author liukaixiong
+ * @Date 2020/10/23 15:52
+ */
+@Component
+public class MQUserProcess extends AbstractUserProcess<MQDataDTO> {
+
+    private Logger logger = LoggerFactory.getLogger(MQUserProcess.class);
+
+    @Autowired
+    private StoreDataManager storeDataManager;
+
+    @Override
+    public Object handleRequest0(BizContext bizCtx, MQDataDTO request) throws Exception {
+        logger.debug("接收到的URL 传输对象:" + JSON.toJSONString(request));
+        return storeDataManager.store(MsgTypeEnums.MQ, request);
+//        JayMonitorMq monitorUrl = new JayMonitorMq();
+//        BeanUtils.copyProperties(request, monitorUrl);
+//        monitorUrl.setApplicationName(DataUtils.getStringValue(request.getApplicationName(), bizCtx.getInvokeContext().get(MonitorDataConstants.INVOKE_CLIENT_NAME)));
+//        monitorUrl.setApplicationIp(DataUtils.getStringValue(request.getIp(), bizCtx.getInvokeContext().get(MonitorDataConstants.INVOKE_CLIENT_IP)));
+//        monitorUrl.setCreatedDay(request.getCreateDate());
+//        monitorUrl.setCreatedTime(request.getCreateDate());
+//        monitorUrl.setMonitorType(request.getType().name());
+//        monitorUrl.setDataGroupName(request.getGroupName());
+//        monitorUrl.setDataGroupKey(request.getGroupName());
+//        monitorUrl.setDataId(request.getDataId());
+//
+//        int id = urlMapper.insert(monitorUrl);
+//
+//        JayMonitorUrlLog urlLog = new JayMonitorUrlLog();
+//        urlLog.setMonitorId(id);
+//        urlLog.setCreateDate(request.getCreateDate());
+//        urlLog.setLogId(request.getLogId());
+//        urlLog.setLogText(request.getJsonContent());
+//        urlLog.setMonitorType(request.getType().name());
+//        int logId = urlLogMapper.insert(urlLog);
+//        logger.debug(" 接收到客户端传递过来的数据 ... ");
+//        return request;
+    }
+
+    @Override
+    public List<String> multiInterest() {
+        return getNamesList(MQDataDTO.class);
+    }
+}

+ 2 - 2
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/process/URLUserProcess.java

@@ -12,8 +12,8 @@ import org.springframework.stereotype.Component;
 import java.util.List;
 
 /**
- * @Module TODO
- * @Description TODO
+ * @Module 处理器
+ * @Description 用于处理URL监控数据执行器
  * @Author liukaixiong
  * @Date 2020/10/23 15:52
  */

+ 29 - 0
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/store/AbstractStoreProcess.java

@@ -0,0 +1,29 @@
+package com.jay.monitor.data.server.store;
+
+import com.jay.monitor.data.core.enums.MsgTypeEnums;
+import com.jay.monitor.data.server.enums.StoreType;
+
+/**
+ * @Module 执行器
+ * @Description 抽象存储
+ * @Author liukaixiong
+ * @Date 2020/10/29 13:33
+ */
+public abstract class AbstractStoreProcess<T> {
+    /**
+     * 存储类型
+     *
+     * @return
+     */
+    public abstract StoreType storeType();
+
+    /**
+     * 消息类型
+     *
+     * @return
+     */
+    public abstract MsgTypeEnums msgTypeEnums();
+
+    public abstract Object store(T data) throws Exception;
+
+}

+ 58 - 0
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/store/StoreDataManager.java

@@ -0,0 +1,58 @@
+package com.jay.monitor.data.server.store;
+
+import com.jay.monitor.data.core.enums.MsgTypeEnums;
+import com.jay.monitor.data.core.model.serializable.base.BaseDTO;
+import com.jay.monitor.data.server.enums.StoreType;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+import org.springframework.util.Assert;
+
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+/**
+ * @Module 存储
+ * @Description 存储管理器
+ * @Author liukaixiong
+ * @Date 2020/10/29 13:30
+ */
+@Component
+public class StoreDataManager implements InitializingBean {
+    private Logger logger = LoggerFactory.getLogger(getClass());
+    @Autowired
+    private List<AbstractStoreProcess> storeProcessList;
+
+    private StoreType storeType = StoreType.MYSQL;
+
+    private Map<MsgTypeEnums, AbstractStoreProcess> processMap = new ConcurrentHashMap<>();
+
+    public void setStoreType(StoreType storeType) {
+        this.storeType = storeType;
+    }
+
+    public Object store(MsgTypeEnums msgType, BaseDTO baseDTO) throws Exception {
+        AbstractStoreProcess storeProcess = processMap.get(msgType);
+        if (storeProcess != null) {
+            return storeProcess.store(baseDTO);
+        } else {
+            logger.warn("找不到对应的[" + storeType + "]存储处理器 : " + msgType);
+        }
+        return null;
+    }
+
+
+    @Override
+    public void afterPropertiesSet() throws Exception {
+        storeProcessList.forEach((bean) -> {
+            if (storeType == bean.storeType()) {
+                processMap.put(bean.msgTypeEnums(), bean);
+            }
+        });
+
+        Assert.isTrue(processMap.size() > 0, "找不到对应的存储器");
+    }
+}

+ 73 - 0
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/store/mysql/MysqlMQStoreProcess.java

@@ -0,0 +1,73 @@
+package com.jay.monitor.data.server.store.mysql;
+
+import com.jay.monitor.data.core.enums.MsgTypeEnums;
+import com.jay.monitor.data.core.model.serializable.MQDataDTO;
+import com.jay.monitor.data.server.daos.JayMonitorMqLogMapper;
+import com.jay.monitor.data.server.daos.JayMonitorMqMapper;
+import com.jay.monitor.data.server.enums.StoreType;
+import com.jay.monitor.data.server.models.entity.JayMonitorMq;
+import com.jay.monitor.data.server.models.entity.JayMonitorMqLog;
+import com.jay.monitor.data.server.store.AbstractStoreProcess;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Module 数据存储器
+ * @Description Mysql的MQ存储实现
+ * @Author liukaixiong
+ * @Date 2020/10/29 13:36
+ */
+@Component
+@Lazy
+public class MysqlMQStoreProcess extends AbstractStoreProcess<MQDataDTO> {
+
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    @Autowired
+    private JayMonitorMqMapper mqMapper;
+
+    @Autowired
+    private JayMonitorMqLogMapper mqLogMapper;
+
+    @Override
+    public StoreType storeType() {
+        return StoreType.MYSQL;
+    }
+
+    @Override
+    public MsgTypeEnums msgTypeEnums() {
+        return MsgTypeEnums.MQ;
+    }
+
+    @Override
+    public Object store(MQDataDTO request) throws Exception {
+        JayMonitorMq mqData = new JayMonitorMq();
+        BeanUtils.copyProperties(request, mqData);
+        mqData.setApplicationName(request.getApplicationName());
+        mqData.setApplicationIp(request.getIp());
+        mqData.setCreatedDay(request.getCreateDate());
+        mqData.setCreatedTime(request.getCreateDate());
+        mqData.setDataGroupName(request.getGroupName());
+        mqData.setDataGroupKey(request.getGroupKeyName());
+        mqData.setDataId(request.getDataId());
+        mqData.setLogId(request.getLogId());
+        // mqData.setInvokeType(request.getInvokeType().name());
+        int affectRow = mqMapper.insert(mqData);
+        if (affectRow == 1) {
+            JayMonitorMqLog mqLog = new JayMonitorMqLog();
+            mqLog.setMonitorId(mqData.getId());
+            mqLog.setParentLogId(request.getParentLogId());
+            mqLog.setRootLogId(request.getRootLogId());
+            mqLog.setCreateDate(request.getCreateDate());
+            mqLog.setLogId(request.getLogId());
+            mqLog.setLogText(request.getJsonContent());
+            int logId = mqLogMapper.insert(mqLog);
+        }
+        return null;
+    }
+
+}

+ 81 - 0
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/store/mysql/MysqlUrlStoreProcess.java

@@ -0,0 +1,81 @@
+package com.jay.monitor.data.server.store.mysql;
+
+import com.jay.monitor.data.core.enums.MsgTypeEnums;
+import com.jay.monitor.data.core.model.serializable.URLDataDTO;
+import com.jay.monitor.data.server.daos.JayMonitorUrlLogMapper;
+import com.jay.monitor.data.server.daos.JayMonitorUrlMapper;
+import com.jay.monitor.data.server.enums.StoreType;
+import com.jay.monitor.data.server.models.entity.JayMonitorUrl;
+import com.jay.monitor.data.server.models.entity.JayMonitorUrlLog;
+import com.jay.monitor.data.server.store.AbstractStoreProcess;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Lazy;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Module 执行器
+ * @Description Mysql的URL请求类型处理器
+ * @Author liukaixiong
+ * @Date 2020/10/29 13:36
+ */
+@Component
+@Lazy
+public class MysqlUrlStoreProcess extends AbstractStoreProcess<URLDataDTO> {
+
+    private Logger logger = LoggerFactory.getLogger(getClass());
+
+    @Autowired
+    private JayMonitorUrlMapper urlMapper;
+
+    @Autowired
+    private JayMonitorUrlLogMapper urlLogMapper;
+
+    @Override
+    public StoreType storeType() {
+        return StoreType.MYSQL;
+    }
+
+    @Override
+    public MsgTypeEnums msgTypeEnums() {
+        return MsgTypeEnums.URL;
+    }
+
+    @Override
+    public Object store(URLDataDTO baseDTO) throws Exception {
+
+        URLDataDTO request = (URLDataDTO) baseDTO;
+        String url = request.getUrl();
+        if (StringUtils.isNotEmpty(request.getUrl())) {
+            url = url.replaceAll("//", "/");
+        }
+
+        JayMonitorUrl monitorUrl = new JayMonitorUrl();
+        BeanUtils.copyProperties(request, monitorUrl);
+        monitorUrl.setUrl(url);
+        monitorUrl.setApplicationName(request.getApplicationName());
+        monitorUrl.setApplicationIp(request.getIp());
+        monitorUrl.setCreatedDay(request.getCreateDate());
+        monitorUrl.setCreatedTime(request.getCreateDate());
+        monitorUrl.setMonitorType(request.getType().name());
+        monitorUrl.setDataGroupName(request.getGroupName());
+        monitorUrl.setDataGroupKey(request.getGroupName());
+        monitorUrl.setDataId(request.getDataId());
+
+        int id = urlMapper.insert(monitorUrl);
+
+        JayMonitorUrlLog urlLog = new JayMonitorUrlLog();
+        urlLog.setMonitorId(id);
+        urlLog.setCreateDate(request.getCreateDate());
+        urlLog.setLogId(request.getLogId());
+        urlLog.setLogText(request.getJsonContent());
+        urlLog.setMonitorType(request.getType().name());
+        int logId = urlLogMapper.insert(urlLog);
+        logger.debug(" 接收到客户端传递过来的数据 ... ");
+        return null;
+    }
+
+}

+ 2 - 2
jay-monitor-data-server/src/main/java/com/jay/monitor/data/server/utils/MonitorPropertiesUtil.java

@@ -7,8 +7,8 @@ import com.jay.monitor.data.server.enums.StoreType;
 import java.util.Map;
 
 /**
- * @Module TODO
- * @Description TODO
+ * @Module 工具类
+ * @Description 规范化监控属性获取
  * @Author liukaixiong
  * @Date 2020/11/5 20:02
  */

+ 5 - 1
jay-monitor-data-server/src/main/resources/application-dev.yml

@@ -4,4 +4,8 @@ spring:
     driver-class-name: com.mysql.jdbc.Driver
     url: jdbc:mysql://192.168.0.13:3306/elab_db?useUnicode=true&characterEncoding=gbk&zeroDateTimeBehavior
     username: root
-    password: elab@123
+    password: elab@123
+
+logging:
+  level:
+    com.jay.monitor.data.server: debug

+ 2 - 1
jay-monitor-data-server/src/main/resources/application-test.yml

@@ -4,4 +4,5 @@ spring:
     driver-class-name: com.mysql.jdbc.Driver
     url: jdbc:mysql://172.19.189.118/jay_monitor?characterEncoding=UTF-8&connectTimeout=60000&socketTimeout=60000
     username: jay_monitor
-    password: jayzhou
+    password: jayzhou
+

+ 0 - 1
jay-monitor-data-server/src/main/resources/logback.xml

@@ -78,5 +78,4 @@
         <appender-ref ref="ASYNC_FILE"></appender-ref>
         <!--        <appender-ref ref="cat"/>-->
     </root>
-    <logger name="com.jay.monitor" level="debug"/>
 </configuration>

+ 33 - 1
jay-monitor-data-server/src/test/java/com/jay/monitor/data/server/factory/DayIdGenerateTest.java

@@ -14,6 +14,8 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
 import org.springframework.boot.test.context.SpringBootTest;
 import org.springframework.test.context.junit4.SpringRunner;
 
+import java.text.SimpleDateFormat;
+import java.util.Date;
 import java.util.concurrent.CyclicBarrier;
 
 /**
@@ -23,8 +25,9 @@ import java.util.concurrent.CyclicBarrier;
  * @Date 2020/11/6 15:54
  */
 @RunWith(SpringRunner.class)
-@SpringBootTest(classes = {MonitorProperties.class,DataSourceAutoConfiguration.class,MysqlDDLProcess.class, SplitDataManager.class, DayIdGenerate.class, DataIdFactory.class, DefaultIdChangeCallback.class})
+@SpringBootTest(classes = {MonitorProperties.class, DataSourceAutoConfiguration.class, MysqlDDLProcess.class, SplitDataManager.class, DayIdGenerate.class, DataIdFactory.class, DefaultIdChangeCallback.class})
 public class DayIdGenerateTest {
+    SimpleDateFormat sfd = new SimpleDateFormat("yyyy-MM-dd HH:mm:dd");
 
     private Logger logger = LoggerFactory.getLogger(getClass());
     //    @Autowired
@@ -92,4 +95,33 @@ public class DayIdGenerateTest {
         testDayGenerate();
         testDayGenerate();
     }
+
+    @Test
+    public void testTimeStrap() {
+
+
+        // 1109
+//        Long startTime = 1604880000000L;
+        Long startTime = 1604851200000L;
+        long timestrap = getTimestrap(startTime);
+
+        // 1110
+        startTime = 1604937602000L;
+        timestrap = getTimestrap(startTime);
+
+        startTime = System.currentTimeMillis();
+        timestrap = getTimestrap(startTime);
+
+    }
+
+    private long getTimestrap(Long startTime) {
+        Long add = 8 * 3600 * 1000l;
+        startTime = startTime + add;
+        long DAY = 24 * 60 * 60 * 1000L;
+        long value = startTime / DAY;
+        Date date = new Date(startTime);
+        System.out.println(sfd.format(date) + "\t" + value);
+        return value;
+    }
+
 }

+ 64 - 0
jay-monitor-data-server/src/test/java/com/jay/monitor/data/server/factory/generate/HourIdGenerateTest.java

@@ -0,0 +1,64 @@
+package com.jay.monitor.data.server.factory.generate;
+
+import org.junit.Test;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+/**
+ * @Module TODO
+ * @Description TODO
+ * @Author liukaixiong
+ * @Date 2020/11/9 13:48
+ */
+public class HourIdGenerateTest {
+    SimpleDateFormat sfd = new SimpleDateFormat("yyyy-MM-dd HH:mm:dd");
+
+    @Test
+    public void getHourTimestamp() {
+        long timestamp = System.currentTimeMillis();
+        getTimestamp(timestamp);
+
+        timestamp = 1604901600000L;
+        getTimestamp(timestamp);
+    }
+
+    private long getTimestamp(long timestamp) {
+        long HOUR = 3600 * 1000L;
+        long hour = timestamp / HOUR;
+        System.out.println(hour);
+        return hour;
+    }
+
+    @Test
+    public void testTimeStrap() {
+
+        // 1109
+//        Long startTime = 1604880000000L;
+//        Long startTime = 1604937599000L;
+        Long startTime = 1604851199000L;
+        long timestrap = getTimestrap(startTime);
+
+        startTime = 1604851200000L;
+        timestrap = getTimestrap(startTime);
+
+        // 1110
+        startTime = 1604937600000L;
+        timestrap = getTimestrap(startTime);
+
+        startTime = System.currentTimeMillis();
+        timestrap = getTimestrap(startTime);
+
+    }
+
+    private long getTimestrap(Long startTime) {
+        Long add = 8 * 3600 * 1000L;
+        System.out.println("day : " + add);
+        startTime = startTime + add;
+        long DAY = 24 * 60 * 60 * 1000L;
+        long value = startTime / DAY;
+        Date date = new Date(startTime);
+        System.out.println(sfd.format(date) + "\t" + value);
+        return value;
+    }
+}

+ 30 - 0
src/main/java/com/jay/monitor/data/server/daos/JayMonitorMqLogMapper.java

@@ -0,0 +1,30 @@
+package com.jay.monitor.data.server.daos;
+
+import com.jay.monitor.data.server.models.entity.JayMonitorMqLog;
+import com.jay.monitor.data.server.models.entity.JayMonitorMqLogExample;
+import java.util.List;
+import org.apache.ibatis.annotations.Param;
+
+public interface JayMonitorMqLogMapper {
+    long countByExample(JayMonitorMqLogExample example);
+
+    int deleteByExample(JayMonitorMqLogExample example);
+
+    int deleteByPrimaryKey(Integer id);
+
+    int insert(JayMonitorMqLog record);
+
+    int insertSelective(JayMonitorMqLog record);
+
+    List<JayMonitorMqLog> selectByExample(JayMonitorMqLogExample example);
+
+    JayMonitorMqLog selectByPrimaryKey(Integer id);
+
+    int updateByExampleSelective(@Param("record") JayMonitorMqLog record, @Param("example") JayMonitorMqLogExample example);
+
+    int updateByExample(@Param("record") JayMonitorMqLog record, @Param("example") JayMonitorMqLogExample example);
+
+    int updateByPrimaryKeySelective(JayMonitorMqLog record);
+
+    int updateByPrimaryKey(JayMonitorMqLog record);
+}

+ 100 - 0
src/main/java/com/jay/monitor/data/server/models/entity/JayMonitorMqLog.java

@@ -0,0 +1,100 @@
+package com.jay.monitor.data.server.models.entity;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * jay_monitor_mq_log
+ * @author 
+ */
+public class JayMonitorMqLog implements Serializable {
+    private Integer id;
+
+    /**
+     * 监控来源编号
+     */
+    private Integer monitorId;
+
+    /**
+     * 根日志编号
+     */
+    private String rootLogId;
+
+    /**
+     * 上级日志编号
+     */
+    private String parentLogId;
+
+    /**
+     * 日志编号
+     */
+    private String logId;
+
+    /**
+     * 日志文本
+     */
+    private String logText;
+
+    /**
+     * 创建日期
+     */
+    private Date createDate;
+
+    private static final long serialVersionUID = 1L;
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public Integer getMonitorId() {
+        return monitorId;
+    }
+
+    public void setMonitorId(Integer monitorId) {
+        this.monitorId = monitorId;
+    }
+
+    public String getRootLogId() {
+        return rootLogId;
+    }
+
+    public void setRootLogId(String rootLogId) {
+        this.rootLogId = rootLogId;
+    }
+
+    public String getParentLogId() {
+        return parentLogId;
+    }
+
+    public void setParentLogId(String parentLogId) {
+        this.parentLogId = parentLogId;
+    }
+
+    public String getLogId() {
+        return logId;
+    }
+
+    public void setLogId(String logId) {
+        this.logId = logId;
+    }
+
+    public String getLogText() {
+        return logText;
+    }
+
+    public void setLogText(String logText) {
+        this.logText = logText;
+    }
+
+    public Date getCreateDate() {
+        return createDate;
+    }
+
+    public void setCreateDate(Date createDate) {
+        this.createDate = createDate;
+    }
+}

+ 689 - 0
src/main/java/com/jay/monitor/data/server/models/entity/JayMonitorMqLogExample.java

@@ -0,0 +1,689 @@
+package com.jay.monitor.data.server.models.entity;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.List;
+
+public class JayMonitorMqLogExample {
+    protected String orderByClause;
+
+    protected boolean distinct;
+
+    protected List<Criteria> oredCriteria;
+
+    public JayMonitorMqLogExample() {
+        oredCriteria = new ArrayList<>();
+    }
+
+    public void setOrderByClause(String orderByClause) {
+        this.orderByClause = orderByClause;
+    }
+
+    public String getOrderByClause() {
+        return orderByClause;
+    }
+
+    public void setDistinct(boolean distinct) {
+        this.distinct = distinct;
+    }
+
+    public boolean isDistinct() {
+        return distinct;
+    }
+
+    public List<Criteria> getOredCriteria() {
+        return oredCriteria;
+    }
+
+    public void or(Criteria criteria) {
+        oredCriteria.add(criteria);
+    }
+
+    public Criteria or() {
+        Criteria criteria = createCriteriaInternal();
+        oredCriteria.add(criteria);
+        return criteria;
+    }
+
+    public Criteria createCriteria() {
+        Criteria criteria = createCriteriaInternal();
+        if (oredCriteria.size() == 0) {
+            oredCriteria.add(criteria);
+        }
+        return criteria;
+    }
+
+    protected Criteria createCriteriaInternal() {
+        Criteria criteria = new Criteria();
+        return criteria;
+    }
+
+    public void clear() {
+        oredCriteria.clear();
+        orderByClause = null;
+        distinct = false;
+    }
+
+    protected abstract static class GeneratedCriteria {
+        protected List<Criterion> criteria;
+
+        protected GeneratedCriteria() {
+            super();
+            criteria = new ArrayList<>();
+        }
+
+        public boolean isValid() {
+            return criteria.size() > 0;
+        }
+
+        public List<Criterion> getAllCriteria() {
+            return criteria;
+        }
+
+        public List<Criterion> getCriteria() {
+            return criteria;
+        }
+
+        protected void addCriterion(String condition) {
+            if (condition == null) {
+                throw new RuntimeException("Value for condition cannot be null");
+            }
+            criteria.add(new Criterion(condition));
+        }
+
+        protected void addCriterion(String condition, Object value, String property) {
+            if (value == null) {
+                throw new RuntimeException("Value for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value));
+        }
+
+        protected void addCriterion(String condition, Object value1, Object value2, String property) {
+            if (value1 == null || value2 == null) {
+                throw new RuntimeException("Between values for " + property + " cannot be null");
+            }
+            criteria.add(new Criterion(condition, value1, value2));
+        }
+
+        protected void addCriterionForJDBCDate(String condition, Date value, String property) {
+            if (value == null) {
+                throw new RuntimeException("Value for " + property + " cannot be null");
+            }
+            addCriterion(condition, new java.sql.Date(value.getTime()), property);
+        }
+
+        protected void addCriterionForJDBCDate(String condition, List<Date> values, String property) {
+            if (values == null || values.size() == 0) {
+                throw new RuntimeException("Value list for " + property + " cannot be null or empty");
+            }
+            List<java.sql.Date> dateList = new ArrayList<>();
+            Iterator<Date> iter = values.iterator();
+            while (iter.hasNext()) {
+                dateList.add(new java.sql.Date(iter.next().getTime()));
+            }
+            addCriterion(condition, dateList, property);
+        }
+
+        protected void addCriterionForJDBCDate(String condition, Date value1, Date value2, String property) {
+            if (value1 == null || value2 == null) {
+                throw new RuntimeException("Between values for " + property + " cannot be null");
+            }
+            addCriterion(condition, new java.sql.Date(value1.getTime()), new java.sql.Date(value2.getTime()), property);
+        }
+
+        public Criteria andIdIsNull() {
+            addCriterion("id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIsNotNull() {
+            addCriterion("id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdEqualTo(Integer value) {
+            addCriterion("id =", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotEqualTo(Integer value) {
+            addCriterion("id <>", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThan(Integer value) {
+            addCriterion("id >", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdGreaterThanOrEqualTo(Integer value) {
+            addCriterion("id >=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThan(Integer value) {
+            addCriterion("id <", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdLessThanOrEqualTo(Integer value) {
+            addCriterion("id <=", value, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdIn(List<Integer> values) {
+            addCriterion("id in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotIn(List<Integer> values) {
+            addCriterion("id not in", values, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdBetween(Integer value1, Integer value2) {
+            addCriterion("id between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andIdNotBetween(Integer value1, Integer value2) {
+            addCriterion("id not between", value1, value2, "id");
+            return (Criteria) this;
+        }
+
+        public Criteria andMonitorIdIsNull() {
+            addCriterion("monitor_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andMonitorIdIsNotNull() {
+            addCriterion("monitor_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andMonitorIdEqualTo(Integer value) {
+            addCriterion("monitor_id =", value, "monitorId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMonitorIdNotEqualTo(Integer value) {
+            addCriterion("monitor_id <>", value, "monitorId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMonitorIdGreaterThan(Integer value) {
+            addCriterion("monitor_id >", value, "monitorId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMonitorIdGreaterThanOrEqualTo(Integer value) {
+            addCriterion("monitor_id >=", value, "monitorId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMonitorIdLessThan(Integer value) {
+            addCriterion("monitor_id <", value, "monitorId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMonitorIdLessThanOrEqualTo(Integer value) {
+            addCriterion("monitor_id <=", value, "monitorId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMonitorIdIn(List<Integer> values) {
+            addCriterion("monitor_id in", values, "monitorId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMonitorIdNotIn(List<Integer> values) {
+            addCriterion("monitor_id not in", values, "monitorId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMonitorIdBetween(Integer value1, Integer value2) {
+            addCriterion("monitor_id between", value1, value2, "monitorId");
+            return (Criteria) this;
+        }
+
+        public Criteria andMonitorIdNotBetween(Integer value1, Integer value2) {
+            addCriterion("monitor_id not between", value1, value2, "monitorId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootLogIdIsNull() {
+            addCriterion("root_log_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootLogIdIsNotNull() {
+            addCriterion("root_log_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootLogIdEqualTo(String value) {
+            addCriterion("root_log_id =", value, "rootLogId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootLogIdNotEqualTo(String value) {
+            addCriterion("root_log_id <>", value, "rootLogId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootLogIdGreaterThan(String value) {
+            addCriterion("root_log_id >", value, "rootLogId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootLogIdGreaterThanOrEqualTo(String value) {
+            addCriterion("root_log_id >=", value, "rootLogId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootLogIdLessThan(String value) {
+            addCriterion("root_log_id <", value, "rootLogId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootLogIdLessThanOrEqualTo(String value) {
+            addCriterion("root_log_id <=", value, "rootLogId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootLogIdLike(String value) {
+            addCriterion("root_log_id like", value, "rootLogId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootLogIdNotLike(String value) {
+            addCriterion("root_log_id not like", value, "rootLogId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootLogIdIn(List<String> values) {
+            addCriterion("root_log_id in", values, "rootLogId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootLogIdNotIn(List<String> values) {
+            addCriterion("root_log_id not in", values, "rootLogId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootLogIdBetween(String value1, String value2) {
+            addCriterion("root_log_id between", value1, value2, "rootLogId");
+            return (Criteria) this;
+        }
+
+        public Criteria andRootLogIdNotBetween(String value1, String value2) {
+            addCriterion("root_log_id not between", value1, value2, "rootLogId");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentLogIdIsNull() {
+            addCriterion("parent_log_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentLogIdIsNotNull() {
+            addCriterion("parent_log_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentLogIdEqualTo(String value) {
+            addCriterion("parent_log_id =", value, "parentLogId");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentLogIdNotEqualTo(String value) {
+            addCriterion("parent_log_id <>", value, "parentLogId");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentLogIdGreaterThan(String value) {
+            addCriterion("parent_log_id >", value, "parentLogId");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentLogIdGreaterThanOrEqualTo(String value) {
+            addCriterion("parent_log_id >=", value, "parentLogId");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentLogIdLessThan(String value) {
+            addCriterion("parent_log_id <", value, "parentLogId");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentLogIdLessThanOrEqualTo(String value) {
+            addCriterion("parent_log_id <=", value, "parentLogId");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentLogIdLike(String value) {
+            addCriterion("parent_log_id like", value, "parentLogId");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentLogIdNotLike(String value) {
+            addCriterion("parent_log_id not like", value, "parentLogId");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentLogIdIn(List<String> values) {
+            addCriterion("parent_log_id in", values, "parentLogId");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentLogIdNotIn(List<String> values) {
+            addCriterion("parent_log_id not in", values, "parentLogId");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentLogIdBetween(String value1, String value2) {
+            addCriterion("parent_log_id between", value1, value2, "parentLogId");
+            return (Criteria) this;
+        }
+
+        public Criteria andParentLogIdNotBetween(String value1, String value2) {
+            addCriterion("parent_log_id not between", value1, value2, "parentLogId");
+            return (Criteria) this;
+        }
+
+        public Criteria andLogIdIsNull() {
+            addCriterion("log_id is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLogIdIsNotNull() {
+            addCriterion("log_id is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLogIdEqualTo(String value) {
+            addCriterion("log_id =", value, "logId");
+            return (Criteria) this;
+        }
+
+        public Criteria andLogIdNotEqualTo(String value) {
+            addCriterion("log_id <>", value, "logId");
+            return (Criteria) this;
+        }
+
+        public Criteria andLogIdGreaterThan(String value) {
+            addCriterion("log_id >", value, "logId");
+            return (Criteria) this;
+        }
+
+        public Criteria andLogIdGreaterThanOrEqualTo(String value) {
+            addCriterion("log_id >=", value, "logId");
+            return (Criteria) this;
+        }
+
+        public Criteria andLogIdLessThan(String value) {
+            addCriterion("log_id <", value, "logId");
+            return (Criteria) this;
+        }
+
+        public Criteria andLogIdLessThanOrEqualTo(String value) {
+            addCriterion("log_id <=", value, "logId");
+            return (Criteria) this;
+        }
+
+        public Criteria andLogIdLike(String value) {
+            addCriterion("log_id like", value, "logId");
+            return (Criteria) this;
+        }
+
+        public Criteria andLogIdNotLike(String value) {
+            addCriterion("log_id not like", value, "logId");
+            return (Criteria) this;
+        }
+
+        public Criteria andLogIdIn(List<String> values) {
+            addCriterion("log_id in", values, "logId");
+            return (Criteria) this;
+        }
+
+        public Criteria andLogIdNotIn(List<String> values) {
+            addCriterion("log_id not in", values, "logId");
+            return (Criteria) this;
+        }
+
+        public Criteria andLogIdBetween(String value1, String value2) {
+            addCriterion("log_id between", value1, value2, "logId");
+            return (Criteria) this;
+        }
+
+        public Criteria andLogIdNotBetween(String value1, String value2) {
+            addCriterion("log_id not between", value1, value2, "logId");
+            return (Criteria) this;
+        }
+
+        public Criteria andLogTextIsNull() {
+            addCriterion("log_text is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLogTextIsNotNull() {
+            addCriterion("log_text is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andLogTextEqualTo(String value) {
+            addCriterion("log_text =", value, "logText");
+            return (Criteria) this;
+        }
+
+        public Criteria andLogTextNotEqualTo(String value) {
+            addCriterion("log_text <>", value, "logText");
+            return (Criteria) this;
+        }
+
+        public Criteria andLogTextGreaterThan(String value) {
+            addCriterion("log_text >", value, "logText");
+            return (Criteria) this;
+        }
+
+        public Criteria andLogTextGreaterThanOrEqualTo(String value) {
+            addCriterion("log_text >=", value, "logText");
+            return (Criteria) this;
+        }
+
+        public Criteria andLogTextLessThan(String value) {
+            addCriterion("log_text <", value, "logText");
+            return (Criteria) this;
+        }
+
+        public Criteria andLogTextLessThanOrEqualTo(String value) {
+            addCriterion("log_text <=", value, "logText");
+            return (Criteria) this;
+        }
+
+        public Criteria andLogTextLike(String value) {
+            addCriterion("log_text like", value, "logText");
+            return (Criteria) this;
+        }
+
+        public Criteria andLogTextNotLike(String value) {
+            addCriterion("log_text not like", value, "logText");
+            return (Criteria) this;
+        }
+
+        public Criteria andLogTextIn(List<String> values) {
+            addCriterion("log_text in", values, "logText");
+            return (Criteria) this;
+        }
+
+        public Criteria andLogTextNotIn(List<String> values) {
+            addCriterion("log_text not in", values, "logText");
+            return (Criteria) this;
+        }
+
+        public Criteria andLogTextBetween(String value1, String value2) {
+            addCriterion("log_text between", value1, value2, "logText");
+            return (Criteria) this;
+        }
+
+        public Criteria andLogTextNotBetween(String value1, String value2) {
+            addCriterion("log_text not between", value1, value2, "logText");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateDateIsNull() {
+            addCriterion("create_date is null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateDateIsNotNull() {
+            addCriterion("create_date is not null");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateDateEqualTo(Date value) {
+            addCriterionForJDBCDate("create_date =", value, "createDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateDateNotEqualTo(Date value) {
+            addCriterionForJDBCDate("create_date <>", value, "createDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateDateGreaterThan(Date value) {
+            addCriterionForJDBCDate("create_date >", value, "createDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateDateGreaterThanOrEqualTo(Date value) {
+            addCriterionForJDBCDate("create_date >=", value, "createDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateDateLessThan(Date value) {
+            addCriterionForJDBCDate("create_date <", value, "createDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateDateLessThanOrEqualTo(Date value) {
+            addCriterionForJDBCDate("create_date <=", value, "createDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateDateIn(List<Date> values) {
+            addCriterionForJDBCDate("create_date in", values, "createDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateDateNotIn(List<Date> values) {
+            addCriterionForJDBCDate("create_date not in", values, "createDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateDateBetween(Date value1, Date value2) {
+            addCriterionForJDBCDate("create_date between", value1, value2, "createDate");
+            return (Criteria) this;
+        }
+
+        public Criteria andCreateDateNotBetween(Date value1, Date value2) {
+            addCriterionForJDBCDate("create_date not between", value1, value2, "createDate");
+            return (Criteria) this;
+        }
+    }
+
+    /**
+     */
+    public static class Criteria extends GeneratedCriteria {
+        protected Criteria() {
+            super();
+        }
+    }
+
+    public static class Criterion {
+        private String condition;
+
+        private Object value;
+
+        private Object secondValue;
+
+        private boolean noValue;
+
+        private boolean singleValue;
+
+        private boolean betweenValue;
+
+        private boolean listValue;
+
+        private String typeHandler;
+
+        public String getCondition() {
+            return condition;
+        }
+
+        public Object getValue() {
+            return value;
+        }
+
+        public Object getSecondValue() {
+            return secondValue;
+        }
+
+        public boolean isNoValue() {
+            return noValue;
+        }
+
+        public boolean isSingleValue() {
+            return singleValue;
+        }
+
+        public boolean isBetweenValue() {
+            return betweenValue;
+        }
+
+        public boolean isListValue() {
+            return listValue;
+        }
+
+        public String getTypeHandler() {
+            return typeHandler;
+        }
+
+        protected Criterion(String condition) {
+            super();
+            this.condition = condition;
+            this.typeHandler = null;
+            this.noValue = true;
+        }
+
+        protected Criterion(String condition, Object value, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.typeHandler = typeHandler;
+            if (value instanceof List<?>) {
+                this.listValue = true;
+            } else {
+                this.singleValue = true;
+            }
+        }
+
+        protected Criterion(String condition, Object value) {
+            this(condition, value, null);
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {
+            super();
+            this.condition = condition;
+            this.value = value;
+            this.secondValue = secondValue;
+            this.typeHandler = typeHandler;
+            this.betweenValue = true;
+        }
+
+        protected Criterion(String condition, Object value, Object secondValue) {
+            this(condition, value, secondValue, null);
+        }
+    }
+}

+ 237 - 0
src/main/resources/mybatis/mapper/JayMonitorMqLogMapper.xml

@@ -0,0 +1,237 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.jay.monitor.data.server.daos.JayMonitorMqLogMapper">
+  <resultMap id="BaseResultMap" type="com.jay.monitor.data.server.models.entity.JayMonitorMqLog">
+    <id column="id" jdbcType="INTEGER" property="id" />
+    <result column="monitor_id" jdbcType="INTEGER" property="monitorId" />
+    <result column="root_log_id" jdbcType="VARCHAR" property="rootLogId" />
+    <result column="parent_log_id" jdbcType="VARCHAR" property="parentLogId" />
+    <result column="log_id" jdbcType="VARCHAR" property="logId" />
+    <result column="log_text" jdbcType="VARCHAR" property="logText" />
+    <result column="create_date" jdbcType="DATE" property="createDate" />
+  </resultMap>
+  <sql id="Example_Where_Clause">
+    <where>
+      <foreach collection="oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Update_By_Example_Where_Clause">
+    <where>
+      <foreach collection="example.oredCriteria" item="criteria" separator="or">
+        <if test="criteria.valid">
+          <trim prefix="(" prefixOverrides="and" suffix=")">
+            <foreach collection="criteria.criteria" item="criterion">
+              <choose>
+                <when test="criterion.noValue">
+                  and ${criterion.condition}
+                </when>
+                <when test="criterion.singleValue">
+                  and ${criterion.condition} #{criterion.value}
+                </when>
+                <when test="criterion.betweenValue">
+                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}
+                </when>
+                <when test="criterion.listValue">
+                  and ${criterion.condition}
+                  <foreach close=")" collection="criterion.value" item="listItem" open="(" separator=",">
+                    #{listItem}
+                  </foreach>
+                </when>
+              </choose>
+            </foreach>
+          </trim>
+        </if>
+      </foreach>
+    </where>
+  </sql>
+  <sql id="Base_Column_List">
+    id, monitor_id, root_log_id, parent_log_id, log_id, log_text, create_date
+  </sql>
+  <select id="selectByExample" parameterType="com.jay.monitor.data.server.models.entity.JayMonitorMqLogExample" resultMap="BaseResultMap">
+    select
+    <if test="distinct">
+      distinct
+    </if>
+    <include refid="Base_Column_List" />
+    from jay_monitor_mq_log
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+    <if test="orderByClause != null">
+      order by ${orderByClause}
+    </if>
+  </select>
+  <select id="selectByPrimaryKey" parameterType="java.lang.Integer" resultMap="BaseResultMap">
+    select 
+    <include refid="Base_Column_List" />
+    from jay_monitor_mq_log
+    where id = #{id,jdbcType=INTEGER}
+  </select>
+  <delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
+    delete from jay_monitor_mq_log
+    where id = #{id,jdbcType=INTEGER}
+  </delete>
+  <delete id="deleteByExample" parameterType="com.jay.monitor.data.server.models.entity.JayMonitorMqLogExample">
+    delete from jay_monitor_mq_log
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </delete>
+  <insert id="insert" keyColumn="id" keyProperty="id" parameterType="com.jay.monitor.data.server.models.entity.JayMonitorMqLog" useGeneratedKeys="true">
+    insert into jay_monitor_mq_log (monitor_id, root_log_id, parent_log_id, 
+      log_id, log_text, create_date
+      )
+    values (#{monitorId,jdbcType=INTEGER}, #{rootLogId,jdbcType=VARCHAR}, #{parentLogId,jdbcType=VARCHAR}, 
+      #{logId,jdbcType=VARCHAR}, #{logText,jdbcType=VARCHAR}, #{createDate,jdbcType=DATE}
+      )
+  </insert>
+  <insert id="insertSelective" keyColumn="id" keyProperty="id" parameterType="com.jay.monitor.data.server.models.entity.JayMonitorMqLog" useGeneratedKeys="true">
+    insert into jay_monitor_mq_log
+    <trim prefix="(" suffix=")" suffixOverrides=",">
+      <if test="monitorId != null">
+        monitor_id,
+      </if>
+      <if test="rootLogId != null">
+        root_log_id,
+      </if>
+      <if test="parentLogId != null">
+        parent_log_id,
+      </if>
+      <if test="logId != null">
+        log_id,
+      </if>
+      <if test="logText != null">
+        log_text,
+      </if>
+      <if test="createDate != null">
+        create_date,
+      </if>
+    </trim>
+    <trim prefix="values (" suffix=")" suffixOverrides=",">
+      <if test="monitorId != null">
+        #{monitorId,jdbcType=INTEGER},
+      </if>
+      <if test="rootLogId != null">
+        #{rootLogId,jdbcType=VARCHAR},
+      </if>
+      <if test="parentLogId != null">
+        #{parentLogId,jdbcType=VARCHAR},
+      </if>
+      <if test="logId != null">
+        #{logId,jdbcType=VARCHAR},
+      </if>
+      <if test="logText != null">
+        #{logText,jdbcType=VARCHAR},
+      </if>
+      <if test="createDate != null">
+        #{createDate,jdbcType=DATE},
+      </if>
+    </trim>
+  </insert>
+  <select id="countByExample" parameterType="com.jay.monitor.data.server.models.entity.JayMonitorMqLogExample" resultType="java.lang.Long">
+    select count(*) from jay_monitor_mq_log
+    <if test="_parameter != null">
+      <include refid="Example_Where_Clause" />
+    </if>
+  </select>
+  <update id="updateByExampleSelective" parameterType="map">
+    update jay_monitor_mq_log
+    <set>
+      <if test="record.id != null">
+        id = #{record.id,jdbcType=INTEGER},
+      </if>
+      <if test="record.monitorId != null">
+        monitor_id = #{record.monitorId,jdbcType=INTEGER},
+      </if>
+      <if test="record.rootLogId != null">
+        root_log_id = #{record.rootLogId,jdbcType=VARCHAR},
+      </if>
+      <if test="record.parentLogId != null">
+        parent_log_id = #{record.parentLogId,jdbcType=VARCHAR},
+      </if>
+      <if test="record.logId != null">
+        log_id = #{record.logId,jdbcType=VARCHAR},
+      </if>
+      <if test="record.logText != null">
+        log_text = #{record.logText,jdbcType=VARCHAR},
+      </if>
+      <if test="record.createDate != null">
+        create_date = #{record.createDate,jdbcType=DATE},
+      </if>
+    </set>
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByExample" parameterType="map">
+    update jay_monitor_mq_log
+    set id = #{record.id,jdbcType=INTEGER},
+      monitor_id = #{record.monitorId,jdbcType=INTEGER},
+      root_log_id = #{record.rootLogId,jdbcType=VARCHAR},
+      parent_log_id = #{record.parentLogId,jdbcType=VARCHAR},
+      log_id = #{record.logId,jdbcType=VARCHAR},
+      log_text = #{record.logText,jdbcType=VARCHAR},
+      create_date = #{record.createDate,jdbcType=DATE}
+    <if test="_parameter != null">
+      <include refid="Update_By_Example_Where_Clause" />
+    </if>
+  </update>
+  <update id="updateByPrimaryKeySelective" parameterType="com.jay.monitor.data.server.models.entity.JayMonitorMqLog">
+    update jay_monitor_mq_log
+    <set>
+      <if test="monitorId != null">
+        monitor_id = #{monitorId,jdbcType=INTEGER},
+      </if>
+      <if test="rootLogId != null">
+        root_log_id = #{rootLogId,jdbcType=VARCHAR},
+      </if>
+      <if test="parentLogId != null">
+        parent_log_id = #{parentLogId,jdbcType=VARCHAR},
+      </if>
+      <if test="logId != null">
+        log_id = #{logId,jdbcType=VARCHAR},
+      </if>
+      <if test="logText != null">
+        log_text = #{logText,jdbcType=VARCHAR},
+      </if>
+      <if test="createDate != null">
+        create_date = #{createDate,jdbcType=DATE},
+      </if>
+    </set>
+    where id = #{id,jdbcType=INTEGER}
+  </update>
+  <update id="updateByPrimaryKey" parameterType="com.jay.monitor.data.server.models.entity.JayMonitorMqLog">
+    update jay_monitor_mq_log
+    set monitor_id = #{monitorId,jdbcType=INTEGER},
+      root_log_id = #{rootLogId,jdbcType=VARCHAR},
+      parent_log_id = #{parentLogId,jdbcType=VARCHAR},
+      log_id = #{logId,jdbcType=VARCHAR},
+      log_text = #{logText,jdbcType=VARCHAR},
+      create_date = #{createDate,jdbcType=DATE}
+    where id = #{id,jdbcType=INTEGER}
+  </update>
+</mapper>