嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 4 元微信扫码支付:4 元
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
简单易用的物联网平台
可用于搭建物联网平台以及二次开发和学习。适用于智能家居、智慧办公、智慧社区、农业监测、水利监测、工业控制等。
- 权限管理: 用户管理、部门管理、岗位管理、菜单管理、角色管理、字典和参数管理等
- 系统监控: 操作日志、登录日志、系统日志、在线用户、服务监控、连接池监控、缓存监控等
- 产品管理: 产品、产品物模型、产品分类、产品固件、设备授权码、自定义告警等
- 设备管理: 设备控制、设备分组、设备定时、设备日志、监测统计、设备定位、设备分享、设备禁用、OTA升级、实时状态、影子模式、实时监测、加密认证等
- EMQ管理: Mqtt客户端、监听器、消息主题、消息订阅、插件管理、规则引擎、资源
- 硬件 SDK: 支持WIFI和MQTT连接、物模型响应、实时监测、定时上报数据、AES加密、NTP时间、AP配网等
- 物模型管理: 属性(设备状态和监测数据),功能(执行特定任务),事件(设备主动上报给云端)
- 其他功能:多租户、场景联动、视频监控、数据可视化平台、统计、新闻资讯、通知公告、支持TDengine时序数据库
- 开发中功能:网关、TCP/Modbus协议支持、云云对接智能音箱、第三方登录、设备管理界面自定义等
-
.
├── 0567774b7cad8f830060a313ede496e5_haolizi.zip
└── wumei-smart-master
├── LICENSE
├── README.md
├── app
│ ├── README.md
│ ├── wumei.apk
│ └── wumei.ipa
├── docker
│ ├── data
│ │ ├── README.md
│ │ ├── docker-compose.yml
│ │ ├── emqx
│ │ │ └── conf
│ │ │ ├── emqx_auth_http.conf
│ │ │ └── emqx_web_hook.conf
│ │ ├── java
│ │ │ └── server.jar
│ │ ├── mysql
│ │ │ ├── initdb
│ │ │ │ └── wumei-smart.sql
│ │ │ └── mysql.cnf
│ │ └── nginx
│ │ ├── html
│ │ │ ├── favicon.ico
│ │ │ ├── html
│ │ │ │ └── ie.html
│ │ │ ├── index.html
│ │ │ ├── js
│ │ │ │ └── echarts.min.js
│ │ │ ├── map-geojson
│ │ │ │ ├── 110000.json
│ │ │ │ ├── 120000.json
│ │ │ │ ├── 130000.json
│ │ │ │ ├── 140000.json
│ │ │ │ ├── 150000.json
│ │ │ │ ├── 210000.json
│ │ │ │ ├── 220000.json
│ │ │ │ ├── 230000.json
│ │ │ │ ├── 310000.json
│ │ │ │ ├── 320000.json
│ │ │ │ ├── 330000.json
│ │ │ │ ├── 340000.json
│ │ │ │ ├── 350000.json
│ │ │ │ ├── 360000.json
│ │ │ │ ├── 370000.json
│ │ │ │ ├── 410000.json
│ │ │ │ ├── 420000.json
│ │ │ │ ├── 430000.json
│ │ │ │ ├── 440000.json
│ │ │ │ ├── 450000.json
│ │ │ │ ├── 460000.json
│ │ │ │ ├── 500000.json
│ │ │ │ ├── 510000.json
│ │ │ │ ├── 520000.json
│ │ │ │ ├── 530000.json
│ │ │ │ ├── 540000.json
│ │ │ │ ├── 610000.json
│ │ │ │ ├── 620000.json
│ │ │ │ ├── 630000.json
│ │ │ │ ├── 640000.json
│ │ │ │ ├── 650000.json
│ │ │ │ ├── 710000.json
│ │ │ │ ├── 810000.json
│ │ │ │ ├── 820000.json
│ │ │ │ └── china.json
│ │ │ ├── robots.txt
│ │ │ └── static
│ │ │ ├── css
│ │ │ │ ├── app.13e03d78.css
│ │ │ │ ├── chunk-01ef53b6.3a8cae2a.css
│ │ │ │ ├── chunk-05c003da.cba7792e.css
│ │ │ │ ├── chunk-089dff80.a2cbe23d.css
│ │ │ │ ├── chunk-0ec87556.a0bc207e.css
│ │ │ │ ├── chunk-1208fcbe.0113c56b.css
│ │ │ │ ├── chunk-20708a12.76180aa3.css
│ │ │ │ ├── chunk-212cf630.d939784f.css
│ │ │ │ ├── chunk-217f35d6.348131f7.css
│ │ │ │ ├── chunk-2b1e05d4.f8409f53.css
│ │ │ │ ├── chunk-30dee6ba.c98a66ea.css
│ │ │ │ ├── chunk-322338bd.4dc16f66.css
│ │ │ │ ├── chunk-345dd7f2.265d9d9a.css
│ │ │ │ ├── chunk-3c3f73de.b94b48c5.css
│ │ │ │ ├── chunk-40fa56d7.45a8262a.css
│ │ │ │ ├── chunk-444dbb2e.1154d03c.css
│ │ │ │ ├── chunk-4fa3cd9b.acb7f2b5.css
│ │ │ │ ├── chunk-503e96e7.4145e07f.css
│ │ │ │ ├── chunk-534bfe5d.4e8df5b3.css
│ │ │ │ ├── chunk-55d183ec.3ee0b3ca.css
│ │ │ │ ├── chunk-57c7bd1b.84f98409.css
│ │ │ │ ├── chunk-5b83c289.ce2a2394.css
│ │ │ │ ├── chunk-5d5dae90.2fe730cc.css
│ │ │ │ ├── chunk-6a51e97f.27e4d2df.css
│ │ │ │ ├── chunk-6b7bd194.cba7792e.css
│ │ │ │ ├── chunk-7038a376.3a8cae2a.css
│ │ │ │ ├── chunk-722d83df.f8bb9930.css
│ │ │ │ ├── chunk-73a35ad3.872b3fd2.css
│ │ │ │ ├── chunk-7478a735.790b0602.css
│ │ │ │ ├── chunk-780d27a9.bc63431f.css
│ │ │ │ ├── chunk-7904333e.5ecb98dc.css
│ │ │ │ ├── chunk-7d80f20e.8e33e124.css
│ │ │ │ ├── chunk-82e00426.f85bafe7.css
│ │ │ │ ├── chunk-84ab2b1e.4f41ae6c.css
│ │ │ │ ├── chunk-857102da.7dd1700d.css
│ │ │ │ ├── chunk-ba509436.0b5d3873.css
│ │ │ │ ├── chunk-c28ad000.b5bdb2c6.css
│ │ │ │ ├── chunk-c375e110.c1c799ed.css
│ │ │ │ ├── chunk-commons.2f319299.css
│ │ │ │ ├── chunk-de8781a4.038aa1f8.css
│ │ │ │ ├── chunk-elementUI.6e808e7d.css
│ │ │ │ ├── chunk-f9a89ad4.f8bb9930.css
│ │ │ │ └── chunk-libs.cecb3c02.css
│ │ │ ├── fonts
│ │ │ │ ├── element-icons.535877f5.woff
│ │ │ │ └── element-icons.732389de.ttf
│ │ │ ├── img
│ │ │ │ ├── 401.089007e7.gif
│ │ │ │ ├── 404.a57b6f31.png
│ │ │ │ ├── 404_cloud.0f4bc32b.png
│ │ │ │ ├── code.4ae965b2.jpg
│ │ │ │ ├── dark.412ca67e.svg
│ │ │ │ ├── guang.ca9c02b4.png
│ │ │ │ ├── left_top_hong.cd40dc70.png
│ │ │ │ ├── left_top_huang.625500ce.png
│ │ │ │ ├── left_top_lan.443aa307.png
│ │ │ │ ├── left_top_lv.2e344fbc.png
│ │ │ │ ├── light.4183aad0.svg
│ │ │ │ ├── pageBg.f9f9dcd5.png
│ │ │ │ ├── phone.f3083d2f.png
│ │ │ │ ├── phone.f63a3b9e.jpg
│ │ │ │ ├── product.8957f07e.jpg
│ │ │ │ ├── profile.8ea50b80.jpg
│ │ │ │ └── top.41ada94a.png
│ │ │ └── js
│ │ │ ├── app.527a5722.js
│ │ │ ├── chunk-005cb0c7.c9589208.js
│ │ │ ├── chunk-01ef53b6.e660ff6a.js
│ │ │ ├── chunk-05c003da.de7d8fe7.js
│ │ │ ├── chunk-089dff80.f1bc5f12.js
│ │ │ ├── chunk-09798080.f8e197dc.js
│ │ │ ├── chunk-0a3b683f.c51aed2b.js
│ │ │ ├── chunk-0d5b0085.20b2e268.js
│ │ │ ├── chunk-0ec87556.783840e7.js
│ │ │ ├── chunk-1022b97a.c4780d40.js
│ │ │ ├── chunk-1208fcbe.3f412d2c.js
│ │ │ ├── chunk-1348daec.711f7914.js
│ │ │ ├── chunk-185f9102.d9016665.js
│ │ │ ├── chunk-1b192f48.659d6648.js
│ │ │ ├── chunk-1c8de8cb.31faff14.js
│ │ │ ├── chunk-20708a12.5b2dbb61.js
│ │ │ ├── chunk-210ca3e9.88e05161.js
│ │ │ ├── chunk-210ce324.66315f91.js
│ │ │ ├── chunk-212cf630.7ba16b19.js
│ │ │ ├── chunk-217f35d6.6d5996e1.js
│ │ │ ├── chunk-2727631f.538b8335.js
│ │ │ ├── chunk-28b7a9aa.25d7132a.js
│ │ │ ├── chunk-2b1e05d4.094cab16.js
│ │ │ ├── chunk-2bb7b688.416cfb66.js
│ │ │ ├── chunk-2d0a3b04.123273b4.js
│ │ │ ├── chunk-2d0b2b28.5a870f11.js
│ │ │ ├── chunk-2d0b9594.4165a31a.js
│ │ │ ├── chunk-2d0c0844.373bf0fa.js
│ │ │ ├── chunk-2d0c1d7b.8af30521.js
│ │ │ ├── chunk-2d0c4289.07d6ecdd.js
│ │ │ ├── chunk-2d0c4680.2af553c2.js
│ │ │ ├── chunk-2d0c8e18.475a4091.js
│ │ │ ├── chunk-2d0c94ba.ebcb361f.js
│ │ │ ├── chunk-2d0cc9b6.5fc1e6f0.js
│ │ │ ├── chunk-2d0d0818.1c66bdfd.js
│ │ │ ├── chunk-2d0da2ea.336d9495.js
│ │ │ ├── chunk-2d0de3b1.ead9ed50.js
│ │ │ ├── chunk-2d0e1ec7.f4676c24.js
│ │ │ ├── chunk-2d0e2366.68f2ed78.js
│ │ │ ├── chunk-2d0f012d.1bde8e38.js
│ │ │ ├── chunk-2d0f08a0.d30ff142.js
│ │ │ ├── chunk-2d20955d.96d5f3ed.js
│ │ │ ├── chunk-2d2102b6.a5e01d67.js
│ │ │ ├── chunk-2d212b99.b700d975.js
│ │ │ ├── chunk-2d217a3b.a2dc1745.js
│ │ │ ├── chunk-2d217c9e.8ec1968a.js
│ │ │ ├── chunk-2d21a3bb.8a51ac4c.js
│ │ │ ├── chunk-2d22252c.ab0d57cc.js
│ │ │ ├── chunk-2d228e22.4577e771.js
│ │ │ ├── chunk-2d230898.afc39cfc.js
│ │ │ ├── chunk-2d238605.0c760cd5.js
│ │ │ ├── chunk-30dee6ba.cc1ba935.js
│ │ │ ├── chunk-322338bd.4979413d.js
│ │ │ ├── chunk-345dd7f2.b317fcb9.js
│ │ │ ├── chunk-39413ce8.3aedffc2.js
│ │ │ ├── chunk-3a08d90c.0abf19a4.js
│ │ │ ├── chunk-3b0424d2.9436e997.js
│ │ │ ├── chunk-3c3f73de.ebcfabac.js
│ │ │ ├── chunk-3d865021.40069c9d.js
│ │ │ ├── chunk-3f93175c.d0cb3bf6.js
│ │ │ ├── chunk-40fa56d7.517f8e51.js
│ │ │ ├── chunk-444dbb2e.2974d896.js
│ │ │ ├── chunk-45b5baee.77593187.js
│ │ │ ├── chunk-4b1e4dca.8875373b.js
│ │ │ ├── chunk-4fa3cd9b.053ab2fa.js
│ │ │ ├── chunk-503e96e7.cadd0b64.js
│ │ │ ├── chunk-50e312d8.378d5d67.js
│ │ │ ├── chunk-524e9261.fbdb0e6a.js
│ │ │ ├── chunk-534bfe5d.8f97fdd5.js
│ │ │ ├── chunk-53d33ee8.039379e3.js
│ │ │ ├── chunk-55d183ec.3ce898df.js
│ │ │ ├── chunk-57c7bd1b.e693d395.js
│ │ │ ├── chunk-582b2a7a.d05d26c6.js
│ │ │ ├── chunk-5b83c289.3808bcbf.js
│ │ │ ├── chunk-5d5dae90.d7411a9f.js
│ │ │ ├── chunk-68702101.8a64cf01.js
│ │ │ ├── chunk-69d5971b.54d64407.js
│ │ │ ├── chunk-6a51e97f.91bb294e.js
│ │ │ ├── chunk-6b7bd194.23e88e52.js
│ │ │ ├── chunk-7038a376.be17489b.js
│ │ │ ├── chunk-712f179b.5df23399.js
│ │ │ ├── chunk-722c5e57.d40f618d.js
│ │ │ ├── chunk-722d83df.3cf08051.js
│ │ │ ├── chunk-73a35ad3.aedb601e.js
│ │ │ ├── chunk-7478a735.6be4455a.js
│ │ │ ├── chunk-74926972.e9bcc025.js
│ │ │ ├── chunk-74f15b20.06636b6b.js
│ │ │ ├── chunk-7544041a.7cafaed9.js
│ │ │ ├── chunk-780d27a9.39c2ba9b.js
│ │ │ ├── chunk-786a3f08.a9ecf3a0.js
│ │ │ ├── chunk-7904333e.edaa4df3.js
│ │ │ ├── chunk-7c5661b0.0658b3d8.js
│ │ │ ├── chunk-7d80f20e.c3a1f1f0.js
│ │ │ ├── chunk-7fa21b9b.d64bdcb5.js
│ │ │ ├── chunk-823020a0.3dc7c56c.js
│ │ │ ├── chunk-82e00426.8261a547.js
│ │ │ ├── chunk-84ab2b1e.65981042.js
│ │ │ ├── chunk-857102da.40d72934.js
│ │ │ ├── chunk-8579d4da.6f9d2499.js
│ │ │ ├── chunk-8ee3fc10.26bb0c39.js
│ │ │ ├── chunk-a662c34e.632cc27f.js
│ │ │ ├── chunk-ae1506a0.b2676811.js
│ │ │ ├── chunk-b2bd8bd6.7deed925.js
│ │ │ ├── chunk-ba509436.af1b5be7.js
│ │ │ ├── chunk-bcc438f2.9cc6d46a.js
│ │ │ ├── chunk-c28ad000.8d14a9c3.js
│ │ │ ├── chunk-c375e110.a162c6fc.js
│ │ │ ├── chunk-ce3349bc.2255f55c.js
│ │ │ ├── chunk-commons.a62bb782.js
│ │ │ ├── chunk-d19c1a98.613801e1.js
│ │ │ ├── chunk-db4f2f0e.1091bbda.js
│ │ │ ├── chunk-de8781a4.a35e05a9.js
│ │ │ ├── chunk-e2ef1232.5ac34eb0.js
│ │ │ ├── chunk-e58e88fa.16b72ced.js
│ │ │ ├── chunk-e5f6428c.d1b8b9b8.js
│ │ │ ├── chunk-ee99bc1c.c542e652.js
│ │ │ ├── chunk-elementUI.4125decd.js
│ │ │ ├── chunk-f9a89ad4.97ba7dc6.js
│ │ │ └── chunk-libs.e6e26bd8.js
│ │ └── nginx.conf
│ └── old
│ ├── Dockerfile
│ ├── description.txt
│ ├── docker-entrypoint.sh
│ ├── emqx4.0
│ │ ├── emqx.conf
│ │ ├── emqx_auth_http.conf
│ │ ├── emqx_web_hook.conf
│ │ └── loaded_plugins
│ ├── nginx-ssl.conf
│ ├── nginx.conf
│ └── wumei-smart
│ ├── java
│ │ └── 放置后端jar包,改名为app.jar.txt
│ └── vue
│ └── 放置vue打包文件内容.txt
├── sdk
│ ├── Arduino
│ │ ├── ApConfig
│ │ │ └── ApConfig.ino
│ │ ├── Arduino-ESP32
│ │ │ ├── Arduino-ESP32.ino
│ │ │ ├── Base64.cpp
│ │ │ ├── Base64.h
│ │ │ ├── Helper.cpp
│ │ │ └── Helper.h
│ │ ├── Arduino-ESP8266
│ │ │ ├── Arduino-ESP8266.ino
│ │ │ ├── Base64.cpp
│ │ │ ├── Base64.h
│ │ │ ├── Helper.cpp
│ │ │ └── Helper.h
│ │ └── WumeiArduino
│ │ ├── Apconfig.cpp
│ │ ├── Apconfig.h
│ │ ├── Auth.cpp
│ │ ├── Auth.h
│ │ ├── Base64.cpp
│ │ ├── Base64.h
│ │ ├── Config.cpp
│ │ ├── Config.h
│ │ ├── Mqtt.cpp
│ │ ├── Mqtt.h
│ │ ├── User.cpp
│ │ ├── User.h
│ │ └── WumeiArduino.ino
│ ├── ESP-IDF
│ │ └── README.md
│ ├── RaspberryPi
│ │ ├── README.md
│ │ ├── aes.py
│ │ ├── main_sdk.py
│ │ └── 参考资料.txt
│ └── 合宙
│ ├── README.md
│ ├── WeiMeiApp.lua
│ ├── WeiMeiComAuth.lua
│ ├── WeiMeiComInteraction.lua
│ ├── WuMeiTest.lua
│ ├── main.lua
│ ├── mainAir724.lua
│ └── mainVscode.lua
├── springboot
│ ├── LICENSE
│ ├── README.md
│ ├── bin
│ │ ├── clean.bat
│ │ ├── package.bat
│ │ └── run.bat
│ ├── doc
│ │ └── 若依环境使用手册.docx
│ ├── pom.xml
│ ├── ry.bat
│ ├── ry.sh
│ ├── sql
│ │ └── wumei-smart.sql
│ ├── wumei-admin
│ │ ├── pom.xml
│ │ └── src
│ │ └── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── ruoyi
│ │ │ ├── WumeiSmartApplication.java
│ │ │ ├── WumeiSmartServletInitializer.java
│ │ │ └── web
│ │ │ ├── controller
│ │ │ │ ├── common
│ │ │ │ │ ├── CaptchaController.java
│ │ │ │ │ └── CommonController.java
│ │ │ │ ├── monitor
│ │ │ │ │ ├── CacheController.java
│ │ │ │ │ ├── ServerController.java
│ │ │ │ │ ├── SysLogininforController.java
│ │ │ │ │ ├── SysOperlogController.java
│ │ │ │ │ └── SysUserOnlineController.java
│ │ │ │ ├── system
│ │ │ │ │ ├── SysConfigController.java
│ │ │ │ │ ├── SysDeptController.java
│ │ │ │ │ ├── SysDictDataController.java
│ │ │ │ │ ├── SysDictTypeController.java
│ │ │ │ │ ├── SysIndexController.java
│ │ │ │ │ ├── SysLoginController.java
│ │ │ │ │ ├── SysMenuController.java
│ │ │ │ │ ├── SysNoticeController.java
│ │ │ │ │ ├── SysPostController.java
│ │ │ │ │ ├── SysProfileController.java
│ │ │ │ │ ├── SysRegisterController.java
│ │ │ │ │ ├── SysRoleController.java
│ │ │ │ │ └── SysUserController.java
│ │ │ │ └── tool
│ │ │ │ ├── SwaggerController.java
│ │ │ │ └── TestController.java
│ │ │ └── core
│ │ │ └── config
│ │ │ └── SwaggerConfig.java
│ │ └── resources
│ │ ├── META-INF
│ │ │ └── spring-devtools.properties
│ │ ├── application-druid.yml
│ │ ├── application.yml
│ │ ├── banner.txt
│ │ ├── i18n
│ │ │ └── messages.properties
│ │ ├── logback.xml
│ │ └── mybatis
│ │ └── mybatis-config.xml
│ ├── wumei-common
│ │ ├── pom.xml
│ │ └── src
│ │ └── main
│ │ └── java
│ │ └── com
│ │ └── ruoyi
│ │ └── common
│ │ ├── annotation
│ │ │ ├── DataScope.java
│ │ │ ├── DataSource.java
│ │ │ ├── Excel.java
│ │ │ ├── Excels.java
│ │ │ ├── Log.java
│ │ │ ├── RateLimiter.java
│ │ │ └── RepeatSubmit.java
│ │ ├── config
│ │ │ └── RuoYiConfig.java
│ │ ├── constant
│ │ │ ├── Constants.java
│ │ │ ├── GenConstants.java
│ │ │ ├── HttpStatus.java
│ │ │ ├── ScheduleConstants.java
│ │ │ └── UserConstants.java
│ │ ├── core
│ │ │ ├── controller
│ │ │ │ └── BaseController.java
│ │ │ ├── domain
│ │ │ │ ├── AjaxResult.java
│ │ │ │ ├── BaseEntity.java
│ │ │ │ ├── TreeEntity.java
│ │ │ │ ├── TreeSelect.java
│ │ │ │ ├── entity
│ │ │ │ │ ├── SysDept.java
│ │ │ │ │ ├── SysDictData.java
│ │ │ │ │ ├── SysDictType.java
│ │ │ │ │ ├── SysMenu.java
│ │ │ │ │ ├── SysRole.java
│ │ │ │ │ └── SysUser.java
│ │ │ │ └── model
│ │ │ │ ├── BindLoginBody.java
│ │ │ │ ├── BindRegisterBody.java
│ │ │ │ ├── LoginBody.java
│ │ │ │ ├── LoginUser.java
│ │ │ │ └── RegisterBody.java
│ │ │ ├── page
│ │ │ │ ├── PageDomain.java
│ │ │ │ ├── TableDataInfo.java
│ │ │ │ └── TableSupport.java
│ │ │ ├── redis
│ │ │ │ └── RedisCache.java
│ │ │ └── text
│ │ │ ├── CharsetKit.java
│ │ │ ├── Convert.java
│ │ │ └── StrFormatter.java
│ │ ├── enums
│ │ │ ├── BusinessStatus.java
│ │ │ ├── BusinessType.java
│ │ │ ├── DataSourceType.java
│ │ │ ├── HttpMethod.java
│ │ │ ├── LimitType.java
│ │ │ ├── OperatorType.java
│ │ │ ├── SocialPlatformType.java
│ │ │ └── UserStatus.java
│ │ ├── exception
│ │ │ ├── DemoModeException.java
│ │ │ ├── GlobalException.java
│ │ │ ├── ServiceException.java
│ │ │ ├── UtilException.java
│ │ │ ├── base
│ │ │ │ └── BaseException.java
│ │ │ ├── file
│ │ │ │ ├── FileException.java
│ │ │ │ ├── FileNameLengthLimitExceededException.java
│ │ │ │ ├── FileSizeLimitExceededException.java
│ │ │ │ └── InvalidExtensionException.java
│ │ │ ├── job
│ │ │ │ └── TaskException.java
│ │ │ └── user
│ │ │ ├── CaptchaException.java
│ │ │ ├── CaptchaExpireException.java
│ │ │ ├── UserException.java
│ │ │ └── UserPasswordNotMatchException.java
│ │ ├── filter
│ │ │ ├── RepeatableFilter.java
│ │ │ ├── RepeatedlyRequestWrapper.java
│ │ │ ├── XssFilter.java
│ │ │ └── XssHttpServletRequestWrapper.java
│ │ └── utils
│ │ ├── Arith.java
│ │ ├── DateUtils.java
│ │ ├── DictUtils.java
│ │ ├── ExceptionUtil.java
│ │ ├── LogUtils.java
│ │ ├── MessageUtils.java
│ │ ├── SecurityUtils.java
│ │ ├── ServletUtils.java
│ │ ├── StringUtils.java
│ │ ├── Threads.java
│ │ ├── VerifyCodeUtils.java
│ │ ├── bean
│ │ │ └── BeanUtils.java
│ │ ├── file
│ │ │ ├── FileTypeUtils.java
│ │ │ ├── FileUploadUtils.java
│ │ │ ├── FileUtils.java
│ │ │ ├── ImageUtils.java
│ │ │ └── MimeTypeUtils.java
│ │ ├── html
│ │ │ ├── EscapeUtil.java
│ │ │ └── HTMLFilter.java
│ │ ├── http
│ │ │ ├── HttpHelper.java
│ │ │ └── HttpUtils.java
│ │ ├── ip
│ │ │ ├── AddressUtils.java
│ │ │ └── IpUtils.java
│ │ ├── poi
│ │ │ ├── ExcelHandlerAdapter.java
│ │ │ └── ExcelUtil.java
│ │ ├── reflect
│ │ │ └── ReflectUtils.java
│ │ ├── sign
│ │ │ ├── Base64.java
│ │ │ └── Md5Utils.java
│ │ ├── spring
│ │ │ └── SpringUtils.java
│ │ ├── sql
│ │ │ └── SqlUtil.java
│ │ └── uuid
│ │ ├── IdUtils.java
│ │ └── UUID.java
│ ├── wumei-framework
│ │ ├── pom.xml
│ │ └── src
│ │ └── main
│ │ └── java
│ │ └── com
│ │ └── ruoyi
│ │ └── framework
│ │ ├── aspectj
│ │ │ ├── DataScopeAspect.java
│ │ │ ├── DataSourceAspect.java
│ │ │ ├── LogAspect.java
│ │ │ └── RateLimiterAspect.java
│ │ ├── config
│ │ │ ├── ApplicationConfig.java
│ │ │ ├── CaptchaConfig.java
│ │ │ ├── DruidConfig.java
│ │ │ ├── FastJson2JsonRedisSerializer.java
│ │ │ ├── FilterConfig.java
│ │ │ ├── KaptchaTextCreator.java
│ │ │ ├── MyBatisConfig.java
│ │ │ ├── RedisConfig.java
│ │ │ ├── ResourcesConfig.java
│ │ │ ├── SecurityConfig.java
│ │ │ ├── ServerConfig.java
│ │ │ ├── ThreadPoolConfig.java
│ │ │ └── properties
│ │ │ └── DruidProperties.java
│ │ ├── datasource
│ │ │ ├── DynamicDataSource.java
│ │ │ └── DynamicDataSourceContextHolder.java
│ │ ├── interceptor
│ │ │ ├── RepeatSubmitInterceptor.java
│ │ │ └── impl
│ │ │ └── SameUrlDataInterceptor.java
│ │ ├── manager
│ │ │ ├── AsyncManager.java
│ │ │ ├── ShutdownManager.java
│ │ │ └── factory
│ │ │ └── AsyncFactory.java
│ │ ├── security
│ │ │ ├── filter
│ │ │ │ └── JwtAuthenticationTokenFilter.java
│ │ │ └── handle
│ │ │ ├── AuthenticationEntryPointImpl.java
│ │ │ └── LogoutSuccessHandlerImpl.java
│ │ └── web
│ │ ├── domain
│ │ │ ├── Server.java
│ │ │ └── server
│ │ │ ├── Cpu.java
│ │ │ ├── Jvm.java
│ │ │ ├── Mem.java
│ │ │ ├── Sys.java
│ │ │ └── SysFile.java
│ │ ├── exception
│ │ │ └── GlobalExceptionHandler.java
│ │ └── service
│ │ ├── PermissionService.java
│ │ ├── SysLoginService.java
│ │ ├── SysPermissionService.java
│ │ ├── SysRegisterService.java
│ │ ├── TokenService.java
│ │ └── UserDetailsServiceImpl.java
│ ├── wumei-generator
│ │ ├── pom.xml
│ │ └── src
│ │ └── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── ruoyi
│ │ │ └── generator
│ │ │ ├── config
│ │ │ │ └── GenConfig.java
│ │ │ ├── controller
│ │ │ │ └── GenController.java
│ │ │ ├── domain
│ │ │ │ ├── GenTable.java
│ │ │ │ └── GenTableColumn.java
│ │ │ ├── mapper
│ │ │ │ ├── GenTableColumnMapper.java
│ │ │ │ └── GenTableMapper.java
│ │ │ ├── service
│ │ │ │ ├── GenTableColumnServiceImpl.java
│ │ │ │ ├── GenTableServiceImpl.java
│ │ │ │ ├── IGenTableColumnService.java
│ │ │ │ └── IGenTableService.java
│ │ │ └── util
│ │ │ ├── GenUtils.java
│ │ │ ├── VelocityInitializer.java
│ │ │ └── VelocityUtils.java
│ │ └── resources
│ │ ├── generator.yml
│ │ ├── mapper
│ │ │ └── generator
│ │ │ ├── GenTableColumnMapper.xml
│ │ │ └── GenTableMapper.xml
│ │ └── vm
│ │ ├── java
│ │ │ ├── controller.java.vm
│ │ │ └── domain.java.vm
│ │ ├── js
│ │ │ └── api.js.vm
│ │ ├── sql
│ │ │ └── sql.vm
│ │ ├── vue
│ │ │ ├── index-tree.vue.vm
│ │ │ └── index.vue.vm
│ │ └── xml
│ │ └── mapper.xml.vm
│ ├── wumei-iot
│ │ ├── pom.xml
│ │ └── src
│ │ └── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── ruoyi
│ │ │ └── iot
│ │ │ ├── controller
│ │ │ │ ├── AlertController.java
│ │ │ │ ├── AlertLogController.java
│ │ │ │ ├── AuthResourceController.java
│ │ │ │ ├── CategoryController.java
│ │ │ │ ├── DeviceController.java
│ │ │ │ ├── DeviceJobController.java
│ │ │ │ ├── DeviceLogController.java
│ │ │ │ ├── DeviceUserController.java
│ │ │ │ ├── FirmwareController.java
│ │ │ │ ├── GroupController.java
│ │ │ │ ├── NewsCategoryController.java
│ │ │ │ ├── NewsController.java
│ │ │ │ ├── OauthClientDetailsController.java
│ │ │ │ ├── ProductAuthorizeController.java
│ │ │ │ ├── ProductController.java
│ │ │ │ ├── SceneController.java
│ │ │ │ ├── SocialLoginController.java
│ │ │ │ ├── SocialPlatformController.java
│ │ │ │ ├── ThingsModelController.java
│ │ │ │ ├── ThingsModelTemplateController.java
│ │ │ │ ├── ToolController.java
│ │ │ │ └── UserSocialController.java
│ │ │ ├── domain
│ │ │ │ ├── Alert.java
│ │ │ │ ├── AlertLog.java
│ │ │ │ ├── Category.java
│ │ │ │ ├── Device.java
│ │ │ │ ├── DeviceGroup.java
│ │ │ │ ├── DeviceJob.java
│ │ │ │ ├── DeviceLog.java
│ │ │ │ ├── DeviceUser.java
│ │ │ │ ├── Firmware.java
│ │ │ │ ├── Group.java
│ │ │ │ ├── News.java
│ │ │ │ ├── NewsCategory.java
│ │ │ │ ├── OauthClientDetails.java
│ │ │ │ ├── Product.java
│ │ │ │ ├── ProductAuthorize.java
│ │ │ │ ├── Scene.java
│ │ │ │ ├── SocialPlatform.java
│ │ │ │ ├── SocialUser.java
│ │ │ │ ├── ThingsModel.java
│ │ │ │ ├── ThingsModelTemplate.java
│ │ │ │ └── UserSocialProfile.java
│ │ │ ├── mapper
│ │ │ │ ├── AlertLogMapper.java
│ │ │ │ ├── AlertMapper.java
│ │ │ │ ├── CategoryMapper.java
│ │ │ │ ├── DeviceJobMapper.java
│ │ │ │ ├── DeviceLogMapper.java
│ │ │ │ ├── DeviceMapper.java
│ │ │ │ ├── DeviceUserMapper.java
│ │ │ │ ├── FirmwareMapper.java
│ │ │ │ ├── GroupMapper.java
│ │ │ │ ├── NewsCategoryMapper.java
│ │ │ │ ├── NewsMapper.java
│ │ │ │ ├── OauthClientDetailsMapper.java
│ │ │ │ ├── ProductAuthorizeMapper.java
│ │ │ │ ├── ProductMapper.java
│ │ │ │ ├── SceneMapper.java
│ │ │ │ ├── SocialPlatformMapper.java
│ │ │ │ ├── SocialUserMapper.java
│ │ │ │ ├── ThingsModelMapper.java
│ │ │ │ └── ThingsModelTemplateMapper.java
│ │ │ ├── model
│ │ │ │ ├── Action.java
│ │ │ │ ├── AuthenticateInputModel.java
│ │ │ │ ├── CategoryNews.java
│ │ │ │ ├── ChangeProductStatusModel.java
│ │ │ │ ├── DeviceAllShortOutput.java
│ │ │ │ ├── DeviceGroupInput.java
│ │ │ │ ├── DeviceNumberAndProductId.java
│ │ │ │ ├── DeviceRelateUserInput.java
│ │ │ │ ├── DeviceShortOutput.java
│ │ │ │ ├── DeviceStatistic.java
│ │ │ │ ├── IdAndName.java
│ │ │ │ ├── IdOutput.java
│ │ │ │ ├── ImportThingsModelInput.java
│ │ │ │ ├── MonitorModel.java
│ │ │ │ ├── MqttAuthenticationModel.java
│ │ │ │ ├── MqttClientConnectModel.java
│ │ │ │ ├── MqttInfoModel.java
│ │ │ │ ├── NtpModel.java
│ │ │ │ ├── ProductAuthenticateModel.java
│ │ │ │ ├── ProductAuthorizeVO.java
│ │ │ │ ├── RegisterUserInput.java
│ │ │ │ ├── ThingsModelItem
│ │ │ │ │ ├── ArrayModelOutput.java
│ │ │ │ │ ├── BoolModelOutput.java
│ │ │ │ │ ├── DecimalModelOutput.java
│ │ │ │ │ ├── EnumItemOutput.java
│ │ │ │ │ ├── EnumModelOutput.java
│ │ │ │ │ ├── IntegerModelOutput.java
│ │ │ │ │ ├── ReadOnlyModelOutput.java
│ │ │ │ │ ├── StringModelOutput.java
│ │ │ │ │ └── ThingsModelItemBase.java
│ │ │ │ ├── ThingsModels
│ │ │ │ │ ├── EventDto.java
│ │ │ │ │ ├── FunctionDto.java
│ │ │ │ │ ├── IdentityAndName.java
│ │ │ │ │ ├── PropertyDto.java
│ │ │ │ │ ├── ThingsModelShadow.java
│ │ │ │ │ ├── ThingsModelValueItem.java
│ │ │ │ │ ├── ThingsModelValueItemDto.java
│ │ │ │ │ ├── ThingsModelValueRemarkItem.java
│ │ │ │ │ ├── ThingsModelValuesInput.java
│ │ │ │ │ ├── ThingsModelValuesOutput.java
│ │ │ │ │ └── ThingsModelsDto.java
│ │ │ │ ├── UserIdDeviceIdModel.java
│ │ │ │ └── login
│ │ │ │ ├── AuthRequestWrap.java
│ │ │ │ ├── BindIdValue.java
│ │ │ │ └── LoginIdValue.java
│ │ │ ├── mqtt
│ │ │ │ ├── EmqxCallback.java
│ │ │ │ ├── EmqxClient.java
│ │ │ │ ├── EmqxService.java
│ │ │ │ ├── EmqxStart.java
│ │ │ │ ├── MqttClientConfiguration.java
│ │ │ │ └── MqttConfig.java
│ │ │ ├── oauth
│ │ │ │ ├── AuthorizationServerConfig.java
│ │ │ │ ├── ResourceServerConfig.java
│ │ │ │ ├── SpeakerApprovalHandler.java
│ │ │ │ └── api
│ │ │ │ ├── ConfirmAccessController.java
│ │ │ │ ├── LoginController.java
│ │ │ │ └── SpeakerController.java
│ │ │ ├── service
│ │ │ │ ├── IAlertLogService.java
│ │ │ │ ├── IAlertService.java
│ │ │ │ ├── IAuthRequestFactory.java
│ │ │ │ ├── ICategoryService.java
│ │ │ │ ├── IDeviceJobService.java
│ │ │ │ ├── IDeviceLogService.java
│ │ │ │ ├── IDeviceService.java
│ │ │ │ ├── IDeviceUserService.java
│ │ │ │ ├── IFirmwareService.java
│ │ │ │ ├── IGroupService.java
│ │ │ │ ├── INewsCategoryService.java
│ │ │ │ ├── INewsService.java
│ │ │ │ ├── IOauthClientDetailsService.java
│ │ │ │ ├── IProductAuthorizeService.java
│ │ │ │ ├── IProductService.java
│ │ │ │ ├── ISceneService.java
│ │ │ │ ├── ISocialLoginService.java
│ │ │ │ ├── ISocialPlatformService.java
│ │ │ │ ├── ISocialUserService.java
│ │ │ │ ├── IThingsModelService.java
│ │ │ │ ├── IThingsModelTemplateService.java
│ │ │ │ ├── IToolService.java
│ │ │ │ ├── IUserSocialProfileService.java
│ │ │ │ └── impl
│ │ │ │ ├── AlertLogServiceImpl.java
│ │ │ │ ├── AlertServiceImpl.java
│ │ │ │ ├── AuthRequestFactoryImpl.java
│ │ │ │ ├── AuthStateRedisCache.java
│ │ │ │ ├── CategoryServiceImpl.java
│ │ │ │ ├── DeviceJobServiceImpl.java
│ │ │ │ ├── DeviceLogServiceImpl.java
│ │ │ │ ├── DeviceServiceImpl.java
│ │ │ │ ├── DeviceUserServiceImpl.java
│ │ │ │ ├── FirmwareServiceImpl.java
│ │ │ │ ├── GroupServiceImpl.java
│ │ │ │ ├── NewsCategoryServiceImpl.java
│ │ │ │ ├── NewsServiceImpl.java
│ │ │ │ ├── OauthClientDetailsServiceImpl.java
│ │ │ │ ├── ProductAuthorizeServiceImpl.java
│ │ │ │ ├── ProductServiceImpl.java
│ │ │ │ ├── SceneServiceImpl.java
│ │ │ │ ├── SocialLoginServiceImpl.java
│ │ │ │ ├── SocialPlatformServiceImpl.java
│ │ │ │ ├── SocialUserServiceImpl.java
│ │ │ │ ├── ThingsModelServiceImpl.java
│ │ │ │ ├── ThingsModelTemplateServiceImpl.java
│ │ │ │ ├── ToolServiceImpl.java
│ │ │ │ └── UserSocialProfileServiceImpl.java
│ │ │ ├── task
│ │ │ │ ├── IotAsyncExceptionHander.java
│ │ │ │ ├── TaskConfigurer.java
│ │ │ │ └── TaskExecutorConfig.java
│ │ │ ├── tdengine
│ │ │ │ ├── config
│ │ │ │ │ └── TDengineConfig.java
│ │ │ │ ├── dao
│ │ │ │ │ └── TDDeviceLogDAO.java
│ │ │ │ ├── init
│ │ │ │ │ └── ApplicationStarted.java
│ │ │ │ └── service
│ │ │ │ ├── ILogService.java
│ │ │ │ ├── factory
│ │ │ │ │ └── LogServiceFactory.java
│ │ │ │ └── impl
│ │ │ │ ├── MySqlLogServiceImpl.java
│ │ │ │ └── TdengineLogServiceImpl.java
│ │ │ └── util
│ │ │ ├── AESUtils.java
│ │ │ ├── SnowflakeIdWorker.java
│ │ │ ├── VelocityInitializer.java
│ │ │ ├── VelocityUtils.java
│ │ │ └── quartz
│ │ │ ├── AbstractQuartzJob.java
│ │ │ ├── CronUtils.java
│ │ │ ├── JobInvokeUtil.java
│ │ │ ├── QuartzDisallowConcurrentExecution.java
│ │ │ ├── QuartzJobExecution.java
│ │ │ └── ScheduleUtils.java
│ │ └── resources
│ │ ├── mapper
│ │ │ ├── iot
│ │ │ │ ├── AlertLogMapper.xml
│ │ │ │ ├── AlertMapper.xml
│ │ │ │ ├── CategoryMapper.xml
│ │ │ │ ├── DeviceJobMapper.xml
│ │ │ │ ├── DeviceLogMapper.xml
│ │ │ │ ├── DeviceMapper.xml
│ │ │ │ ├── DeviceUserMapper.xml
│ │ │ │ ├── FirmwareMapper.xml
│ │ │ │ ├── GroupMapper.xml
│ │ │ │ ├── NewsCategoryMapper.xml
│ │ │ │ ├── NewsMapper.xml
│ │ │ │ ├── OauthClientDetailsMapper.xml
│ │ │ │ ├── ProductAuthorizeMapper.xml
│ │ │ │ ├── ProductMapper.xml
│ │ │ │ ├── SceneMapper.xml
│ │ │ │ ├── SocialPlatformMapper.xml
│ │ │ │ ├── SocialUserMapper.xml
│ │ │ │ ├── ThingsModelMapper.xml
│ │ │ │ └── ThingsModelTemplateMapper.xml
│ │ │ └── tdengine
│ │ │ └── TDDeviceLogMapper.xml
│ │ ├── static
│ │ │ └── oauth
│ │ │ ├── css
│ │ │ │ ├── bootstrap-theme.css
│ │ │ │ ├── bootstrap-theme.css.map
│ │ │ │ ├── bootstrap-theme.min.css
│ │ │ │ ├── bootstrap-theme.min.css.map
│ │ │ │ ├── bootstrap.css
│ │ │ │ ├── bootstrap.css.map
│ │ │ │ ├── bootstrap.min.css
│ │ │ │ └── bootstrap.min.css.map
│ │ │ ├── fonts
│ │ │ │ ├── glyphicons-halflings-regular.eot
│ │ │ │ ├── glyphicons-halflings-regular.svg
│ │ │ │ ├── glyphicons-halflings-regular.ttf
│ │ │ │ ├── glyphicons-halflings-regular.woff
│ │ │ │ └── glyphicons-halflings-regular.woff2
│ │ │ └── js
│ │ │ ├── bootstrap.js
│ │ │ ├── bootstrap.min.js
│ │ │ └── npm.js
│ │ ├── templates
│ │ │ └── oauth
│ │ │ ├── access_confirmation.html
│ │ │ ├── clientDetails.html
│ │ │ ├── index.html
│ │ │ └── login.html
│ │ └── vm
│ │ ├── java
│ │ │ ├── controller.java.vm
│ │ │ ├── domain.java.vm
│ │ │ ├── mapper.java.vm
│ │ │ ├── service.java.vm
│ │ │ ├── serviceImpl.java.vm
│ │ │ └── sub-domain.java.vm
│ │ ├── js
│ │ │ └── api.js.vm
│ │ ├── sql
│ │ │ └── sql.vm
│ │ ├── vue
│ │ │ ├── index-tree.vue.vm
│ │ │ └── index.vue.vm
│ │ └── xml
│ │ └── mapper.xml.vm
│ ├── wumei-quartz
│ │ ├── pom.xml
│ │ └── src
│ │ └── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── ruoyi
│ │ │ └── quartz
│ │ │ ├── config
│ │ │ │ └── ScheduleConfig.java
│ │ │ ├── controller
│ │ │ │ ├── SysJobController.java
│ │ │ │ └── SysJobLogController.java
│ │ │ ├── domain
│ │ │ │ ├── SysJob.java
│ │ │ │ └── SysJobLog.java
│ │ │ ├── mapper
│ │ │ │ ├── SysJobLogMapper.java
│ │ │ │ └── SysJobMapper.java
│ │ │ ├── service
│ │ │ │ ├── ISysJobLogService.java
│ │ │ │ ├── ISysJobService.java
│ │ │ │ └── impl
│ │ │ │ ├── SysJobLogServiceImpl.java
│ │ │ │ └── SysJobServiceImpl.java
│ │ │ ├── task
│ │ │ │ └── RyTask.java
│ │ │ └── util
│ │ │ ├── AbstractQuartzJob.java
│ │ │ ├── CronUtils.java
│ │ │ ├── JobInvokeUtil.java
│ │ │ ├── QuartzDisallowConcurrentExecution.java
│ │ │ ├── QuartzJobExecution.java
│ │ │ └── ScheduleUtils.java
│ │ └── resources
│ │ └── mapper
│ │ └── quartz
│ │ ├── SysJobLogMapper.xml
│ │ └── SysJobMapper.xml
│ └── wumei-system
│ ├── pom.xml
│ └── src
│ └── main
│ ├── java
│ │ └── com
│ │ └── ruoyi
│ │ └── system
│ │ ├── domain
│ │ │ ├── SysConfig.java
│ │ │ ├── SysLogininfor.java
│ │ │ ├── SysNotice.java
│ │ │ ├── SysOperLog.java
│ │ │ ├── SysPost.java
│ │ │ ├── SysRoleDept.java
│ │ │ ├── SysRoleMenu.java
│ │ │ ├── SysUserOnline.java
│ │ │ ├── SysUserPost.java
│ │ │ ├── SysUserRole.java
│ │ │ └── vo
│ │ │ ├── MetaVo.java
│ │ │ └── RouterVo.java
│ │ ├── mapper
│ │ │ ├── SysConfigMapper.java
│ │ │ ├── SysDeptMapper.java
│ │ │ ├── SysDictDataMapper.java
│ │ │ ├── SysDictTypeMapper.java
│ │ │ ├── SysLogininforMapper.java
│ │ │ ├── SysMenuMapper.java
│ │ │ ├── SysNoticeMapper.java
│ │ │ ├── SysOperLogMapper.java
│ │ │ ├── SysPostMapper.java
│ │ │ ├── SysRoleDeptMapper.java
│ │ │ ├── SysRoleMapper.java
│ │ │ ├── SysRoleMenuMapper.java
│ │ │ ├── SysUserMapper.java
│ │ │ ├── SysUserPostMapper.java
│ │ │ └── SysUserRoleMapper.java
│ │ └── service
│ │ ├── ISysConfigService.java
│ │ ├── ISysDeptService.java
│ │ ├── ISysDictDataService.java
│ │ ├── ISysDictTypeService.java
│ │ ├── ISysLogininforService.java
│ │ ├── ISysMenuService.java
│ │ ├── ISysNoticeService.java
│ │ ├── ISysOperLogService.java
│ │ ├── ISysPostService.java
│ │ ├── ISysRoleService.java
│ │ ├── ISysUserOnlineService.java
│ │ ├── ISysUserService.java
│ │ └── impl
│ │ ├── SysConfigServiceImpl.java
│ │ ├── SysDeptServiceImpl.java
│ │ ├── SysDictDataServiceImpl.java
│ │ ├── SysDictTypeServiceImpl.java
│ │ ├── SysLogininforServiceImpl.java
│ │ ├── SysMenuServiceImpl.java
│ │ ├── SysNoticeServiceImpl.java
│ │ ├── SysOperLogServiceImpl.java
│ │ ├── SysPostServiceImpl.java
│ │ ├── SysRoleServiceImpl.java
│ │ ├── SysUserOnlineServiceImpl.java
│ │ └── SysUserServiceImpl.java
│ └── resources
│ └── mapper
│ └── system
│ ├── SysConfigMapper.xml
│ ├── SysDeptMapper.xml
│ ├── SysDictDataMapper.xml
│ ├── SysDictTypeMapper.xml
│ ├── SysLogininforMapper.xml
│ ├── SysMenuMapper.xml
│ ├── SysNoticeMapper.xml
│ ├── SysOperLogMapper.xml
│ ├── SysPostMapper.xml
│ ├── SysRoleDeptMapper.xml
│ ├── SysRoleMapper.xml
│ ├── SysRoleMenuMapper.xml
│ ├── SysUserMapper.xml
│ ├── SysUserPostMapper.xml
│ └── SysUserRoleMapper.xml
└── vue
├── README.md
├── babel.config.js
├── bin
│ ├── build.bat
│ ├── package.bat
│ └── run-web.bat
├── build
│ └── index.js
├── package.json
├── public
│ ├── favicon.ico
│ ├── html
│ │ └── ie.html
│ ├── index.html
│ ├── js
│ │ └── echarts.min.js
│ ├── map-geojson
│ │ ├── 110000.json
│ │ ├── 120000.json
│ │ ├── 130000.json
│ │ ├── 140000.json
│ │ ├── 150000.json
│ │ ├── 210000.json
│ │ ├── 220000.json
│ │ ├── 230000.json
│ │ ├── 310000.json
│ │ ├── 320000.json
│ │ ├── 330000.json
│ │ ├── 340000.json
│ │ ├── 350000.json
│ │ ├── 360000.json
│ │ ├── 370000.json
│ │ ├── 410000.json
│ │ ├── 420000.json
│ │ ├── 430000.json
│ │ ├── 440000.json
│ │ ├── 450000.json
│ │ ├── 460000.json
│ │ ├── 500000.json
│ │ ├── 510000.json
│ │ ├── 520000.json
│ │ ├── 530000.json
│ │ ├── 540000.json
│ │ ├── 610000.json
│ │ ├── 620000.json
│ │ ├── 630000.json
│ │ ├── 640000.json
│ │ ├── 650000.json
│ │ ├── 710000.json
│ │ ├── 810000.json
│ │ ├── 820000.json
│ │ └── china.json
│ └── robots.txt
├── src
│ ├── App.vue
│ ├── api
│ │ ├── bigScreen
│ │ │ ├── api.js
│ │ │ ├── index.js
│ │ │ └── modules
│ │ │ └── index.js
│ │ ├── iot
│ │ │ ├── alert.js
│ │ │ ├── alertLog.js
│ │ │ ├── authorize.js
│ │ │ ├── category.js
│ │ │ ├── clientDetails.js
│ │ │ ├── device.js
│ │ │ ├── deviceJob.js
│ │ │ ├── deviceLog.js
│ │ │ ├── deviceuser.js
│ │ │ ├── emqx.js
│ │ │ ├── firmware.js
│ │ │ ├── group.js
│ │ │ ├── log.js
│ │ │ ├── model.js
│ │ │ ├── news.js
│ │ │ ├── newsCategory.js
│ │ │ ├── platform.js
│ │ │ ├── product.js
│ │ │ ├── scene.js
│ │ │ ├── template.js
│ │ │ └── tool.js
│ │ ├── login.js
│ │ ├── menu.js
│ │ ├── monitor
│ │ │ ├── cache.js
│ │ │ ├── job.js
│ │ │ ├── jobLog.js
│ │ │ ├── logininfor.js
│ │ │ ├── online.js
│ │ │ ├── operlog.js
│ │ │ └── server.js
│ │ ├── system
│ │ │ ├── config.js
│ │ │ ├── dept.js
│ │ │ ├── dict
│ │ │ │ ├── data.js
│ │ │ │ └── type.js
│ │ │ ├── menu.js
│ │ │ ├── notice.js
│ │ │ ├── post.js
│ │ │ ├── role.js
│ │ │ └── user.js
│ │ └── tool
│ │ └── gen.js
│ ├── assets
│ │ ├── 401_images
│ │ │ └── 401.gif
│ │ ├── 404_images
│ │ │ ├── 404.png
│ │ │ └── 404_cloud.png
│ │ ├── bigScreen
│ │ │ ├── css
│ │ │ │ ├── index.scss
│ │ │ │ ├── modules
│ │ │ │ │ ├── reset.scss
│ │ │ │ │ └── variables.scss
│ │ │ │ ├── public.scss
│ │ │ │ ├── theme
│ │ │ │ │ ├── fonts
│ │ │ │ │ │ ├── element-icons.ttf
│ │ │ │ │ │ └── element-icons.woff
│ │ │ │ │ └── index.css
│ │ │ │ ├── variable.scss
│ │ │ │ └── webfont
│ │ │ │ └── index.css
│ │ │ ├── iconfont
│ │ │ │ ├── iconfont.css
│ │ │ │ ├── iconfont.ttf
│ │ │ │ ├── iconfont.woff
│ │ │ │ └── iconfont.woff2
│ │ │ └── img
│ │ │ ├── center_map.png
│ │ │ ├── frame.png
│ │ │ ├── guang.png
│ │ │ ├── headers
│ │ │ │ ├── juxing1.png
│ │ │ │ └── juxing2.png
│ │ │ ├── left_top_hong.png
│ │ │ ├── left_top_huang.png
│ │ │ ├── left_top_lan.png
│ │ │ ├── left_top_lv.png
│ │ │ ├── pageBg.png
│ │ │ ├── titles
│ │ │ │ ├── you.png
│ │ │ │ └── zuo.png
│ │ │ ├── top.png
│ │ │ ├── xieyou.png
│ │ │ ├── xiezuo.png
│ │ │ └── zuo_xuxian.png
│ │ ├── icons
│ │ │ ├── index.js
│ │ │ ├── svg
│ │ │ │ ├── 404.svg
│ │ │ │ ├── alert.svg
│ │ │ │ ├── authenticate.svg
│ │ │ │ ├── bug.svg
│ │ │ │ ├── build.svg
│ │ │ │ ├── button.svg
│ │ │ │ ├── cascader.svg
│ │ │ │ ├── category.svg
│ │ │ │ ├── chart.svg
│ │ │ │ ├── checkbox.svg
│ │ │ │ ├── client.svg
│ │ │ │ ├── clipboard.svg
│ │ │ │ ├── cloud.svg
│ │ │ │ ├── code.svg
│ │ │ │ ├── color.svg
│ │ │ │ ├── component.svg
│ │ │ │ ├── connect.svg
│ │ │ │ ├── dashboard.svg
│ │ │ │ ├── date-range.svg
│ │ │ │ ├── date.svg
│ │ │ │ ├── device.svg
│ │ │ │ ├── dict.svg
│ │ │ │ ├── disconnect.svg
│ │ │ │ ├── documentation.svg
│ │ │ │ ├── download.svg
│ │ │ │ ├── drag.svg
│ │ │ │ ├── druid.svg
│ │ │ │ ├── edit.svg
│ │ │ │ ├── education.svg
│ │ │ │ ├── email.svg
│ │ │ │ ├── event-a.svg
│ │ │ │ ├── example.svg
│ │ │ │ ├── excel.svg
│ │ │ │ ├── exit-fullscreen.svg
│ │ │ │ ├── eye-open.svg
│ │ │ │ ├── eye.svg
│ │ │ │ ├── firmware.svg
│ │ │ │ ├── form.svg
│ │ │ │ ├── fullscreen.svg
│ │ │ │ ├── github.svg
│ │ │ │ ├── group.svg
│ │ │ │ ├── guide.svg
│ │ │ │ ├── icon.svg
│ │ │ │ ├── input.svg
│ │ │ │ ├── international.svg
│ │ │ │ ├── iot.svg
│ │ │ │ ├── job.svg
│ │ │ │ ├── language.svg
│ │ │ │ ├── link.svg
│ │ │ │ ├── list.svg
│ │ │ │ ├── listener.svg
│ │ │ │ ├── lock.svg
│ │ │ │ ├── log-a.svg
│ │ │ │ ├── log.svg
│ │ │ │ ├── logininfor.svg
│ │ │ │ ├── message.svg
│ │ │ │ ├── model.svg
│ │ │ │ ├── money.svg
│ │ │ │ ├── monitor-a.svg
│ │ │ │ ├── monitor.svg
│ │ │ │ ├── mq.svg
│ │ │ │ ├── nested.svg
│ │ │ │ ├── number.svg
│ │ │ │ ├── online.svg
│ │ │ │ ├── ota.svg
│ │ │ │ ├── password.svg
│ │ │ │ ├── pdf.svg
│ │ │ │ ├── people.svg
│ │ │ │ ├── peoples.svg
│ │ │ │ ├── phone.svg
│ │ │ │ ├── plugin.svg
│ │ │ │ ├── post.svg
│ │ │ │ ├── product.svg
│ │ │ │ ├── qq.svg
│ │ │ │ ├── question.svg
│ │ │ │ ├── radio.svg
│ │ │ │ ├── rate.svg
│ │ │ │ ├── receiver.svg
│ │ │ │ ├── redis.svg
│ │ │ │ ├── row.svg
│ │ │ │ ├── scene.svg
│ │ │ │ ├── search.svg
│ │ │ │ ├── select.svg
│ │ │ │ ├── server.svg
│ │ │ │ ├── share.svg
│ │ │ │ ├── shopping.svg
│ │ │ │ ├── size.svg
│ │ │ │ ├── skill.svg
│ │ │ │ ├── slider.svg
│ │ │ │ ├── star.svg
│ │ │ │ ├── start.svg
│ │ │ │ ├── stop.svg
│ │ │ │ ├── subscribe.svg
│ │ │ │ ├── subscribe1.svg
│ │ │ │ ├── swagger.svg
│ │ │ │ ├── switch.svg
│ │ │ │ ├── system.svg
│ │ │ │ ├── tab.svg
│ │ │ │ ├── table.svg
│ │ │ │ ├── textarea.svg
│ │ │ │ ├── theme.svg
│ │ │ │ ├── time-range.svg
│ │ │ │ ├── time.svg
│ │ │ │ ├── tool.svg
│ │ │ │ ├── topic.svg
│ │ │ │ ├── tree-table.svg
│ │ │ │ ├── tree.svg
│ │ │ │ ├── upload.svg
│ │ │ │ ├── user.svg
│ │ │ │ ├── validCode.svg
│ │ │ │ ├── wechat.svg
│ │ │ │ ├── wifi_0.svg
│ │ │ │ ├── wifi_1.svg
│ │ │ │ ├── wifi_2.svg
│ │ │ │ ├── wifi_3.svg
│ │ │ │ ├── wifi_4.svg
│ │ │ │ ├── zhifubao.svg
│ │ │ │ └── zip.svg
│ │ │ └── svgo.yml
│ │ ├── images
│ │ │ ├── code.jpg
│ │ │ ├── dark.svg
│ │ │ ├── light.svg
│ │ │ ├── phone.jpg
│ │ │ ├── phone.png
│ │ │ ├── product.jpg
│ │ │ └── profile.jpg
│ │ ├── logo
│ │ │ └── logo.png
│ │ └── styles
│ │ ├── btn.scss
│ │ ├── element-ui.scss
│ │ ├── element-variables.scss
│ │ ├── index.scss
│ │ ├── mixin.scss
│ │ ├── ruoyi.scss
│ │ ├── sidebar.scss
│ │ ├── transition.scss
│ │ └── variables.scss
│ ├── components
│ │ ├── Breadcrumb
│ │ │ └── index.vue
│ │ ├── Codemirror
│ │ │ └── index.vue
│ │ ├── Crontab
│ │ │ ├── day.vue
│ │ │ ├── hour.vue
│ │ │ ├── index.vue
│ │ │ ├── min.vue
│ │ │ ├── month.vue
│ │ │ ├── result.vue
│ │ │ ├── second.vue
│ │ │ ├── week.vue
│ │ │ └── year.vue
│ │ ├── DictData
│ │ │ └── index.js
│ │ ├── DictTag
│ │ │ └── index.vue
│ │ ├── Editor
│ │ │ └── index.vue
│ │ ├── FileUpload
│ │ │ └── index.vue
│ │ ├── Hamburger
│ │ │ └── index.vue
│ │ ├── HeaderSearch
│ │ │ └── index.vue
│ │ ├── IconSelect
│ │ │ ├── index.vue
│ │ │ └── requireIcons.js
│ │ ├── ImageUpload
│ │ │ └── index.vue
│ │ ├── Pagination
│ │ │ └── index.vue
│ │ ├── PanThumb
│ │ │ └── index.vue
│ │ ├── ParentView
│ │ │ └── index.vue
│ │ ├── RightPanel
│ │ │ └── index.vue
│ │ ├── RightToolbar
│ │ │ └── index.vue
│ │ ├── RuoYi
│ │ │ ├── Doc
│ │ │ │ └── index.vue
│ │ │ └── Git
│ │ │ └── index.vue
│ │ ├── Screenfull
│ │ │ └── index.vue
│ │ ├── SizeSelect
│ │ │ └── index.vue
│ │ ├── SvgIcon
│ │ │ └── index.vue
│ │ ├── ThemePicker
│ │ │ └── index.vue
│ │ ├── TopNav
│ │ │ └── index.vue
│ │ └── iFrame
│ │ └── index.vue
│ ├── config
│ │ └── UtilVar.js
│ ├── directive
│ │ ├── dialog
│ │ │ ├── drag.js
│ │ │ ├── dragHeight.js
│ │ │ └── dragWidth.js
│ │ ├── filters.js
│ │ ├── index.js
│ │ └── permission
│ │ ├── hasPermi.js
│ │ └── hasRole.js
│ ├── layout
│ │ ├── components
│ │ │ ├── AppMain.vue
│ │ │ ├── InnerLink
│ │ │ │ └── index.vue
│ │ │ ├── Navbar.vue
│ │ │ ├── Settings
│ │ │ │ └── index.vue
│ │ │ ├── Sidebar
│ │ │ │ ├── FixiOSBug.js
│ │ │ │ ├── Item.vue
│ │ │ │ ├── Link.vue
│ │ │ │ ├── Logo.vue
│ │ │ │ ├── SidebarItem.vue
│ │ │ │ └── index.vue
│ │ │ ├── TagsView
│ │ │ │ ├── ScrollPane.vue
│ │ │ │ └── index.vue
│ │ │ └── index.js
│ │ ├── index.vue
│ │ └── mixin
│ │ └── ResizeHandler.js
│ ├── lib
│ │ ├── currency.js
│ │ ├── dd-moment.js
│ │ ├── index.js
│ │ └── types.js
│ ├── main.js
│ ├── mock
│ │ └── mock.js
│ ├── permission.js
│ ├── plugins
│ │ ├── auth.js
│ │ ├── cache.js
│ │ ├── download.js
│ │ ├── index.js
│ │ ├── modal.js
│ │ └── tab.js
│ ├── router
│ │ └── index.js
│ ├── settings.js
│ ├── store
│ │ ├── getters.js
│ │ ├── index.js
│ │ └── modules
│ │ ├── app.js
│ │ ├── permission.js
│ │ ├── settings.js
│ │ ├── tagsView.js
│ │ └── user.js
│ ├── utils
│ │ ├── auth.js
│ │ ├── bigScreen
│ │ │ ├── drawMixin.js
│ │ │ ├── index.js
│ │ │ └── map
│ │ │ ├── china.json
│ │ │ └── xzqCode.js
│ │ ├── dict
│ │ │ ├── Dict.js
│ │ │ ├── DictConverter.js
│ │ │ ├── DictData.js
│ │ │ ├── DictMeta.js
│ │ │ ├── DictOptions.js
│ │ │ └── index.js
│ │ ├── errorCode.js
│ │ ├── generator
│ │ │ ├── config.js
│ │ │ ├── css.js
│ │ │ ├── drawingDefalut.js
│ │ │ ├── html.js
│ │ │ ├── icon.json
│ │ │ ├── js.js
│ │ │ └── render.js
│ │ ├── index.js
│ │ ├── jsencrypt.js
│ │ ├── map.js
│ │ ├── mqttTool.js
│ │ ├── permission.js
│ │ ├── request.js
│ │ ├── ruoyi.js
│ │ ├── scroll-to.js
│ │ └── validate.js
│ └── views
│ ├── bigScreen
│ │ ├── components
│ │ │ ├── echart
│ │ │ │ ├── index.vue
│ │ │ │ └── theme.json
│ │ │ ├── item-wrap
│ │ │ │ └── item-wrap.vue
│ │ │ ├── kong.vue
│ │ │ ├── message
│ │ │ │ ├── message.js
│ │ │ │ └── message.vue
│ │ │ └── reacquire
│ │ │ └── reacquire.vue
│ │ ├── home.scss
│ │ ├── home.vue
│ │ ├── indexs
│ │ │ ├── center-bottom.vue
│ │ │ ├── center-map.vue
│ │ │ ├── index.vue
│ │ │ ├── left-bottom.vue
│ │ │ ├── left-center.vue
│ │ │ ├── left-top.vue
│ │ │ ├── right-bottom.vue
│ │ │ ├── right-center.vue
│ │ │ └── right-top.vue
│ │ ├── setting.vue
│ │ └── tjfx
│ │ └── tjfx.vue
│ ├── components
│ │ └── icons
│ │ ├── element-icons.js
│ │ ├── index.vue
│ │ └── svg-icons.js
│ ├── dashboard
│ │ ├── BarChart.vue
│ │ ├── LineChart.vue
│ │ ├── PanelGroup.vue
│ │ ├── PieChart.vue
│ │ ├── RaddarChart.vue
│ │ └── mixins
│ │ └── resize.js
│ ├── error
│ │ ├── 401.vue
│ │ └── 404.vue
│ ├── index.vue
│ ├── index_v1.vue
│ ├── iot
│ │ ├── alertLog
│ │ │ └── index.vue
│ │ ├── category
│ │ │ └── index.vue
│ │ ├── clientDetails
│ │ │ └── index.vue
│ │ ├── device
│ │ │ ├── device-edit.vue
│ │ │ ├── device-log.vue
│ │ │ ├── device-statistic.vue
│ │ │ ├── device-timer.vue
│ │ │ ├── device-user.vue
│ │ │ ├── index.vue
│ │ │ ├── mqtt-client.vue
│ │ │ ├── product-list.vue
│ │ │ ├── running-status.vue
│ │ │ └── user-list.vue
│ │ ├── emqx
│ │ │ ├── client.vue
│ │ │ ├── listener.vue
│ │ │ ├── plugin.vue
│ │ │ ├── resource.vue
│ │ │ ├── rule.vue
│ │ │ ├── subscribe.vue
│ │ │ └── topic.vue
│ │ ├── firmware
│ │ │ └── index.vue
│ │ ├── group
│ │ │ ├── device-list.vue
│ │ │ └── index.vue
│ │ ├── log
│ │ │ └── index.vue
│ │ ├── news
│ │ │ └── index.vue
│ │ ├── newsCategory
│ │ │ └── index.vue
│ │ ├── platform
│ │ │ └── index.vue
│ │ ├── product
│ │ │ ├── index.vue
│ │ │ ├── product-alert.vue
│ │ │ ├── product-app.vue
│ │ │ ├── product-authorize.vue
│ │ │ ├── product-edit.vue
│ │ │ ├── product-firmware.vue
│ │ │ ├── product-select-template.vue
│ │ │ └── product-things-model.vue
│ │ ├── scene
│ │ │ └── index.vue
│ │ └── template
│ │ └── index.vue
│ ├── login.vue
│ ├── monitor
│ │ ├── cache
│ │ │ └── index.vue
│ │ ├── druid
│ │ │ └── index.vue
│ │ ├── job
│ │ │ ├── index.vue
│ │ │ └── log.vue
│ │ ├── logininfor
│ │ │ └── index.vue
│ │ ├── online
│ │ │ └── index.vue
│ │ ├── operlog
│ │ │ └── index.vue
│ │ └── server
│ │ └── index.vue
│ ├── redirect.vue
│ ├── register.vue
│ ├── system
│ │ ├── config
│ │ │ └── index.vue
│ │ ├── dept
│ │ │ └── index.vue
│ │ ├── dict
│ │ │ ├── data.vue
│ │ │ └── index.vue
│ │ ├── menu
│ │ │ └── index.vue
│ │ ├── notice
│ │ │ └── index.vue
│ │ ├── post
│ │ │ └── index.vue
│ │ ├── role
│ │ │ ├── authUser.vue
│ │ │ ├── index.vue
│ │ │ └── selectUser.vue
│ │ └── user
│ │ ├── authRole.vue
│ │ ├── index.vue
│ │ └── profile
│ │ ├── index.vue
│ │ ├── resetPwd.vue
│ │ ├── userAvatar.vue
│ │ └── userInfo.vue
│ └── tool
│ ├── build
│ │ ├── CodeTypeDialog.vue
│ │ ├── DraggableItem.vue
│ │ ├── IconsDialog.vue
│ │ ├── RightPanel.vue
│ │ ├── TreeNodeDialog.vue
│ │ └── index.vue
│ ├── gen
│ │ ├── basicInfoForm.vue
│ │ ├── editTable.vue
│ │ ├── genInfoForm.vue
│ │ ├── importTable.vue
│ │ └── index.vue
│ └── swagger
│ └── index.vue
└── vue.config.js
349 directories, 1288 files