From d0e1f4d5024564f1920c512c6f1ffdfd88038b8d Mon Sep 17 00:00:00 2001 From: Ljolan <2018214546@qq.com> Date: Tue, 2 Jun 2020 22:26:53 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E7=89=A9=E8=81=94=E7=BD=91=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0-=E8=AE=BE=E5=A4=87=E6=8A=A5=E8=AD=A6=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=20=E3=80=901=E3=80=91activeMq=E6=8E=A5=E6=94=B6?= =?UTF-8?q?=E6=8A=A5=E8=AD=A6=E4=BF=A1=E6=81=AF=20=E3=80=902=E3=80=91?= =?UTF-8?q?=E9=80=9A=E8=BF=87QQ=E9=82=AE=E7=AE=B1=E5=8F=91=E9=80=81?= =?UTF-8?q?=E9=82=AE=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/$PRODUCT_WORKSPACE_FILE$ | 19 ++ .idea/.gitignore | 5 + .idea/compiler.xml | 30 ++ .idea/encodings.xml | 11 + .idea/inspectionProfiles/Project_Default.xml | 36 +++ .idea/misc.xml | 22 ++ .idea/uiDesigner.xml | 124 ++++++++ .idea/vcs.xml | 6 + README.en.md | 36 +++ README.md | 7 + pom.xml | 242 ++++++++++++++++ saltice-monitor-admin/pom.xml | 117 ++++++++ .../java/cn/ljobin/bibi/BibiApplication.java | 55 ++++ .../bibi/config/QueueListenerConfig.java | 32 +++ .../cn/ljobin/bibi/config/RedisConfig.java | 177 ++++++++++++ .../java/cn/ljobin/bibi/config/UserUtils.java | 31 ++ .../bibi/listener/MonitorMessageListener.java | 47 +++ .../bibi/send/ActiveMqMessageSender.java | 43 +++ .../system/provider/MonitorDataProvider.java | 24 ++ .../src/main/resources/application.ymll | 192 +++++++++++++ .../src/main/resources/banner.txt | 6 + .../src/main/resources/bootstrap.properties | 37 +++ .../src/main/resources/pod-scale-alarm.html | 43 +++ .../src/main/resources/success-alarm.png | Bin 0 -> 21808 bytes .../saltice-monitor-admin.kotlin_module | Bin 0 -> 16 bytes .../target/classes/application.ymll | 192 +++++++++++++ .../target/classes/banner.txt | 6 + .../target/classes/bootstrap.properties | 37 +++ .../cn/ljobin/bibi/BibiApplication.class | Bin 0 -> 2745 bytes .../bibi/config/QueueListenerConfig.class | Bin 0 -> 1472 bytes .../cn/ljobin/bibi/config/RedisConfig$1.class | Bin 0 -> 2130 bytes .../RedisConfig$DataJedisProperties.class | Bin 0 -> 2859 bytes .../cn/ljobin/bibi/config/RedisConfig.class | Bin 0 -> 6729 bytes .../cn/ljobin/bibi/config/UserUtils.class | Bin 0 -> 1060 bytes .../listener/MonitorMessageListener.class | Bin 0 -> 2281 bytes .../bibi/send/ActiveMqMessageSender$1.class | Bin 0 -> 1300 bytes .../bibi/send/ActiveMqMessageSender.class | Bin 0 -> 1697 bytes .../system/provider/MonitorDataProvider.class | Bin 0 -> 963 bytes .../target/classes/pod-scale-alarm.html | 43 +++ .../target/classes/success-alarm.png | Bin 0 -> 21808 bytes saltice-monitor-api/pom.xml | 61 ++++ .../java/cn/ljobin/bibi/api/MonitorApi.java | 21 ++ .../bibi/domain/monitor/MonitorEmail.java | 53 ++++ .../domain/monitor/MonitorEmailRepush.java | 63 ++++ .../bibi/domain/monitor/MonitorMessage.java | 58 ++++ .../domain/monitor/enums/LinkInfoType.java | 33 +++ .../ljobin/bibi/domain/pot/TbIoterminal.java | 271 ++++++++++++++++++ .../bibi/domain/pot/group/PotGroup.java | 13 + .../domain/wapper/TbIoterminalWapper.java | 90 ++++++ .../saltice-monitor-api.kotlin_module | Bin 0 -> 16 bytes .../cn/ljobin/bibi/api/MonitorApi.class | Bin 0 -> 455 bytes .../bibi/domain/monitor/MonitorEmail.class | Bin 0 -> 4452 bytes .../domain/monitor/MonitorEmailRepush.class | Bin 0 -> 5463 bytes .../bibi/domain/monitor/MonitorMessage.class | Bin 0 -> 4951 bytes .../domain/monitor/enums/LinkInfoType.class | Bin 0 -> 1556 bytes .../ljobin/bibi/domain/pot/TbIoterminal.class | Bin 0 -> 5797 bytes .../bibi/domain/pot/group/PotGroup.class | Bin 0 -> 168 bytes .../domain/wapper/TbIoterminalWapper.class | Bin 0 -> 8953 bytes saltice-monitor-common/pom.xml | 145 ++++++++++ .../java/cn/ljobin/bibi/constant/Status.java | 14 + .../ljobin/bibi/enums/MessageQueueEnum.java | 15 + .../ljobin/bibi/enums/MessageStatusEnum.java | 29 ++ .../enums/execption/MessageExceptionEnum.java | 49 ++++ .../cn/ljobin/bibi/utils/AnnotationUtils.java | 158 ++++++++++ .../cn/ljobin/bibi/utils/Log4JavaMail.java | 88 ++++++ .../ljobin/bibi/utils/email/BaseMailSend.java | 18 ++ .../bibi/utils/email/impl/SendQqMailUtil.java | 103 +++++++ .../utils/email/impl/SprBooEmailUtil.java | 126 ++++++++ .../utils/kafkaconfig/ComsumerConfig.java | 22 ++ .../bibi/utils/kafkaconfig/Listener.java | 61 ++++ .../saltice-monitor-common.kotlin_module | Bin 0 -> 16 bytes .../cn/ljobin/bibi/constant/Status.class | Bin 0 -> 518 bytes .../ljobin/bibi/enums/MessageQueueEnum.class | Bin 0 -> 1083 bytes .../ljobin/bibi/enums/MessageStatusEnum.class | Bin 0 -> 1484 bytes .../execption/MessageExceptionEnum.class | Bin 0 -> 2675 bytes .../ljobin/bibi/utils/AnnotationUtils.class | Bin 0 -> 4052 bytes .../cn/ljobin/bibi/utils/Log4JavaMail.class | Bin 0 -> 2357 bytes .../bibi/utils/email/BaseMailSend.class | Bin 0 -> 279 bytes .../utils/email/impl/SendQqMailUtil.class | Bin 0 -> 4739 bytes .../utils/email/impl/SprBooEmailUtil.class | Bin 0 -> 6199 bytes .../utils/kafkaconfig/ComsumerConfig.class | Bin 0 -> 831 bytes .../bibi/utils/kafkaconfig/Listener.class | Bin 0 -> 592 bytes saltice-monitor-feign/pom.xml | 107 +++++++ .../ljobin/bibi/feign/AuthUserComsumer.java | 15 + .../fallback/AuthUserComsumeuFallback.java | 88 ++++++ .../ljobin/bibi/feign/AuthUserComsumer.class | Bin 0 -> 384 bytes .../fallback/AuthUserComsumeuFallback.class | Bin 0 -> 3392 bytes saltice-monitor-iot/pom.xml | 98 +++++++ .../cn/ljobin/bibi/mapper/EmailMapper.java | 18 ++ .../ljobin/bibi/mapper/EmailRePushMapper.java | 17 ++ .../bibi/mapper/MonitorMessageMapper.java | 17 ++ .../bibi/mapper/mapping/EmailMapper.xml | 18 ++ .../bibi/mapper/mapping/EmailRePushMapper.xml | 20 ++ .../mapper/mapping/MonitorMessageMapper.xml | 19 ++ .../bibi/service/IEmailRePushService.java | 15 + .../cn/ljobin/bibi/service/IEmailService.java | 20 ++ .../bibi/service/IMonitorMessageService.java | 15 + .../service/Impl/EmailRePushServiceImpl.java | 18 ++ .../bibi/service/Impl/EmailServiceImpl.java | 31 ++ .../Impl/MonitorMessageServiceImpl.java | 21 ++ .../saltice-monitor-iot.kotlin_module | Bin 0 -> 16 bytes .../cn/ljobin/bibi/mapper/EmailMapper.class | Bin 0 -> 397 bytes .../bibi/mapper/EmailRePushMapper.class | Bin 0 -> 415 bytes .../bibi/mapper/MonitorMessageMapper.class | Bin 0 -> 417 bytes .../bibi/mapper/mapping/EmailMapper.xml | 18 ++ .../bibi/mapper/mapping/EmailRePushMapper.xml | 20 ++ .../mapper/mapping/MonitorMessageMapper.xml | 19 ++ .../bibi/service/IEmailRePushService.class | Bin 0 -> 347 bytes .../ljobin/bibi/service/IEmailService.class | Bin 0 -> 455 bytes .../bibi/service/IMonitorMessageService.class | Bin 0 -> 349 bytes .../service/Impl/EmailRePushServiceImpl.class | Bin 0 -> 744 bytes .../bibi/service/Impl/EmailServiceImpl.class | Bin 0 -> 1366 bytes .../Impl/MonitorMessageServiceImpl.class | Bin 0 -> 758 bytes 113 files changed, 3705 insertions(+) create mode 100644 .idea/$PRODUCT_WORKSPACE_FILE$ create mode 100644 .idea/.gitignore create mode 100644 .idea/compiler.xml create mode 100644 .idea/encodings.xml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/uiDesigner.xml create mode 100644 .idea/vcs.xml create mode 100644 README.en.md create mode 100644 README.md create mode 100644 pom.xml create mode 100644 saltice-monitor-admin/pom.xml create mode 100644 saltice-monitor-admin/src/main/java/cn/ljobin/bibi/BibiApplication.java create mode 100644 saltice-monitor-admin/src/main/java/cn/ljobin/bibi/config/QueueListenerConfig.java create mode 100644 saltice-monitor-admin/src/main/java/cn/ljobin/bibi/config/RedisConfig.java create mode 100644 saltice-monitor-admin/src/main/java/cn/ljobin/bibi/config/UserUtils.java create mode 100644 saltice-monitor-admin/src/main/java/cn/ljobin/bibi/listener/MonitorMessageListener.java create mode 100644 saltice-monitor-admin/src/main/java/cn/ljobin/bibi/send/ActiveMqMessageSender.java create mode 100644 saltice-monitor-admin/src/main/java/cn/ljobin/bibi/system/provider/MonitorDataProvider.java create mode 100644 saltice-monitor-admin/src/main/resources/application.ymll create mode 100644 saltice-monitor-admin/src/main/resources/banner.txt create mode 100644 saltice-monitor-admin/src/main/resources/bootstrap.properties create mode 100644 saltice-monitor-admin/src/main/resources/pod-scale-alarm.html create mode 100644 saltice-monitor-admin/src/main/resources/success-alarm.png create mode 100644 saltice-monitor-admin/target/classes/META-INF/saltice-monitor-admin.kotlin_module create mode 100644 saltice-monitor-admin/target/classes/application.ymll create mode 100644 saltice-monitor-admin/target/classes/banner.txt create mode 100644 saltice-monitor-admin/target/classes/bootstrap.properties create mode 100644 saltice-monitor-admin/target/classes/cn/ljobin/bibi/BibiApplication.class create mode 100644 saltice-monitor-admin/target/classes/cn/ljobin/bibi/config/QueueListenerConfig.class create mode 100644 saltice-monitor-admin/target/classes/cn/ljobin/bibi/config/RedisConfig$1.class create mode 100644 saltice-monitor-admin/target/classes/cn/ljobin/bibi/config/RedisConfig$DataJedisProperties.class create mode 100644 saltice-monitor-admin/target/classes/cn/ljobin/bibi/config/RedisConfig.class create mode 100644 saltice-monitor-admin/target/classes/cn/ljobin/bibi/config/UserUtils.class create mode 100644 saltice-monitor-admin/target/classes/cn/ljobin/bibi/listener/MonitorMessageListener.class create mode 100644 saltice-monitor-admin/target/classes/cn/ljobin/bibi/send/ActiveMqMessageSender$1.class create mode 100644 saltice-monitor-admin/target/classes/cn/ljobin/bibi/send/ActiveMqMessageSender.class create mode 100644 saltice-monitor-admin/target/classes/cn/ljobin/bibi/system/provider/MonitorDataProvider.class create mode 100644 saltice-monitor-admin/target/classes/pod-scale-alarm.html create mode 100644 saltice-monitor-admin/target/classes/success-alarm.png create mode 100644 saltice-monitor-api/pom.xml create mode 100644 saltice-monitor-api/src/main/java/cn/ljobin/bibi/api/MonitorApi.java create mode 100644 saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/monitor/MonitorEmail.java create mode 100644 saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/monitor/MonitorEmailRepush.java create mode 100644 saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/monitor/MonitorMessage.java create mode 100644 saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/monitor/enums/LinkInfoType.java create mode 100644 saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/pot/TbIoterminal.java create mode 100644 saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/pot/group/PotGroup.java create mode 100644 saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/wapper/TbIoterminalWapper.java create mode 100644 saltice-monitor-api/target/classes/META-INF/saltice-monitor-api.kotlin_module create mode 100644 saltice-monitor-api/target/classes/cn/ljobin/bibi/api/MonitorApi.class create mode 100644 saltice-monitor-api/target/classes/cn/ljobin/bibi/domain/monitor/MonitorEmail.class create mode 100644 saltice-monitor-api/target/classes/cn/ljobin/bibi/domain/monitor/MonitorEmailRepush.class create mode 100644 saltice-monitor-api/target/classes/cn/ljobin/bibi/domain/monitor/MonitorMessage.class create mode 100644 saltice-monitor-api/target/classes/cn/ljobin/bibi/domain/monitor/enums/LinkInfoType.class create mode 100644 saltice-monitor-api/target/classes/cn/ljobin/bibi/domain/pot/TbIoterminal.class create mode 100644 saltice-monitor-api/target/classes/cn/ljobin/bibi/domain/pot/group/PotGroup.class create mode 100644 saltice-monitor-api/target/classes/cn/ljobin/bibi/domain/wapper/TbIoterminalWapper.class create mode 100644 saltice-monitor-common/pom.xml create mode 100644 saltice-monitor-common/src/main/java/cn/ljobin/bibi/constant/Status.java create mode 100644 saltice-monitor-common/src/main/java/cn/ljobin/bibi/enums/MessageQueueEnum.java create mode 100644 saltice-monitor-common/src/main/java/cn/ljobin/bibi/enums/MessageStatusEnum.java create mode 100644 saltice-monitor-common/src/main/java/cn/ljobin/bibi/enums/execption/MessageExceptionEnum.java create mode 100644 saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/AnnotationUtils.java create mode 100644 saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/Log4JavaMail.java create mode 100644 saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/email/BaseMailSend.java create mode 100644 saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/email/impl/SendQqMailUtil.java create mode 100644 saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/email/impl/SprBooEmailUtil.java create mode 100644 saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/kafkaconfig/ComsumerConfig.java create mode 100644 saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/kafkaconfig/Listener.java create mode 100644 saltice-monitor-common/target/classes/META-INF/saltice-monitor-common.kotlin_module create mode 100644 saltice-monitor-common/target/classes/cn/ljobin/bibi/constant/Status.class create mode 100644 saltice-monitor-common/target/classes/cn/ljobin/bibi/enums/MessageQueueEnum.class create mode 100644 saltice-monitor-common/target/classes/cn/ljobin/bibi/enums/MessageStatusEnum.class create mode 100644 saltice-monitor-common/target/classes/cn/ljobin/bibi/enums/execption/MessageExceptionEnum.class create mode 100644 saltice-monitor-common/target/classes/cn/ljobin/bibi/utils/AnnotationUtils.class create mode 100644 saltice-monitor-common/target/classes/cn/ljobin/bibi/utils/Log4JavaMail.class create mode 100644 saltice-monitor-common/target/classes/cn/ljobin/bibi/utils/email/BaseMailSend.class create mode 100644 saltice-monitor-common/target/classes/cn/ljobin/bibi/utils/email/impl/SendQqMailUtil.class create mode 100644 saltice-monitor-common/target/classes/cn/ljobin/bibi/utils/email/impl/SprBooEmailUtil.class create mode 100644 saltice-monitor-common/target/classes/cn/ljobin/bibi/utils/kafkaconfig/ComsumerConfig.class create mode 100644 saltice-monitor-common/target/classes/cn/ljobin/bibi/utils/kafkaconfig/Listener.class create mode 100644 saltice-monitor-feign/pom.xml create mode 100644 saltice-monitor-feign/src/main/java/cn/ljobin/bibi/feign/AuthUserComsumer.java create mode 100644 saltice-monitor-feign/src/main/java/cn/ljobin/bibi/feign/fallback/AuthUserComsumeuFallback.java create mode 100644 saltice-monitor-feign/target/classes/cn/ljobin/bibi/feign/AuthUserComsumer.class create mode 100644 saltice-monitor-feign/target/classes/cn/ljobin/bibi/feign/fallback/AuthUserComsumeuFallback.class create mode 100644 saltice-monitor-iot/pom.xml create mode 100644 saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/EmailMapper.java create mode 100644 saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/EmailRePushMapper.java create mode 100644 saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/MonitorMessageMapper.java create mode 100644 saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/mapping/EmailMapper.xml create mode 100644 saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/mapping/EmailRePushMapper.xml create mode 100644 saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/mapping/MonitorMessageMapper.xml create mode 100644 saltice-monitor-iot/src/main/java/cn/ljobin/bibi/service/IEmailRePushService.java create mode 100644 saltice-monitor-iot/src/main/java/cn/ljobin/bibi/service/IEmailService.java create mode 100644 saltice-monitor-iot/src/main/java/cn/ljobin/bibi/service/IMonitorMessageService.java create mode 100644 saltice-monitor-iot/src/main/java/cn/ljobin/bibi/service/Impl/EmailRePushServiceImpl.java create mode 100644 saltice-monitor-iot/src/main/java/cn/ljobin/bibi/service/Impl/EmailServiceImpl.java create mode 100644 saltice-monitor-iot/src/main/java/cn/ljobin/bibi/service/Impl/MonitorMessageServiceImpl.java create mode 100644 saltice-monitor-iot/target/classes/META-INF/saltice-monitor-iot.kotlin_module create mode 100644 saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/EmailMapper.class create mode 100644 saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/EmailRePushMapper.class create mode 100644 saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/MonitorMessageMapper.class create mode 100644 saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/mapping/EmailMapper.xml create mode 100644 saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/mapping/EmailRePushMapper.xml create mode 100644 saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/mapping/MonitorMessageMapper.xml create mode 100644 saltice-monitor-iot/target/classes/cn/ljobin/bibi/service/IEmailRePushService.class create mode 100644 saltice-monitor-iot/target/classes/cn/ljobin/bibi/service/IEmailService.class create mode 100644 saltice-monitor-iot/target/classes/cn/ljobin/bibi/service/IMonitorMessageService.class create mode 100644 saltice-monitor-iot/target/classes/cn/ljobin/bibi/service/Impl/EmailRePushServiceImpl.class create mode 100644 saltice-monitor-iot/target/classes/cn/ljobin/bibi/service/Impl/EmailServiceImpl.class create mode 100644 saltice-monitor-iot/target/classes/cn/ljobin/bibi/service/Impl/MonitorMessageServiceImpl.class diff --git a/.idea/$PRODUCT_WORKSPACE_FILE$ b/.idea/$PRODUCT_WORKSPACE_FILE$ new file mode 100644 index 0000000..3733e0d --- /dev/null +++ b/.idea/$PRODUCT_WORKSPACE_FILE$ @@ -0,0 +1,19 @@ + + + + + + + 1.8 + + + + + + + + \ No newline at end of file diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..c4b8ede --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,5 @@ +# Default ignored files +/workspace.xml + +# Editor-based HTTP Client requests +/httpRequests/ \ No newline at end of file diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..9238834 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..9e38368 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,11 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 0000000..6560a98 --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,36 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 0000000..d452847 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml new file mode 100644 index 0000000..e96534f --- /dev/null +++ b/.idea/uiDesigner.xml @@ -0,0 +1,124 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000..94a25f7 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/README.en.md b/README.en.md new file mode 100644 index 0000000..00e8790 --- /dev/null +++ b/README.en.md @@ -0,0 +1,36 @@ +# IoT-Plat + +#### Description +物联网平台 + +#### Software Architecture +Software architecture description + +#### Installation + +1. xxxx +2. xxxx +3. xxxx + +#### Instructions + +1. xxxx +2. xxxx +3. xxxx + +#### Contribution + +1. Fork the repository +2. Create Feat_xxx branch +3. Commit your code +4. Create Pull Request + + +#### Gitee Feature + +1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md +2. Gitee blog [blog.gitee.com](https://blog.gitee.com) +3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore) +4. The most valuable open source project [GVP](https://gitee.com/gvp) +5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help) +6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) diff --git a/README.md b/README.md new file mode 100644 index 0000000..a7e66b1 --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +# IoT-Monitor + +#### 介绍 +物联网平台-设备报警管理 + +#### 功能 +通过从activeMq获取异常报警信息,通过向用户邮箱发送异常报警邮件 \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 0000000..dd6bcd6 --- /dev/null +++ b/pom.xml @@ -0,0 +1,242 @@ + + + + 4.0.0 + + cn.ljobin.bibi + IoT-monitor + pom + 1.0-SNAPSHOT + + saltice-monitor-common + saltice-monitor-api + saltice-monitor-admin + saltice-monitor-iot + saltice-monitor-feign + + + IoT-monitor + + org.springframework.boot + spring-boot-starter-parent + 2.1.6.RELEASE + + + + 1.8 + UTF-8 + UTF-8 + 1.1.5 + 1.1.5 + Greenwich.RELEASE + 0.9.0.RELEASE + + + + + + + javax.mail + mail + 1.4.7 + + + + + org.springframework.boot + spring-boot-starter-mail + 2.1.0.M3 + + + + cn.stylefeng.roses + roses-system-api + 1.1.6 + + + + cn.stylefeng.roses + kernel-core + ${kernel.version} + + + cn.stylefeng.roses + kernel-jwt + ${kernel.version} + + + cn.stylefeng.roses + kernel-logger + ${kernel.version} + + + cn.stylefeng.roses + kernel-scanner + ${kernel.version} + + + cn.stylefeng.roses + kernel-validator + ${kernel.version} + + + cn.stylefeng.roses + kernel-model + ${kernel.version} + + + cn.stylefeng.roses + kernel-actuator + ${kernel.version} + + + cn.stylefeng.roses + kernel-logger + ${kernel.version} + + + + cn.stylefeng.roses + biz-support-dict + ${biz.version} + + + cn.stylefeng.roses + biz-support-file + ${biz.version} + + + cn.stylefeng.roses + biz-support-log + ${biz.version} + + + org.springframework.cloud + spring-cloud-dependencies + ${spring-cloud.version} + pom + import + + + org.springframework.cloud + spring-cloud-alibaba-dependencies + ${spring-cloud-alibaba.version} + pom + import + + + + + + + + + + src/main/resources + true + + + src/main/java + + **/*.xml + + true + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.9.1 + + + package + + jar + + + + + -Xdoclint:none + + + + + + + + + + + + + + + + + org.apache.maven.plugins + maven-source-plugin + 3.0.1 + + true + + + + compile + + jar + + + + + + + + + + local + + local + + + true + + + + dev + + dev + + + + test + + test + + + + produce + + produce + + + + + + saltice + 2018214546@qq.com + + + + + + center + https://oss.sonatype.org/content/repositories/snapshots + + + center + https://oss.sonatype.org/service/local/staging/deploy/maven2 + + + diff --git a/saltice-monitor-admin/pom.xml b/saltice-monitor-admin/pom.xml new file mode 100644 index 0000000..1cf431d --- /dev/null +++ b/saltice-monitor-admin/pom.xml @@ -0,0 +1,117 @@ + + + + 4.0.0 + + cn.ljobin.bibi + saltice-monitor-admin + 1.0-SNAPSHOT + + + cn.ljobin.bibi + IoT-monitor + 1.0-SNAPSHOT + + + + UTF-8 + 1.8 + 1.8 + + + + + cn.stylefeng.roses + kernel-jwt + + + cn.stylefeng.roses + kernel-model + + + cn.stylefeng.roses + kernel-core + provided + + + cn.stylefeng.roses + kernel-logger + + + cn.ljobin.bibi + saltice-monitor-feign + 1.0-SNAPSHOT + + + cn.ljobin.bibi + saltice-monitor-api + 1.0-SNAPSHOT + + + cn.ljobin.bibi + saltice-monitor-common + 1.0-SNAPSHOT + + + cn.ljobin.bibi + saltice-monitor-iot + 1.0-SNAPSHOT + + + + org.springframework.boot + spring-boot-starter-web + + + + + + + + cn.stylefeng.roses + roses-system-api + + + org.springframework.cloud + spring-cloud-starter-alibaba-nacos-discovery + + + + org.springframework.cloud + spring-cloud-starter-alibaba-nacos-config + + + org.springframework.boot + spring-boot-starter-actuator + + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + org.springframework.cloud + spring-cloud-starter-netflix-hystrix + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + org.apache.maven.plugins + maven-resources-plugin + + + @ + + false + + + + + diff --git a/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/BibiApplication.java b/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/BibiApplication.java new file mode 100644 index 0000000..ccb2cdf --- /dev/null +++ b/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/BibiApplication.java @@ -0,0 +1,55 @@ +package cn.ljobin.bibi; + +import cn.ljobin.bibi.domain.monitor.MonitorMessage; +import cn.ljobin.bibi.domain.monitor.enums.LinkInfoType; +import cn.ljobin.bibi.send.ActiveMqMessageSender; +import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; +import com.spring4all.swagger.EnableSwagger2Doc; +import org.mybatis.spring.annotation.MapperScan; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.cloud.client.discovery.EnableDiscoveryClient; +import org.springframework.cloud.openfeign.EnableFeignClients; +import org.springframework.context.ConfigurableApplicationContext; +import org.springframework.scheduling.annotation.EnableScheduling; +import org.springframework.scheduling.annotation.Scheduled; + +/** + * @program: nettyTCP + * @description: + * @author: Mr.Liu + * @create: 2019-08-02 17:56 + **/ +/**如果有其它的包需要被扫描,就在下面添加**/ +/**cn.stylefeng.roses.kernel.logger.api是日志异步操作的**/ +@SpringBootApplication(scanBasePackages = {"cn.ljobin.bibi","cn.stylefeng.roses"},exclude = {DruidDataSourceAutoConfigure.class}) +/**开启定时器任务**/ +@EnableScheduling +@EnableFeignClients +@EnableDiscoveryClient +@MapperScan(basePackages = "cn.ljobin.bibi.mapper") +@EnableSwagger2Doc +public class BibiApplication { + @Autowired + private ActiveMqMessageSender sender; + @Scheduled(fixedDelay = 3000) + public void schedule(){ + MonitorMessage monitorMessage = new MonitorMessage(); + monitorMessage.setClientId("123"); + monitorMessage.setLinkInfo("1337792659@qq.com"); + monitorMessage.setLinkInfoType(LinkInfoType.EMAIL); + monitorMessage.setType(LinkInfoType.EMAIL.getId()); + monitorMessage.setPloy("asdsdsad"); + sender.sendMessage(monitorMessage); + } + private final static Logger logger = LoggerFactory.getLogger(BibiApplication.class); + public static ConfigurableApplicationContext applicationContext; + public static void main(String[] args) { + applicationContext = SpringApplication.run(BibiApplication.class, args); + logger.info("系统启动成功"); + } + +} diff --git a/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/config/QueueListenerConfig.java b/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/config/QueueListenerConfig.java new file mode 100644 index 0000000..593568c --- /dev/null +++ b/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/config/QueueListenerConfig.java @@ -0,0 +1,32 @@ +package cn.ljobin.bibi.config; + +import cn.ljobin.bibi.enums.MessageQueueEnum; +import cn.ljobin.bibi.listener.MonitorMessageListener; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.jms.listener.DefaultMessageListenerContainer; + +import javax.jms.ConnectionFactory; + +/** + * 消息队列监听配置 + * + * @author fengshuonan + * @date 2018-05-06 13:11 + */ +@Configuration +public class QueueListenerConfig { + + @Autowired + private MonitorMessageListener monitorMessageListener; + + @Bean + public DefaultMessageListenerContainer messageListenerContainer(ConnectionFactory connectionFactory) { + DefaultMessageListenerContainer factory = new DefaultMessageListenerContainer(); + factory.setConnectionFactory(connectionFactory); + factory.setDestinationName(MessageQueueEnum.MAKE_MONITOR_MESSAGE.name()); + factory.setMessageListener(monitorMessageListener); + return factory; + } +} diff --git a/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/config/RedisConfig.java b/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/config/RedisConfig.java new file mode 100644 index 0000000..44825d0 --- /dev/null +++ b/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/config/RedisConfig.java @@ -0,0 +1,177 @@ +package cn.ljobin.bibi.config; + +import com.fasterxml.jackson.annotation.JsonAutoDetect; +import com.fasterxml.jackson.annotation.PropertyAccessor; +import com.fasterxml.jackson.databind.ObjectMapper; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.cache.Cache; +import org.springframework.cache.CacheManager; +import org.springframework.cache.annotation.CachingConfigurerSupport; +import org.springframework.cache.annotation.EnableCaching; +import org.springframework.cache.interceptor.CacheErrorHandler; +import org.springframework.cache.interceptor.KeyGenerator; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.data.redis.cache.RedisCacheManager; +import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; +import org.springframework.data.redis.core.RedisTemplate; +import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; +import org.springframework.data.redis.serializer.RedisSerializer; +import org.springframework.data.redis.serializer.StringRedisSerializer; +import redis.clients.jedis.JedisPool; +import redis.clients.jedis.JedisPoolConfig; + +/** + * @program: iot + * @description: redis配置类 + * @author: liuyanbin + * @create: 2019-05-08 16:50 + **/ + +@Configuration +/** 必须加,使配置生效**/ +@EnableCaching +/**下面这个注解是可以控制改配置类是否生效,name是配置的名称,havingValue是当对应的值为true时才生效**/ +@ConditionalOnProperty(name="spring.redis.isOpen", havingValue="true") +public class RedisConfig extends CachingConfigurerSupport { + /** + * Logger + */ + private static final Logger lg = LoggerFactory.getLogger(RedisConfig.class); + + + @Autowired + private JedisConnectionFactory jedisConnectionFactory; + + @Bean + @Override + public KeyGenerator keyGenerator() { + // 设置自动key的生成规则,配置spring boot的注解,进行方法级别的缓存 + // 使用:进行分割,可以很多显示出层级关系 + // 这里其实就是new了一个KeyGenerator对象,只是这是lambda表达式的写法,我感觉很好用,大家感兴趣可以去了解下 + return (target, method, params) -> { + StringBuilder sb = new StringBuilder(); + sb.append(target.getClass().getName()); + sb.append(":"); + sb.append(method.getName()); + for (Object obj : params) { + sb.append(":" + String.valueOf(obj)); + } + String rsToUse = String.valueOf(sb); + lg.info("自动生成Redis Key -> [{}]", rsToUse); + return rsToUse; + }; + } + + @Bean + @Override + public CacheManager cacheManager() { + // 初始化缓存管理器,在这里我们可以缓存的整体过期时间什么的,我这里默认没有配置 + lg.info("初始化 -> [{}]", "CacheManager RedisCacheManager Start"); + RedisCacheManager.RedisCacheManagerBuilder builder = RedisCacheManager + .RedisCacheManagerBuilder + .fromConnectionFactory(jedisConnectionFactory); + return builder.build(); + } + + @Bean + public RedisTemplate redisTemplate(JedisConnectionFactory jedisConnectionFactory ) { + //设置序列化 + Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); + ObjectMapper om = new ObjectMapper(); + om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); + om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); + jackson2JsonRedisSerializer.setObjectMapper(om); + // 配置redisTemplate + RedisTemplate redisTemplate = new RedisTemplate(); + redisTemplate.setConnectionFactory(jedisConnectionFactory); + RedisSerializer stringSerializer = new StringRedisSerializer(); + redisTemplate.setKeySerializer(stringSerializer); // key序列化 + redisTemplate.setValueSerializer(jackson2JsonRedisSerializer); // value序列化 + redisTemplate.setHashKeySerializer(stringSerializer); // Hash key序列化 + redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer); // Hash value序列化 + redisTemplate.afterPropertiesSet(); + return redisTemplate; + } + + @Override + @Bean + public CacheErrorHandler errorHandler() { + // 异常处理,当Redis发生异常时,打印日志,但是程序正常走 + lg.info("初始化 -> [{}]", "Redis CacheErrorHandler"); + CacheErrorHandler cacheErrorHandler = new CacheErrorHandler() { + @Override + public void handleCacheGetError(RuntimeException e, Cache cache, Object key) { + lg.error("Redis occur handleCacheGetError:key -> [{}]", key, e); + } + + @Override + public void handleCachePutError(RuntimeException e, Cache cache, Object key, Object value) { + lg.error("Redis occur handleCachePutError:key -> [{}];value -> [{}]", key, value, e); + } + + @Override + public void handleCacheEvictError(RuntimeException e, Cache cache, Object key) { + lg.error("Redis occur handleCacheEvictError:key -> [{}]", key, e); + } + + @Override + public void handleCacheClearError(RuntimeException e, Cache cache) { + lg.error("Redis occur handleCacheClearError:", e); + } + }; + return cacheErrorHandler; + } + + /** + * 此内部类就是把yml的配置数据,进行读取,创建JedisConnectionFactory和JedisPool,以供外部类初始化缓存管理器使用 + * 不了解的同学可以去看@ConfigurationProperties和@Value的作用 + * + */ + @ConfigurationProperties + class DataJedisProperties{ + + @Value("${spring.redis.database}") + private int database; + @Value("${spring.redis.host}") + private String host; + @Value("${spring.redis.password}") + private String password; + @Value("${spring.redis.port}") + private int port; + @Value("${spring.redis.timeout}") + private int timeout; + @Value("${spring.redis.jedis.pool.max-idle}") + private int maxIdle; + @Value("${spring.redis.jedis.pool.max-wait}") + private long maxWaitMillis; + + @Bean + JedisConnectionFactory jedisConnectionFactory() { + lg.info("Create JedisConnectionFactory successful"); + JedisConnectionFactory factory = new JedisConnectionFactory(); + factory.setHostName(host); + factory.setPort(port); + factory.setTimeout(timeout); + factory.setPassword(password); + factory.setDatabase(database); + return factory; + } + @Bean + public JedisPool redisPoolFactory() { + lg.info("JedisPool init successful,host -> [{}];port -> [{}]", host, port); + JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); + jedisPoolConfig.setMaxIdle(maxIdle); + jedisPoolConfig.setMaxWaitMillis(maxWaitMillis); + + JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port, timeout, password,database); + return jedisPool; + } + } + +} diff --git a/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/config/UserUtils.java b/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/config/UserUtils.java new file mode 100644 index 0000000..3471f77 --- /dev/null +++ b/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/config/UserUtils.java @@ -0,0 +1,31 @@ +package cn.ljobin.bibi.config; + +import cn.stylefeng.roses.core.util.HttpContext; +import cn.stylefeng.roses.system.utils.AccountUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.servlet.http.HttpServletRequest; + +/** + * @program: IoT-Plat + * @description: 用户相关操作 + * @author: Mr.Liu + * @create: 2020-05-07 16:43 + **/ +@Component +public class UserUtils { + @Autowired + private AccountUtils accountUtils; + + /** + * 获得用户id,从token里面 + * @param request + * @return + */ + public Long getUid(HttpServletRequest request) { + String token = HttpContext.getTokenFromRequest(request); + //方法三 + return accountUtils.getAccount(token); + } +} diff --git a/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/listener/MonitorMessageListener.java b/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/listener/MonitorMessageListener.java new file mode 100644 index 0000000..c3b545c --- /dev/null +++ b/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/listener/MonitorMessageListener.java @@ -0,0 +1,47 @@ +package cn.ljobin.bibi.listener; + +import cn.ljobin.bibi.domain.monitor.MonitorMessage; +import cn.ljobin.bibi.enums.execption.MessageExceptionEnum; +import cn.ljobin.bibi.service.IEmailService; +import cn.stylefeng.roses.core.util.ToolUtil; +import cn.stylefeng.roses.kernel.model.exception.ServiceException; +import com.alibaba.fastjson.JSON; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import javax.jms.JMSException; +import javax.jms.Message; +import javax.jms.MessageListener; +import javax.jms.TextMessage; + +/** + * @program: Iot-Monitor + * @description: activeMq消费者 + * @author: Mr.Liu + * @create: 2020-06-02 14:51 + **/ +@Component +@Slf4j +public class MonitorMessageListener implements MessageListener { + @Autowired + private IEmailService iEmailService; + @Override + public void onMessage(Message message) { + if (message instanceof TextMessage) { + try { + String messageBody = ((TextMessage) message).getText(); + if (ToolUtil.isEmpty(messageBody)) { + throw new ServiceException(MessageExceptionEnum.MESSAGE_BODY_CANT_EMPTY); + } + MonitorMessage flowParam = JSON.parseObject(messageBody, MonitorMessage.class); + iEmailService.recodeMonitorMsg(flowParam); + log.info(flowParam.toString()); + } catch (JMSException ex) { + throw new ServiceException(MessageExceptionEnum.MESSAGE_QUEUE_ERROR); + } + } else { + throw new ServiceException(MessageExceptionEnum.MESSAGE_TYPE_ERROR); + } + } +} diff --git a/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/send/ActiveMqMessageSender.java b/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/send/ActiveMqMessageSender.java new file mode 100644 index 0000000..4731621 --- /dev/null +++ b/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/send/ActiveMqMessageSender.java @@ -0,0 +1,43 @@ +package cn.ljobin.bibi.send; + +import cn.ljobin.bibi.domain.monitor.MonitorMessage; +import cn.ljobin.bibi.enums.MessageQueueEnum; +import com.alibaba.fastjson.JSON; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.autoconfigure.jms.JmsProperties; +import org.springframework.jms.core.JmsTemplate; +import org.springframework.jms.core.MessageCreator; +import org.springframework.stereotype.Component; + +import javax.jms.JMSException; +import javax.jms.Message; +import javax.jms.Session; + +/** + * activemq实现的消息发送器 + * + * @author fengshuonan + * @date 2018-04-22 22:03 + */ +@Component +public class ActiveMqMessageSender { + + @Autowired + private JmsTemplate jmsTemplate; + + public void sendMessage(MonitorMessage reliableMessage) { + + jmsTemplate.setDefaultDestinationName(MessageQueueEnum.MAKE_MONITOR_MESSAGE.name()); + + //设置ack确认为client方式 + jmsTemplate.setSessionAcknowledgeMode(JmsProperties.AcknowledgeMode.CLIENT.getMode()); + + //发送消息 + jmsTemplate.send(new MessageCreator() { + @Override + public Message createMessage(Session session) throws JMSException { + return session.createTextMessage(JSON.toJSONString(reliableMessage)); + } + }); + } +} diff --git a/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/system/provider/MonitorDataProvider.java b/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/system/provider/MonitorDataProvider.java new file mode 100644 index 0000000..7c465c9 --- /dev/null +++ b/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/system/provider/MonitorDataProvider.java @@ -0,0 +1,24 @@ +package cn.ljobin.bibi.system.provider; + +import cn.ljobin.bibi.api.MonitorApi; +import cn.ljobin.bibi.domain.monitor.MonitorMessage; +import io.swagger.annotations.Api; +import lombok.extern.slf4j.Slf4j; +import org.springframework.web.bind.annotation.RestController; + +/** + * @program: IoT-SC + * @description: + * @author: Mr.Liu + * @create: 2020-04-11 15:28 + **/ +@RestController +@Slf4j +@Api("报警api") +public class MonitorDataProvider implements MonitorApi { + + @Override + public boolean callPolice(MonitorMessage monitorMessage) { + return false; + } +} diff --git a/saltice-monitor-admin/src/main/resources/application.ymll b/saltice-monitor-admin/src/main/resources/application.ymll new file mode 100644 index 0000000..cc8e0dc --- /dev/null +++ b/saltice-monitor-admin/src/main/resources/application.ymll @@ -0,0 +1,192 @@ +server: + port: 5054 +jwt: + secret: u47REBDLrxfd79w2 + #24*7*60*60 + expiration: 604800 +#Swagger配置 +swagger: + #Swagger生成文档扫描包的范围 + base-package: cn.ljobin.bibi.system.provider + +## kafka日志收集配置 +saltice: + #生产者配置,开启 + producer: + log: + kafka: true + ##线程数 + nTreads: 10 + ## + #消费者配置 , 开启 + consumer: + log: + kafka: false + +kafka: + consumer: + enable-auto-commit: true + group-id: MonitorGroup + auto-commit-interval: 1000 + auto-offset-reset: latest + bootstrap-servers: "10.112.26.129:9092" + key-deserializer: org.apache.kafka.common.serialization.StringDeserializer + value-deserializer: org.apache.kafka.common.serialization.ByteArrayDeserializer + concurrency: 3 +mybatis-plus: + ##typeAliasesPackage: cn.ljobin.bibi.domain.pot + ##下面必须使用classpath*,以为classpath*:会扫描使用的JAR包及类路径下出现的同名文件 + ##而classpath:只会在第一个加载的类路径下查找 + ## 特别是多模块的,一定要注意,使用classpath*: + mapper-locations: classpath*:cn/ljobin/bibi/**/*.xml + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + #刷新mapper,调试神器 + refresh: true +spring: + kafka: + producer: + bootstrap-servers: 10.112.26.129:9092 + batch-size: 16384 + retries: 0 + buffer-memory: 33554432 + key-serializer: org.apache.kafka.common.serialization.StringSerializer + value-serializer: org.apache.kafka.common.serialization.ByteArraySerializer + application: + name: saltice-monitor + datasource: + druid: + stat-view-servlet: + loginUsername: admin + loginPassword: 123456 + dynamic: + primary: master + druid: #以下是全局默认值,可以全局更改 + minIdle: 5 + maxActive: 20 + filters: stat # 注意这个值和druid原生不一致,默认启动了stat,wall [wall,这个会影响多条sql一起执行] + stat: + merge-sql: true + log-slow-sql: true + datasource: + master: + username: root + password: root + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://47.103.1.210:3306/saltice-monitor?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=UTC&allowMultiQueries=true + slave1: + username: root + password: root + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://127.0.0.1:3306/saltice_pot?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=UTC&allowMultiQueries=true + initial-size: 10 # 以下是连接池配置 + max-active: 100 + min-idle: 10 + max-wait: 60000 + pool-prepared-statements: true + max-pool-prepared-statement-per-connection-size: 20 + time-between-eviction-runs-millis: 60000 + min-evictable-idle-time-millis: 300000 + #validation-query: SELECT 1 + test-while-idle: true + test-on-borrow: false + test-on-return: false + stat-view-servlet: + enabled: true + url-pattern: /druid/* + login-username: druid + login-password: 123456 + filter: + stat: + log-slow-sql: true + slow-sql-millis: 1000 + merge-sql: false + wall: + config: + multi-statement-allow: true + #type: com.alibaba.druid.pool.DruidDataSource + #datasource: + #url: jdbc:mysql://127.0.0.1:3306/iotdata?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=UTC + #username: root + #password: root + cloud: + nacos: + discovery: + # 服务注册中心 + server-addr: 47.103.1.210:8848 + # 当由eureka切换到nacos时,可能会出现两个注册中心,影响项目运行,可以通过下面解决,或者暴力输出eureka的依赖 + # 下面是当出现了两个注册中心:eureka和nacos,这样是直接用naoso的,直接忽略eureka + # autoconfigure: + # exclude: org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration + redis: + isOpen: true + ###redis数据库索引(默认为0) + database: 5 + host: 47.103.1.210 + port: 6379 + password: ltbo99lyb + jedis: + pool: + ###连接池最大连接数(负数代表没有限制) + max-active: 8 + ###连接池最大阻塞等待时间(负数代表没有限制) + max-wait: -1 + ###连接池中的最大空间连接 + max-idle: 5 + ###连接池中的最小空闲连接 + min-idle: 0 + ###连接超时时间(毫秒) + timeout: 10000 + +feign: + hystrix: + enabled: true + # sentinel: + # ##feign开启sentinel + # enabled: true + #开启Feign请求压缩 + compression: + request: + enabled: true + mime-types: text/xml,application/xml,application/json + min-request-size: 2048 + response: + enabled: true + #feign 使用 okhttp + httpclient: + enabled: false + max-connections: 200 # 默认值 + max-connections-per-route: 50 # 默认值 + okhttp: + enabled: true + max-connections: 200 # 默认值 + max-connections-per-route: 50 # 默认值 + client: + config: + default: + connectTimeout: 3000 #创建连接的超时时间 单位:毫秒 + readTimeout: 3000 #处理请求的超时时间 单位:毫秒 + errorDecoder: cn.stylefeng.roses.core.feign.RosesFeignErrorDecoder +hystrix: + command: + default: + execution: + isolation: + strategy: SEMAPHORE + thread: + timeoutInMilliseconds: 4000 + semaphore: + maxConcurrentRequests: 500 +###设置feign客户端超时时间 +ribbon: + ###指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间。 + ReadTimeout: 3000 + ###指的是建立连接后从服务器读取到可用资源所用的时间。 + ConnectTimeout: 3000 + +management: + #端点检查(健康检查) + endpoints: + web: + exposure: + include: "*" \ No newline at end of file diff --git a/saltice-monitor-admin/src/main/resources/banner.txt b/saltice-monitor-admin/src/main/resources/banner.txt new file mode 100644 index 0000000..cff4b0c --- /dev/null +++ b/saltice-monitor-admin/src/main/resources/banner.txt @@ -0,0 +1,6 @@ + .__ __ .__ .__ __ + ___________ | |_/ |_|__| ____ ____ _____ ____ ____ |__|/ |_ ___________ + / ___/\__ \ | |\ __\ |/ ___\/ __ \ ______ / \ / _ \ / \| \ __\/ _ \_ __ \ + \___ \ / __ \| |_| | | \ \__\ ___/ /_____/ | Y Y ( <_> ) | \ || | ( <_> ) | \/ +/____ >(____ /____/__| |__|\___ >___ > |__|_| /\____/|___| /__||__| \____/|__| + \/ \/ \/ \/ \/ \/ \ No newline at end of file diff --git a/saltice-monitor-admin/src/main/resources/bootstrap.properties b/saltice-monitor-admin/src/main/resources/bootstrap.properties new file mode 100644 index 0000000..76ae977 --- /dev/null +++ b/saltice-monitor-admin/src/main/resources/bootstrap.properties @@ -0,0 +1,37 @@ +spring.application.name=saltice-monitor +#spring.cloud.nacos.config.server-addr=192.168.1.2:8848 +spring.cloud.nacos.config.server-addr=47.103.1.210:8848 +spring.cloud.nacos.config.file-extension=yml +##໷õģͨļк-localж,ûǶδĬϵģû -localroses-gateway-local-config.yml +##ideaʱѡĻͨ RUN --> Edit Configuration --> Active profiles Ϊ local +##Ӧʱͨ java -jar 1.0.0-SNAPSHOT.jar --spring.profiles.active=local +#spring.profiles.active=local +spring.main.allow-bean-definition-overriding=true +#nacosֻӡ־ +logging.level.com.alibaba.nacos.client.naming=error +#Dzmybatis-plusԼɵidΪݿidֶεֵҪidֶ͸Ϊlong, ܱ֤㹻λɵid +# ָʾݿidֶǵģÿԼ +#ʵ @TableId(value = "id",type = IdType.AUTO) ҲԣͲҪ +#typeͽ + # AUTO : AUTO(0, ݿID), + # INPUT : INPUT(1, ûID), + # ID_WORKER : ID_WORKER(2, ȫΨһID), + # UUID : UUID(3, ȫΨһID), + # NONE : NONE(4, Ϊδ͡), + # ID_WORKER_STR : ID_WORKER_STR(5, ַȫΨһID); +#mybatis-plus.global-config.db-config.id-type=auto + +#java -Dfile.encoding=utf-8 -jar xxx.jar + +######################## activemq\u9ED8\u8BA4\u914D\u7F6E ######################## +spring.activemq.broker-url=tcp://localhost:61616 +## dockerеĵַ +# spring.activemq.broker-url=tcp://10.112.26.129:61616 +#http://localhost:8161(˿) +#tcp://127.0.0.1:61616(˿) +spring.activemq.in-memory=true +spring.activemq.pool.enabled=false +spring.activemq.pool.idle-timeout=30000 +spring.activemq.user=admin +spring.activemq.password=admin +spring.jms.listener.acknowledge-mode=client \ No newline at end of file diff --git a/saltice-monitor-admin/src/main/resources/pod-scale-alarm.html b/saltice-monitor-admin/src/main/resources/pod-scale-alarm.html new file mode 100644 index 0000000..fd85eb9 --- /dev/null +++ b/saltice-monitor-admin/src/main/resources/pod-scale-alarm.html @@ -0,0 +1,43 @@ + +
+
+ Confidential - Scale Alarm Use Only +
+
+ +
物联网设备监控{0}通知
+
+
+
+

异常内容:

+

{2}

+
+
{3}
+
+ + + + {4} + + + + {5} + +
+
+
+ diff --git a/saltice-monitor-admin/src/main/resources/success-alarm.png b/saltice-monitor-admin/src/main/resources/success-alarm.png new file mode 100644 index 0000000000000000000000000000000000000000..7ac3c7a51a10eba3dd7d38c539d4dbfcf48ff90f GIT binary patch literal 21808 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 literal 0 HcmV?d00001 diff --git a/saltice-monitor-admin/target/classes/META-INF/saltice-monitor-admin.kotlin_module b/saltice-monitor-admin/target/classes/META-INF/saltice-monitor-admin.kotlin_module new file mode 100644 index 0000000000000000000000000000000000000000..2983af70661ad375cc499ebc4da5a68ca46c532e GIT binary patch literal 16 RcmZQzU|?ooU|@t|egFVe02KfL literal 0 HcmV?d00001 diff --git a/saltice-monitor-admin/target/classes/application.ymll b/saltice-monitor-admin/target/classes/application.ymll new file mode 100644 index 0000000..cc8e0dc --- /dev/null +++ b/saltice-monitor-admin/target/classes/application.ymll @@ -0,0 +1,192 @@ +server: + port: 5054 +jwt: + secret: u47REBDLrxfd79w2 + #24*7*60*60 + expiration: 604800 +#Swagger配置 +swagger: + #Swagger生成文档扫描包的范围 + base-package: cn.ljobin.bibi.system.provider + +## kafka日志收集配置 +saltice: + #生产者配置,开启 + producer: + log: + kafka: true + ##线程数 + nTreads: 10 + ## + #消费者配置 , 开启 + consumer: + log: + kafka: false + +kafka: + consumer: + enable-auto-commit: true + group-id: MonitorGroup + auto-commit-interval: 1000 + auto-offset-reset: latest + bootstrap-servers: "10.112.26.129:9092" + key-deserializer: org.apache.kafka.common.serialization.StringDeserializer + value-deserializer: org.apache.kafka.common.serialization.ByteArrayDeserializer + concurrency: 3 +mybatis-plus: + ##typeAliasesPackage: cn.ljobin.bibi.domain.pot + ##下面必须使用classpath*,以为classpath*:会扫描使用的JAR包及类路径下出现的同名文件 + ##而classpath:只会在第一个加载的类路径下查找 + ## 特别是多模块的,一定要注意,使用classpath*: + mapper-locations: classpath*:cn/ljobin/bibi/**/*.xml + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + #刷新mapper,调试神器 + refresh: true +spring: + kafka: + producer: + bootstrap-servers: 10.112.26.129:9092 + batch-size: 16384 + retries: 0 + buffer-memory: 33554432 + key-serializer: org.apache.kafka.common.serialization.StringSerializer + value-serializer: org.apache.kafka.common.serialization.ByteArraySerializer + application: + name: saltice-monitor + datasource: + druid: + stat-view-servlet: + loginUsername: admin + loginPassword: 123456 + dynamic: + primary: master + druid: #以下是全局默认值,可以全局更改 + minIdle: 5 + maxActive: 20 + filters: stat # 注意这个值和druid原生不一致,默认启动了stat,wall [wall,这个会影响多条sql一起执行] + stat: + merge-sql: true + log-slow-sql: true + datasource: + master: + username: root + password: root + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://47.103.1.210:3306/saltice-monitor?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=UTC&allowMultiQueries=true + slave1: + username: root + password: root + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://127.0.0.1:3306/saltice_pot?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=UTC&allowMultiQueries=true + initial-size: 10 # 以下是连接池配置 + max-active: 100 + min-idle: 10 + max-wait: 60000 + pool-prepared-statements: true + max-pool-prepared-statement-per-connection-size: 20 + time-between-eviction-runs-millis: 60000 + min-evictable-idle-time-millis: 300000 + #validation-query: SELECT 1 + test-while-idle: true + test-on-borrow: false + test-on-return: false + stat-view-servlet: + enabled: true + url-pattern: /druid/* + login-username: druid + login-password: 123456 + filter: + stat: + log-slow-sql: true + slow-sql-millis: 1000 + merge-sql: false + wall: + config: + multi-statement-allow: true + #type: com.alibaba.druid.pool.DruidDataSource + #datasource: + #url: jdbc:mysql://127.0.0.1:3306/iotdata?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&serverTimezone=UTC + #username: root + #password: root + cloud: + nacos: + discovery: + # 服务注册中心 + server-addr: 47.103.1.210:8848 + # 当由eureka切换到nacos时,可能会出现两个注册中心,影响项目运行,可以通过下面解决,或者暴力输出eureka的依赖 + # 下面是当出现了两个注册中心:eureka和nacos,这样是直接用naoso的,直接忽略eureka + # autoconfigure: + # exclude: org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration + redis: + isOpen: true + ###redis数据库索引(默认为0) + database: 5 + host: 47.103.1.210 + port: 6379 + password: ltbo99lyb + jedis: + pool: + ###连接池最大连接数(负数代表没有限制) + max-active: 8 + ###连接池最大阻塞等待时间(负数代表没有限制) + max-wait: -1 + ###连接池中的最大空间连接 + max-idle: 5 + ###连接池中的最小空闲连接 + min-idle: 0 + ###连接超时时间(毫秒) + timeout: 10000 + +feign: + hystrix: + enabled: true + # sentinel: + # ##feign开启sentinel + # enabled: true + #开启Feign请求压缩 + compression: + request: + enabled: true + mime-types: text/xml,application/xml,application/json + min-request-size: 2048 + response: + enabled: true + #feign 使用 okhttp + httpclient: + enabled: false + max-connections: 200 # 默认值 + max-connections-per-route: 50 # 默认值 + okhttp: + enabled: true + max-connections: 200 # 默认值 + max-connections-per-route: 50 # 默认值 + client: + config: + default: + connectTimeout: 3000 #创建连接的超时时间 单位:毫秒 + readTimeout: 3000 #处理请求的超时时间 单位:毫秒 + errorDecoder: cn.stylefeng.roses.core.feign.RosesFeignErrorDecoder +hystrix: + command: + default: + execution: + isolation: + strategy: SEMAPHORE + thread: + timeoutInMilliseconds: 4000 + semaphore: + maxConcurrentRequests: 500 +###设置feign客户端超时时间 +ribbon: + ###指的是建立连接所用的时间,适用于网络状况正常的情况下,两端连接所用的时间。 + ReadTimeout: 3000 + ###指的是建立连接后从服务器读取到可用资源所用的时间。 + ConnectTimeout: 3000 + +management: + #端点检查(健康检查) + endpoints: + web: + exposure: + include: "*" \ No newline at end of file diff --git a/saltice-monitor-admin/target/classes/banner.txt b/saltice-monitor-admin/target/classes/banner.txt new file mode 100644 index 0000000..cff4b0c --- /dev/null +++ b/saltice-monitor-admin/target/classes/banner.txt @@ -0,0 +1,6 @@ + .__ __ .__ .__ __ + ___________ | |_/ |_|__| ____ ____ _____ ____ ____ |__|/ |_ ___________ + / ___/\__ \ | |\ __\ |/ ___\/ __ \ ______ / \ / _ \ / \| \ __\/ _ \_ __ \ + \___ \ / __ \| |_| | | \ \__\ ___/ /_____/ | Y Y ( <_> ) | \ || | ( <_> ) | \/ +/____ >(____ /____/__| |__|\___ >___ > |__|_| /\____/|___| /__||__| \____/|__| + \/ \/ \/ \/ \/ \/ \ No newline at end of file diff --git a/saltice-monitor-admin/target/classes/bootstrap.properties b/saltice-monitor-admin/target/classes/bootstrap.properties new file mode 100644 index 0000000..cb4afa5 --- /dev/null +++ b/saltice-monitor-admin/target/classes/bootstrap.properties @@ -0,0 +1,37 @@ +spring.application.name=saltice-monitor +#spring.cloud.nacos.config.server-addr=192.168.1.2:8848 +spring.cloud.nacos.config.server-addr=47.103.1.210:8848 +spring.cloud.nacos.config.file-extension=yml +##�໷�������õģ�ͨ���ļ������к����-local���ж�,û�������Ƕδ�������Ĭ�ϵģ�����û�� -local��roses-gateway-local-config.yml +##idea����ʱѡ��Ļ�����ͨ�� RUN --> Edit Configuration --> Active profiles ����Ϊ local +##Ӧ������ʱ��ͨ�� java -jar 1.0.0-SNAPSHOT.jar --spring.profiles.active=local +#spring.profiles.active=local +spring.main.allow-bean-definition-overriding=true +#����nacos���ֻ��ӡ������־ +logging.level.com.alibaba.nacos.client.naming=error +#�����Dz�����mybatis-plus�Լ����ɵ�id��Ϊ���ݿ���id�ֶε�ֵ������Ҫ��id�ֶ����͸�Ϊlong, �������ܱ�֤���㹻λ���������ɵ�id�� +# ������ָʾ���ݿ�id�ֶ��ǵ����ģ����ÿ���Լ����� +#������ʵ������������������ @TableId(value = "id",type = IdType.AUTO) Ҳ���ԣ��Ͳ�Ҫ������� +#����type���ͽ��� + # AUTO : AUTO(0, �����ݿ�ID������), + # INPUT : INPUT(1, ���û�����ID��), + # ID_WORKER : ID_WORKER(2, ��ȫ��ΨһID��), + # UUID : UUID(3, ��ȫ��ΨһID��), + # NONE : NONE(4, ��������Ϊδ�����������͡�), + # ID_WORKER_STR : ID_WORKER_STR(5, ���ַ���ȫ��ΨһID��); +#mybatis-plus.global-config.db-config.id-type=auto + +#java -Dfile.encoding=utf-8 -jar xxx.jar + +######################## activemq\u9ED8\u8BA4\u914D\u7F6E ######################## +spring.activemq.broker-url=tcp://localhost:61616 +## �������������docker�еĵ�ַ +# spring.activemq.broker-url=tcp://10.112.26.129:61616 +#http://localhost:8161(����˿�) +#tcp://127.0.0.1:61616(����˿�) +spring.activemq.in-memory=true +spring.activemq.pool.enabled=false +spring.activemq.pool.idle-timeout=30000 +spring.activemq.user=admin +spring.activemq.password=admin +spring.jms.listener.acknowledge-mode=client \ No newline at end of file diff --git a/saltice-monitor-admin/target/classes/cn/ljobin/bibi/BibiApplication.class b/saltice-monitor-admin/target/classes/cn/ljobin/bibi/BibiApplication.class new file mode 100644 index 0000000000000000000000000000000000000000..7a01761ffc4bcb098e7dd43f7c4a854e62b091c9 GIT binary patch literal 2745 zcmb7G+jbLG82%=-O`49S4W$Sw0*bZ`X6T86tw;}4iz!rsRjj8ylbv+h$xJ&l=|R2M z#T9SBt#>ZLRjRDz1Na`uTe$r8OiI%bM3a^IXYc(VzyGlF=ik5o0bm5*r|~jolDL{i z0y8PhD*8bRA1XT6j%)Zxz2(zBzBF=>VNhMZrYmq8%PvJf$k zYdC(h>V|ejF4}=@I&#u=y-5ug)6HqylSM7OP5AXT_sM&#ytMA=fBg^eTc`sPP%|2l%OMv}wpS3k1C$ z-9pW-LN{Hqw`6ffI%2z(mBvrUE<;wvH1zf@;zsR_%eVVW*@Ro{}cwu-x_0hOGxrr~naU`)>o4Z+G_BBKOKqYxF; z6b}wU+Z9;Cof3gu5Y{SdlrD5yZZ0n6oGN8zj~hX_?Z}dJ%Q@c*6jxGiSx!}@`&!=e zDu!@uQ<%ai`c=DFt6!suBQxrJMuZ}cPSx*TnMtDDydaxr=c=o!sg@%J`188Qa=dEM z@YbYTl6KiOV!>JUKJD1j4Fif!HH9)3WlqRt6z#zBHY7VR)-bcTjaq z=Ng95zqSOMcW`J}hk&V}dvJJoZ0yp|h0#k_*4J}1tiyttL{W!CNkYv8uxX zk6m~yTM-ob6=Yk3spB|KB(bi;2TSE-gF6kSoJ6RjiVYpF`<6C^k_Sx^a8|I3%IL|r)8OF(&D{45}*Sske7iZM! zoLi#r=NsH>KufySN?`1<-`ZYd$+upepPb8U7<$3*c~+KbKU`-$RyW%B|MjTh(pr|G zij&iKj=9^1V~*oJx(SjS!l}v|B{iYu`s>iBanPM4-HF}kt%qxmLD^9(3y!y~p}zsE z=U;PCF5KeNIX(EI7#jw)vOCc9DpbQQ9%prd;3B1Xt5(XL0@~OuRcnfcHrJ;|)iAeYd z(ggR$9wBl2Ar9rUnU)>2W;1O&NM`RNwS)GUq<7J=13jC0X$PGHzv6Iq2VMK-&LBlK zeSG$#69ec$mNA^;&O6BQdx3r`S9)V}HCIyH?I(8}ZwG0XzjN0p)Xt;xH7{pLRWv=B z?txuo9^lA*z90P!y$S5Q&`J1!VM>nR2uAB7@4+C3qBFvzaRK@{@)W_-k#gdj>E6Y$ z2k22cwK^1)AEVq$FbtKLQKCD>)x{+w0$d94F2scQf&v1Hv{1PCLXsLIk7A51C?zC*BDZB*wzhlCeF*+5H3kw* z`~m(bq#vgft74go7IY4P}(f0f-D!Ve%ddJZgf~Ml{6Mi4S77qDVFh9h5(PH?M+*Hp=^fig&#jd8~@=iY6wsjMQNw|%E5w^h)au{K062Sf_2{w*#kV#|Cd9I3Q{ehdgaZZ}r{!nc7X zEXQCPSix-rcW~F>Q@U@!z$F8#cp#8$c?qof7qcVK9~5O)EnPNu3l$EBz_2Sl=6-Qf z1g8HmNgVaLmcUZ`oTSF&gp6irVT9cJv&>;`cjxK;?%rW8lh3a|$q3B14t@Lk>{V2= z&BRG0!!fJppZ9{t%F{s>uq9nj>5%%J(08Ps{sq_Ic?Qlcvn_DJxz0;Ed4L&yN4@;I z1b-ybO?{cWF6ut&2sL|5Imn$!EvP#e&LQ51$3v8XGcbf!5AsGa@g~(UD6no*|n0fX*{?ogtQ5_=xT^^rYU=DMC09qLcC}x^az}O%QAn*D)0a ony!O20udJD^c3_Rr}qRACV97$KO)tSlBT$h5F(J%P3sKs9UB>-g8%>k literal 0 HcmV?d00001 diff --git a/saltice-monitor-admin/target/classes/cn/ljobin/bibi/config/RedisConfig$1.class b/saltice-monitor-admin/target/classes/cn/ljobin/bibi/config/RedisConfig$1.class new file mode 100644 index 0000000000000000000000000000000000000000..faf69314be0ded286e7216928ba4dc074ce572f8 GIT binary patch literal 2130 zcmb_e?QRoC6g}fz$Bwfm&Q}YqTO8t~j#INqNlU3A&>GWLG9ikiNKw=u>-EImWV4IL z>j0`iJV*N!{6Gan`v83z-k|E8@kch;A(a|i-uc*j&pr3dy(9nq&zrvhtfD*$179W( zLm`1YuEt@GVHqoNd=o~rV)9W#O8^aBTk)Y|cvdau}727l2eZS^-X3eQN zrtN!sPQ%>fb*EKQ^CFqwbUY_mV_3-j2m8fs2EF9hIm39x@%VcCu*SufRdZ=)vf|s8 zyKMDMlDAT8XpibwF=4n7uE%O1yM0Jw5AT885Z~S5ruiYJAo zI#!s$$Fw4Qg~o7^=23)=6BZd^8m?sgVKb6=)M=IEyRY$bx9g6w@;D$jG0F?P!JSj($n6 z?nIZWuMyV59^XeuC1RqLm#k$ml78JSIV& zoR1*$Sm+9}PMT@N#*l&}=p@Dl1$c@vJX3+C!erYQz~~ELbOn$nJ{svKtKkdUh#-eW T8g=@kutdco3xs-9Gi# literal 0 HcmV?d00001 diff --git a/saltice-monitor-admin/target/classes/cn/ljobin/bibi/config/RedisConfig$DataJedisProperties.class b/saltice-monitor-admin/target/classes/cn/ljobin/bibi/config/RedisConfig$DataJedisProperties.class new file mode 100644 index 0000000000000000000000000000000000000000..a1dd2c0cb713bca1bde51adfc81810cae46dcb83 GIT binary patch literal 2859 zcmb_eZF3V<6n<`7nvgCuly|TYpkUh4ZiOOZD++}|YFa8_5fOEhY|<^8-MG8qMMUtU zGyDS;-#+*fI>bi{X73 zVkQ$oHiperGdZD55zGr!h+sa3ovG-smQ%=kM$x?Cde`)fX*j-~H?o22-O`Ok1%1x2%jTHEn(IO+ zZ0oyS)gAWCoaGPK9p6#tn0Ng^p(njyTsL&va0>c`K-^G$(=s&?rAoA9_&x#Tnhn=E zVz}gbG`!q~oRS-nNZm38wk~s0V~9-AxS7h?#J_Ku%t9DN$#v~v$_!Z)qWn72mkcYI zwrtyC($v(dnl~s;&CX!n^7}?8p3XYDz2IgnN6%OpOV7Ga-YV$l#oF=Kic4c@Wj-OU>IoZ(rruN`&>9EFXiSRYg3dDe4F zrWaTyPqmcenBIiVJCN!4 z`&(9^6p|j+lw_)=rH5AZ5P6d=I*!yTR^jabXLP8gDS`^jn?Yl5oMh8T^dah5me695 zdl+Ob7TYqNz;6shB&pUN#wHs^#>!CGzp_qMjGAi~H5GQRtV8M81-I;F%}Gm&B;HVd z!_ub;r(1@baos>JB8<7TSTuSSMA-|+$x<FrV*Hl*4LNt z%h{~y`}s0eN*X?Zr!d)SIQ{q1(6Ao|H2Cl|3?QK)Kv}~B$Co&z|0wd6gJCp15-R&edm6KaC-SQZtn<` z5xk(`W878fT~SkVdr#rWs#B#^kMiP|hVr@00((-SJt^~K&#DGlLPmH~eIp|rY@6y0 zZ0AQ8^t4+jn4WY&cykSB995Q+XBlixHopksxyv_$v&`!ZhXz}jyV-EgcO+B7j`84P zeYA`0?BZJ?JDEh)7jMH-Xerh!;m}(6T%F5v5YbwL|C$5=A8P@tL9m*ovF4LHw(0tl z5+@pN8sCeKf{y8N0pI{gNjzrNWwG3V;cU@ff^4sU5j|?_LGvj$O*ayvwelplJ&5S`Z*h9^X zAu?Fe%?zCk7I-t`P&_UJgHYS~9l?tfJWA>~*EX)Pfx+LQ1|FjASMJ*I5`Q~s2KW@m z_`9Vlg_rRPca#sUDe41j6b|2ulXw-cQB2I<=PG8$AECXc<1yB>;R!k~KSU%wIPe>y z6|9vtRza7nS_SK5U0*@Btnmsq4E{p>Dv-U*Ht;!}et{l5zz%%LY=6b1eT_r-hM>M} z06AU**+c#boUG+Sf|;Ndg;O|PL-~MqB^_x&*+aikez8Z`_!yfy2zWCAZwUc!tzeq~ z+g`zrC)jye=unue#&12p_(ME5eQ*i&4ki%zj(;D&XU+V;qWBR*_z6?^IYgVN`mUkv pg^o#_A-*Z1JBt*5_fWr%yPfBfkJlGZ)7+2qi&3YS|A)tbe*jV10N(%r literal 0 HcmV?d00001 diff --git a/saltice-monitor-admin/target/classes/cn/ljobin/bibi/config/RedisConfig.class b/saltice-monitor-admin/target/classes/cn/ljobin/bibi/config/RedisConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..8c875cc56607ffe90d0cde706008905f08c8ef1d GIT binary patch literal 6729 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 literal 0 HcmV?d00001 diff --git a/saltice-monitor-admin/target/classes/cn/ljobin/bibi/listener/MonitorMessageListener.class b/saltice-monitor-admin/target/classes/cn/ljobin/bibi/listener/MonitorMessageListener.class new file mode 100644 index 0000000000000000000000000000000000000000..a89da40a580af0baa52d90188e638eb5cb0d683e GIT binary patch literal 2281 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 literal 0 HcmV?d00001 diff --git a/saltice-monitor-admin/target/classes/cn/ljobin/bibi/system/provider/MonitorDataProvider.class b/saltice-monitor-admin/target/classes/cn/ljobin/bibi/system/provider/MonitorDataProvider.class new file mode 100644 index 0000000000000000000000000000000000000000..6289c649470306b55dceaaa892646fda6f9bb192 GIT binary patch literal 963 zcmb7D%We}f6g|#^JP1t*kUnUE0EL!CEl`AzQXy4AT_sQzlm$D_#GN`g+;gAvB8g+$iEEZWWM1Er;7V z++j#-6ERd;#zx%f!+MXmOcY7mV7RcOV&$I_W^=2GgNX8e(I4E0tRbKNt6ig};{#odYXvd;(Bj8s=z-Zm7&*k{6v{plTrE)t>M zH(G_n|8R4jq-*+u2>TP?Q;xQDPDHY?^_pQ}`Zm2|*ghWz!(vL*#}?1KG7kC z63N5?sNfRG(gc77l*yu^aG6kv^JB77q*Lh+iJbAQjy +
+
+ Confidential - Scale Alarm Use Only +
+
+ +
物联网设备监控{0}通知
+
+
+
+

Hi,

+

{2}

+
+
{3}
+
+ + + + {4} + + + + {5} + +
+
+
+ diff --git a/saltice-monitor-admin/target/classes/success-alarm.png b/saltice-monitor-admin/target/classes/success-alarm.png new file mode 100644 index 0000000000000000000000000000000000000000..7ac3c7a51a10eba3dd7d38c539d4dbfcf48ff90f GIT binary patch literal 21808 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 literal 0 HcmV?d00001 diff --git a/saltice-monitor-api/pom.xml b/saltice-monitor-api/pom.xml new file mode 100644 index 0000000..e56cd93 --- /dev/null +++ b/saltice-monitor-api/pom.xml @@ -0,0 +1,61 @@ + + + + 4.0.0 + + cn.ljobin.bibi + saltice-monitor-api + 1.0-SNAPSHOT + + + cn.ljobin.bibi + IoT-monitor + 1.0-SNAPSHOT + ../pom.xml + + + + UTF-8 + 1.8 + 1.8 + + + + + cn.stylefeng.roses + kernel-model + + + cn.stylefeng.roses + kernel-core + provided + + + org.springframework + spring-web + provided + + + javax.servlet + javax.servlet-api + provided + + + + + roses-message-api + + + org.apache.maven.plugins + maven-resources-plugin + + + @ + + false + + + + + diff --git a/saltice-monitor-api/src/main/java/cn/ljobin/bibi/api/MonitorApi.java b/saltice-monitor-api/src/main/java/cn/ljobin/bibi/api/MonitorApi.java new file mode 100644 index 0000000..13035fc --- /dev/null +++ b/saltice-monitor-api/src/main/java/cn/ljobin/bibi/api/MonitorApi.java @@ -0,0 +1,21 @@ +package cn.ljobin.bibi.api; + +import cn.ljobin.bibi.domain.monitor.MonitorMessage; +import org.springframework.web.bind.annotation.*; + +/** + * @program: IoT-Plat + * @description: + * @author: Mr.Liu + * @create: 2020-04-11 15:26 + **/ +@RequestMapping("/monitor") +public interface MonitorApi { + /** + * 报警 + * @param monitorMessage 报警消息 + * @return 成功与否 + */ + @GetMapping("/callPolice") + public boolean callPolice(MonitorMessage monitorMessage); +} diff --git a/saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/monitor/MonitorEmail.java b/saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/monitor/MonitorEmail.java new file mode 100644 index 0000000..a70baf7 --- /dev/null +++ b/saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/monitor/MonitorEmail.java @@ -0,0 +1,53 @@ +package cn.ljobin.bibi.domain.monitor; + +import cn.ljobin.bibi.domain.monitor.enums.LinkInfoType; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.ToString; + +import java.util.Date; + +/** + * @program: Iot-Monitor + * @description: email类 + * @author: Mr.Liu + * @create: 2020-06-02 10:50 + **/ +@Data +@ToString +@TableName("emails") +public class MonitorEmail { + /** + * id + * */ + @TableId(value = "id",type = IdType.AUTO) + private Long id; + /** + * 联系信息 + * **/ + @TableField("linkInfo") + private String linkInfo; + /** + * 联系信息类型 枚举 + * **/ + @TableField(exist = false) + private LinkInfoType linkInfoType; + /** + * 联系信息类型 + */ + @TableField("type") + private Integer type; + /** + * 消息体 + * **/ + @TableField("body") + private String body; + /** + * 发送时间 + * **/ + @TableField("pushTime") + private Date pushTime; +} diff --git a/saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/monitor/MonitorEmailRepush.java b/saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/monitor/MonitorEmailRepush.java new file mode 100644 index 0000000..f62bc94 --- /dev/null +++ b/saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/monitor/MonitorEmailRepush.java @@ -0,0 +1,63 @@ +package cn.ljobin.bibi.domain.monitor; + +import cn.ljobin.bibi.domain.monitor.enums.LinkInfoType; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.ToString; + +import java.util.Date; + +/** + * @program: Iot-Monitor + * @description: 发送失败的进行重试 + * @author: Mr.Liu + * @create: 2020-06-02 11:46 + **/ +@Data +@ToString +@TableName("emails_repush") +public class MonitorEmailRepush { + /** + * id + * */ + @TableId(value = "id",type = IdType.AUTO) + private Long id; + /** + * 联系信息 + * **/ + @TableField("linkInfo") + private String linkInfo; + /** + * 联系信息类型 枚举 + * **/ + @TableField(exist = false) + private LinkInfoType linkInfoType; + /** + * 联系信息类型 + */ + @TableField("type") + private Integer type; + /** + * 消息体 + **/ + @TableField("body") + private String body; + /** + * 上次发送时间 + * **/ + @TableField("oldPushTime") + private Date oldPushTime; + /** + * 重试次数 + */ + @TableField("num") + private Integer num; + /** + * 是否死亡 0-未 1,已死 + */ + @TableField("already_dead") + private String alreadyDead; +} diff --git a/saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/monitor/MonitorMessage.java b/saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/monitor/MonitorMessage.java new file mode 100644 index 0000000..0eba25e --- /dev/null +++ b/saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/monitor/MonitorMessage.java @@ -0,0 +1,58 @@ +package cn.ljobin.bibi.domain.monitor; + +import cn.ljobin.bibi.domain.monitor.enums.LinkInfoType; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; +import lombok.Getter; +import lombok.ToString; + +import java.util.Date; + +/** + * @program: Iot-Monitor + * @description: 报警消息实体 + * @author: Mr.Liu + * @create: 2020-06-02 10:31 + **/ +@Data +@ToString +@TableName("monitor") +public class MonitorMessage { + /**消息id**/ + @TableId(value = "id",type = IdType.AUTO) + private Long id; + /** + * 客户端id + */ + @TableField("clientId") + private String clientId; + /** + * 联系信息 + */ + @TableField("linkInfo") + private String linkInfo; + /** + * 联系信息类型 枚举 + * **/ + @TableField(exist = false) + private LinkInfoType linkInfoType; + /** + * 联系信息类型 + */ + @TableField("type") + private Integer type; + /** + * 消息内容 + * utf-8 + */ + @TableField("ploy") + private String ploy; + /** + * 插入的时间 + * **/ + @TableField("insertTime") + private Date insertTime; +} diff --git a/saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/monitor/enums/LinkInfoType.java b/saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/monitor/enums/LinkInfoType.java new file mode 100644 index 0000000..251f5fd --- /dev/null +++ b/saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/monitor/enums/LinkInfoType.java @@ -0,0 +1,33 @@ +package cn.ljobin.bibi.domain.monitor.enums; + +/** + * @program: Iot-Monitor + * @description: 联系信息类型 + * @author: Mr.Liu + * @create: 2020-06-02 10:36 + **/ +public enum LinkInfoType { + PHONE(1,"phone"), + EMAIL(2,"email"); + /** + * 类型id + */ + private int id; + /** + * 类型名称 + */ + private String type; + private LinkInfoType(int id,String type){ + this.id=id; + this.type=type; + } + + public int getId() { + return id; + } + + + public String getType() { + return type; + } +} diff --git a/saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/pot/TbIoterminal.java b/saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/pot/TbIoterminal.java new file mode 100644 index 0000000..314b914 --- /dev/null +++ b/saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/pot/TbIoterminal.java @@ -0,0 +1,271 @@ +package cn.ljobin.bibi.domain.pot; + +import cn.ljobin.bibi.domain.pot.group.PotGroup; +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import org.apache.commons.lang3.builder.ToStringBuilder; +import org.apache.commons.lang3.builder.ToStringStyle; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.Min; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; +import javax.validation.constraints.Pattern; +import java.util.Date; + +/** + * 盆栽信息对象 tb_ioterminal + * + * @author lyb + * @date 2020-04-21 + */ +@TableName("tb_ioterminal") +@ApiModel(value = "盆栽对象", description = "pot") +public class TbIoterminal +{ + private static final long serialVersionUID = 1L; + + /** 编号 */ + @TableId(value = "id",type = IdType.AUTO) + private Long id; + + /** 盆栽终端IMEI号 */ + @TableField("imei") + //@Length(min = 10,max = 20,message = "盆栽IMEI长度不合格",groups = {PotGroup.class}) + @Pattern(regexp = "^[A-Za-z0-9]{10,20}$", message = "盆栽IMEI限制:最多20字符,包含字母和数字",groups = {PotGroup.class}) + @ApiModelProperty(value = "盆栽终端IMEI号", required = true) + private String imei; + + /** 类型 */ + private Integer ctype; + + /** IP地址 */ + private String conip; + + /** 当前数据接收状态,0-关 1-开 */ + private String status; + + /** 产出时间 */ + private Date protime; + + /** 启用时间 */ + private Date starttime; + + /** 存放位置编号 */ + private Long deptid; + + /** 使用人编号 */ + private Long uid; + + /** 备注 */ + @ApiModelProperty(value = "盆栽介绍", required = true) + private String demo; + + /** 0-无效,1-有效 */ + private String delflag; + + /** 最后通信时间 */ + private Date enddate; + + /** 0-离线,1-在线 */ + private String online; + /** + * 盆栽自定义名称 + */ + @ApiModelProperty(value = "盆栽名称", required = true) + @TableField("pot_name") + private String potName; + /** + * 用户名称 + * 不是数据库中的字段 + */ + @TableField(exist = false) + private String uname; + /** + * 类型名称 + * 不是数据库中的字段 + */ + @TableField(exist = false) + private String typeName; + + /** + * 是否是享受来的盆栽 + */ + @TableField(exist = false) + private Boolean enjoyPot; + + public Boolean getEnjoyPot() { + return enjoyPot; + } + + public void setEnjoyPot(Boolean enjoyPot) { + this.enjoyPot = enjoyPot; + } + + public String getPotName() { + return potName; + } + + public void setPotName(String potName) { + this.potName = potName; + } + + public String getUname() { + return uname; + } + + public void setUname(String uname) { + this.uname = uname; + } + + public String getTypeName() { + return typeName; + } + + public void setTypeName(String typeName) { + this.typeName = typeName; + } + + public void setId(Long id) + { + this.id = id; + } + + public Long getId() + { + return id; + } + public void setImei(String imei) + { + this.imei = imei; + } + + public String getImei() + { + return imei; + } + public void setCtype(Integer ctype) + { + this.ctype = ctype; + } + + public Integer getCtype() + { + return ctype; + } + public void setConip(String conip) + { + this.conip = conip; + } + + public String getConip() + { + return conip; + } + public void setStatus(String status) + { + this.status = status; + } + + public String getStatus() + { + return status; + } + public void setProtime(Date protime) + { + this.protime = protime; + } + + public Date getProtime() + { + return protime; + } + public void setStarttime(Date starttime) + { + this.starttime = starttime; + } + + public Date getStarttime() + { + return starttime; + } + public void setDeptid(Long deptid) + { + this.deptid = deptid; + } + + public Long getDeptid() + { + return deptid; + } + public void setUid(Long uid) + { + this.uid = uid; + } + + public Long getUid() + { + return uid; + } + public void setDemo(String demo) + { + this.demo = demo; + } + + public String getDemo() + { + return demo; + } + public void setDelflag(String delflag) + { + this.delflag = delflag; + } + + public String getDelflag() + { + return delflag; + } + public void setEnddate(Date enddate) + { + this.enddate = enddate; + } + + public Date getEnddate() + { + return enddate; + } + public void setOnline(String online) + { + this.online = online; + } + + public String getOnline() + { + return online; + } + + @Override + public String toString() { + return "TbIoterminal{" + + "id=" + id + + ", imei='" + imei + '\'' + + ", ctype=" + ctype + + ", conip='" + conip + '\'' + + ", status='" + status + '\'' + + ", protime=" + protime + + ", starttime=" + starttime + + ", deptid=" + deptid + + ", uid=" + uid + + ", demo='" + demo + '\'' + + ", delflag='" + delflag + '\'' + + ", enddate=" + enddate + + ", online='" + online + '\'' + + ", uname='" + uname + '\'' + + ", typeName='" + typeName + '\'' + + '}'; + } +} diff --git a/saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/pot/group/PotGroup.java b/saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/pot/group/PotGroup.java new file mode 100644 index 0000000..fcc3fe1 --- /dev/null +++ b/saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/pot/group/PotGroup.java @@ -0,0 +1,13 @@ +package cn.ljobin.bibi.domain.pot.group; + +import javax.validation.groups.Default; + +/** + * @program: IoT-Plat + * @description: 用户分组 + * @author: Mr.Liu + * @create: 2020-04-29 16:37 + **/ + +public interface PotGroup extends Default { +} diff --git a/saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/wapper/TbIoterminalWapper.java b/saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/wapper/TbIoterminalWapper.java new file mode 100644 index 0000000..8950b48 --- /dev/null +++ b/saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/wapper/TbIoterminalWapper.java @@ -0,0 +1,90 @@ +package cn.ljobin.bibi.domain.wapper; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.ToString; + +import java.util.Date; + +/** + * @program: IoT-Plat + * @description: 包装类 + * @author: Mr.Liu + * @create: 2020-04-22 11:10 + **/ +@Data +@ToString +@AllArgsConstructor +@NoArgsConstructor +public class TbIoterminalWapper { + private static final long serialVersionUID = 1L; + + + /** 盆栽终端IMEI号 */ + private String imei; + + /** IP地址 */ + private String conip; + + /** 当前数据接收状态,0-关 1-开 */ + private String status; + + /** 产出时间 */ + private Date protime; + + /** 启用时间 */ + private Date starttime; + + /** 存放位置 */ + private String address; + + /** 备注 */ + private String demo; + + /** 最后通信时间 */ + private Date enddate; + + /** 0-离线,1-在线 */ + private String online; + /** + * 盆栽自定义名称 + */ + private String potName; + /** + * 用户名称 + * 不是数据库中的字段 + */ + private String uname; + /** + * 类型名称 + * 不是数据库中的字段 + */ + private String typeName; + /** + * 盆栽类型id + */ + private Integer pType; + /** + * 是否是享受来的盆栽 + */ + private Boolean enjoyPot; + + public TbIoterminalWapper(String imei, String conip, String status, Date protime, Date starttime, String address, String demo, Date enddate, String online, String potName, String uname, String typeName, Integer pType) { + this.imei = imei; + this.conip = conip; + this.status = status; + this.protime = protime; + this.starttime = starttime; + this.address = address; + this.demo = demo; + this.enddate = enddate; + this.online = online; + this.potName = potName; + this.uname = uname; + this.typeName = typeName; + this.pType = pType; + } +} diff --git a/saltice-monitor-api/target/classes/META-INF/saltice-monitor-api.kotlin_module b/saltice-monitor-api/target/classes/META-INF/saltice-monitor-api.kotlin_module new file mode 100644 index 0000000000000000000000000000000000000000..2983af70661ad375cc499ebc4da5a68ca46c532e GIT binary patch literal 16 RcmZQzU|?ooU|@t|egFVe02KfL literal 0 HcmV?d00001 diff --git a/saltice-monitor-api/target/classes/cn/ljobin/bibi/api/MonitorApi.class b/saltice-monitor-api/target/classes/cn/ljobin/bibi/api/MonitorApi.class new file mode 100644 index 0000000000000000000000000000000000000000..749e8eb67d47bba8e6f16d4793f9a7c1aa3e9d15 GIT binary patch literal 455 zcma)&zfJ-{5XNVae}V#*7WUe>F`+P_qS1zn1QQFb_Kxu!+}k~O_u$^b+!b2Rg|i%; zSIKWrCy6X$ak zO3yZb-Mq1K{#~so6$5sz^qy7s6cb&R!i^9bOKmE#+*OAk=sdd0XLQF#R{gEpamm*U zz0?S||JIt(M@8X4uf59v;o?t5y5wCjA|;7z#FWuCR}bleve-mGs7dYsSVuU5x=an3 f8VF5kEvcR$ZK>lIzyKWqx^i2Cll}H|zwP}1#!`X} literal 0 HcmV?d00001 diff --git a/saltice-monitor-api/target/classes/cn/ljobin/bibi/domain/monitor/MonitorEmail.class b/saltice-monitor-api/target/classes/cn/ljobin/bibi/domain/monitor/MonitorEmail.class new file mode 100644 index 0000000000000000000000000000000000000000..3f481ba46abb14cd5f727cb87ef350da427e3b62 GIT binary patch literal 4452 zcmb7G-H#hr75|Mr;~9I$Uayng)FhO&b;*8qLP>$nCV`|)U|}~2$u^{+K*#Ip?j&Q+ z)*gq3uR_ab`Dn|BK!_KF)VxFjB)XLVA$Tbgk31pq#1sESO8MQnW6#(-jkeP6z2~0u zJLjHr?m1`tkN^GgF943=XC>T=eh~(4h~S1WE0*sWc*(%`4gA2s4-Ndtz{`UDijG$mgqM;hGY3oXVY2@I-AQ1>KFT+&}+Mwy`IMN~vqN%N(dSd;&0>k$@*H=2v z1PW>?cQ1uqFLLh`{A)qe>sU>%=~=Cy?T~H<9WM;J zmfPvKd)8{~M(myDKIiqqJRcMa_N5$K>4fg4+Z6#cgVs$3u-)%%tuv*=eD_1ow;p#w z5oO`H$6HP+$j{DQrp{wQi@-_V=AP@fn{GGqT*Mx1IR0g)>xuNnOf}r{_%2NBT?1H? zft+DfKCjd^-Ef7kUz?pv`5nLi1cif873?2@40Ar20?8a6Bk=A{WM)yPA!%TG9krLtWcax zp`^Eu%)a|*g(aPqq=lLEU4w83kT_t1lYj>?CGiS$!F{&x_>5%4_w&tb?nbygcU6Hh z);F<;RS<+*ZkH~J8fu7XU__jVEJsX#*m)HxN*Gfk02xwk6eO9&2pC36{VCU?5vgZ%Z~3yK058Ubwijc819y zUFf>Kz8|vTqDYI4B&hO`mcDBZ>8jR{o)sI36Gj-w3QNN#s^Kj4~I=0!K{gSESPBEArqE39>oU~%-_B5(*Bre;nOA_ zg>B-3pq6pm#0i`<@lkxt#3^w+jmJ#5ct*j2B>GmMEHP+Ul&=I$`3+_=#A4 z%BEU8Jjm$@HcxUAStUnbJS_4mDUn%H)EVTKCuPpWHjeY2!~?RHqMOX&_8 zbZe^bM_gu3NAQCVc}G0%0sxfEo=7_^!JJ76p9k-GZZ-B9leJ^%&i=xGUVX`8S~aoB-0Oi7b=(y_%H88=E{5nOwmqvrMXcH7UzJHaQ=e{1jHROlo^IDH|p> z*@#T8Wd~l^t4Y~vu}Ld3c@F2Zywvw|a(5QyUxTLJUice~ zUqZ{@Uid4FwZ-`z6r&@F(z!)0wz~9pOw`pkF?9>(QeEA_!~kL18X=}#sA~dKcoVf- zDA%=mAq6ViIzeUIsOth`#2~$Hq(BwBNKnNt)r$gDib2JCDFvFeCkUFf&H97@nK6h| z3RJbr1Xb-yy(~bL7*wuT1|an|?gAyt5nSMVe$9bLSHtE3FPitG3+sUm*P@7hzOO4z|!e2&xv z{>(x0c~U0+%?bYnQf2%H2k|ti3LN^oifP@rgNlykTbR+Y!9PQJ3-?H}_^wFa8};r* z7KbW6$8o(q%5cRv&_q>;EbX4$avEsEENRS*$Wm-^Jt{YTxXI#x$%&~@q@mZU%g5Cd zQBfVLE^o1t*KHX@NR6tNVkbttM*}9~6r6HjO3coM22t z8vq6vb(9su3Mp8E9OuSheH5JFGX$}Uu}dY<%9h27#Vo}{_Z`JlXTJGkOjZ?MV9v!a zj4OXa?a4Q=ueN^&)1tU`FjG4qY0iY{+C7pk3w~YF90N18_egqDU=B*UD)@&;@8G@T fpV9rP&*+u74sv)lYLIU9lT7^N>hYgHpu+zH6F64T literal 0 HcmV?d00001 diff --git a/saltice-monitor-api/target/classes/cn/ljobin/bibi/domain/monitor/MonitorEmailRepush.class b/saltice-monitor-api/target/classes/cn/ljobin/bibi/domain/monitor/MonitorEmailRepush.class new file mode 100644 index 0000000000000000000000000000000000000000..c0062e50aa1e007055a6cfd5084aac7d985f073e GIT binary patch literal 5463 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 literal 0 HcmV?d00001 diff --git a/saltice-monitor-api/target/classes/cn/ljobin/bibi/domain/pot/TbIoterminal.class b/saltice-monitor-api/target/classes/cn/ljobin/bibi/domain/pot/TbIoterminal.class new file mode 100644 index 0000000000000000000000000000000000000000..7073abf8125c2d8e7e913883dffaa2446c223f8d GIT binary patch literal 5797 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 + + + 4.0.0 + + cn.ljobin.bibi + saltice-monitor-common + 1.0-SNAPSHOT + + + cn.ljobin.bibi + IoT-monitor + 1.0-SNAPSHOT + + + + UTF-8 + 1.8 + 1.8 + + + + + javax.mail + mail + + + + org.springframework.boot + spring-boot-starter-mail + + + + + + + org.springframework.kafka + spring-kafka + + + cn.ljobin.bibi + saltice-monitor-api + 1.0-SNAPSHOT + + + cn.stylefeng.roses + kernel-model + + + cn.stylefeng.roses + kernel-core + provided + + + cn.stylefeng.roses + kernel-logger + + + + + org.springframework.boot + spring-boot-starter-data-redis + + + + redis.clients + jedis + + + io.lettuce + lettuce-core + + + + + + + redis.clients + jedis + + + + + + + org.apache.commons + commons-pool2 + 2.5.0 + + + + + com.alibaba + fastjson + 1.2.47 + + + + + + + + + maven-clean-plugin + 3.1.0 + + + + maven-resources-plugin + 3.0.2 + + + maven-compiler-plugin + 3.8.0 + + + maven-surefire-plugin + 2.22.1 + + + maven-jar-plugin + 3.0.2 + + + maven-install-plugin + 2.5.2 + + + maven-deploy-plugin + 2.8.2 + + + + maven-site-plugin + 3.7.1 + + + maven-project-info-reports-plugin + 3.0.0 + + + + + diff --git a/saltice-monitor-common/src/main/java/cn/ljobin/bibi/constant/Status.java b/saltice-monitor-common/src/main/java/cn/ljobin/bibi/constant/Status.java new file mode 100644 index 0000000..1e4e96d --- /dev/null +++ b/saltice-monitor-common/src/main/java/cn/ljobin/bibi/constant/Status.java @@ -0,0 +1,14 @@ +package cn.ljobin.bibi.constant; + +/** + * @program: IoT-Plat + * @description: 状态常量 + * @author: Mr.Liu + * @create: 2020-04-24 23:13 + **/ +public class Status { + public static String isEnable = "1"; + public static String noEnable = "0"; + public static String noDel = "0"; + public static String isDel = "1"; +} diff --git a/saltice-monitor-common/src/main/java/cn/ljobin/bibi/enums/MessageQueueEnum.java b/saltice-monitor-common/src/main/java/cn/ljobin/bibi/enums/MessageQueueEnum.java new file mode 100644 index 0000000..583a76c --- /dev/null +++ b/saltice-monitor-common/src/main/java/cn/ljobin/bibi/enums/MessageQueueEnum.java @@ -0,0 +1,15 @@ +package cn.ljobin.bibi.enums; + +/** + * 消息队列的枚举 + * + * @author lyb + * @Date 2020年5月6日 12:30:48 + */ +public enum MessageQueueEnum { + + /** + * 下单的消息队列,用于保存需要下发的邮箱 + */ + MAKE_MONITOR_MESSAGE +} diff --git a/saltice-monitor-common/src/main/java/cn/ljobin/bibi/enums/MessageStatusEnum.java b/saltice-monitor-common/src/main/java/cn/ljobin/bibi/enums/MessageStatusEnum.java new file mode 100644 index 0000000..13c2dbd --- /dev/null +++ b/saltice-monitor-common/src/main/java/cn/ljobin/bibi/enums/MessageStatusEnum.java @@ -0,0 +1,29 @@ +package cn.ljobin.bibi.enums; + +/** + * 消息状态 + * + * @author lyb + * @Date 2020/4/16 22:31 + */ +public enum MessageStatusEnum { + + WAIT_VERIFY("待确认"), + + SENDING("发送中"); + + private String desc; + + MessageStatusEnum(String desc) { + this.desc = desc; + } + + public String getDesc() { + return desc; + } + + public void setDesc(String desc) { + this.desc = desc; + } + +} diff --git a/saltice-monitor-common/src/main/java/cn/ljobin/bibi/enums/execption/MessageExceptionEnum.java b/saltice-monitor-common/src/main/java/cn/ljobin/bibi/enums/execption/MessageExceptionEnum.java new file mode 100644 index 0000000..a812c38 --- /dev/null +++ b/saltice-monitor-common/src/main/java/cn/ljobin/bibi/enums/execption/MessageExceptionEnum.java @@ -0,0 +1,49 @@ +package cn.ljobin.bibi.enums.execption; + + +import cn.stylefeng.roses.kernel.model.exception.AbstractBaseExceptionEnum; + +/** + * 消息服务异常集合 + * + * @author stylefeng + * @Date 2018年4月18日 22:51:31 + */ +public enum MessageExceptionEnum implements AbstractBaseExceptionEnum { + + + QUEUE_CANT_EMPTY(600, "消息队列不能为空"), + MESSAGE_ID_CANT_EMPTY(601, "消息id不能为空"), + MESSAGE_BODY_CANT_EMPTY(602, "消息body不能为空"), + CANT_FIND_MESSAGE(603, "查找不到消息"), + MESSAGE_NUMBER_WRONG(604, "消息数量错误"), + MESSAGE_QUEUE_ERROR(605,"消息队列服务器处理异常"), + MESSAGE_TYPE_ERROR(606,"消息接收到的格式错误,非TEXT类型"); + + MessageExceptionEnum(int code, String message) { + this.code = code; + this.message = message; + } + + private Integer code; + + private String message; + + @Override + public Integer getCode() { + return code; + } + + public void setCode(Integer code) { + this.code = code; + } + + @Override + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } +} diff --git a/saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/AnnotationUtils.java b/saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/AnnotationUtils.java new file mode 100644 index 0000000..9412d1f --- /dev/null +++ b/saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/AnnotationUtils.java @@ -0,0 +1,158 @@ +package cn.ljobin.bibi.utils; + +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; + +import java.lang.reflect.Field; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.util.Date; +import java.util.Objects; + +/** + * @program: IoT-Plat + * @description: 包装验证类 + * @author: Mr.Liu + * @create: 2020-04-11 16:25 + **/ +public class AnnotationUtils { + /** + * 反射包装QueryWrapper,自动将简单的条件查询 映射好 + * 构建where后面的条件 + */ + public QueryWrapper wapperData (QueryWrapper queryWrapper,T o){ + Class clazz = o.getClass(); + Field[] fields = clazz.getDeclaredFields(); + for (Field f : fields) { + TableField tableField = f.getAnnotation(TableField.class); + //没有注解表示肯定存在这个字段在数据库 + if(tableField==null){ + TableId tableId = f.getAnnotation(TableId.class); + String name = ""; + if(tableId != null){ + String n = tableId.value(); + if("".equals(n)){ + name = f.getName(); + }else { + name = n; + } + }else { + name = f.getName(); + } + Object value = getValue(o,f); + if(value!=null && value != ""){ + //System.out.println(name+"---"+value); + queryWrapper.eq(name,value); + } + continue; + } + //如果注解明确说明是不存在的,就不管了 + if(!tableField.exist()){ + continue; + } + //获取注解中的value值,及数据库中字段名称 + String name = tableField.value(); + if(!"".equals(name)){ + Object value = getValue(o,f); + if(Objects.nonNull(value)){ + //System.out.println(name+"---"+value); + queryWrapper.eq(name,value); + } + } + } + return queryWrapper; + } + private Object getValue(T model,Field f){ + f.setAccessible(true); + // 获取属性的类型 + String type = f.getGenericType().toString(); + try { + // 如果type是类类型,则前面包含"class ",后面跟类名 + if ("class java.lang.String".equals(type)) { + //获取属性值 + String value = (String) f.get(model); + if("".equals(value)){ + return null; + } + return value; + } + if ("class java.lang.Integer".equals(type)) { + //获取属性值 + return (Integer) f.get(model); + } + if ("class java.lang.Long".equals(type)) { + //获取属性值 + return (Long) f.get(model); + } + if ("class java.lang.Double".equals(type)) { + return (Double) f.get(model); + } + if ("class java.lang.Float".equals(type)) { + return (Float) f.get(model); + } + if ("class java.lang.Boolean".equals(type)) { + return (Boolean) f.get(model); + } + if ("class java.util.Date".equals(type)) { + return (Date) f.get(model); + } + // 如果有需要,可以仿照上面继续进行扩充,再增加对其它类型的判断 + } catch (SecurityException | IllegalAccessException | IllegalArgumentException e) { + e.printStackTrace(); + } + return null; + //下面是通过getXXX()方法获取的,不太灵活 +// // 获取属性的名字 +// String name = f.getName(); +// // 将属性的首字符大写,方便构造get,set方法 +// name = name.substring(0, 1).toUpperCase() + name.substring(1); +// // 获取属性的类型 +// String type = f.getGenericType().toString(); +// try { +// // 如果type是类类型,则前面包含"class ",后面跟类名 +// if ("class java.lang.String".equals(type)) { +// Method m = model.getClass().getMethod("get" + name); +// System.out.println((String) m.invoke(model)); +// return (String) m.invoke(model); +// } +// if ("class java.lang.Integer".equals(type)) { +// Method m = model.getClass().getMethod("get" + name); +// return (Integer) m.invoke(model); +// } +// if ("class java.lang.Long".equals(type)) { +// Method m = model.getClass().getMethod("get" + name); +// System.out.println((Long) m.invoke(model)); +// return (Long) m.invoke(model); +// } +// if ("class java.lang.Double".equals(type)) { +// Method m = model.getClass().getMethod("get" + name); +// return (Double) m.invoke(model); +// } +// if ("class java.lang.Float".equals(type)) { +// Method m = model.getClass().getMethod("get" + name); +// return (Float) m.invoke(model); +// } +// if ("class java.lang.Boolean".equals(type)) { +// Method m = model.getClass().getMethod("get" + name); +// return (Boolean) m.invoke(model); +// } +// if ("class java.util.Date".equals(type)) { +// Method m = model.getClass().getMethod("get" + name); +// return (Date) m.invoke(model); +// } +// // 如果有需要,可以仿照上面继续进行扩充,再增加对其它类型的判断 +// }catch (NoSuchMethodException e) { +// e.printStackTrace(); +// } catch (SecurityException e) { +// e.printStackTrace(); +// } catch (IllegalAccessException e) { +// e.printStackTrace(); +// } catch (IllegalArgumentException e) { +// e.printStackTrace(); +// } catch (InvocationTargetException e) { +// e.printStackTrace(); +// } +// return null; + } +} diff --git a/saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/Log4JavaMail.java b/saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/Log4JavaMail.java new file mode 100644 index 0000000..8b1adc0 --- /dev/null +++ b/saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/Log4JavaMail.java @@ -0,0 +1,88 @@ +package cn.ljobin.bibi.utils; + + +import java.io.ByteArrayOutputStream; +import java.io.PrintStream; + +import org.slf4j.Logger; +import java.io.PrintStream; + +/** + * @program: Iot-Monitor + * @description: + * @author: Mr.Liu + * @create: 2020-06-02 21:02 + **/ +public class Log4JavaMail extends PrintStream { + private static byte[] CRLF = new byte[] { 13, 10 }; + private ByteArrayOutputStream bos = new ByteArrayOutputStream(); + private Logger actualLog; + private String charset; + private boolean hitData; + + public String getCharset() { + return charset; + } + + public void setCharset(String charset) { + this.charset = charset; + } + + public Log4JavaMail(Logger log) { + super(System.out); + this.actualLog = log; + } + + public Log4JavaMail(Logger log, String charset) { + super(System.out); + this.actualLog = log; + this.charset = charset; + } + + @Override + public void write(byte buf[], int off, int len) { + bos.write(buf, off, len); + //到过一行末尾,输出日志 + if (len > 1) { + if (buf[off + len - 2] == CRLF[0] + && buf[off + len - 1] == CRLF[1]) { + flush(); + } + } + } + + @Override + public void flush() { + if (charset == null) { + charset = "utf-8"; + } + try { + String msg = new String(bos.toByteArray(), charset); + //debug输出会加上换行符,所以去掉javamail加上的换行符。 + if (msg.endsWith("\r\n")) { + msg = msg.substring(0, msg.length() - 2); + } + + if (msg.equals("DATA")) { + hitData = true; + } else if (msg.equals(".\r\n")) { + hitData = false; + } + + if (hitData) { + //data阶段输出邮件内容,设置为trace级别. + actualLog.trace(msg); + } else { + actualLog.debug(msg); + } + } catch (Exception e) { + e.printStackTrace(); + } + bos.reset(); + } + + @Override + public void println(String x) { + actualLog.debug(x); + } +} diff --git a/saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/email/BaseMailSend.java b/saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/email/BaseMailSend.java new file mode 100644 index 0000000..072b8d3 --- /dev/null +++ b/saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/email/BaseMailSend.java @@ -0,0 +1,18 @@ +package cn.ljobin.bibi.utils.email; + +/** + * @program: Iot-Monitor + * @description: + * @author: Mr.Liu + * @create: 2020-06-02 15:34 + **/ + +public interface BaseMailSend { + /** + * 发送邮件 + * @param title 邮件标题 + * @param content 邮件类容 + * @param linkInfo 邮件接收端地址 + */ + public void sendEmail(String title,String content,String linkInfo); +} diff --git a/saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/email/impl/SendQqMailUtil.java b/saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/email/impl/SendQqMailUtil.java new file mode 100644 index 0000000..39b2abc --- /dev/null +++ b/saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/email/impl/SendQqMailUtil.java @@ -0,0 +1,103 @@ +package cn.ljobin.bibi.utils.email.impl; + +/** + * @program: guns + * @description: + * @author: Mr.Liu + * @create: 2019-09-12 18:02 + **/ + +import cn.ljobin.bibi.utils.Log4JavaMail; +import cn.ljobin.bibi.utils.email.BaseMailSend; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import javax.mail.Message; +import javax.mail.MessagingException; +import javax.mail.Session; +import javax.mail.Transport; +import javax.mail.internet.InternetAddress; +import javax.mail.internet.MimeMessage; +import java.util.Properties; +import java.util.concurrent.ExecutorService; +import java.util.concurrent.Executors; +import java.util.concurrent.ThreadPoolExecutor; + +@Service("sendQqMailUtil") +@Slf4j +public class SendQqMailUtil implements BaseMailSend { + private String sendUserEmail = "2018214546@qq.com"; + private String qqPassword = "ujpiarknosuybadb"; + private static volatile Properties properties; + private static Properties getPropertiesInstance(){ + if(properties==null){ + synchronized (Properties.class){ + if(properties==null){ + Properties properties2 = new Properties(); + // 连接协议 + properties2.put("mail.transport.protocol", "smtp"); + // 主机名 + properties2.put("mail.smtp.host", "smtp.qq.com"); + // 端口号 + properties2.put("mail.smtp.port", 465); + properties2.put("mail.smtp.auth", "true"); + // 设置是否使用ssl安全连接 ---一般都使用 + properties2.put("mail.smtp.ssl.enable", "true"); + // 设置是否显示debug信息 true 会在控制台显示相关信息 + properties2.put("mail.debug", "false"); + properties = properties2; + } + } + } + return properties; + } + private ExecutorService executorService = Executors.newFixedThreadPool(15); + + /** + * TODO 这里应该对相同标题和内容的邮箱进行整合,一起发送 + * @param title 邮件标题 + * @param content 邮件类容 + * @param linkInfo 邮件接收端地址 + */ + @Override + public void sendEmail(String title,String content,String linkInfo){ + executorService.submit(()->{ + Transport transport=null; + Session session=null; + try { + // 得到回话对象 + session = Session.getInstance(getPropertiesInstance()); + session.setDebug(false); + session.setDebugOut(new Log4JavaMail(log,"utf-8")); + // 获取邮件对象 + Message message = new MimeMessage(session); + // 设置发件人邮箱地址 + message.setFrom(new InternetAddress(sendUserEmail)); + // 设置收件人邮箱地址 + message.setRecipients(Message.RecipientType.TO, new InternetAddress[]{new InternetAddress(linkInfo)}); + //message.setRecipient(Message.RecipientType.TO, new InternetAddress("xxx@qq.com"));//一个收件人 + // 设置邮件标题 + message.setSubject(title); + // 设置邮件内容 + message.setText(content); + // 得到邮差对象 + transport = session.getTransport(); + // 连接自己的邮箱账户 + // 密码为QQ邮箱开通的stmp服务后得到的客户端授权码 + //授权码申请参考:https://baijiahao.baidu.com/s?id=1552315463915496&wfr=spider&for=pc + transport.connect(sendUserEmail, qqPassword); + // 发送邮件 + transport.sendMessage(message, message.getAllRecipients()); + }catch (MessagingException e){ + log.error(e.toString()); + }finally { + if(transport!=null){ + try { + transport.close(); + } catch (MessagingException e) { + log.error(e.toString()); + } + } + } + }); + } +} diff --git a/saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/email/impl/SprBooEmailUtil.java b/saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/email/impl/SprBooEmailUtil.java new file mode 100644 index 0000000..90f8d2d --- /dev/null +++ b/saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/email/impl/SprBooEmailUtil.java @@ -0,0 +1,126 @@ +package cn.ljobin.bibi.utils.email.impl; + +import cn.ljobin.bibi.utils.email.BaseMailSend; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.time.DateFormatUtils; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.core.io.ClassPathResource; +import org.springframework.mail.javamail.JavaMailSenderImpl; +import org.springframework.mail.javamail.MimeMessageHelper; +import org.springframework.stereotype.Service; + +import javax.mail.MessagingException; +import javax.mail.internet.MimeMessage; +import java.io.BufferedReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.text.MessageFormat; +import java.util.Date; +import java.util.Objects; +import java.util.Properties; +import java.io.IOException; + +/** + * @program: Iot-Monitor + * @description: + * @author: Mr.Liu + * @create: 2020-06-02 21:23 + **/ +@Service("sprBooEmailUtil") +@Slf4j +public class SprBooEmailUtil implements BaseMailSend { + private static String sendUserEmail = "2018214546@qq.com"; + private static String qqPassword = "ujpiarknosuybadb"; + private static JavaMailSenderImpl javaMailSender; + private static String buffer; + static { + //加载邮件html模板 + String fileName = "pod-scale-alarm.html"; + InputStream inputStream = ClassLoader.getSystemResourceAsStream(fileName); + if(inputStream==null){ + log.error("{}文件读取失败",fileName); + }else { + BufferedReader fileReader = new BufferedReader(new InputStreamReader(inputStream)); + StringBuilder buffers = new StringBuilder(); + String line = ""; + try { + while ((line = fileReader.readLine()) != null) { + buffers.append(line); + } + buffer = buffers.toString(); + } catch (Exception e) { + log.error("读取文件失败,fileName:{}", fileName, e); + } finally { + try { + inputStream.close(); + fileReader.close(); + } catch (IOException e) { + e.printStackTrace(); + } + } + } + } + static { + javaMailSender = new JavaMailSenderImpl(); + javaMailSender.setUsername(sendUserEmail); + javaMailSender.setPassword(qqPassword); + javaMailSender.setHost("smtp.qq.com"); + javaMailSender.setPort(587); + javaMailSender.setDefaultEncoding("UTF-8"); + Properties props = new Properties(); + props.setProperty("mail.smtp.host", "smtp.qq.com"); + props.setProperty("mail.transport.protocol", "smtp"); + props.setProperty("mail.smtp.auth", "true"); + props.setProperty("mail.smtp.connectiontimeout", "20000"); + props.setProperty("mail.smtp.timeout", "20000"); + javaMailSender.setJavaMailProperties(props); + } + @Override + public void sendEmail(String title, String content, String linkInfo) { + send(title, content, linkInfo); + } + public static void send(String title, String content, String linkInfo){ + MimeMessage message = javaMailSender.createMimeMessage(); + MimeMessageHelper helper = null; + try { + helper = new MimeMessageHelper(message, true, "UTF-8"); + helper.setTo(new String[]{linkInfo}); +// helper.setCc("抄送人邮箱"); + helper.setFrom(sendUserEmail); + helper.setSubject(title); + helper.setText(buildContent(title,content,true), true); + String alarmIconName = "success-alarm.png"; + ClassPathResource img = new ClassPathResource(alarmIconName); + //设置图标 + helper.addInline("icon-alarm", img); + javaMailSender.send(message); + } catch (MessagingException | IOException e) { + e.printStackTrace(); + } + } + + private static String buildContent(String title,String body,boolean isDanger) throws IOException { + + String contentText = body+"
以下是物联网设备详细信息, 敬请查看.
below is the information of service instance scale, please check. "; + //邮件表格header + String header = "分区(Namespace)服务(Service)伸缩结果(Scale Result)伸缩原因(Scale Reason)当前实例数(Pod instance number)"; + //绿色 + String emailHeadColor = "#10fa81"; + if(isDanger){ + emailHeadColor = "#cc1d0c"; + } + String date = DateFormatUtils.format(new Date(), "yyyy/MM/dd HH:mm:ss"); + //填充html模板中的五个参数 + String linesBuffer = "" + "湖南分区" + "" + "集群服务" + "" + "服务暂停" + "" + + "" + "异常" + "" + "2" + ""; + String htmlText = MessageFormat.format(buffer, title,emailHeadColor, contentText, date, header, linesBuffer); + + //改变表格样式 + htmlText = htmlText.replaceAll("", ""); + htmlText = htmlText.replaceAll("", ""); + return htmlText; + } + +} diff --git a/saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/kafkaconfig/ComsumerConfig.java b/saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/kafkaconfig/ComsumerConfig.java new file mode 100644 index 0000000..b0f61b9 --- /dev/null +++ b/saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/kafkaconfig/ComsumerConfig.java @@ -0,0 +1,22 @@ +package cn.ljobin.bibi.utils.kafkaconfig; + +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import static cn.stylefeng.roses.kernel.model.constants.ConfigPrefixConstants.LOG_PREFIX; + +/** + * @program: IoT-Plat + * @description: kafka消费者监听器 + * @author: Mr.Liu + * @create: 2020-04-14 17:06 + **/ +@Configuration +@ConditionalOnProperty(prefix = LOG_PREFIX, value = "kafka", havingValue = "true") +public class ComsumerConfig { + @Bean + public Listener listener() { + return new Listener(); + } +} diff --git a/saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/kafkaconfig/Listener.java b/saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/kafkaconfig/Listener.java new file mode 100644 index 0000000..9b6230f --- /dev/null +++ b/saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/kafkaconfig/Listener.java @@ -0,0 +1,61 @@ +package cn.ljobin.bibi.utils.kafkaconfig; + +import lombok.extern.slf4j.Slf4j; +import org.apache.kafka.clients.consumer.ConsumerRecord; +import org.springframework.kafka.annotation.KafkaListener; +import org.springframework.kafka.annotation.TopicPartition; +import org.springframework.stereotype.Service; + +import java.util.List; + +import static cn.stylefeng.roses.kernel.logger.constants.KafkaConstants.*; +import static cn.stylefeng.roses.kernel.model.constants.ConfigPrefixConstants.LOG_PREFIX; + +/** + * @program: IoT-Plat + * @description: + * @author: Mr.Liu + * @create: 2020-04-14 11:07 + **/ +@Service +@Slf4j +public class Listener { +// /** +// * LOG_TOPIC 消息接收 +// * @param recordList +// */ +// @KafkaListener(id=LOG_TOPIC, +// topicPartitions ={@TopicPartition(topic = LOG_TOPIC, partitions = { "0"})}) +// public void listen(List> recordList) { +// recordList.forEach((record)->{ +// log.info("kafka的key: " + record.key()); +// log.info("kafka的value: " + new String(record.value())); +// }); +// } +// +// /** +// * TRACE_LOG_TOPIC 消息接收 +// * @param recordList +// */ +// @KafkaListener(id=TRACE_LOG_TOPIC, +// topicPartitions ={@TopicPartition(topic = TRACE_LOG_TOPIC, partitions = { "0"})}) +// public void listen2(List> recordList) { +// recordList.forEach((record)->{ +// log.info("kafka的key: " + record.key()); +// log.info("kafka的value: " + new String(record.value())); +// }); +// } +// +// /** +// * TC_LOG_TOPIC 消息接收 +// * @param recordList +// */ +// @KafkaListener(id=TC_LOG_TOPIC, +// topicPartitions ={@TopicPartition(topic = TC_LOG_TOPIC, partitions = { "0"})}) +// public void listen3(List> recordList) { +// recordList.forEach((record)->{ +// log.info("kafka的key: " + record.key()); +// log.info("kafka的value: " + new String(record.value())); +// }); +// } +} diff --git a/saltice-monitor-common/target/classes/META-INF/saltice-monitor-common.kotlin_module b/saltice-monitor-common/target/classes/META-INF/saltice-monitor-common.kotlin_module new file mode 100644 index 0000000000000000000000000000000000000000..2983af70661ad375cc499ebc4da5a68ca46c532e GIT binary patch literal 16 RcmZQzU|?ooU|@t|egFVe02KfL literal 0 HcmV?d00001 diff --git a/saltice-monitor-common/target/classes/cn/ljobin/bibi/constant/Status.class b/saltice-monitor-common/target/classes/cn/ljobin/bibi/constant/Status.class new file mode 100644 index 0000000000000000000000000000000000000000..b8756e2e8a988f9e5327981ef867304d432f1d8c GIT binary patch literal 518 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 E0Au%`yZ`_I literal 0 HcmV?d00001 diff --git a/saltice-monitor-common/target/classes/cn/ljobin/bibi/utils/AnnotationUtils.class b/saltice-monitor-common/target/classes/cn/ljobin/bibi/utils/AnnotationUtils.class new file mode 100644 index 0000000000000000000000000000000000000000..5016c084c88db19752c47870b0ee181e2c7da353 GIT binary patch literal 4052 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 b$MQ>ocqIQL!h)b&db9?+i?>fG^WpM8T7$Xe literal 0 HcmV?d00001 diff --git a/saltice-monitor-common/target/classes/cn/ljobin/bibi/utils/email/BaseMailSend.class b/saltice-monitor-common/target/classes/cn/ljobin/bibi/utils/email/BaseMailSend.class new file mode 100644 index 0000000000000000000000000000000000000000..5f01cd76b0ce35284f228904c707ddb77c904aac GIT binary patch literal 279 zcma)%%}N7N424hnH*K|`PoZvlH*Un8pir<_7;t}Q8rzJwxiFLZa4vj+K9rbQ>C#0K zPIBOUIemYA0l3AYz*&KF!mMN6J|3bZ!rk?A6F*`|QFo!VR&;m&pUurH;bP6U&)ZFG zGYOF?>CeinmzGcF^%*VFoC+QuR53%F5Gn5Xq>=_7GwT9H>N;Fhb xNjRFME^tp8{@OkI7y6}YxV8y_Fz`PC8WDyVxgNV(3^DOhcuo5wX5I&w{{Xn?N_hYP literal 0 HcmV?d00001 diff --git a/saltice-monitor-common/target/classes/cn/ljobin/bibi/utils/email/impl/SendQqMailUtil.class b/saltice-monitor-common/target/classes/cn/ljobin/bibi/utils/email/impl/SendQqMailUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..af9d61a7f75db9b1edf49322d0046ab4c3bf7b74 GIT binary patch literal 4739 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 N%$pgTd+-+A^FMkg9>@Ry literal 0 HcmV?d00001 diff --git a/saltice-monitor-common/target/classes/cn/ljobin/bibi/utils/email/impl/SprBooEmailUtil.class b/saltice-monitor-common/target/classes/cn/ljobin/bibi/utils/email/impl/SprBooEmailUtil.class new file mode 100644 index 0000000000000000000000000000000000000000..fcd3f1d4d917d6bdac786b7be46ddea8aef3aaa7 GIT binary patch literal 6199 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 literal 0 HcmV?d00001 diff --git a/saltice-monitor-common/target/classes/cn/ljobin/bibi/utils/kafkaconfig/ComsumerConfig.class b/saltice-monitor-common/target/classes/cn/ljobin/bibi/utils/kafkaconfig/ComsumerConfig.class new file mode 100644 index 0000000000000000000000000000000000000000..2c79d75135f02d79dc9ecde7c9ef6be8c2e4f314 GIT binary patch literal 831 zcma)4*@_cE6g`#Q%;;=!866ehCc>mp#1}=-fcVfjq7o3FsymgQN~)_uEphxSeHu{k z1NFWQA2D>a@*A6>j{$8IzjheM-x;bN6IVG^3)g`L{Qd{l%vGD zocp;`CZ9M_$Pd=dIEe`IG;r~Il|Pfh5Lfq&jV_bVRe9syd6k2ySO|uP|4X^NExJkz zaliN{FtwJ1#9)`sL?=smV^tnNHmxe5kIgG*=hB6bMAe!*IZ>w!Juh@nnHzn6K@N4M=(j7M8t4wRDR!vilo{pb-7~Py)$0osTh(v}U8*;i3)r9vRA0m;A}PW5D>9(- z6}5L~sDGka4S(>xzwn(Eev5WW_U&qSr;58Mrw4@HqufIsmp!iF>U%JcYuNX={u9kn B-jDzQ literal 0 HcmV?d00001 diff --git a/saltice-monitor-common/target/classes/cn/ljobin/bibi/utils/kafkaconfig/Listener.class b/saltice-monitor-common/target/classes/cn/ljobin/bibi/utils/kafkaconfig/Listener.class new file mode 100644 index 0000000000000000000000000000000000000000..a2fcc7be945413a8bdfc185c5351da3853c0a800 GIT binary patch literal 592 zcma)(J5M7q5Xb)xd9%F2@rHr|Dd8mC&;^}zLZVuM1Sq|Cah6FO8+jd0d@Mu(y5c?n z9||#>a3DcL<9W|-JoEhW_aA^m>@-oqj~Z5*SjAccC9K!5AuwZHCeVtV&tz`;hXWbA zEYrR#P(30`;TPw$J3WE&vAfa&3o%)JIvyq3U#i5ghl^8XddgE_zd6g{nsR}kacZR* zxP+`sC?PoxWO6xF{h>;o?NcUW%7eBOV*MyJZ_MU}8~aqBP(hgcpK~x!w@P5+d~5@a zbdPdkVg>fv@ki;gQF-3&eBD2G`9>AK zoxo-RWUa(H&&+R=Ey+@_tn5ER+)u)@{8lH + + + 4.0.0 + + cn.ljobin.bibi + saltice-monitor-feign + 1.0-SNAPSHOT + + + cn.ljobin.bibi + IoT-monitor + 1.0-SNAPSHOT + + + + UTF-8 + 1.8 + 1.8 + + + + + cn.stylefeng.roses + kernel-model + + + cn.stylefeng.roses + kernel-core + provided + + + + + + + + cn.stylefeng.roses + roses-system-api + 1.1.6 + + + cn.stylefeng.roses + kernel-logger + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.cloud + spring-cloud-starter-openfeign + + + + org.springframework.cloud + spring-cloud-starter-netflix-hystrix + + + + + + + + + maven-clean-plugin + 3.1.0 + + + + maven-resources-plugin + 3.0.2 + + + maven-compiler-plugin + 3.8.0 + + + maven-surefire-plugin + 2.22.1 + + + maven-jar-plugin + 3.0.2 + + + maven-install-plugin + 2.5.2 + + + maven-deploy-plugin + 2.8.2 + + + + maven-site-plugin + 3.7.1 + + + maven-project-info-reports-plugin + 3.0.0 + + + + + diff --git a/saltice-monitor-feign/src/main/java/cn/ljobin/bibi/feign/AuthUserComsumer.java b/saltice-monitor-feign/src/main/java/cn/ljobin/bibi/feign/AuthUserComsumer.java new file mode 100644 index 0000000..f61ff2f --- /dev/null +++ b/saltice-monitor-feign/src/main/java/cn/ljobin/bibi/feign/AuthUserComsumer.java @@ -0,0 +1,15 @@ +package cn.ljobin.bibi.feign; + +import cn.ljobin.bibi.feign.fallback.AuthUserComsumeuFallback; +import cn.stylefeng.roses.kernel.model.api.AuthService; +import org.springframework.cloud.openfeign.FeignClient; + +/** + * @program: IoT-Plat + * @description: 获取用户信息的 + * @author: Mr.Liu + * @create: 2020-04-12 16:23 + **/ +@FeignClient(value = "roses-system" , fallback = AuthUserComsumeuFallback.class) +public interface AuthUserComsumer extends AuthService { +} diff --git a/saltice-monitor-feign/src/main/java/cn/ljobin/bibi/feign/fallback/AuthUserComsumeuFallback.java b/saltice-monitor-feign/src/main/java/cn/ljobin/bibi/feign/fallback/AuthUserComsumeuFallback.java new file mode 100644 index 0000000..baa6158 --- /dev/null +++ b/saltice-monitor-feign/src/main/java/cn/ljobin/bibi/feign/fallback/AuthUserComsumeuFallback.java @@ -0,0 +1,88 @@ +package cn.ljobin.bibi.feign.fallback; + +import cn.ljobin.bibi.feign.AuthUserComsumer; +import cn.stylefeng.roses.core.reqres.response.ResponseData; +import cn.stylefeng.roses.kernel.logger.api.common.annotion.IotLog; +import cn.stylefeng.roses.kernel.logger.api.common.state.LogType; +import cn.stylefeng.roses.kernel.model.api.AuthService; +import cn.stylefeng.roses.kernel.model.api.base.AppUserWarpper; +import cn.stylefeng.roses.kernel.model.api.base.RpcBaseResponse; +import cn.stylefeng.roses.kernel.model.auth.AbstractLoginUser; +import cn.stylefeng.roses.kernel.model.auth.SysUser; +import cn.stylefeng.roses.kernel.model.enums.SystemMenu; +import cn.stylefeng.roses.system.api.context.LoginUser; +import org.springframework.stereotype.Component; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.multipart.MultipartFile; + +import java.util.Date; + +/** + * @program: IoT-Plat + * @description: 失败回调 + * @author: Mr.Liu + * @create: 2020-04-12 16:31 + **/ +@Component +@RequestMapping("/fallback/auth/api") +public class AuthUserComsumeuFallback implements AuthUserComsumer { + + @Override + @IotLog(value = "注册失败",type = LogType.FEIGN_DEFEAT) + public RpcBaseResponse register(AppUserWarpper appUserWarpper) { + return RpcBaseResponse.error("请稍后再试"); + } + + @Override + @IotLog(value = "更新头像失败",type = LogType.FEIGN_DEFEAT) + public RpcBaseResponse updateAvatar(MultipartFile files, String token) { + return RpcBaseResponse.error("请稍后再试"); + } + + @Override + @IotLog(value = "登陆失败",type = LogType.FEIGN_DEFEAT) + public RpcBaseResponse login(String account, String password, SystemMenu systemMenu) { + return RpcBaseResponse.error("请稍后再试"); + } + + @Override + @IotLog(value = "校验失败",type = LogType.FEIGN_DEFEAT) + public boolean checkToken(String token) { + return false; + } + + @Override + @IotLog(value = "退出失败",type = LogType.FEIGN_DEFEAT) + public void logout(String token) { + + } + + @Override + @IotLog(value = "获取用户信息失败",type = LogType.FEIGN_DEFEAT) + public RpcBaseResponse getLoginUserByToken(String token) { + return RpcBaseResponse.error("请稍后再试"); + } + + @Override + public SysUser getUserByToken(String token) { + return null; + } + + @Override + @IotLog(value = "获取用户ID失败",type = LogType.FEIGN_DEFEAT) + public Long getLoginUserIdByToken(String token) { + return null; + } + + @Override + @IotLog(value = "更新用户信息失败",type = LogType.FEIGN_DEFEAT) + public RpcBaseResponse updateLoginUserByToken(String token, AppUserWarpper userWarpper) { + return RpcBaseResponse.error("请稍后再试"); + } + + @Override + public RpcBaseResponse updatePasswordByToken(String token, String password) { + return null; + } +} diff --git a/saltice-monitor-feign/target/classes/cn/ljobin/bibi/feign/AuthUserComsumer.class b/saltice-monitor-feign/target/classes/cn/ljobin/bibi/feign/AuthUserComsumer.class new file mode 100644 index 0000000000000000000000000000000000000000..08d2b06a015e86ff7989fc4b6fee81da4a585561 GIT binary patch literal 384 zcmZutyH3ME5ZnV2hY%nQ1s^~ODIDTynC`3{$w$%F?1qh9Km z=FOb-$u}CEbwdCE literal 0 HcmV?d00001 diff --git a/saltice-monitor-feign/target/classes/cn/ljobin/bibi/feign/fallback/AuthUserComsumeuFallback.class b/saltice-monitor-feign/target/classes/cn/ljobin/bibi/feign/fallback/AuthUserComsumeuFallback.class new file mode 100644 index 0000000000000000000000000000000000000000..a85a1a80d62f65fac860eb6cb7217fece84eaedc GIT binary patch literal 3392 zcmb_eTW=dh6h3Rmaq7Ak(k7(PlwJ~W0%U1vLt3{b&aDKTP?8WNc!0G%aW+}+E_+Fp zCyJ0#9%zdYRH}HPQjsErlvYFvDiXZ&J8&+40`bl6+UwdIH*I*>9nW~?d}qG%opbi@ ze;@rxL}%&U7)2=6L<2Dzq@gGcM`bd`FQ#m3 z_Cu2ygId9~3(Owz{zwYcWU#z!TFem0PH;1(wWzQershRMGnpyQGec#HSb$rKDCx48 zkxVA0be$XgNHTPt8Og4lpPbOM1F$f`OkGn=1{d~Aj~Nr_{LZaa`61B3F=owbxvP>P z6&S7sc8*NgswEfLv~0?tE~ToPC0R1i1-euRO40IpW;l1wYK4NPiV{DHgW{-WrL{bK zk1R-vjp)SJe_JjteN(*uaC7x%MA2H*v6_4;>n6NnBJ57#Fl@(1hDWcAe>yZgGMt*i z)Yfy@kXn!|3DNo@k=Bg7XzGTn=4beAuW81-c#UPmf~{DxE*X|MR{Av}D=e9wlNKaV zkr3NSiyzxv+#)kD3Jy;{wIkro(&m}URbAr~7T14VUBC07cz?C{)$J0c5rjj=iSH7% zM*>!!q-3Vr1yh_{g!BtznCy;9t8Hp8s)vIL)E!uEcnf11FS{bT z99j!gEyS%aa5FEG=#@FQpgX-loM4~Z%(TYPjCf^474rM1#I*!9$0c0#OG8v)W*C}5 zC#V4*C-@Y>m&#s@xFp_tFcUEf7$e6JAgq$0fX%4t;w-56wz2?E3bBrU()lx`SprEBVQs83Xyw*c`-ACzx*mk0u z{tBqZGL##_dQflpP^ak(IO6&)^CncwbGQPgE^h+8iO+l2^X<*Ow^MUf(LU#U-AiwI zF!j~`fdf^mb~hGWYJEttvf6p<`|wl&pZ9?;P|~BTAHn2l7OJ6Zx&pM8E-pz|>0XL) bP_FL~U3A`;Jope@#{6x-w0uH>N&Wu;$4y~s literal 0 HcmV?d00001 diff --git a/saltice-monitor-iot/pom.xml b/saltice-monitor-iot/pom.xml new file mode 100644 index 0000000..22292c8 --- /dev/null +++ b/saltice-monitor-iot/pom.xml @@ -0,0 +1,98 @@ + + + + 4.0.0 + + cn.ljobin.bibi + saltice-monitor-iot + 1.0-SNAPSHOT + + + cn.ljobin.bibi + IoT-monitor + 1.0-SNAPSHOT + + + + UTF-8 + 1.8 + 1.8 + + + + + org.springframework.boot + spring-boot-starter-activemq + + + cn.stylefeng.roses + kernel-model + + + cn.stylefeng.roses + kernel-core + provided + + + org.springframework.boot + spring-boot-starter-web + + + cn.ljobin.bibi + saltice-monitor-api + 1.0-SNAPSHOT + + + cn.ljobin.bibi + saltice-monitor-common + 1.0-SNAPSHOT + + + + + + + + + maven-clean-plugin + 3.1.0 + + + + maven-resources-plugin + 3.0.2 + + + maven-compiler-plugin + 3.8.0 + + + maven-surefire-plugin + 2.22.1 + + + maven-jar-plugin + 3.0.2 + + + maven-install-plugin + 2.5.2 + + + maven-deploy-plugin + 2.8.2 + + + + maven-site-plugin + 3.7.1 + + + maven-project-info-reports-plugin + 3.0.0 + + + + + diff --git a/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/EmailMapper.java b/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/EmailMapper.java new file mode 100644 index 0000000..a239799 --- /dev/null +++ b/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/EmailMapper.java @@ -0,0 +1,18 @@ +package cn.ljobin.bibi.mapper; + +import cn.ljobin.bibi.domain.monitor.MonitorEmail; +import cn.ljobin.bibi.domain.pot.TbIoterminal; +import com.baomidou.dynamic.datasource.annotation.DS; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * 盆栽信息Mapper接口 + * + * @author lyb + * @date 2020-04-21 + */ +@Mapper +public interface EmailMapper extends BaseMapper +{ +} diff --git a/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/EmailRePushMapper.java b/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/EmailRePushMapper.java new file mode 100644 index 0000000..69c3e51 --- /dev/null +++ b/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/EmailRePushMapper.java @@ -0,0 +1,17 @@ +package cn.ljobin.bibi.mapper; + +import cn.ljobin.bibi.domain.monitor.MonitorEmail; +import cn.ljobin.bibi.domain.monitor.MonitorEmailRepush; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * 盆栽信息Mapper接口 + * + * @author lyb + * @date 2020-04-21 + */ +@Mapper +public interface EmailRePushMapper extends BaseMapper +{ +} diff --git a/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/MonitorMessageMapper.java b/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/MonitorMessageMapper.java new file mode 100644 index 0000000..1b2887e --- /dev/null +++ b/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/MonitorMessageMapper.java @@ -0,0 +1,17 @@ +package cn.ljobin.bibi.mapper; + +import cn.ljobin.bibi.domain.monitor.MonitorEmail; +import cn.ljobin.bibi.domain.monitor.MonitorMessage; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Mapper; + +/** + * 盆栽信息Mapper接口 + * + * @author lyb + * @date 2020-04-21 + */ +@Mapper +public interface MonitorMessageMapper extends BaseMapper +{ +} diff --git a/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/mapping/EmailMapper.xml b/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/mapping/EmailMapper.xml new file mode 100644 index 0000000..c0a53df --- /dev/null +++ b/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/mapping/EmailMapper.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + id, linkInfo, `type`, body, pushTime + + + \ No newline at end of file diff --git a/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/mapping/EmailRePushMapper.xml b/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/mapping/EmailRePushMapper.xml new file mode 100644 index 0000000..62a2bd8 --- /dev/null +++ b/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/mapping/EmailRePushMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, linkInfo, `type`, body, oldPushTime,num,already_dead + + + \ No newline at end of file diff --git a/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/mapping/MonitorMessageMapper.xml b/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/mapping/MonitorMessageMapper.xml new file mode 100644 index 0000000..212dcc1 --- /dev/null +++ b/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/mapping/MonitorMessageMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + id,clientId, linkInfo, `type`, ploy, insertTime + + + \ No newline at end of file diff --git a/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/service/IEmailRePushService.java b/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/service/IEmailRePushService.java new file mode 100644 index 0000000..0f6a899 --- /dev/null +++ b/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/service/IEmailRePushService.java @@ -0,0 +1,15 @@ +package cn.ljobin.bibi.service; + +import cn.ljobin.bibi.domain.monitor.MonitorEmail; +import cn.ljobin.bibi.domain.monitor.MonitorEmailRepush; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * 盆栽信息Service接口 + * + * @author lyb + * @date 2020-04-21 + */ +public interface IEmailRePushService extends IService +{ +} diff --git a/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/service/IEmailService.java b/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/service/IEmailService.java new file mode 100644 index 0000000..62eaf24 --- /dev/null +++ b/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/service/IEmailService.java @@ -0,0 +1,20 @@ +package cn.ljobin.bibi.service; + +import cn.ljobin.bibi.domain.monitor.MonitorEmail; +import cn.ljobin.bibi.domain.monitor.MonitorMessage; +import cn.ljobin.bibi.domain.pot.TbIoterminal; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * email发送服务 + * + * @author lyb + * @date 2020-04-21 + */ +public interface IEmailService extends IService { + /** + * 消费消息 + * @param monitorMessage + */ + public void recodeMonitorMsg(MonitorMessage monitorMessage); +} diff --git a/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/service/IMonitorMessageService.java b/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/service/IMonitorMessageService.java new file mode 100644 index 0000000..fe73a2d --- /dev/null +++ b/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/service/IMonitorMessageService.java @@ -0,0 +1,15 @@ +package cn.ljobin.bibi.service; + +import cn.ljobin.bibi.domain.monitor.MonitorEmail; +import cn.ljobin.bibi.domain.monitor.MonitorMessage; +import com.baomidou.mybatisplus.extension.service.IService; + +/** + * 盆栽信息Service接口 + * + * @author lyb + * @date 2020-04-21 + */ +public interface IMonitorMessageService extends IService +{ +} diff --git a/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/service/Impl/EmailRePushServiceImpl.java b/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/service/Impl/EmailRePushServiceImpl.java new file mode 100644 index 0000000..c6261bc --- /dev/null +++ b/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/service/Impl/EmailRePushServiceImpl.java @@ -0,0 +1,18 @@ +package cn.ljobin.bibi.service.Impl; + +import cn.ljobin.bibi.domain.monitor.MonitorEmailRepush; +import cn.ljobin.bibi.mapper.EmailRePushMapper; +import cn.ljobin.bibi.service.IEmailRePushService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + * 盆栽信息Service业务层处理 + * + * @author lyb + * @date 2020-04-21 + */ +@Service +public class EmailRePushServiceImpl extends ServiceImpl implements IEmailRePushService +{ +} diff --git a/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/service/Impl/EmailServiceImpl.java b/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/service/Impl/EmailServiceImpl.java new file mode 100644 index 0000000..7d24669 --- /dev/null +++ b/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/service/Impl/EmailServiceImpl.java @@ -0,0 +1,31 @@ +package cn.ljobin.bibi.service.Impl; + +import cn.ljobin.bibi.domain.monitor.MonitorEmail; +import cn.ljobin.bibi.domain.monitor.MonitorMessage; +import cn.ljobin.bibi.mapper.EmailMapper; +import cn.ljobin.bibi.service.IEmailService; +import cn.ljobin.bibi.utils.email.BaseMailSend; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import javax.annotation.Resource; + +/** + * 盆栽信息Service业务层处理 + * + * @author lyb + * @date 2020-04-21 + */ +@Service +public class EmailServiceImpl extends ServiceImpl implements IEmailService { + /** + * 发送邮件 + */ + //@Resource(name = "sendQqMailUtil") + @Resource(name = "sprBooEmailUtil") + private BaseMailSend sendQQMailUtil; + + @Override + public void recodeMonitorMsg(MonitorMessage monitorMessage) { + sendQQMailUtil.sendEmail("警告",monitorMessage.getPloy(),monitorMessage.getLinkInfo()); + } +} diff --git a/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/service/Impl/MonitorMessageServiceImpl.java b/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/service/Impl/MonitorMessageServiceImpl.java new file mode 100644 index 0000000..f9dd4a1 --- /dev/null +++ b/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/service/Impl/MonitorMessageServiceImpl.java @@ -0,0 +1,21 @@ +package cn.ljobin.bibi.service.Impl; + +import cn.ljobin.bibi.domain.monitor.MonitorEmail; +import cn.ljobin.bibi.domain.monitor.MonitorMessage; +import cn.ljobin.bibi.mapper.EmailMapper; +import cn.ljobin.bibi.mapper.MonitorMessageMapper; +import cn.ljobin.bibi.service.IEmailService; +import cn.ljobin.bibi.service.IMonitorMessageService; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; + +/** + * 盆栽信息Service业务层处理 + * + * @author lyb + * @date 2020-04-21 + */ +@Service +public class MonitorMessageServiceImpl extends ServiceImpl implements IMonitorMessageService +{ +} diff --git a/saltice-monitor-iot/target/classes/META-INF/saltice-monitor-iot.kotlin_module b/saltice-monitor-iot/target/classes/META-INF/saltice-monitor-iot.kotlin_module new file mode 100644 index 0000000000000000000000000000000000000000..2983af70661ad375cc499ebc4da5a68ca46c532e GIT binary patch literal 16 RcmZQzU|?ooU|@t|egFVe02KfL literal 0 HcmV?d00001 diff --git a/saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/EmailMapper.class b/saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/EmailMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..01f284c8e9ffda7c5457ca009d2d7442a4bb732b GIT binary patch literal 397 zcmb7=u}TCn5QZnG-g>8kt)-2n)7Y&D3R>+Ucwj%tg>{xBv+iaEU(Lb?@S((US5U6A z$o#`3%>VuQ_;^RBzrxQA7?|nV(QgK=yIN7~9k*Wn=n`9%zA=P0xs$h8>EiZMxz;I zBK;2FxQI_(?g-qz@aLw0(_J?N@YnycqYxlq!m-E31Lu9t6F7ikz!DA_3+AT)-!&$J A2mk;8 literal 0 HcmV?d00001 diff --git a/saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/MonitorMessageMapper.class b/saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/MonitorMessageMapper.class new file mode 100644 index 0000000000000000000000000000000000000000..e12154073bf0a7e2b2aab8746c7a5ffc7fbfdc86 GIT binary patch literal 417 zcmb7=!AitH42CnSw(hFn)fe#K!Cbsm1U-0a5nS+|nH_3MXQs?d1z*jB58y+Iu@z(& zFCLOVkdS=&KR(~y0pJQwN?4U}RKl@><(gYhd5l&;sylii?8&$IpgU`FRh!^YQ*gWq zBf3{jnbXjZ2~CI=9Swtxct^=LQ+Zt*k9`+3d(^BMH^GtAE_lu%Vl!)FQ=-;ZH)zgaAF|*CpA?+eA+|^ZnP-bUQ6l{g;Jiq# uUF`7veDK#<1*f}yD3HJZWk{hw!9rqBtOv>ak{56Q#iS)1iWbse0(=3e|AR~b literal 0 HcmV?d00001 diff --git a/saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/mapping/EmailMapper.xml b/saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/mapping/EmailMapper.xml new file mode 100644 index 0000000..c0a53df --- /dev/null +++ b/saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/mapping/EmailMapper.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + id, linkInfo, `type`, body, pushTime + + + \ No newline at end of file diff --git a/saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/mapping/EmailRePushMapper.xml b/saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/mapping/EmailRePushMapper.xml new file mode 100644 index 0000000..62a2bd8 --- /dev/null +++ b/saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/mapping/EmailRePushMapper.xml @@ -0,0 +1,20 @@ + + + + + + + + + + + + + + + + + id, linkInfo, `type`, body, oldPushTime,num,already_dead + + + \ No newline at end of file diff --git a/saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/mapping/MonitorMessageMapper.xml b/saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/mapping/MonitorMessageMapper.xml new file mode 100644 index 0000000..212dcc1 --- /dev/null +++ b/saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/mapping/MonitorMessageMapper.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + id,clientId, linkInfo, `type`, ploy, insertTime + + + \ No newline at end of file diff --git a/saltice-monitor-iot/target/classes/cn/ljobin/bibi/service/IEmailRePushService.class b/saltice-monitor-iot/target/classes/cn/ljobin/bibi/service/IEmailRePushService.class new file mode 100644 index 0000000000000000000000000000000000000000..10ef66cb10d01a85542b7fcbfac59b8c25146fa5 GIT binary patch literal 347 zcmbVIOKt)&40TG&0Nr%S8M?p=*bQRWN=So>m=h!+0*{gyO%l|qH|v4}^iWm9M=a>B z3)@e&{QRE3f4&X?FoDMcdIj_g7zpUswDB^g)(H5l8o8HfrQhJ2YK)F$rP-m9>}bsi z-G`Eq!p^3E<~pB9Dp`;hLSy*s-U`EiTUWB{%KL>{8g4 zvr@pI=G1EQN;XRw&M)I-9$$DzM|A?8Z`iNr|859)x^*OA{0~cA0RrxFbn*isqx(~S IfbOXlzsx6YfdBvi literal 0 HcmV?d00001 diff --git a/saltice-monitor-iot/target/classes/cn/ljobin/bibi/service/IEmailService.class b/saltice-monitor-iot/target/classes/cn/ljobin/bibi/service/IEmailService.class new file mode 100644 index 0000000000000000000000000000000000000000..522cbcbb2f75d9bda11ed52ab3c8fd613a074c03 GIT binary patch literal 455 zcmbV}%}N6?5XWa~+qG4z_zWKOVi3KpcvC3sqOjmS$qs9ld`OZl`f47003S*kcdJNG z;vw@ve$4#;%*W^3I{;k4VFvpd9AvOSIPxT2O{KFcI$wqc;o`KAmg&|BWtmVyvDz7) zYBNCW8>SF=L;2Zb8dFkya`glE+)yMR5EdJ}9594gr5ej)=Lw-JTE5~;bK9_c(UOdL zA)R4@JELmXG4m>TRN+~7fzeAO8%62prIU!` zW&g36b^fIY;bhDE&&uCyGQ6!H;qo5_rU(e5^mfu^aEvg9N$RGln;>KL}jNSkM literal 0 HcmV?d00001 diff --git a/saltice-monitor-iot/target/classes/cn/ljobin/bibi/service/IMonitorMessageService.class b/saltice-monitor-iot/target/classes/cn/ljobin/bibi/service/IMonitorMessageService.class new file mode 100644 index 0000000000000000000000000000000000000000..fcee397eb0a3cc88a70ca0ccd9c2888d2955a1aa GIT binary patch literal 349 zcmbVIyG{c^44mbWBcY+^8^8s0hbWOET|{wTu)DENKHaX-?OuRiqu>MhD8!N=BqFL5 z_Do@qXZ-Q`_730{=M~N>%quJm=B;$m=4oVu=cczCOM{IaJ-VKKt{bm`oYf#}ohZCI znyT(TvdUX=Xi4$6Du!RSWl69oj4p*F#?YO?L4Hm6V zqvr=1ijB+V--#dD>u+-gS9{{W*Z*BIxY*BRaC1PYnSsGkspIlO6n3)hrZpQT0otb53Hrk)%N$}v& zLw}U`cGH&7;6Y^J&3@m0^WOX3zU$vVegYWdc^_@;_wclbgC3pI`bL$d_M4SY8z#9gTsUsdO5=D2&dbyFdDC&p9VbUyckaw>8)H-bnX7!R-%~xb zm)nxs`@*gu7IQ(15ZPR##7VjOe7cZgUhkNGOVi|`8Wd;AzP?w?(Lh3(!8Q7iZ@AZx%3IaH-wcAS|X!7 z!^}=ohsu{_WmUzK&$Kq72$j*6VYaX@4#g1{XG*>!t!V~TNtSUfe916k8^MM#FP!sM z_{5shDqLsi%Vf)hdv0nDS5R8MYWfu!ycQIRVZ30f!YhkFx&5g!9_}d$o$D^a%HU8{ zCExTL9*=^RS{kRIY(@iFr8q@Hp-oVHNug?dUJ=GuHPht&afR5n4X;V}a}-K# ziF)2HR=Hw3>RjtC$QO-<3|f2?qjkO;(mUUX!TkC;bUX59C&ff>suW%OOXV(Zs`JqC zpL2b}kSUm;&Z!@iuJ5|?-*RNqJoVEzMxqZlXpUiy OOq{$GmEn@Q4g3L>D}<;3 literal 0 HcmV?d00001 diff --git a/saltice-monitor-iot/target/classes/cn/ljobin/bibi/service/Impl/MonitorMessageServiceImpl.class b/saltice-monitor-iot/target/classes/cn/ljobin/bibi/service/Impl/MonitorMessageServiceImpl.class new file mode 100644 index 0000000000000000000000000000000000000000..50b6debf9d365788ca77646cfe383418d830fd4e GIT binary patch literal 758 zcmbtS!EO^V5Pfc%hNdYk2_W@Sskc(8_yX!-qe!R{64HhPLAiT3CQQ1vSGKopK8q6) z2hNC(LY>_}g+jQ1ERFZg%+Abvp6@@tds+cNIHU8<`jvpxqT%@^`#lmG|Wkwmvp#3%FTD~!5 zA;*pzI6u}QsJWi3LUkk&*qzYas#tmM@GZ@qk(qLaX0DQEnW;#jEUF;&ZPYf9v-g#$ zuKZiA;ra+hm8JG;&Bu*1S8f z`9fVQfunbojb!wc0#Th|Z0-Xb@?GaY0`34CdguQD literal 0 HcmV?d00001 -- Gitee From af76085da7410861c62a09dd9cc1eb1591e5111f Mon Sep 17 00:00:00 2001 From: Ljolan <2018214546@qq.com> Date: Sat, 6 Jun 2020 17:20:08 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E7=89=A9=E8=81=94=E7=BD=91=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0-=E8=AE=BE=E5=A4=87=E6=8A=A5=E8=AD=A6=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0[=E5=AE=8C=E5=96=84]=20=E3=80=901=E3=80=91=E6=8E=A5?= =?UTF-8?q?=E6=94=B6=E6=B6=88=E6=81=AF=E5=85=88=E4=BF=9D=E5=AD=98=E5=88=B0?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E5=BA=93=E4=B8=AD=20=E3=80=902=E3=80=91?= =?UTF-8?q?=E4=BF=9D=E5=AD=98=E6=88=90=E5=8A=9F=E4=BA=86=EF=BC=8C=E5=86=8D?= =?UTF-8?q?=E9=87=87=E7=94=A8=E4=B8=80=E4=B8=AA=E7=BC=93=E5=86=B2=E5=8C=BA?= =?UTF-8?q?=E6=9D=A5=E4=BF=9D=E5=AD=98=E6=8E=A5=E6=94=B6=E7=9A=84=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=EF=BC=8C=E5=8F=AF=E7=AB=8B=E5=8D=B3=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=EF=BC=8C=E5=86=8D=E9=80=9A=E8=BF=87=E5=AE=9A=E6=97=B6=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E5=8E=BB=E5=A4=9A=E7=BA=BF=E7=A8=8B=E5=8F=91=E9=80=81?= =?UTF-8?q?=E9=82=AE=E4=BB=B6=20=E3=80=90=E5=BE=85=E5=8A=9E=E3=80=91?= =?UTF-8?q?=E5=BA=94=E8=AF=A5=E5=AF=B9=E4=BF=9D=E5=AD=98=E7=9A=84=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E6=B7=BB=E5=8A=A0=E4=B8=80=E4=B8=AA=E7=8A=B6=E6=80=81?= =?UTF-8?q?=E4=BD=8D=EF=BC=8C=E5=BE=85=E5=8F=91=E9=80=81=E6=88=90=E5=8A=9F?= =?UTF-8?q?=E4=BA=86=E5=86=8D=E6=9B=B4=E6=96=B0=E4=B8=BA=E5=8F=91=E9=80=81?= =?UTF-8?q?=E6=88=90=E5=8A=9F=EF=BC=8C=E8=BF=99=E9=87=8C=E9=87=87=E7=94=A8?= =?UTF-8?q?=E5=BC=82=E6=AD=A5=E5=8E=BB=E6=95=B0=E6=8D=AE=E5=BA=93=E6=A3=80?= =?UTF-8?q?=E6=9F=A5=E6=98=AF=E5=90=A6=E6=9C=89=E5=8F=91=E9=80=81=E5=A4=B1?= =?UTF-8?q?=E8=B4=A5=E7=9A=84=EF=BC=8C=E6=9C=89=E5=88=99=E9=87=8D=E6=96=B0?= =?UTF-8?q?=E5=8F=91=E9=80=81=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/compiler.xml | 4 +- .../java/cn/ljobin/bibi/BibiApplication.java | 7 +- .../bibi/config/QueueListenerConfig.java | 1 - .../bibi/listener/MonitorMessageListener.java | 13 +++- .../src/main/resources/pod-scale-alarm.html | 2 +- .../saltice-monitor-admin.kotlin_module | Bin 16 -> 0 bytes .../cn/ljobin/bibi/BibiApplication.class | Bin 2745 -> 2935 bytes .../bibi/config/QueueListenerConfig.class | Bin 1472 -> 1472 bytes .../listener/MonitorMessageListener.class | Bin 2281 -> 2548 bytes .../target/classes/pod-scale-alarm.html | 2 +- .../bibi/domain/monitor/MonitorMessage.java | 11 +++ .../ljobin/bibi/enums/MessageQueueEnum.java | 0 .../ljobin/bibi/enums/MessageStatusEnum.java | 0 .../cn/ljobin/bibi/enums/MessageType.java | 13 ++++ .../enums/execption/MessageExceptionEnum.java | 3 +- .../saltice-monitor-api.kotlin_module | Bin 16 -> 0 bytes .../bibi/domain/monitor/MonitorMessage.class | Bin 4951 -> 5921 bytes .../ljobin/bibi/utils/email/BaseMailSend.java | 8 +- .../bibi/utils/email/impl/SendQqMailUtil.java | 9 ++- .../utils/email/impl/SprBooEmailUtil.java | 70 ++++++++++++++++-- .../saltice-monitor-common.kotlin_module | Bin 16 -> 0 bytes .../ljobin/bibi/enums/MessageQueueEnum.class | Bin 1083 -> 0 bytes .../ljobin/bibi/enums/MessageStatusEnum.class | Bin 1484 -> 0 bytes .../execption/MessageExceptionEnum.class | Bin 2675 -> 0 bytes .../bibi/utils/email/BaseMailSend.class | Bin 279 -> 251 bytes .../utils/email/impl/SendQqMailUtil.class | Bin 4739 -> 4807 bytes .../utils/email/impl/SprBooEmailUtil.class | Bin 6199 -> 8903 bytes .../bibi/mapper/mapping/EmailMapper.xml | 4 +- .../bibi/service/Impl/EmailServiceImpl.java | 2 +- .../saltice-monitor-iot.kotlin_module | Bin 16 -> 0 bytes .../bibi/mapper/mapping/EmailMapper.xml | 4 +- .../bibi/service/Impl/EmailServiceImpl.class | Bin 1366 -> 1168 bytes 32 files changed, 124 insertions(+), 29 deletions(-) delete mode 100644 saltice-monitor-admin/target/classes/META-INF/saltice-monitor-admin.kotlin_module rename {saltice-monitor-common => saltice-monitor-api}/src/main/java/cn/ljobin/bibi/enums/MessageQueueEnum.java (100%) rename {saltice-monitor-common => saltice-monitor-api}/src/main/java/cn/ljobin/bibi/enums/MessageStatusEnum.java (100%) create mode 100644 saltice-monitor-api/src/main/java/cn/ljobin/bibi/enums/MessageType.java rename {saltice-monitor-common => saltice-monitor-api}/src/main/java/cn/ljobin/bibi/enums/execption/MessageExceptionEnum.java (90%) delete mode 100644 saltice-monitor-api/target/classes/META-INF/saltice-monitor-api.kotlin_module delete mode 100644 saltice-monitor-common/target/classes/META-INF/saltice-monitor-common.kotlin_module delete mode 100644 saltice-monitor-common/target/classes/cn/ljobin/bibi/enums/MessageQueueEnum.class delete mode 100644 saltice-monitor-common/target/classes/cn/ljobin/bibi/enums/MessageStatusEnum.class delete mode 100644 saltice-monitor-common/target/classes/cn/ljobin/bibi/enums/execption/MessageExceptionEnum.class delete mode 100644 saltice-monitor-iot/target/classes/META-INF/saltice-monitor-iot.kotlin_module diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 9238834..409bf60 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -6,10 +6,10 @@ - - + + diff --git a/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/BibiApplication.java b/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/BibiApplication.java index ccb2cdf..b7d4be0 100644 --- a/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/BibiApplication.java +++ b/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/BibiApplication.java @@ -2,6 +2,7 @@ package cn.ljobin.bibi; import cn.ljobin.bibi.domain.monitor.MonitorMessage; import cn.ljobin.bibi.domain.monitor.enums.LinkInfoType; +import cn.ljobin.bibi.enums.MessageType; import cn.ljobin.bibi.send.ActiveMqMessageSender; import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; import com.spring4all.swagger.EnableSwagger2Doc; @@ -38,11 +39,13 @@ public class BibiApplication { @Scheduled(fixedDelay = 3000) public void schedule(){ MonitorMessage monitorMessage = new MonitorMessage(); - monitorMessage.setClientId("123"); + monitorMessage.setClientId("123778"); + monitorMessage.setMessageType(MessageType.SUCCESS); + monitorMessage.setTitle("有小偷,快跑,测试。。。"); monitorMessage.setLinkInfo("1337792659@qq.com"); monitorMessage.setLinkInfoType(LinkInfoType.EMAIL); monitorMessage.setType(LinkInfoType.EMAIL.getId()); - monitorMessage.setPloy("asdsdsad"); + monitorMessage.setPloy("啦啦啦啦啦啦啦啦啦啦零零零零了"); sender.sendMessage(monitorMessage); } private final static Logger logger = LoggerFactory.getLogger(BibiApplication.class); diff --git a/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/config/QueueListenerConfig.java b/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/config/QueueListenerConfig.java index 593568c..4dcf4cf 100644 --- a/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/config/QueueListenerConfig.java +++ b/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/config/QueueListenerConfig.java @@ -1,5 +1,4 @@ package cn.ljobin.bibi.config; - import cn.ljobin.bibi.enums.MessageQueueEnum; import cn.ljobin.bibi.listener.MonitorMessageListener; import org.springframework.beans.factory.annotation.Autowired; diff --git a/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/listener/MonitorMessageListener.java b/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/listener/MonitorMessageListener.java index c3b545c..7bab698 100644 --- a/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/listener/MonitorMessageListener.java +++ b/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/listener/MonitorMessageListener.java @@ -3,6 +3,8 @@ package cn.ljobin.bibi.listener; import cn.ljobin.bibi.domain.monitor.MonitorMessage; import cn.ljobin.bibi.enums.execption.MessageExceptionEnum; import cn.ljobin.bibi.service.IEmailService; +import cn.ljobin.bibi.service.IMonitorMessageService; +import cn.ljobin.bibi.service.Impl.MonitorMessageServiceImpl; import cn.stylefeng.roses.core.util.ToolUtil; import cn.stylefeng.roses.kernel.model.exception.ServiceException; import com.alibaba.fastjson.JSON; @@ -24,6 +26,8 @@ import javax.jms.TextMessage; @Component @Slf4j public class MonitorMessageListener implements MessageListener { + @Autowired + private IMonitorMessageService monitorMessageService; @Autowired private IEmailService iEmailService; @Override @@ -35,8 +39,13 @@ public class MonitorMessageListener implements MessageListener { throw new ServiceException(MessageExceptionEnum.MESSAGE_BODY_CANT_EMPTY); } MonitorMessage flowParam = JSON.parseObject(messageBody, MonitorMessage.class); - iEmailService.recodeMonitorMsg(flowParam); - log.info(flowParam.toString()); + log.info(flowParam.toString()); + flowParam.setId(null); + if(monitorMessageService.save(flowParam)){ + iEmailService.recodeMonitorMsg(flowParam); + }else { + throw new ServiceException(MessageExceptionEnum.MESSAGE_QUEUE_SAVE_ERROR); + } } catch (JMSException ex) { throw new ServiceException(MessageExceptionEnum.MESSAGE_QUEUE_ERROR); } diff --git a/saltice-monitor-admin/src/main/resources/pod-scale-alarm.html b/saltice-monitor-admin/src/main/resources/pod-scale-alarm.html index fd85eb9..7bf1cd9 100644 --- a/saltice-monitor-admin/src/main/resources/pod-scale-alarm.html +++ b/saltice-monitor-admin/src/main/resources/pod-scale-alarm.html @@ -23,7 +23,7 @@ overflow: hidden; padding: 15px 15px 20px;">
-

异常内容:

+

内容:

{2}

{3}
diff --git a/saltice-monitor-admin/target/classes/META-INF/saltice-monitor-admin.kotlin_module b/saltice-monitor-admin/target/classes/META-INF/saltice-monitor-admin.kotlin_module deleted file mode 100644 index 2983af70661ad375cc499ebc4da5a68ca46c532e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16 RcmZQzU|?ooU|@t|egFVe02KfL diff --git a/saltice-monitor-admin/target/classes/cn/ljobin/bibi/BibiApplication.class b/saltice-monitor-admin/target/classes/cn/ljobin/bibi/BibiApplication.class index 7a01761ffc4bcb098e7dd43f7c4a854e62b091c9..434b38ed2335a5bb221841ffcb9e4a1282018bd8 100644 GIT binary patch delta 978 zcmaJSwn714Q4zF&N@6rI z=E=s-){P4Vv;{Qk+QhwkEy0zE8+XP#Edf?0Gjr~}Z|0seXWqQ+PkQ*v--V9=c3@IQ zHd;mOm!U(egf@-`M6}E3z(JlIl5m*g5eY{*9y6g6$9Z%@rsyP(PD$wEc-jOT+%nGK ztcY_m&f@~Fbo0d{!E44v_+(r%phv{z>ClrT;}&ccP^^76=4i!+?g`pRH3_N4jOJY+m|1*9*i>!02E+&fxs(|R^9Zvz5uu5*5++fdY^QY_We!4t&|r^3n5IC7?X>d4pzTGpvcv}1 zp-@K8MTd3q!!HPRR0}u1hpsCMeY;{!iol@g=O9KPDOOVivSKwyz?2!Ri@=hA_3`h? ziZvwytNkrfl?c*S+3k?2YY`;kv=D1Lab}~0u2D)=2dYqpI+UXc6>){(^tg=XWr-5% zX>%z_$giOT&HTF{FMo1rk zTkj0i6p+LRFkbrx$Rl`RVqCirF(-TdYaagdt8A$>{q4_}uRtTOEw<8T&~D+N&7?!) zDU;J0&$#L2tk$|L(au?%=Ylr7O)hG@Q5`H3FHI!s0|heM7`1L7&1~ABn_b@rI^oymf4>u7Bi- zO+S4G12#zpZSM2H<{^&^9@`8d;bBG;W+F8pUqaGG>9g5JxxtvtI4MOS^IZjE1`{?< zd1h0=E}NYM6u#B$^6K*J%Jip|sgFP3O|MMN8a%gop+`>IyyR8pjjK6RZT!eAxnfQu zm7K`@c2#(^(mgaXsR+)@1ha9oU8TLkClm-dG9ATsv0Q>X1k3e2LAM?*=oG)OAab`@ z2LzR1VQ2w0CyIkTB6Ts6P%YA4OJFbi#8T8qu_IsnR?s27bZi+%&jJNqVV^TcVc6%& zVT9)~bGX;QTEvsX4*NFcC<=XMb2vxw#=I&_=~E*zND(3Ygyo1@@$9Egz9v~z?^2eZ z7hB)O6mL+n(`y%dWVx`s+D@r*OYGqKo*jbv9>32UTEv&7WM1^rCCVIZ>`){GLPRPX zDIxmb?SATM$j5{zB?hu+<3A272lL&9VxM=BEm{1!srrvdy+~Ai4mm{so2U>R6YEef gjui0}hiUFb_0z%;2_KbrOkS%rIWGPbCpZaz0o);VVE_OC diff --git a/saltice-monitor-admin/target/classes/cn/ljobin/bibi/config/QueueListenerConfig.class b/saltice-monitor-admin/target/classes/cn/ljobin/bibi/config/QueueListenerConfig.class index f685bf94ee83d132f59e3c63bfd64e8e9ed0e382..48989d7f169d68ff3a5751b310cb35a5699d566e 100644 GIT binary patch delta 35 qcmX@WeSmudGb^LeWER#4K}iM<1}O$!25AOy1{nr<2HDBEtib?vG6j(U delta 35 qcmX@WeSmudGb^L;WER#4K`90f25AOf1{nr%23ZDq2D!<(tib?vjs=$h diff --git a/saltice-monitor-admin/target/classes/cn/ljobin/bibi/listener/MonitorMessageListener.class b/saltice-monitor-admin/target/classes/cn/ljobin/bibi/listener/MonitorMessageListener.class index a89da40a580af0baa52d90188e638eb5cb0d683e..f71cd4aa475a2e474d1526c5fcc1d3ba4a2b563e 100644 GIT binary patch delta 995 zcmZ8gOHUI~6#nk?abbGpQKUQ-1wkII6)7kpAV@`^6=?xMQ5<0yilxQ2)@oD|{{fj5 zTVui+Fd&*}-0F{T?cR+EQO|7&1}B+w&pC5m-*@i(DE?Wp`t|pRPXK&)uA&@QIJzBB z(4(RkS2_Cf(T{5?Y#8A1tGJHAe7JB!MIMG67{-Xy0@4?B;3h_;cFTb=gk)xzV_cpS zQcQB(RxyQXjyoK887$Gb(aPWq#1n=$8C~!#c>{67&=Xw@rOWYHBo$8t^<+{r^st^t zN9J?}Z@~OxD=!Eh`MS2Lt-bEtcCrBDGc+f4H5ZjkV=d~a(vp_eGTx=-q<37;qz(!S z+{1m2S%C-8%sfkP!9#&L%nQ_l+PKZ{%&l=O2pCuts6>@OL}n}rJVI1p88LxsoZyHH ztUwbuh0`351rkUKq%hCm`qz3m81`r8^p#X3PI*scqcrBtZ%7gxJxNp!u zJ2v5;@Xv<(CjGPiP-rw{ZrER}x@g@D6|fLEf=72ik$A{=l5{(rHCZ3Q`p;(}o2Vsu zh9bOlGCFO|yI`BylzNh~0H|OCNs$Y{Su~Qx(1d2V6q(ID)Za?ZS1n(ltRrT=_I5-upJz0euo0j9tst#qlk+5xzOJQEDsQgbTFXcD%&J zEG!@W7R3lrw41o|po89X)WCp)vd)u_a2m;9o%ZK~x0{#MWyRTLN delta 715 zcmYL{OHWim5QV?KbBAW`ZP6JNVE}dHAr8Wbpa=>+K=1*mC?fLEQAc#t#AFggH|$(X zdgb24l?e|cpozw~^H;ca@6xE%U~p4)y6&kuU8nEQ(jW2Mx8EN=0c|`A*iO6VXoyEg zKqtpE$76KS9T4S&=48MrPRB^l6Vl5Whx!7F=?^)}In8;;zTm=uW-wrgi<(QC%k$5w zZM*82|313>L=C85SUzj6NQeFE%|@!Iw%w6r$yG))*9@avS9IEiXxhGvB*HPn4aN;s zOxU-Pmbyv96gLg!RA_D)vfMV5vD0wJ4Y+H_anC0G%HnC)cAs(E<+m0+Fywh?XZ+qo zJfEG(&SvtD3z@-Op^%-#1I8U(l$n|y`q(P-ocbZr zM35HExTuzkW({>TQBOPjgqs$21O4o0m;+4GynfR*dHVRAwATsI6MC7D8)Rrdp-|IO zlgs{F#GyuMR>E_u`oE~rH2)DjPm|FcL}^;WK<0@*O329X)4FM0YTXxzB@(NYE@Pa1 UiqwDqDnzhNiXMkIpWq1m1u#=z_5c6? diff --git a/saltice-monitor-admin/target/classes/pod-scale-alarm.html b/saltice-monitor-admin/target/classes/pod-scale-alarm.html index a6a1e3f..7bf1cd9 100644 --- a/saltice-monitor-admin/target/classes/pod-scale-alarm.html +++ b/saltice-monitor-admin/target/classes/pod-scale-alarm.html @@ -23,7 +23,7 @@ overflow: hidden; padding: 15px 15px 20px;">
-

Hi,

+

内容:

{2}

{3}
diff --git a/saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/monitor/MonitorMessage.java b/saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/monitor/MonitorMessage.java index 0eba25e..53ec2ba 100644 --- a/saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/monitor/MonitorMessage.java +++ b/saltice-monitor-api/src/main/java/cn/ljobin/bibi/domain/monitor/MonitorMessage.java @@ -1,6 +1,7 @@ package cn.ljobin.bibi.domain.monitor; import cn.ljobin.bibi.domain.monitor.enums.LinkInfoType; +import cn.ljobin.bibi.enums.MessageType; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; @@ -39,11 +40,21 @@ public class MonitorMessage { * **/ @TableField(exist = false) private LinkInfoType linkInfoType; + /** + * 消息类型 + **/ + @TableField("messageType") + private Integer messageType; /** * 联系信息类型 */ @TableField("type") private Integer type; + /** + * 消息标题 + **/ + @TableField("title") + private String title; /** * 消息内容 * utf-8 diff --git a/saltice-monitor-common/src/main/java/cn/ljobin/bibi/enums/MessageQueueEnum.java b/saltice-monitor-api/src/main/java/cn/ljobin/bibi/enums/MessageQueueEnum.java similarity index 100% rename from saltice-monitor-common/src/main/java/cn/ljobin/bibi/enums/MessageQueueEnum.java rename to saltice-monitor-api/src/main/java/cn/ljobin/bibi/enums/MessageQueueEnum.java diff --git a/saltice-monitor-common/src/main/java/cn/ljobin/bibi/enums/MessageStatusEnum.java b/saltice-monitor-api/src/main/java/cn/ljobin/bibi/enums/MessageStatusEnum.java similarity index 100% rename from saltice-monitor-common/src/main/java/cn/ljobin/bibi/enums/MessageStatusEnum.java rename to saltice-monitor-api/src/main/java/cn/ljobin/bibi/enums/MessageStatusEnum.java diff --git a/saltice-monitor-api/src/main/java/cn/ljobin/bibi/enums/MessageType.java b/saltice-monitor-api/src/main/java/cn/ljobin/bibi/enums/MessageType.java new file mode 100644 index 0000000..5b40d11 --- /dev/null +++ b/saltice-monitor-api/src/main/java/cn/ljobin/bibi/enums/MessageType.java @@ -0,0 +1,13 @@ +package cn.ljobin.bibi.enums; + +/** + * @program: Iot-Monitor + * @description: 消息类型 + * @author: Mr.Liu + * @create: 2020-06-06 16:02 + **/ +public class MessageType { + public static final int SUCCESS = 0; + public static final int ERROR = 1; + public static final int WANNER = 2; +} diff --git a/saltice-monitor-common/src/main/java/cn/ljobin/bibi/enums/execption/MessageExceptionEnum.java b/saltice-monitor-api/src/main/java/cn/ljobin/bibi/enums/execption/MessageExceptionEnum.java similarity index 90% rename from saltice-monitor-common/src/main/java/cn/ljobin/bibi/enums/execption/MessageExceptionEnum.java rename to saltice-monitor-api/src/main/java/cn/ljobin/bibi/enums/execption/MessageExceptionEnum.java index a812c38..f37fca4 100644 --- a/saltice-monitor-common/src/main/java/cn/ljobin/bibi/enums/execption/MessageExceptionEnum.java +++ b/saltice-monitor-api/src/main/java/cn/ljobin/bibi/enums/execption/MessageExceptionEnum.java @@ -18,7 +18,8 @@ public enum MessageExceptionEnum implements AbstractBaseExceptionEnum { CANT_FIND_MESSAGE(603, "查找不到消息"), MESSAGE_NUMBER_WRONG(604, "消息数量错误"), MESSAGE_QUEUE_ERROR(605,"消息队列服务器处理异常"), - MESSAGE_TYPE_ERROR(606,"消息接收到的格式错误,非TEXT类型"); + MESSAGE_QUEUE_SAVE_ERROR(606,"消息保存异常"), + MESSAGE_TYPE_ERROR(607,"消息接收到的格式错误,非TEXT类型"); MessageExceptionEnum(int code, String message) { this.code = code; diff --git a/saltice-monitor-api/target/classes/META-INF/saltice-monitor-api.kotlin_module b/saltice-monitor-api/target/classes/META-INF/saltice-monitor-api.kotlin_module deleted file mode 100644 index 2983af70661ad375cc499ebc4da5a68ca46c532e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16 RcmZQzU|?ooU|@t|egFVe02KfL diff --git a/saltice-monitor-api/target/classes/cn/ljobin/bibi/domain/monitor/MonitorMessage.class b/saltice-monitor-api/target/classes/cn/ljobin/bibi/domain/monitor/MonitorMessage.class index e4a9d9762eee17ac8658dab6e5399f9d4334a716..3ea09b47f99ab1087cd3ba9bd222ceb86a5aab50 100644 GIT binary patch literal 5921 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 Tls@Zy&GFaT=kSkDtS9~hGC^#o literal 4951 zcmbVOS(6)A75-YIR=1?qG8&IhEJemuK&8k_sN$I?c;Z*^f(hU4+dXP&+CijBx_$0F-*@_) zbI-ZA|N5UlybfRyzsTSqo=hW+FNxvHV)%*}zAA>N#PBsSd|ksgGJJkh4Brx@Zwu*Z zF?>f1&xqk!F+3-R=LO^i4KHS}2T$sFNjzT`!*_LjPsjIlyrSa=I)13*RUJPPnjdTU ziGqYvS5REOWL>c;4Xd?LS$10+OA5;8x-HLX+83OTQ)}4ATP@eKJjZQy6wEKLyUj|? za+^-w?N*vsYt(eM8r@FC+QC&;E%K^$+ETArjjpXA>0RC8V{RyVwZ2L;*~#M%t)5Y! zuQwdKFlM-4K514X1Uv+Pdf}FhWthRKeZL>#a)Tl3R0H zm6}s?Ds{JMQEs{|$8*~iyVY%WD$4;qa8$LQa5~-yHyR4YB0g4Ip1onWMJ!tl_o{-7 z)9To5ZhL}HDj1oXzChLqw@zSz@3T*Ln>D-bhanQ-u3L=@ zR@)J|4i=N%ro&BI_#Yvx$WT`7PRH61FI6{encb=Bi0?r;WT`x{vjKbhAUj(iKw(bk zZe%92x=7kP$g4&}(!hA%dwXdWh_ilXbCjx)+yy`||j1qyp2+Gc@@RpNS^cAHL#Dw`CChwiWVV$NUeHELd} zdJ7WJ*lD`}&|4VwErfF!bxB(3UrhTz&+pcZ1jvb01brqIa#D~UM~b5;)zN0mo%gKu z%PZEF-%LD({X<`P6IQTH83xR1yl?i!rcZAi|Hcn;Q{{kP2BI7fd(Ena18evxFDnt z<30n&#c)4P7s?1O^!vL`qb|y>)Ng#ssUI`&Q~XQ}KW7Wh zO@t{w=Fh^Ub5@v}2xlVgT+!wxMB=3+Qco#2H_=Nz=gPE!tGJKHLeD4J4BT#OYs+r2 z1?HoD8J-A{v!yQxro0aycHJ%UyxPEir4=8Br5EZP1-HO9husU`t7BR*}))vPP(QolK zg->UOl+6^F zocB$h!Pz)3)nQG_HVjNI_$EJ&b8#k9!-&MxHhaw+4_OW!@kK?JQU}p zKCDT3Xapt~eUrQ=q{+mCe2(%6I5<1=OQ^}~vu_~%D%6qdvwuc1CUnM zBcOtrCa7R$%4q@01fX;|69E;?EI~!nC}#!82tbq~piwhN(5RU&=L9GpfO6%01XMB$ z1eMHUxgbEr08}U!Ls0TMJ7#3pL3&*#FYGVnARfV^Y^ia@z#0$N1aFd?_ypHRcuD*V zpQM!JMf`VsijvA=`5Qh>DaA|tHGGDWhBkhU$0+G|5ih`^l*TJ~8Z}B8Y~wQ4DP{2| z*r-!7@DJYaHl-Z?$#dx-{P*S)Zo0N)h7{kNZuj&6rUc;rE*sI|(f4Xv$ ztG<|iry_y^dxY;vicgZDW{)r%;*?TFWr-y2zK!G|rG`mlTGr^U5?WmIOP1d)T;jQx z_#I7TXy}dN($VBGzc3FJmo{0JdU5s|wE1m}Jto$3W>P51$v~rvVwI}Asro9`sZY|& zYN#rhDPNV^QL%a@t7vMziiI1nv`{r_>b^?fQL&sQt7N8q6)QPlrG3?b_>#IPgA1}T zg4f||1dVX}_>C*;7te7E#rIkLkJ$6*4UCueZeyP) z<8ACOm8G2HqjZ~;c~I>u-7e*Vz#Nb=&!+vQcS(6vVBRg|l32fk@-`+0zbVEe-xT$r Y#1i{ Transport transport=null; Session session=null; @@ -73,12 +74,12 @@ public class SendQqMailUtil implements BaseMailSend { // 设置发件人邮箱地址 message.setFrom(new InternetAddress(sendUserEmail)); // 设置收件人邮箱地址 - message.setRecipients(Message.RecipientType.TO, new InternetAddress[]{new InternetAddress(linkInfo)}); + message.setRecipients(Message.RecipientType.TO, new InternetAddress[]{new InternetAddress(monitorMessage.getLinkInfo())}); //message.setRecipient(Message.RecipientType.TO, new InternetAddress("xxx@qq.com"));//一个收件人 // 设置邮件标题 - message.setSubject(title); + message.setSubject(monitorMessage.getTitle()); // 设置邮件内容 - message.setText(content); + message.setText(monitorMessage.getPloy()); // 得到邮差对象 transport = session.getTransport(); // 连接自己的邮箱账户 diff --git a/saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/email/impl/SprBooEmailUtil.java b/saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/email/impl/SprBooEmailUtil.java index 90f8d2d..bfba8ca 100644 --- a/saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/email/impl/SprBooEmailUtil.java +++ b/saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/email/impl/SprBooEmailUtil.java @@ -1,5 +1,7 @@ package cn.ljobin.bibi.utils.email.impl; +import cn.ljobin.bibi.domain.monitor.MonitorMessage; +import cn.ljobin.bibi.enums.MessageType; import cn.ljobin.bibi.utils.email.BaseMailSend; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.time.DateFormatUtils; @@ -21,6 +23,10 @@ import java.util.Date; import java.util.Objects; import java.util.Properties; import java.io.IOException; +import java.util.concurrent.Executors; +import java.util.concurrent.LinkedBlockingQueue; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.TimeUnit; /** * @program: Iot-Monitor @@ -35,6 +41,11 @@ public class SprBooEmailUtil implements BaseMailSend { private static String qqPassword = "ujpiarknosuybadb"; private static JavaMailSenderImpl javaMailSender; private static String buffer; + /**保存从activemq获取的消息*1024*1024 = 1048576*/ + public static LinkedBlockingQueue monitorMessages = new LinkedBlockingQueue<>(2<<20); + /**上面那个满了就保存到下面这个**/ + public static LinkedBlockingQueue monitorMessages2 = new LinkedBlockingQueue<>(2<<20); + public static ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(10); static { //加载邮件html模板 String fileName = "pod-scale-alarm.html"; @@ -77,11 +88,40 @@ public class SprBooEmailUtil implements BaseMailSend { props.setProperty("mail.smtp.timeout", "20000"); javaMailSender.setJavaMailProperties(props); } + static { + for (int i = 0; i < 10; i++) { + scheduledExecutorService.scheduleWithFixedDelay(()->{ + //弹出队顶元素,队列为空时返回null + MonitorMessage monitorMessage = monitorMessages.poll(); + if(monitorMessage!=null){ + send(monitorMessage.getTitle(), + monitorMessage.getPloy(), + monitorMessage.getLinkInfo(), + monitorMessage.getMessageType()); + } + },0,100, TimeUnit.MILLISECONDS); + } + scheduledExecutorService.scheduleWithFixedDelay(()->{ + //弹出队顶元素,队列为空时返回null + MonitorMessage monitorMessage = monitorMessages2.poll(); + if(monitorMessage!=null){ + send(monitorMessage.getTitle(), + monitorMessage.getPloy(), + monitorMessage.getLinkInfo(), + monitorMessage.getMessageType()); + } + },0,10, TimeUnit.SECONDS); + } @Override - public void sendEmail(String title, String content, String linkInfo) { - send(title, content, linkInfo); + public void sendEmail(MonitorMessage monitorMessage) { + //send(monitorMessage.getTitle(), monitorMessage.getPloy(), monitorMessage.getLinkInfo(),monitorMessage.getMessageType()); + try { + monitorMessages.add(monitorMessage); + }catch (IllegalStateException e){ + monitorMessages2.offer(monitorMessage); + } } - public static void send(String title, String content, String linkInfo){ + public static void send(String title, String content, String linkInfo, int type){ MimeMessage message = javaMailSender.createMimeMessage(); MimeMessageHelper helper = null; try { @@ -90,26 +130,40 @@ public class SprBooEmailUtil implements BaseMailSend { // helper.setCc("抄送人邮箱"); helper.setFrom(sendUserEmail); helper.setSubject(title); - helper.setText(buildContent(title,content,true), true); + helper.setText(buildContent(title,content,type), true); String alarmIconName = "success-alarm.png"; ClassPathResource img = new ClassPathResource(alarmIconName); //设置图标 helper.addInline("icon-alarm", img); + /**邮件发送时间较久**/ + long st1 = System.currentTimeMillis(); javaMailSender.send(message); + long st2 = System.currentTimeMillis(); + log.info("发送耗时:{}",(st2-st1)); } catch (MessagingException | IOException e) { e.printStackTrace(); } } - private static String buildContent(String title,String body,boolean isDanger) throws IOException { + private static String buildContent(String title,String body,int isDanger) throws IOException { String contentText = body+"
以下是物联网设备详细信息, 敬请查看.
below is the information of service instance scale, please check. "; //邮件表格header String header = "分区(Namespace)服务(Service)伸缩结果(Scale Result)伸缩原因(Scale Reason)当前实例数(Pod instance number)"; //绿色 - String emailHeadColor = "#10fa81"; - if(isDanger){ - emailHeadColor = "#cc1d0c"; + String emailHeadColor; + switch (isDanger){ + case MessageType.ERROR: + emailHeadColor = "#cc1d0c"; + break; + case MessageType.SUCCESS: + emailHeadColor = "#10fa81"; + break; + case MessageType.WANNER: + emailHeadColor = "yellow"; + break; + default: + emailHeadColor = "#aaa"; } String date = DateFormatUtils.format(new Date(), "yyyy/MM/dd HH:mm:ss"); //填充html模板中的五个参数 diff --git a/saltice-monitor-common/target/classes/META-INF/saltice-monitor-common.kotlin_module b/saltice-monitor-common/target/classes/META-INF/saltice-monitor-common.kotlin_module deleted file mode 100644 index 2983af70661ad375cc499ebc4da5a68ca46c532e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16 RcmZQzU|?ooU|@t|egFVe02KfL diff --git a/saltice-monitor-common/target/classes/cn/ljobin/bibi/enums/MessageQueueEnum.class b/saltice-monitor-common/target/classes/cn/ljobin/bibi/enums/MessageQueueEnum.class deleted file mode 100644 index 562f3790885d110875c70457ec96eed16d9a70ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1083 zcma)4Yi|-k6g{&nENmBwlvexD`koO|xMkMBP|e*>@$D*+Wb9c#F+A*EqmhmO4bm~qVL z^k_;%LBj?^wpKo<9M|fH`$zSc$F)kMQGQloSg*ES%jtP7+qGJD%eI6Y_6Jr?3wq68;fyIdr29 z>FRG8iur1fpK{CLZr5rAzU_94=G3w>RjpMiaZa*4=$vZ$@}jSb%tgr7qe$`HRzr}WS>YT*;2 zmrx~Mxq_dk8)JmR0$a|gIc3U+UpRFi;sn9Zi5Ng#GSE1kAzqkntFxqZ$=Y#^7hW5G zf{C{h1r?&vc7uckId(QiubDs0Or~Uf-!)E}am0KdqGq;qTOgbIpD<~%QPTywi-x7owiYUS^R8Ag$rE(*-FhUD zPi<$J-aWB+u~F5`veq;>aXY(YX$w>&HlsU_8@1b7lT1f%5`8&uScWrBy6#Z6umh7a zsp&j6C{#(Z^hqyu)H52*nqg_CK)7VoEjo)PmF?Lfb(-=7>$)@L9?ZT}dV47X*c*UQ zzG}9K`coWxsRPf)o!_lO<85mu7KbK#!_o#{(_OSQa^IuC(zOBDf5obr&=3sI+0)eX8u!!AO zWo}jG^{PW1jCD#nX==88xkHflYGV2I@ zfy8*<7W_f-s2&Q3xHb;c9S}IQ#86TZemB`oS|tW&vIA?7GehqXd_%UEu8Vd-Ey&bJ zgqq;A3EJc2gKlg5#?ATN0#QGX#egK;dkJ)$ZXZq%kCRBzliBBJW%hy0TLk|lo^UI8 z!~^XL^iQD_UhCtua&vI!T6#s3S$97#H+0sH01Z#mLMHZBowpRKG810L0S_rSWNtdu?yK$0~floe1 zQ9=EHqc{pWBQyF52m&1_44?fwNJ>BXA2^Q7{*8dY5)f$Y``dcX%Z3`W9D)8Iw+z|#36~6Nwz;MqFuxhwmd3gqljZ{ zd0fOM5h=EOU&Lk+I$Neighgc7azaEzgu#|40>}n%Qb6#)SZpko>gyRwq+)|3iKKv? z0~uSjCUa@iR?}wMR1JH2s-PNYjLZi`GiR%VMxmf*jo6ut!4)yGcM518jA>fW{#YvB zUl(sxRo^?@pRBWlc-npOq5hQXBVc9KduVL1H#V9&I66GEUqDk;?cj}#jt-9sP^#KQ zawL{=mEKHl!k`lallp00wRAhH#_gh!HSz>9Fy(-!vo&_Dm^bY#Gq;cT42;Dz0lSVY zu?_yyx;1SS1ndb%mKwv`$4gi-VA{se^ir<35IA|14<|an;JZ+0co(l7KnYLN%77$qkLp;6+u5kh0;z^Uv3UL8a zJ7ZM46Mvbr$>k?ZTek!>YG&5fi_>|^-4cFIut3%*IxT7rM{4rb%(+nYXsHERb%+om ziGsLPCfe1-S>S_2VHSLvYa_WXERfihvD}U{gqh-e4J39sx|TGT?oM{BP&{iHCk!HS zK36ab>M0{{8r!`Nf(NFJyYz}3(s6kNy|;=GsZrXF{pL1+q;!r6&YLE zS4fp%Vp72COZW=N^i?}0;|*8=OtFnEBZ>|gTkxuY)s@@lDj#2)|M5!s+z*dtEbr<-N>v;<;vB{mk-ENK6l;ml(EUN z@Whqxug`z+?fk_{kFQ;mv6)$3u7y|x!BFy zyPf`BHh?+{X>ThVDL|6O$0ZGlOBxH8Gz2cG$6Qj^=&#YkNW&%Z1_-WU%%r`DMr^}& zivAky+DNjWRDy6Do`-0-PCFtlz5U!Klm8Cvq#hu0q`aRuP`n zSdLb##2T<18|XM4MklYAt)l31b*yGD&l~dMtsu}%Pn6uZ(DODu9_%HEJ?N!3D@-NH z3iCz(g7|bzZ9Jb-lh4gZJVZZ*VTZd(dPw@C9fbc0a*1m=a}*$*R185bwN6ITzQGB)&~Rk2|z;$%e17ogrJu6mC&Rm{Ux+$$v_FM zT2d@wt(FXuYQ1(70-KA&>^3S1SOEn=x>X_SgF=04!eQc;MLhbD`0H_L@*W1r*Mq_T E0Au%`yZ`_I diff --git a/saltice-monitor-common/target/classes/cn/ljobin/bibi/utils/email/BaseMailSend.class b/saltice-monitor-common/target/classes/cn/ljobin/bibi/utils/email/BaseMailSend.class index 5f01cd76b0ce35284f228904c707ddb77c904aac..97519594124014c3e9b9ff9935e462062cb37525 100644 GIT binary patch delta 152 zcmbQv^qaB%)W2Q(7#J8#7`WLPIN2Gv7#TQ=Q}a?>a}zUj7#R#Te3J9@bF%W2GV}D4 zGLtg(Q}Tf_dHT8ed6^~oMf$!F+BdbhI59odS~HB1LBKb)BqKj1Ah9ShH?<_SsF;y~ m52_rhjFEvWIKQ+gIn^z5;^Z6wRz?Okpc5Dw*nuPy0|x+KYb^Ny delta 149 zcmey(IGri<)W2Q(7#J8#7a}zUj7#S=ze6kYD67_Qu^V0Q$ zONuh{(yfUQndmDa&03OKl9S5Fz@D6+SCX1n!pOjplbM(8nU|J7v7}srmzjYLXfHbu Oa{w{WS|G{9zy$zaoG5_+ diff --git a/saltice-monitor-common/target/classes/cn/ljobin/bibi/utils/email/impl/SendQqMailUtil.class b/saltice-monitor-common/target/classes/cn/ljobin/bibi/utils/email/impl/SendQqMailUtil.class index af9d61a7f75db9b1edf49322d0046ab4c3bf7b74..461f6abc5dcca44aee69aaf2e3f706536e6a682c 100644 GIT binary patch delta 1990 zcmb7FX;hR|7=FIl?#DM5CCyhGoWJ&}^I3GP7Lj zOWQ1>&1|s%8xUMtU9&Q?luFx4Ep0oeQ>T+XcfjhL{@9!|_df4(-}~HmnOWL@SO4(d zKU=l~NXIV*E`eW1Sqw5zuA@Tjl?DO`Dl}g$*9%k`h*56UIzkH8=vbg*p^h62EW(XC zZqjkHj$3rxsv{iF(6>8r2bLK;ey4%uxJxZ71nyP=?+NQzX`m-oDeY>3H3kxKufTl< z`oc7DKi0-z9Ud_7ARbcU!wNm3(0YX)Rp>EwxYoeqs8iw-3O%Worv#ohFci-?u>sEt zY&7s3o)>sQ;6)AAiePE|=_)Nuag&CaYG0suLZ#PVpnn(ub+)07CW&TjF^|}0Cbz_4TvvfsiLKZsuw7yYUX_@LY~CpG8eW%p18-_bG>>WL z_st2Gre}K>csh9XDsdFYBtFCE5?^4Ph6J;RH6d2w zOB@vVO5$tmF()~OIlhr-$G7Hk$8>k<|0z}DDTl7bAIAyRkSEy$RW$((p(OLDHrRcR z1?#9+W2OG9CY`0eP>w%PJ~2=dH0zu$v)J(T)~TH44^{Xy7}dT|UQJ<{uPCHJP(QgM zxX9dUw3{tXzwb4F)y9yN@B9o<#tIY}0<2ckP` z&OKXIIx4g5-0k#dw{RVA?v70vHi5c$*tquOng9d65QpKof*MILF!GhSio2mYAbM^< zmt|pfZa8AOCc=R}aB>#ULqE7MfKn1tkW5}FywlB7X~@H1-|H(YJu4tWD?_L4TL60RwE?sIw|VN(2|vkQYIc%SK^f z1j$iAoa&Ci?MYQ<`L#zdDAmPy5u`;hICUpVQzIC%0rN5$GC}EwZ9%$)KT^5Wg#WFg z^T-b8^#3^b$+Xk#>M+M=I#evj*;p?7j(R?M8CGB=Yh%L_)N*e?gt_gI_c0;0*u-fC z4&V?cawzfsa8zN9rhNqq4i?(N#0jE<3%g&yNUNvA3i|CAqt0SXrrN>_yohN z-kQonCi9Z%m_b6T*`@iEYz%r9wf>FTI+26tPIh*R1;Cz)AnKGmUF5NF8L zCNMiJFh^jnAPY^vJB8nZjy?Ab=f**oe>~XFQLiq)F{Dni(eY!zM0TF~#KdPbV|XJH zR4;4Mq&lLe9%N8Nodw14ad%Q%!f&a&8rR`nYT{{I$3L`p_&<9JKjJhe@HXnz>@Ftn JC0L3je*x{3ychrg delta 1880 zcmZuxYgANK6#nka+y{5=AWXRQB9y2kf(Q&qI;KFW`9Mp_2n}U;28@Hkpjp;fmYHRd z*PfP^T2%HzY(U6YmX@W_(|nZKOM9$Z`J+~?R`#6<{o!)0d-vIA?|t_9_SxS#`;(U^ zhYtMPwG%)Ne%2{!G~65o4{9~kiLqXXAM=G45TZfF0v%BzY@vomp*Cp| zMaN(~tYZzVD6GXJLVHw*$AoxXL_eY9Nvspor-b&j5bITJ(2;>>oOl)+Rcz9+8PBPB zUPY?}yT74Eg1fMxu_mL*U!7BzQP}R1Dx^5NUyu;hR28V4FyB|}moPfTa=8+%{w}w* zCCWKK4%PcYk1u{=ZyMNv zof49)7NxJXUXJdYiz_6^&B5yQQ3mp`%fN2zvG&MA?0I<0IxVM+%fnt3ZyR_A`&8^V zZ~*Tc_y7kD9Kv1$9}3Zfk65RHkMW6tPw|<7&vDqm7s$8DltIoTII7~9f#cX~tyZ#? zFAaQ!6V^UuR%}e2Z;>yzF>xsW(*xi<-;psw#rkBkna5)SM_u$LvTj}UijY{B3m4@;C?vcSgAhx? zn@FZM6loYnB&jICaAFvNB2u~-S@0qId~TD7CJ~*4$;{IS_J2^UV#;_GQ~xFy35A%( zf(qy?BX9vSE_EB!)bzB_@GkTNDbwGE;x;;L5Qub+V11XMIowZ?81>oYf%_OO=Wl( zDW;Mh#xPS3Bh~9L9by%KPSZ?>$y8x5D%}h@_Q7vD!WhwtN-q;83RmWKWZBS)nHN}0 zMvv=_&b`3biXmQA1jP3SxV@T4r=3e@s=L~tVkK6ig-ulW6mCQ)gV(kjJ9`a1JeZAW zt!nGDDzL-N_|Vjg@c`%po))N!^L zCETo(ThHU><=noEPo)nVP#)rTv-vR2;ijd8GLK-&38#!tf)59&_t1Wr_T$t~(0-Ek zU#b6&st7e^vY(mUs0h~+&>B*C7H*)n`MkFKymqoz(^$fp2$@2nuHT69MlwvnFGM<< z6cs$44)rXdDk|ovxar(is$woA74v5Br$dZW&+-_wi^S0tiH-h?4Alrea$lJ{DZ*VK zYOdSUiR^YH3hqmh6ILR=c;fNVW@D)p9G$dQ@~>**m3WT^H(hI4@4IC4_c)CocxCUP OU0n7Mi&};|vFtw$cX=HE diff --git a/saltice-monitor-common/target/classes/cn/ljobin/bibi/utils/email/impl/SprBooEmailUtil.class b/saltice-monitor-common/target/classes/cn/ljobin/bibi/utils/email/impl/SprBooEmailUtil.class index fcd3f1d4d917d6bdac786b7be46ddea8aef3aaa7..dcbc600b32e7dfa64b4a5e95229d3e69df47c63d 100644 GIT binary patch literal 8903 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 OyprqiXZKd|%Kr!U((|YQ delta 2758 zcmZuz3wRXO75?w;%-qRjHjl}3lkf-$gltGiAObEAO)N+Rg18EKRjoj>(03H!MS4rZH38;&vKk z9!?J!D^kok%{18-o#zh85_gQ;moD+o#3|yu8i@<;S-CT(2@xBc&}!quxYfqL@Na?X zZjG7kzG9ZwHsL=485<(EMW(h#I@V7OMZ4NM*4ua&@7cHoD{WlFh%LYYAHfb=2;p%n zQWg|6VMM@c?y_@?G$l!Q3+=hy43X)s zwCmjSc5SL-i!70C<7R~23SYUg3M&O_N6(n%Mmu5%)k^z*{Ja+_%!U)r}Ej1+q7HuC3hK9BFS!p0lbox~W}?akdyQin+Xf z$En>r-yDvgerovS{ku;-)_eMy$EBEHixN@lzUrHq-y|m5XcCjip)JaU#XGXaWJKJt zX|s(IQ7%yCzTqu&htgN|&(5e3?%vF@{wtgv!mZ10bkF8g>)Pao^5t$}?k?Axv&KE2 znU$iqbai!hshxGXW8K$sq=yO{bMB6zn1wP40xMXk1&R=M0ZUzEVkR+(nVFE7Nh@ca z`pgoJYxp#kGh>Aw7=Y*{@SvHakq{PREwPk!GiYaK!bTveHfn<#(8getV~Gt!N?T$hkr(a6J}(u(B~S>YsFY4R74<}2|1&4E~6w%G0a0cBe|0C1i3T^ zd6c2Aa8+@;9eqw*6Z9e1gbK(3^&sxQNnA z)OKShqttjcx&O`WT@=RnHSx(yHRm};`zAS_=&)$2`Z3k1?uX^n^kdpErjy9pet4ON ziOjts0j9+?$1Kj7o<(t78B-FbY;YK}xogg%fHPNV%v%v~u5zwUf;y)@39fNI zlmzpWfSXwo3!G~g1qQKjam8U|_A!)(z!0wUq6ha4V^Me*i^CNISTcadC8L?p=qwFt zyrt{Iv7q)6e3gDyQ^AU!k#|@&Mg5q_R9VLL8+x!XSwW#5%nRzu_)P)7K7{2OKF}$> ztWyv)J`h_$>6dYY{KoUWr2Z(5;W(KcB09rgAs5)Sys@M}_{i@Wia3jOk;l%SD||#s zo=l+^P)$6ZtWSUsC2-g^i%^D%n9TGl=N$)FwH2()DOk#$dNZXF_Qnm|w-q(4i)qY@ zM&ABXd>Yr|ek{Xoyd{UX9mjB5p6CUlF5eMAv+(l8sbh_>u$JN8D$=o9WN|HzYXw{@;#x6rDSNN##p_t(OHqqY;XajD zCzwfF7?DoHzGSzcxltK6Cy`{Bx8pPTEVKSu7S87wzn39z#OE23##23vFA#y2_F@-Y zCb4QDOJKc+{fPvB;35hoz9_Mqk6Ftk_B2Q|Y!4^FgCl%N$fV+BE#BILs@Lo>M(9`l Wd1zgY58+FkQ|V + + @@ -12,7 +14,7 @@ - id, linkInfo, `type`, body, pushTime + id, linkInfo, `type`, body, pushTime,title,messageType \ No newline at end of file diff --git a/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/service/Impl/EmailServiceImpl.java b/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/service/Impl/EmailServiceImpl.java index 7d24669..8a2506c 100644 --- a/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/service/Impl/EmailServiceImpl.java +++ b/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/service/Impl/EmailServiceImpl.java @@ -26,6 +26,6 @@ public class EmailServiceImpl extends ServiceImpl imp @Override public void recodeMonitorMsg(MonitorMessage monitorMessage) { - sendQQMailUtil.sendEmail("警告",monitorMessage.getPloy(),monitorMessage.getLinkInfo()); + sendQQMailUtil.sendEmail(monitorMessage); } } diff --git a/saltice-monitor-iot/target/classes/META-INF/saltice-monitor-iot.kotlin_module b/saltice-monitor-iot/target/classes/META-INF/saltice-monitor-iot.kotlin_module deleted file mode 100644 index 2983af70661ad375cc499ebc4da5a68ca46c532e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16 RcmZQzU|?ooU|@t|egFVe02KfL diff --git a/saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/mapping/EmailMapper.xml b/saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/mapping/EmailMapper.xml index c0a53df..7114ef6 100644 --- a/saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/mapping/EmailMapper.xml +++ b/saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/mapping/EmailMapper.xml @@ -5,6 +5,8 @@ + + @@ -12,7 +14,7 @@ - id, linkInfo, `type`, body, pushTime + id, linkInfo, `type`, body, pushTime,title,messageType \ No newline at end of file diff --git a/saltice-monitor-iot/target/classes/cn/ljobin/bibi/service/Impl/EmailServiceImpl.class b/saltice-monitor-iot/target/classes/cn/ljobin/bibi/service/Impl/EmailServiceImpl.class index f0b6ad3a588d5732ebcb4895a6467312ab6853e0..54e8d5e02877c633730a44ad7922cd33dbc64ffc 100644 GIT binary patch delta 275 zcmXYrNlwE+5JjKcb{e})213jbGLk_`7ATT$kRx#bu7G5THCKp)kjNqj$N@MG$?pz} zs$XCA>#2V8_iTFn+aG|6WlqX4BVptiGqFr9&z9Nl<=eEcX%<+nEc1c|z1qbe^(n44 zOmvYF(NGy5k!B(~X|8gw6k0?Gq28)Llk%;tfIomP9rYs2DL3+HzNM#|mgcS0NZslS wv;HAA>|_ldk%!elIt-Zd68*>cA4=|oyH_@iWFY1NdBY?9z0tN@}$HjOx)v?rE80;WkZ1dTW4SoUBZW337r8*fk>3 zL8knKmeMPIA`;OTVi9_>A845&W>$3PLcQ#O^Q$LpCYci5X($p^GJ(!a$e$HXpfevD I3BFo@A6>LU_5c6? -- Gitee From b1660c42a74b99179b6be0056c98462ce04f4f0f Mon Sep 17 00:00:00 2001 From: Ljolan <2018214546@qq.com> Date: Sun, 7 Jun 2020 14:24:19 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E7=89=A9=E8=81=94=E7=BD=91=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0-=E8=AE=BE=E5=A4=87=E6=8A=A5=E8=AD=A6=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0[=E5=AE=8C=E5=96=84]=20=E3=80=901=E3=80=91=E9=80=9A?= =?UTF-8?q?=E8=BF=87=E5=AE=89=E8=A3=85=E4=BA=86Free=20Mybatis=20plugin?= =?UTF-8?q?=E6=8F=92=E4=BB=B6=E5=88=86=E6=9E=90=E5=87=BA=E4=BA=86xml?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98=20=E3=80=902=E3=80=91=E9=80=9A?= =?UTF-8?q?=E8=BF=87FindBugs-IDEA=E6=8F=92=E4=BB=B6=E5=88=86=E6=9E=90?= =?UTF-8?q?=E4=BB=A3=E7=A0=81=E4=B8=AD=E7=9A=84bug=20[3]GsonFormat:json?= =?UTF-8?q?=E6=A0=BC=E5=BC=8F=E7=9A=84=E5=86=85=E5=AE=B9=E8=BD=AC=E6=88=90?= =?UTF-8?q?Object=E7=9A=84=E9=9C=80=E6=B1=82=20[4]Maven=20Helper:=E5=88=86?= =?UTF-8?q?=E6=9E=90maven=E4=BE=9D=E8=B5=96=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/compiler.xml | 1 + .idea/misc.xml | 9 + .idea/qaplug_profiles.xml | 465 ++++++++++++++++++ README.md | 8 +- .../java/cn/ljobin/bibi/BibiApplication.java | 2 +- .../system/controller/StubController.java | 148 ++++++ .../cn/ljobin/bibi/BibiApplication.class | Bin 2935 -> 2840 bytes saltice-monitor-common/pom.xml | 7 + .../java/cn/ljobin/bibi/stub/StubFactory.java | 12 + .../cn/ljobin/bibi/stub/TemplateStub.java | 153 ++++++ .../utils/email/impl/SprBooEmailUtil.java | 7 +- .../utils/email/impl/SendQqMailUtil.class | Bin 4807 -> 4807 bytes .../utils/email/impl/SprBooEmailUtil.class | Bin 8903 -> 8914 bytes .../bibi/mapper/mapping/EmailMapper.xml | 4 +- .../mapper/mapping/MonitorMessageMapper.xml | 4 +- .../bibi/mapper/mapping/EmailMapper.xml | 4 +- .../mapper/mapping/MonitorMessageMapper.xml | 4 +- 17 files changed, 814 insertions(+), 14 deletions(-) create mode 100644 .idea/qaplug_profiles.xml create mode 100644 saltice-monitor-admin/src/main/java/cn/ljobin/bibi/system/controller/StubController.java create mode 100644 saltice-monitor-common/src/main/java/cn/ljobin/bibi/stub/StubFactory.java create mode 100644 saltice-monitor-common/src/main/java/cn/ljobin/bibi/stub/TemplateStub.java diff --git a/.idea/compiler.xml b/.idea/compiler.xml index 409bf60..1f24d38 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -2,6 +2,7 @@ + diff --git a/.idea/misc.xml b/.idea/misc.xml index d452847..dc5eb4b 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,12 @@ + + @@ -19,4 +25,7 @@ + + \ No newline at end of file diff --git a/.idea/qaplug_profiles.xml b/.idea/qaplug_profiles.xml new file mode 100644 index 0000000..3dfd21f --- /dev/null +++ b/.idea/qaplug_profiles.xml @@ -0,0 +1,465 @@ + + + + + \ No newline at end of file diff --git a/README.md b/README.md index a7e66b1..b067575 100644 --- a/README.md +++ b/README.md @@ -4,4 +4,10 @@ 物联网平台-设备报警管理 #### 功能 -通过从activeMq获取异常报警信息,通过向用户邮箱发送异常报警邮件 \ No newline at end of file +通过从activeMq获取异常报警信息,通过向用户邮箱发送异常报警邮件 + +【 +系统动态扩展多个邮件代理服务器,系统统计每个代理服务的投递成功率, +每次接收到异常报警信息时从可用的代理服务列表中选择成功率最高的那个, + +】 \ No newline at end of file diff --git a/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/BibiApplication.java b/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/BibiApplication.java index b7d4be0..fbb18cb 100644 --- a/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/BibiApplication.java +++ b/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/BibiApplication.java @@ -36,7 +36,7 @@ import org.springframework.scheduling.annotation.Scheduled; public class BibiApplication { @Autowired private ActiveMqMessageSender sender; - @Scheduled(fixedDelay = 3000) + //@Scheduled(fixedDelay = 3000) public void schedule(){ MonitorMessage monitorMessage = new MonitorMessage(); monitorMessage.setClientId("123778"); diff --git a/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/system/controller/StubController.java b/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/system/controller/StubController.java new file mode 100644 index 0000000..390cbb8 --- /dev/null +++ b/saltice-monitor-admin/src/main/java/cn/ljobin/bibi/system/controller/StubController.java @@ -0,0 +1,148 @@ +package cn.ljobin.bibi.system.controller; + +import cn.ljobin.bibi.domain.monitor.MonitorMessage; +import cn.ljobin.bibi.domain.monitor.enums.LinkInfoType; +import cn.ljobin.bibi.enums.MessageType; +import cn.ljobin.bibi.enums.execption.MessageExceptionEnum; +import cn.ljobin.bibi.service.IMonitorMessageService; +import cn.ljobin.bibi.stub.StubFactory; +import cn.ljobin.bibi.utils.email.BaseMailSend; +import cn.stylefeng.roses.core.reqres.response.ResponseData; +import cn.stylefeng.roses.kernel.model.exception.ServiceException; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.*; + +import java.util.HashMap; + +/** + * @program: Iot-Monitor + * @description: + * @author: Mr.Liu + * @create: 2020-06-06 23:50 + **/ +@RestController +@Slf4j +@RequestMapping("/stub") +public class StubController { + private static HashMap obj = new HashMap<>(); + @Autowired + private StubFactory stubFactory; + @Autowired + private IMonitorMessageService monitorMessageService; + @GetMapping("/add") + public String addStub(@RequestParam("className") String className){ + String imports = "import cn.ljobin.bibi.domain.monitor.MonitorMessage;\n" + + "import cn.ljobin.bibi.enums.MessageType;\n" + + "import cn.ljobin.bibi.utils.email.BaseMailSend;\n" + + "import lombok.extern.slf4j.Slf4j;\n" + + "import org.apache.commons.lang3.time.DateFormatUtils;\n" + + "import org.slf4j.Logger;\n" + + "import org.slf4j.LoggerFactory;\n" + + "import org.springframework.core.io.ClassPathResource;\n" + + "import org.springframework.mail.javamail.JavaMailSenderImpl;\n" + + "import org.springframework.mail.javamail.MimeMessageHelper;\n" + + "import org.springframework.stereotype.Service;\n" + + "import javax.mail.MessagingException;\n" + + "import javax.mail.internet.MimeMessage;\n" + + "import java.io.BufferedReader;\n" + + "import java.io.IOException;\n" + + "import java.io.InputStream;\n" + + "import java.io.InputStreamReader;\n" + + "import java.text.MessageFormat;\n" + + "import java.util.Date;\n" + + "import java.util.Objects;\n" + + "import java.util.Properties;\n" + + "import java.io.IOException;\n" + + "import java.util.concurrent.Executors;\n" + + "import java.util.concurrent.LinkedBlockingQueue;\n" + + "import java.util.concurrent.ScheduledExecutorService;\n" + + "import java.util.concurrent.TimeUnit;\n"; + String statics="javaMailSender = new JavaMailSenderImpl();\n" + + " javaMailSender.setUsername(sendUserEmail);\n" + + " javaMailSender.setPassword(qqPassword);\n" + + " javaMailSender.setHost(\"smtp.qq.com\");\n" + + " javaMailSender.setPort(587);\n" + + " javaMailSender.setDefaultEncoding(\"UTF-8\");\n" + + " Properties props = new Properties();\n" + + " props.setProperty(\"mail.smtp.host\", \"smtp.qq.com\");\n" + + " props.setProperty(\"mail.transport.protocol\", \"smtp\");\n" + + " props.setProperty(\"mail.smtp.auth\", \"true\");\n" + + " props.setProperty(\"mail.smtp.connectiontimeout\", \"20000\");\n" + + " props.setProperty(\"mail.smtp.timeout\", \"20000\");\n" + + " javaMailSender.setJavaMailProperties(props);\n"; + String param="private static JavaMailSenderImpl javaMailSender;\n"; + String methodContent= "MimeMessage message = javaMailSender.createMimeMessage();\n" + + " MimeMessageHelper helper = null;\n" + + " try {\n" + + " helper = new MimeMessageHelper(message, true, \"UTF-8\");\n" + + " helper.setTo(new String[]{linkInfo});\n" + + " helper.setFrom(sendUserEmail);\n" + + " helper.setSubject(title);\n" + + " helper.setText(buildContent(title,content,type), true);\n" + + " String alarmIconName = \"success-alarm.png\";\n" + + " ClassPathResource img = new ClassPathResource(alarmIconName);\n" + + " helper.addInline(\"icon-alarm\", img);\n" + + " javaMailSender.send(message);\n" + + " } catch (MessagingException | IOException e) {\n" + + " e.printStackTrace();\n" + + " }\n" ; + try { + if(obj.get(className+"Stub")!=null){ + log.info("内存中已经有改实例"); + return "false"; + } + BaseMailSend s = stubFactory.createStub(imports,className,param,statics,methodContent); + obj.put(className+"Stub",s); + log.info("添加实例成功"); + return "true"; + } catch (Exception e) { + log.error("添加实例失败,{},{},{},{}",imports,className,param,methodContent); + e.printStackTrace(); + return "false"; + } + } + @PostMapping("/add2") + public ResponseData addStub2(@RequestParam("className") String className, + @RequestParam("imports") String imports, + @RequestParam("statics") String statics, + @RequestParam("param") String param, + @RequestParam("methodContent") String methodContent){ + try { + if(obj.get(className+"Stub")!=null){ + log.info("内存中已经有该实例"); + return ResponseData.success("内存中已经有该实例"); + } + BaseMailSend s = stubFactory.createStub(imports,className,param,statics,methodContent); + obj.put(className+"Stub",s); + log.info("添加实例成功"); + return ResponseData.success("添加实例成功"); + } catch (Exception e) { + log.error("添加实例失败,{},{},{},{}",imports,className,param,methodContent); + e.printStackTrace(); + return ResponseData.error("添加实例失败"); + } + } + @GetMapping("/send") + public ResponseData send(@RequestParam("className") String className){ + if(obj.get(className+"Stub")==null){ + log.info("内存中没有该实例"); + return ResponseData.success("内存中没有该实例"); + } + MonitorMessage monitorMessage = new MonitorMessage(); + monitorMessage.setClientId("123778"); + monitorMessage.setMessageType(MessageType.SUCCESS); + monitorMessage.setTitle("有小偷,快跑,测试。。。"); + monitorMessage.setLinkInfo("1337792659@qq.com"); + monitorMessage.setLinkInfoType(LinkInfoType.EMAIL); + monitorMessage.setType(LinkInfoType.EMAIL.getId()); + monitorMessage.setPloy("小屁孩"); + if(monitorMessageService.save(monitorMessage)){ + obj.get(className+"Stub").sendEmail(monitorMessage); + return ResponseData.success("发送成功"); + }else { + return ResponseData.error("发送失败"); + } + } +} diff --git a/saltice-monitor-admin/target/classes/cn/ljobin/bibi/BibiApplication.class b/saltice-monitor-admin/target/classes/cn/ljobin/bibi/BibiApplication.class index 434b38ed2335a5bb221841ffcb9e4a1282018bd8..cec1b52789abb5654309de62267987c24a30d286 100644 GIT binary patch delta 403 zcmWlVJ5y6p6otQYGxwP@&M=Zx5XZv8LNtUVgogrxh^SF{7>zsw7Z4Gy@c}3aI2P$o z!w;aMb239=;SX@&zofHM&MDUZ)>?aJ7yEDWI9dPm@7HgjhwlL$jJk{kSd4l+FdTPz z7%;&j6DB<#8$R)PYFPAn#&hFd1lmm*H|;TFIO~((Wk88nF0TX1yfMw38S@?saTZw$ zShlISto;0OCYlZF!iudDs*-&pz9v~`L-LkQ)v#~o-VqAg(wR&?U+B(d3qw)VRoUK> zY!SM=mu#~miTEI?@=@}MO~EbIvJ>jR?I_D>zxtU_(n-qYi)5EQK}wyAl;^T9`N}s{ zbgo}Hkkrh@y5x|fX3dFWLa3I1V*A|Yjyeq{+S7FFk7cxML0ZG3N4fE?k*xL>Ij(7D kamee`TgIwVsM1G&8Bt+?LA}1Kbx&&u!LaVDjBp<=0f3J~?f?J) delta 464 zcmWlTO;1xn6o#L<&F#INPDlvQu+XXt7cRs?xh(}1M3iskQ_+Hg?M0~7QY#96fPCm5 zn2kG)apB6ukbq&~4FSM%rfWkNb;C@+gY&biBBO; zkx;Ve^3-GL_wK%Mf)Sna8}+wH;{0S`DJ-s*!(x{}E-tTy#lEn-uXJ>#w*1tuN7}t zQ>;@FT-IORX8p^J>I1jF;VmV_S&|;_6z};UNa|ye^gT8dn|#zFdZBJhv28c*D0ca@ zmx@*+!qMMjKN9Ecl?bjFrG{uFMw)g#EC(9{GG>@Has`2bPlx^~TY7WGJ9J|I21MyH i)zv&sjcYZo)15~Y=;4ML_ZrND$anSPDi^usC4@las^ diff --git a/saltice-monitor-common/pom.xml b/saltice-monitor-common/pom.xml index c948826..78f5a1a 100644 --- a/saltice-monitor-common/pom.xml +++ b/saltice-monitor-common/pom.xml @@ -18,6 +18,7 @@ UTF-8 1.8 1.8 + 1.0 @@ -30,6 +31,12 @@ org.springframework.boot spring-boot-starter-mail + + + com.itranswarp + compiler + ${com.itranswarp.compiler.version} + diff --git a/saltice-monitor-common/src/main/java/cn/ljobin/bibi/stub/StubFactory.java b/saltice-monitor-common/src/main/java/cn/ljobin/bibi/stub/StubFactory.java new file mode 100644 index 0000000..9ae5822 --- /dev/null +++ b/saltice-monitor-common/src/main/java/cn/ljobin/bibi/stub/StubFactory.java @@ -0,0 +1,12 @@ +package cn.ljobin.bibi.stub; + +/** + * @program: Iot-Monitor + * @description: 动态创建邮件代理服务 + * @author: Mr.Liu + * @create: 2020-06-06 22:52 + **/ + +public interface StubFactory { + T createStub(String imports ,String className,String parem,String statics , String methodContent) throws Exception; +} diff --git a/saltice-monitor-common/src/main/java/cn/ljobin/bibi/stub/TemplateStub.java b/saltice-monitor-common/src/main/java/cn/ljobin/bibi/stub/TemplateStub.java new file mode 100644 index 0000000..36699a0 --- /dev/null +++ b/saltice-monitor-common/src/main/java/cn/ljobin/bibi/stub/TemplateStub.java @@ -0,0 +1,153 @@ +package cn.ljobin.bibi.stub; + +import cn.ljobin.bibi.utils.email.BaseMailSend; +import com.itranswarp.compiler.JavaStringCompiler; +import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.io.IOException; +import java.util.Map; + +/** + * @program: Iot-Monitor + * @description: 模板 + * @author: Mr.Liu + * @create: 2020-06-06 23:03 + **/ +@Service +@Slf4j +public class TemplateStub implements StubFactory{ + private final static String STUB_SOURCE_TEMPLATE = + "package cn.ljobin.bibi.utils.email.impl;\n" + + "import cn.ljobin.bibi.utils.email.impl.*;\n" + + "import cn.ljobin.bibi.domain.monitor.MonitorMessage;\n" + + "import cn.ljobin.bibi.enums.MessageType;\n" + + "import java.util.concurrent.Executors;\n" + + "import java.util.concurrent.LinkedBlockingQueue;\n" + + "import java.util.concurrent.ScheduledExecutorService;\n" + + "import java.util.concurrent.TimeUnit;\n" + + //TODO Import + "%s\n"+ + //TODO ClassName + "public class %s implements BaseMailSend {\n" + + "private static String buffer;\n" + + "private static String sendUserEmail = \"2018214546@qq.com\";\n" + + " private static String qqPassword = \"ujpiarknosuybadb\";\n" + + "/**保存从activemq获取的消息*1024*1024 = 1048576*/\n" + + " private static final LinkedBlockingQueue monitorMessages = new LinkedBlockingQueue<>(2<<20);\n" + + " /**上面那个满了就保存到下面这个**/\n" + + " private static final LinkedBlockingQueue monitorMessages2 = new LinkedBlockingQueue<>(2<<20);\n" + + " private static final ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(10);\n" + + //TODO Parem + "%s\n" + + //TODO Static + "static{%s}\n" + + " static {\n" + + " String fileName = \"pod-scale-alarm.html\";\n" + + " InputStream inputStream = ClassLoader.getSystemResourceAsStream(fileName);\n" + + " if(inputStream==null){\n" + + " System.err.println(\"文件读取失败\"+fileName);\n" + + " }else {\n" + + " BufferedReader fileReader = new BufferedReader(new InputStreamReader(inputStream));\n" + + " StringBuilder buffers = new StringBuilder();\n" + + " String line = \"\";\n" + + " try {\n" + + " while ((line = fileReader.readLine()) != null) {\n" + + " buffers.append(line);\n" + + " }\n" + + " buffer = buffers.toString();\n" + + " } catch (Exception e) {\n" + + " System.err.println(\"读取文件失败,fileName:\"+fileName+ e.toString());\n" + + " } finally {\n" + + " try {\n" + + " inputStream.close();\n" + + " fileReader.close();\n" + + " } catch (IOException e) {\n" + + " e.printStackTrace();\n" + + " }\n" + + " }\n" + + " }" + + " for (int i = 0; i < 10; i++) {\n" + + " scheduledExecutorService.scheduleWithFixedDelay(()->{\n" + + " //弹出队顶元素,队列为空时返回null\n" + + " MonitorMessage monitorMessage = monitorMessages.poll();\n" + + " if(monitorMessage!=null){\n" + + " send(monitorMessage.getTitle(),\n" + + " monitorMessage.getPloy(),\n" + + " monitorMessage.getLinkInfo(),\n" + + " monitorMessage.getMessageType());\n" + + " }\n" + + " },0,1000, TimeUnit.MILLISECONDS);\n" + + " }\n" + + " scheduledExecutorService.scheduleWithFixedDelay(()->{\n" + + " //弹出队顶元素,队列为空时返回null\n" + + " MonitorMessage monitorMessage = monitorMessages2.poll();\n" + + " if(monitorMessage!=null){\n" + + " send(monitorMessage.getTitle(),\n" + + " monitorMessage.getPloy(),\n" + + " monitorMessage.getLinkInfo(),\n" + + " monitorMessage.getMessageType());\n" + + " }\n" + + " },0,10, TimeUnit.SECONDS);\n" + + " }" + + " @Override\n" + + " public void sendEmail(MonitorMessage monitorMessage) {\n" + + " try {\n" + + " monitorMessages.add(monitorMessage);\n" + + " }catch (IllegalStateException e){\n" + + " monitorMessages2.offer(monitorMessage);\n" + + " }" + + " }\n" + + //TODO 下面是要添加的方法 MethodContent + " public static void send(String title, String content, String linkInfo, int type) {\n" + + "System.err.println(\"send begin\");\n" + + " %s\n" + + "System.err.println(\"send ok\");\n" + + " }\n" + + "private static String buildContent(String title,String body,int isDanger) throws IOException {\n" + + " String contentText = body+\"
以下是物联网设备详细信息, 敬请查看.
below is the information of service instance scale, please check. \";\n" + + " String header = \"分区(Namespace)服务(Service)伸缩结果(Scale Result)伸缩原因(Scale Reason)当前实例数(Pod instance number)\";\n" + + " String emailHeadColor;\n" + + " switch (isDanger){\n" + + " case MessageType.ERROR:\n" + + " emailHeadColor = \"#cc1d0c\";\n" + + " break;\n" + + " case MessageType.SUCCESS:\n" + + " emailHeadColor = \"#10fa81\";\n" + + " break;\n" + + " case MessageType.WANNER:\n" + + " emailHeadColor = \"yellow\";\n" + + " break;\n" + + " default:\n" + + " emailHeadColor = \"#aaa\";\n" + + " }\n" + + " String date = DateFormatUtils.format(new Date(), \"yyyy/MM/dd HH:mm:ss\");\n" + + " String linesBuffer = \"湖南分区集群服务服务暂停异常2\";\n" + + " String htmlText = MessageFormat.format(buffer, title,emailHeadColor, contentText, date, header, linesBuffer);\n" + + " htmlText = htmlText.replaceAll(\"\", \"\");\n" + + " htmlText = htmlText.replaceAll(\"\", \"\");" + + " return htmlText;\n" + + " }" + + "}"; + + @Override + public T createStub(String imports ,String className,String parem,String statics , String methodContent) throws Exception{ + className = className + "Stub"; + String source = String.format(STUB_SOURCE_TEMPLATE, imports, className, parem,statics, methodContent); + String stubFullName = "cn.ljobin.bibi.utils.email.impl." + className; + //编译源代码 + JavaStringCompiler compiler = new JavaStringCompiler(); + try { + Map results = compiler.compile(className + ".java", source); + // 加载编译好的类 + Class clazz = compiler.loadClass(stubFullName, results); + // 把实例化 + BaseMailSend stubInstance = (BaseMailSend) clazz.newInstance(); + log.info(stubInstance.toString()); + // 返回这个桩 + return (T) stubInstance; + } catch (IOException | ClassNotFoundException | IllegalAccessException | InstantiationException e) { + throw new RuntimeException(e); + } + } +} diff --git a/saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/email/impl/SprBooEmailUtil.java b/saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/email/impl/SprBooEmailUtil.java index bfba8ca..b8d740c 100644 --- a/saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/email/impl/SprBooEmailUtil.java +++ b/saltice-monitor-common/src/main/java/cn/ljobin/bibi/utils/email/impl/SprBooEmailUtil.java @@ -27,7 +27,6 @@ import java.util.concurrent.Executors; import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.TimeUnit; - /** * @program: Iot-Monitor * @description: @@ -42,10 +41,10 @@ public class SprBooEmailUtil implements BaseMailSend { private static JavaMailSenderImpl javaMailSender; private static String buffer; /**保存从activemq获取的消息*1024*1024 = 1048576*/ - public static LinkedBlockingQueue monitorMessages = new LinkedBlockingQueue<>(2<<20); + public static final LinkedBlockingQueue monitorMessages = new LinkedBlockingQueue<>(2<<20); /**上面那个满了就保存到下面这个**/ - public static LinkedBlockingQueue monitorMessages2 = new LinkedBlockingQueue<>(2<<20); - public static ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(10); + public static final LinkedBlockingQueue monitorMessages2 = new LinkedBlockingQueue<>(2<<20); + public static final ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(10); static { //加载邮件html模板 String fileName = "pod-scale-alarm.html"; diff --git a/saltice-monitor-common/target/classes/cn/ljobin/bibi/utils/email/impl/SendQqMailUtil.class b/saltice-monitor-common/target/classes/cn/ljobin/bibi/utils/email/impl/SendQqMailUtil.class index 461f6abc5dcca44aee69aaf2e3f706536e6a682c..5408c8bc970cbd81ccf1fee147645d5690593384 100644 GIT binary patch delta 14 VcmX@EdR%pbEHk6gW;y1S`~W6R1ZV&N delta 14 VcmX@EdR%pbEHk6QW;y1S`~W6F1ZDsL diff --git a/saltice-monitor-common/target/classes/cn/ljobin/bibi/utils/email/impl/SprBooEmailUtil.class b/saltice-monitor-common/target/classes/cn/ljobin/bibi/utils/email/impl/SprBooEmailUtil.class index dcbc600b32e7dfa64b4a5e95229d3e69df47c63d..0baa0f9b55980ab68b4f7d022ff716a77d7a4121 100644 GIT binary patch delta 2758 zcmai0d3;vI6+I_k^3BW3O9&7G0Ru>pRYH-l%bo;~ouD8AAp~R#1VUJo^kb7GfU-Ox ziin^fpeT?i$Wps&6}L)jYg^G$L1=3&wPLG4Jo5tjYyWAIZ|2V2nS0N@_uR?%YUaC{ zk=L)Eco{%Ct6g-$nOOA0uU%x~HwN$7#c%E6cUF4e#RUA`;13S|=pq&$7@W29hgSKK zmHuRhbFP+uw$jHA&Kq2Ck%UhiT(n!4T>J%pwTAv?Z++@S@OKxV;U96hjDH$@ZtyP` z>bHG|i zb=j27>~?d9x4LY>?>TI#0C<~WE5p_kwnf2PH9Fo(qPE)J~+ez))1{o#fqh*0(Cd_RisRlgZMh3;9yk*crY`Q5^=Fu}hb zJ{LdA28AmsjNxeiQ&SdShH?)pu+rlgX8S9hmJQa}#aL#0D8&yv-pzZ6&VDB+$$!gf zn_k9oMB?n+#kn2xbLY+Im|avjYu*fx<9V-#yH2GNSJJjhip6Sb1?p<%Pl$7gxS!wE~VmxTCo!!A7Hw{CQa zRes%+F_9&3(AXAT{B|vQf?3%NX0b1rRW8jbmZTt7Nshv5t;N&-S}WJm8SRPF8Y{Hw zs9A|aOuJ*?k>Kh&jp1N3wH4ND;nkkN20W-0@enr3Lxo?Hl9p!=C&TvOVqsl|I4sfm zrFsOH2X~tzq_u-h*sME1gBw_ILO0tRmeKK8Psm+YJ=LX6MGa?k}`Nidm;I$KoyE3imJPo)!K}avzt=Zx6*Ko zy`jw!h!=D&EawC8q9h{-DL5+02{Mv|m}^L{O-48zzKW1!922N$<+fRnlK4=Nl0(`& ztYjp*wqc~L@V`#&I@;2sg{%Ryl&INAz#P;^J{n>!nqZ#(oz6i^75pZhUF}->A@J{j zSJBeoxU8xd1FNf=cAfN{)%#?1vaC*#)m&Mfs{47eIz?8e|39n3b+Xnf5L%?@g_EV# z4Vn#QTGJ{FIU#_EO+rBx792;R!MHWxzM6A^YGI%%s={Ka{0+_f2cEVV{F z+K8sNqp2F9of`TM{dPfT^b{fbNE)WI6IHEg=z*CcMR}QW;;C@~2Y1BIRpRo|f_*$!Fy51F`J_ zM(B&qNPLM=>WDJ+RJ;ES zKi4;eMCIof3INPfC0`ZMYuPXs-Zcyh*!auqXkzf1!RuPqA8l}Yh$+RvdjkP))TnVx z?ZIzPsl0F4PCgy330?zSMIpaJbAfnM4x;cD-qsu^lD(tPuNLB6KCcZ|hz{~FpF;`< TYMqQIB__m7X6aKa4P)jvWfLk* delta 2704 zcmah~X?RuD6&fMI$}Nk9aV zt4s=liXaLCX=|m{Qmt691E{sORohx?YbR~1*iweBa|8DCSM%lVv(MS*?7h|=-g~3q zwSw5$D<@w95aDqbJ#jt}xp>1x0p2ut%Wi&VH*Z_*=PoAW9fMyu_@#?P{L0{6yS`_Q z?_2HHR{X}*_P191z`^efK6H_W-#hro9{s_^AMvqu^e6l3&rS?~aq(CDEeW6CQ-i-7 z{KLfr{L|nw7dPR&6`wn}VAn4k{L8_=9b9zq9|xBVF1zT0^A4`KxJo#roHEWZ!sgc>|jZJ6jm0xxA4r9kz0qZe3;=who~k zU_G>P*_N61ILl$S%XYlUVS5qa*9|!;EY?0%w4!hbH z-C~B_Z8}7BGJ9Cj(_t^W-eyI_ir$8OT+9$r_SMRM4*NSC;BcVB+Z_&ac!$Hm_GWH# zfCY&xx?A)mQNR z-0*37zA+ypkG7=nnF?b##=l@1QtMFfVHIK?@8nn_+b@mJPV=zVp4`Q;9+qQ;$8j9* zpK@{|b-bHMonN}7w0n7J<(%&0YO3Z{&hdB;CwRCQwH_yOlE=vscm~gUoWiMoB(X53 zj*|#?URkuVYiW6DRfWeAe%)}I$LTEf@Gxh1Sc0Yg{=}9kWgcg8mf>uVb2!(3HL+i4 z9_qKbZA0_9z|VHqh00msA88S`hA)fg_aSE~FD-k?x5 zYy6qs(9mKo@eg}FvzJmZ?zN)Uie+4GD6T8HN`SE4zvxB6%ED@{@gvEdLd#I=PfzZe zTF149>pZS!oriT;@9#;@2-kaT;0FK2Op(HjcYynoaDcf(mC`H zAND^@S)8|>J484y8m+0WsVZGKYF5qM=*;S7VeU*ty_Q`bck>a$M?LQ0Uc<*c?&E$L z9{2bJ_Yyh&Wv@-+%gru?ohNy~4$D)Gr&?w*^B`fy6$~9SI)9wuA&*bqr%3f)e&FD=1DcPW1cdg1L5;{K*9uJ;wkPHWhnK{^~jn{Mo_hFNE#QoT;2o1i| zx?7pO+!A(xmI~`KBnhP_JZWli`?eiI+B?{S2lNKG@tPN_ZN-D~woRu7aU%_U2M=kJ zKv^swwM!6ZSL;JD8)pPGyjUr3s}yH7GQ_f@nx&g~MZ_srtn$Tbj3Q4I))FC|C9Lxm zeT8Dhgkg<**DI#QwoqR3(GNR>H>_7(u@k$5r9|IAyYYzP%vZ!mrRhs>jYw|69$kb& z>q{_Hmx!#F%p^OM#KRq0%M}ze!PvHv% zph%%d;Si?aFs8}J20RBJ$8_^}kcVZekPUL3)P5YfMruEfib|X!Y}T7vMNij@W2lXZ zRX=Ty>o7sVu4{!~YNIgznstgmoY1|ng6E-8nh}Hyd_$TOWF!pdJ3M+;P-6)MpNQT;TQ zqXQNNbZtAkI<@VGAie`$LI;EAoh%*&}&t+Y=}{DUe8XPaygN78*=g4<5YwVPIG!LmH}1phhNt zN4p_G;onDJA@3+Zw;&mv)TCXJrBUvT9_WSJ&|9rAK=KasL9yyI75#;F0OsO$RAG?1 zaj?e5j!J>XWVrgeP}vx!fh$rg<*NCIDF69txB``ZxT;sEY7G;Mq8MJpP`o7L%QBvp z@r;bG%Xm)uo9eUoFd83enm)mu_yYR%!(DVRj;R>W4BXB3xQAUZfe}pPAWULDrm`3% zoThaa=5m=JUZ2jb!O)$Q+%2MZ{9*}0VkglazJ5(JVz?CF5wtk*jN-cj7!unB_?~(! zUYXd7Q_`Ru?85g2oq`j=EBJvbQK$}kRc+qX3*+HkMsd)Kr>~%m!D|LT)V9S~gEK{D zB@Ryt6r8=Pu`x{-zr3a5p0#s)CVVycF2E&J@uG?oFR=D|`A7J%)+DvqPxSd|HO}!_ e9k@btm`C{xGB`y0mWX2>LLAC`eVVip9Qt1|+zS@~ diff --git a/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/mapping/EmailMapper.xml b/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/mapping/EmailMapper.xml index 7114ef6..c0a53df 100644 --- a/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/mapping/EmailMapper.xml +++ b/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/mapping/EmailMapper.xml @@ -5,8 +5,6 @@ - - @@ -14,7 +12,7 @@ - id, linkInfo, `type`, body, pushTime,title,messageType + id, linkInfo, `type`, body, pushTime \ No newline at end of file diff --git a/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/mapping/MonitorMessageMapper.xml b/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/mapping/MonitorMessageMapper.xml index 212dcc1..2f2acd6 100644 --- a/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/mapping/MonitorMessageMapper.xml +++ b/saltice-monitor-iot/src/main/java/cn/ljobin/bibi/mapper/mapping/MonitorMessageMapper.xml @@ -6,6 +6,8 @@ + + @@ -13,7 +15,7 @@ - id,clientId, linkInfo, `type`, ploy, insertTime + id,clientId, linkInfo, `type`, ploy, insertTime,title,messageType \ No newline at end of file diff --git a/saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/mapping/EmailMapper.xml b/saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/mapping/EmailMapper.xml index 7114ef6..c0a53df 100644 --- a/saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/mapping/EmailMapper.xml +++ b/saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/mapping/EmailMapper.xml @@ -5,8 +5,6 @@ - - @@ -14,7 +12,7 @@ - id, linkInfo, `type`, body, pushTime,title,messageType + id, linkInfo, `type`, body, pushTime \ No newline at end of file diff --git a/saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/mapping/MonitorMessageMapper.xml b/saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/mapping/MonitorMessageMapper.xml index 212dcc1..2f2acd6 100644 --- a/saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/mapping/MonitorMessageMapper.xml +++ b/saltice-monitor-iot/target/classes/cn/ljobin/bibi/mapper/mapping/MonitorMessageMapper.xml @@ -6,6 +6,8 @@ + + @@ -13,7 +15,7 @@ - id,clientId, linkInfo, `type`, ploy, insertTime + id,clientId, linkInfo, `type`, ploy, insertTime,title,messageType \ No newline at end of file -- Gitee