diff --git a/README.md b/README.md index 7f775857..ad2c3e48 100644 --- a/README.md +++ b/README.md @@ -6,13 +6,14 @@ #### 2. 设备接入使用EMQX消息服务器,加密认证;后端采用Spring boot;前端采用Vue;移动端采用Uniapp;数据库采用Mysql和Redis;设备端支持ESP32、ESP8266、树莓派等;系统架构图如下: -#### 3. 案例展示 -| Wifi通断器 | 信息牌 | 桌面小电视 | 雾霾/粉尘/空气检测仪 -| :---- | :---------- |:---------- |:---------- | -| ![](https://oscimg.oschina.net/oscnet/up-91921ed009aed9b70e99e6216a3ffb5c707.png) | ![](https://oscimg.oschina.net/oscnet/up-b25dde78b0127e0ec08db4496fcf777069d.png) | ![](https://oscimg.oschina.net/oscnet/up-9c53911f42386189b943ce753abed5346f7.png) | ![](https://oscimg.oschina.net/oscnet/up-072a5880eaf5ea502dc265bc208902b8529.png) -| 【小驿物联】
1. 手机、电脑远程控制
2. 遥控配对、清码和控制
3. 空气温湿度实时监测
4. 雷达感应和报警
5. 供电电压220V和5V
6. 控制阻性负载2500W,感性负载250W家用设备开关。 | 【更多设备等您加入】
待定 | 【更多设备等您加入】
待定 | 【小驿物联】
1. PM2.5雾霾监测
2. PM10粉尘监测
3. 空气质量监测
4. TFT彩色屏幕 +#### 3. 项目可用于个人学习和使用,商业用途需要赞助项目,获得授权。[查看详情 >>](https://gitee.com/kerwincui/wumei-smart/blob/master/app/README.md) + +#### 4. 案例展示 +| Wifi通断器 | 信息牌 | 桌面小电视 | 雾霾/粉尘/空气检测仪 +| :----: | :----------: |:----------: |:----------: | +| ![](https://oscimg.oschina.net/oscnet/up-91921ed009aed9b70e99e6216a3ffb5c707.png) | ![](https://oscimg.oschina.net/oscnet/up-b25dde78b0127e0ec08db4496fcf777069d.png) | ![](https://oscimg.oschina.net/oscnet/up-9c53911f42386189b943ce753abed5346f7.png) | ![](https://oscimg.oschina.net/oscnet/up-072a5880eaf5ea502dc265bc208902b8529.png) +| 【小驿物联】 | 待定 | 待定 | 【小驿物联】 -#### 4. 项目可用于个人学习和使用,商业用途需要赞助项目,获得授权。[查看详情 >>](https://gitee.com/kerwincui/wumei-smart/blob/master/app/README.md) ### 二、功能 @@ -20,16 +21,11 @@ - 系统监控: 操作日志、登录日志、系统日志、在线用户、服务监控、连接池监控、缓存监控等 - 产品管理: 产品、产品物模型、产品分类、产品固件、授权码等 - 设备管理: 控制、分组、定时、日志、统计、定位、OTA升级、影子模式、实时监测、加密认证等 -- EMQ管理: Mqtt客户端、监听器、消息主题、消息订阅、插件管理 +- EMQ管理: Mqtt客户端、监听器、消息主题、消息订阅、插件管理、规则引擎、资源 - 硬件 SDK: 支持WIFI和MQTT连接、物模型响应、实时监测、定时上报监测数据、AES加密、NTP时间等 - 物模型管理: 属性(设备状态和监测数据),功能(执行特定任务),事件(设备主动上报给云端) +- 其他(开发中):第三方登录,设备分享、设备告警、场景联动(进度50%),智能音箱、多租户、APP界面自定义(进度40%),时序数据库、分布式集群部署、Granfa监控(进度30%),视频流处理、桌面端模拟器/监控、安卓端模拟器/监控(进度20%),App和小程序(正在开发中......) -### 三、计划开发功能 -- 设备分享、设备告警、场景联动(进度50%) -- 智能音箱、多租户、APP界面自定义(进度40%) -- 时序数据库、分布式集群部署、Granfa监控(进度30%) -- 视频流处理、桌面端模拟器/监控、安卓端模拟器/监控(进度0%) -- App和小程序(正在开发中......) ### 四、技术栈 * 服务端 @@ -44,12 +40,6 @@ * 硬件端 - 相关技术: ESP-IDF、Arduino、FreeRTOS等 - 开发工具:Visual Studio Code 和 Arduino -* 安卓端模拟器/监控 - - 相关技术:android - - 开发工具:Android Studio -* 电脑端模拟器/监控 - - 相关技术:WPF - - 开发工具:Visual Studio ### 五、硬件接入 1. 设备认证 @@ -72,9 +62,9 @@      app ----------------------- [获取App源码](https://gitee.com/kerwincui/wumei-smart/tree/master/app)
###### 移动端适配多端 -|安卓|IOS|微信小程序|支付宝小程序|百度小程序|字节小程序|QQ小程序|快应用| -| :---: | :---: | :---: | :---: | :---: | :---: | :---: | :---: | -|√|√|√|未测试|未测试|未测试|未测试|未测试| +|安卓|IOS|微信小程序|其他平台| +| :---: | :---: | :---: | :---: | +|√|√|√|未测试| ### 七、相关文档 @@ -109,8 +99,8 @@ kerwincui/wumei-smart:1.1 * [演示地址>>](https://iot.wumei.live/) ##### 项目贡献者 -|[小驿物联](https://gitee.com/iot-xiaoyi) |[guanshubiao](https://gitee.com/guanshubiao)|[crazyDull](https://gitee.com/crazyDull) |[kami0314](https://github.com/kami0314)| [sxh](https://gitee.com/sixiaohu) | [redamancy_zxp](https://gitee.com/redamancy-zxp) -|--|--|--|--|--|--| +|[小驿物联](https://gitee.com/iot-xiaoyi) |[guanshubiao](https://gitee.com/guanshubiao)|[crazyDull](https://gitee.com/crazyDull) |[kami0314](https://github.com/kami0314)| [sxh](https://gitee.com/sixiaohu) | [redamancy_zxp](https://gitee.com/redamancy-zxp) | [LEE](https://gitee.com/yueming188) +|--|--|--|--|--|--|--| ### 九、部分图片 diff --git a/springboot/sql/wumei-smart.sql b/springboot/sql/wumei-smart.sql index c17c9cd3..5518c424 100644 --- a/springboot/sql/wumei-smart.sql +++ b/springboot/sql/wumei-smart.sql @@ -11,7 +11,7 @@ Target Server Version : 50734 File Encoding : 65001 - Date: 17/04/2022 00:41:41 + Date: 22/04/2022 01:33:54 */ SET NAMES utf8mb4; @@ -161,7 +161,7 @@ CREATE TABLE `QRTZ_SCHEDULER_STATE` ( -- ---------------------------- -- Records of QRTZ_SCHEDULER_STATE -- ---------------------------- -INSERT INTO `QRTZ_SCHEDULER_STATE` VALUES ('RuoyiScheduler', 'DESKTOP-KKH3KAT1650125174799', 1650127309379, 15000); +INSERT INTO `QRTZ_SCHEDULER_STATE` VALUES ('RuoyiScheduler', 'DESKTOP-KKH3KAT1650559591596', 1650562435320, 15000); -- ---------------------------- -- Table structure for QRTZ_SIMPLE_TRIGGERS @@ -238,7 +238,7 @@ CREATE TABLE `QRTZ_TRIGGERS` ( -- ---------------------------- -- Records of QRTZ_TRIGGERS -- ---------------------------- -INSERT INTO `QRTZ_TRIGGERS` VALUES ('RuoyiScheduler', 'TASK_CLASS_NAME1', 'DEFAULT', 'TASK_CLASS_NAME1', 'DEFAULT', NULL, 1650162000000, -1, 5, 'WAITING', 'CRON', 1650125184000, 0, NULL, 1, ''); +INSERT INTO `QRTZ_TRIGGERS` VALUES ('RuoyiScheduler', 'TASK_CLASS_NAME1', 'DEFAULT', 'TASK_CLASS_NAME1', 'DEFAULT', NULL, 1650594000000, -1, 5, 'WAITING', 'CRON', 1650559600000, 0, NULL, 1, ''); -- ---------------------------- -- Table structure for gen_table @@ -1023,6 +1023,76 @@ CREATE TABLE `iot_scene` ( -- Records of iot_scene -- ---------------------------- +-- ---------------------------- +-- Table structure for iot_social_platform +-- ---------------------------- +DROP TABLE IF EXISTS `iot_social_platform`; +CREATE TABLE `iot_social_platform` ( + `social_platform_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '第三方登录平台主键', + `platform` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '第三方登录平台', + `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT ' 0:启用 ,1:禁用', + `client_id` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '第三方平台申请Id', + `secret_key` varchar(48) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '第三方平台密钥', + `redirect_uri` varchar(120) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户认证后跳转地址', + `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '删除标记位(0代表存在,1代表删除)', + `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '创建者', + `create_time` datetime(0) NOT NULL COMMENT '创建时间', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新者', + `remark` varchar(500) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '备注', + `bind_uri` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '绑定注册登录uri,http://localhost/login?bindId=', + `redirect_login_uri` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '跳转登录uri,http://localhost/login?loginId=', + `error_msg_uri` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '错误提示uri,http://localhost/login?errorId=', + PRIMARY KEY (`social_platform_id`) USING BTREE, + UNIQUE INDEX `iot_social_platform_platform_uindex`(`platform`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '第三方登录平台控制' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of iot_social_platform +-- ---------------------------- + +-- ---------------------------- +-- Table structure for iot_social_user +-- ---------------------------- +DROP TABLE IF EXISTS `iot_social_user`; +CREATE TABLE `iot_social_user` ( + `social_user_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '第三方系统用户表主键', + `uuid` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '第三方系统的唯一ID', + `source` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '第三方用户来源', + `access_token` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '用户的授权令牌', + `expire_in` int(11) NULL DEFAULT NULL COMMENT '第三方用户的授权令牌的有效期(部分平台可能没有)', + `refresh_token` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '刷新令牌(部分平台可能没有)', + `open_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '第三方用户的 open id(部分平台可能没有)', + `uid` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '第三方用户的 ID(部分平台可能没有)', + `access_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '个别平台的授权信息(部分平台可能没有)', + `union_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '第三方用户的 union id(部分平台可能没有)', + `scope` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '第三方用户授予的权限(部分平台可能没有)', + `token_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '个别平台的授权信息(部分平台可能没有)', + `id_token` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'id token(部分平台可能没有)', + `mac_algorithm` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '小米平台用户的附带属性(部分平台可能没有)', + `mac_key` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '小米平台用户的附带属性(部分平台可能没有)', + `code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户的授权code(部分平台可能没有)', + `oauth_token` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'Twitter平台用户的附带属性(部分平台可能没有)', + `oauth_token_secret` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT 'Twitter平台用户的附带属性(部分平台可能没有)', + `create_time` datetime(0) NOT NULL COMMENT '创建时间', + `create_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '创建者', + `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', + `update_by` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新者', + `del_flag` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '删除标记位(0代表存在,2代表删除)', + `status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '绑定状态(0:未绑定,1:绑定)', + `sys_user_id` int(11) NULL DEFAULT NULL COMMENT '用户ID', + `username` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户名', + `nickname` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户昵称', + `avatar` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '用户头像', + `gender` tinyint(4) NULL DEFAULT NULL COMMENT '用户性别', + UNIQUE INDEX `iot_social_user_pk`(`social_user_id`) USING BTREE, + UNIQUE INDEX `iot_social_user_unique_key`(`uuid`, `source`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of iot_social_user +-- ---------------------------- + -- ---------------------------- -- Table structure for iot_things_model -- ---------------------------- @@ -1087,7 +1157,7 @@ CREATE TABLE `iot_things_model_template` ( `update_time` datetime(0) NULL DEFAULT NULL COMMENT '更新时间', `remark` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注', PRIMARY KEY (`template_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 18 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '物模型模板' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 21 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '物模型模板' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of iot_things_model_template @@ -1562,12 +1632,11 @@ CREATE TABLE `sys_logininfor` ( `msg` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '提示消息', `login_time` datetime(0) NULL DEFAULT NULL COMMENT '访问时间', PRIMARY KEY (`info_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 109 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统访问记录' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 111 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '系统访问记录' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of sys_logininfor -- ---------------------------- -INSERT INTO `sys_logininfor` VALUES (108, 'admin', '127.0.0.1', '内网IP', 'Chrome 10', 'Windows 10', '0', '退出成功', '2022-04-17 00:40:43'); -- ---------------------------- -- Table structure for sys_menu @@ -1810,7 +1879,7 @@ CREATE TABLE `sys_oper_log` ( `error_msg` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT '' COMMENT '错误消息', `oper_time` datetime(0) NULL DEFAULT NULL COMMENT '操作时间', PRIMARY KEY (`oper_id`) USING BTREE -) ENGINE = InnoDB AUTO_INCREMENT = 226 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '操作日志记录' ROW_FORMAT = Dynamic; +) ENGINE = InnoDB AUTO_INCREMENT = 234 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '操作日志记录' ROW_FORMAT = Dynamic; -- ---------------------------- -- Records of sys_oper_log @@ -2186,12 +2255,8 @@ CREATE TABLE `sys_user` ( -- ---------------------------- -- Records of sys_user -- ---------------------------- -INSERT INTO `sys_user` VALUES (1, 103, 'admin', '物美智能管理员', '00', '164770707@qq.com', '15888888888', '0', '', '$2a$10$0Duw0QB6s7YnQEaNSdSVWeXHMmSa090pG15ZXpf.CQEzEhgxyr7IO', '0', '0', '127.0.0.1', '2022-04-16 22:36:03', 'admin', '2021-12-15 21:36:18', '', '2022-04-16 22:36:03', '管理员'); -INSERT INTO `sys_user` VALUES (2, 100, 'wumei-tenant', '物美智能租户', '00', '15666666@qq.com', '15666666666', '0', '', '$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2', '0', '2', '27.23.210.211', '2022-01-15 21:00:33', 'admin', '2021-12-15 21:36:18', 'admin', '2022-03-09 17:04:33', '租户'); -INSERT INTO `sys_user` VALUES (3, 100, 'common', '普通用户', '00', '', '', '0', '', '$2a$10$kKeZptrTnSlm0fencX4U2eq.QiaukDs.DckiUsMCwVTxh0IS2LRQ.', '0', '2', '127.0.0.1', '2022-04-10 15:10:47', 'admin', '2022-03-09 16:49:19', 'admin', '2022-04-10 15:10:47', '普通用户'); +INSERT INTO `sys_user` VALUES (1, 103, 'admin', '物美智能管理员', '00', '164770707@qq.com', '15888888888', '0', '', '$2a$10$0Duw0QB6s7YnQEaNSdSVWeXHMmSa090pG15ZXpf.CQEzEhgxyr7IO', '0', '0', '127.0.0.1', '2022-04-22 00:50:41', 'admin', '2021-12-15 21:36:18', '', '2022-04-22 00:50:41', '管理员'); INSERT INTO `sys_user` VALUES (118, 100, 'wumei', '游客账号', '00', '', '', '0', '', '$2a$10$kKeZptrTnSlm0fencX4U2eq.QiaukDs.DckiUsMCwVTxh0IS2LRQ.', '0', '0', '127.0.0.1', '2022-03-15 23:25:38', 'admin', '2022-03-09 16:49:19', 'admin', '2022-03-15 23:25:38', NULL); -INSERT INTO `sys_user` VALUES (119, 100, 'wumei-user', '物美-用户A', '00', '', '', '0', '', '$2a$10$bkep9sszOTEgVPSZWx7P1ONPPC8dMvYY9ujFF7dJTrFVXfKZYdRBO', '0', '2', '', NULL, 'admin', '2022-04-15 14:09:00', 'admin', '2022-04-15 14:09:16', NULL); -INSERT INTO `sys_user` VALUES (120, NULL, 'wumei-one', 'wumei-one', '00', '', 'wumei-one', '0', '', '$2a$10$lWyuVQQlP3TDSm1nqsW1V.KBbFX57jk3b9NlOtBE/.F2oTVWjqYrO', '0', '2', '127.0.0.1', '2022-04-15 14:12:41', '', '2022-04-15 14:12:24', '', '2022-04-15 14:12:40', NULL); INSERT INTO `sys_user` VALUES (121, 100, 'wumei-tenant-one', '物美租户壹', '00', '', '15888888880', '0', '', '$2a$10$BAWId9C2Nrcwklzl1Ikoau4iqL8XRGvfRjq6Wl.PXWpzwAw0sXMdK', '0', '0', '127.0.0.1', '2022-04-16 12:37:50', 'admin', '2022-04-15 16:21:25', '', '2022-04-16 12:37:49', NULL); INSERT INTO `sys_user` VALUES (122, 100, 'wumei-tenant-two', '物美租户贰', '00', '', '15988888880', '0', '', '$2a$10$1zMlbW7hGpzA59gpzWGO/ObeASziQ296evjMjHrYdZnxKBLU4WUum', '0', '0', '127.0.0.1', '2022-04-16 12:48:57', 'admin', '2022-04-15 16:22:08', '', '2022-04-16 12:48:57', NULL); INSERT INTO `sys_user` VALUES (123, 100, 'wumei-user-one', '物美用户壹', '00', '', '13988888880', '0', '', '$2a$10$691RJMXZ9HM4sgNTExLPfO5Nw6J6cWgCvcoF9V.jKMnPk5o/8c9VS', '0', '0', '127.0.0.1', '2022-04-16 12:42:29', 'admin', '2022-04-15 16:22:37', 'admin', '2022-04-16 12:42:29', NULL); diff --git a/springboot/wumei-admin/src/main/resources/application-druid.yml b/springboot/wumei-admin/src/main/resources/application-druid.yml index bc6d9ed7..9578e066 100644 --- a/springboot/wumei-admin/src/main/resources/application-druid.yml +++ b/springboot/wumei-admin/src/main/resources/application-druid.yml @@ -1,58 +1,57 @@ # 数据源配置 spring: - datasource: - type: com.alibaba.druid.pool.DruidDataSource - driverClassName: com.mysql.cj.jdbc.Driver - druid: - # 主库数据源 - master: - url: jdbc:mysql://localhost/wumei-smart?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 - username: root - password: wumei-smart - # password: 123456 - # 从库数据源 - slave: - # 从数据源开关/默认关闭 - enabled: false - url: - username: - password: - # 初始连接数 - initialSize: 5 - # 最小连接池数量 - minIdle: 10 - # 最大连接池数量 - maxActive: 20 - # 配置获取连接等待超时的时间 - maxWait: 60000 - # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 - timeBetweenEvictionRunsMillis: 60000 - # 配置一个连接在池中最小生存的时间,单位是毫秒 - minEvictableIdleTimeMillis: 300000 - # 配置一个连接在池中最大生存的时间,单位是毫秒 - maxEvictableIdleTimeMillis: 900000 - # 配置检测连接是否有效 - validationQuery: SELECT 1 FROM DUAL - testWhileIdle: true - testOnBorrow: false - testOnReturn: false - webStatFilter: - enabled: true - statViewServlet: - enabled: true - # 设置白名单,不填则允许所有访问 - allow: - url-pattern: /druid/* - # 控制台管理用户名和密码 - login-username: wumei-smart - login-password: wumei-smart - filter: - stat: - enabled: true - # 慢SQL记录 - log-slow-sql: true - slow-sql-millis: 1000 - merge-sql: true - wall: - config: - multi-statement-allow: true \ No newline at end of file + datasource: + type: com.alibaba.druid.pool.DruidDataSource + driverClassName: com.mysql.cj.jdbc.Driver + druid: + # 主库数据源 + master: + url: jdbc:mysql://localhost/wumei-smart?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + username: root + password: admin + # 从库数据源 + slave: + # 从数据源开关/默认关闭 + enabled: false + url: + username: + password: + # 初始连接数 + initialSize: 5 + # 最小连接池数量 + minIdle: 10 + # 最大连接池数量 + maxActive: 20 + # 配置获取连接等待超时的时间 + maxWait: 60000 + # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 + timeBetweenEvictionRunsMillis: 60000 + # 配置一个连接在池中最小生存的时间,单位是毫秒 + minEvictableIdleTimeMillis: 300000 + # 配置一个连接在池中最大生存的时间,单位是毫秒 + maxEvictableIdleTimeMillis: 900000 + # 配置检测连接是否有效 + validationQuery: SELECT 1 FROM DUAL + testWhileIdle: true + testOnBorrow: false + testOnReturn: false + webStatFilter: + enabled: true + statViewServlet: + enabled: true + # 设置白名单,不填则允许所有访问 + allow: + url-pattern: /druid/* + # 控制台管理用户名和密码 + login-username: wumei-smart + login-password: wumei-smart + filter: + stat: + enabled: true + # 慢SQL记录 + log-slow-sql: true + slow-sql-millis: 1000 + merge-sql: true + wall: + config: + multi-statement-allow: true diff --git a/springboot/wumei-admin/src/main/resources/application.yml b/springboot/wumei-admin/src/main/resources/application.yml index d7a25535..a99c9bb5 100644 --- a/springboot/wumei-admin/src/main/resources/application.yml +++ b/springboot/wumei-admin/src/main/resources/application.yml @@ -48,9 +48,9 @@ spring: servlet: multipart: # 单个文件大小 - max-file-size: 10MB + max-file-size: 10MB # 设置总上传的文件大小 - max-request-size: 20MB + max-request-size: 20MB # 服务模块 devtools: restart: @@ -65,8 +65,7 @@ spring: # 数据库索引 database: 0 # 密码 - # password: wumei-smart - # password: 123456 + password: wumei-smart # 连接超时时间 timeout: 10s lettuce: @@ -83,7 +82,7 @@ spring: mqtt: username: wumei-smart # 账号 password: wumei-smart # 密码 - host-url: tcp://localhost:1883 # mqtt连接tcp地址 + host-url: tcp://localhost:1883 # mqtt连接tcp地址 client-id: ${random.int} # 客户端Id,不能相同,采用随机数 ${random.value} default-topic: test # 默认主题 timeout: 30000 # 超时时间 @@ -134,4 +133,4 @@ xss: # 排除链接(多个用逗号分隔) excludes: /system/notice # 匹配链接 - urlPatterns: /system/*,/monitor/*,/tool/* \ No newline at end of file + urlPatterns: /system/*,/monitor/*,/tool/* diff --git a/vue/package.json b/vue/package.json index 4873dfd0..52e647c6 100644 --- a/vue/package.json +++ b/vue/package.json @@ -39,6 +39,7 @@ "@riophae/vue-treeselect": "0.4.0", "axios": "0.24.0", "clipboard": "2.0.6", + "codemirror": "^5.65.2", "core-js": "3.19.1", "echarts": "^5.3.1", "element-ui": "2.15.6", @@ -48,13 +49,19 @@ "js-beautify": "1.13.0", "js-cookie": "3.0.1", "jsencrypt": "3.2.1", + "jshint": "^2.13.4", + "jsonlint": "^1.6.3", + "less-loader": "^10.2.0", "mqtt": "^4.3.3", "nprogress": "0.2.0", "quill": "^1.3.7", "screenfull": "5.0.2", + "script-loader": "^0.7.2", "sortablejs": "1.10.2", + "sql-formatter": "^4.0.2", "vue": "2.6.12", "vue-clipboard2": "^0.3.3", + "vue-codemirror": "^4.0.6", "vue-count-to": "1.0.13", "vue-cropper": "0.5.5", "vue-json-viewer": "^2.2.21", diff --git a/vue/src/api/iot/emqx.js b/vue/src/api/iot/emqx.js index 6322bd13..027c13b2 100644 --- a/vue/src/api/iot/emqx.js +++ b/vue/src/api/iot/emqx.js @@ -122,3 +122,257 @@ export function getMqttStats() { }, }) } + +//断开客户端连接 +export function eliminateClient(clientId){ + var url = "/api/v4/clients/"+clientId; + return axios({ + method: 'delete', + url: url, + auth: { + username: username, + password: password + }, + }) +} + +//查看客户端详情 +export function getClientDetails(clientId){ + var url = "/api/v4/clients/"+clientId; + return axios({ + method: 'get', + url: url, + auth: { + username: username, + password: password + }, + }) +} + +//查看集群下指定客户端的订阅信息 +export function getSubscriptionsByClientId(clientId){ + var url = "/api/v4/subscriptions/"+clientId; + return axios({ + method: 'get', + url: url, + auth: { + username: username, + password: password + }, + }) +} + +//取消该客户端订阅 +export function unsubscribe(query){ + var url = "/api/v4/mqtt/unsubscribe"; + return axios({ + method: 'post', + url: url, + auth: { + username: username, + password: password + }, + params: query + }) +} + +//添加该客户端订阅 +export function addSubscribe(query){ + var url = "/api/v4/mqtt/subscribe"; + return axios({ + method: 'post', + url: url, + auth: { + username: username, + password: password + }, + params: query + }) +} + +//获取所有规则引擎的动作 +export function getRules(ruleid){ + let url = ""; + if(typeof(ruleid) == 'undefined' || ruleid == '' ||ruleid == null){ + url = "/api/v4/rules"; + }else{ + url = "/api/v4/rules/"+ruleid; + } + return axios({ + method: 'get', + url: url, + auth: { + username: username, + password: password + }, + }) +} + + +//删除规则 +export function deleteRule(ruleid){ + var url = "/api/v4/rules/"+ruleid; + return axios({ + method: 'delete', + url: url, + auth: { + username: username, + password: password + }, + }) +} + + +//获取资源列表或详情 +export function getResources(resourceid){ + let url = ""; + if(typeof(resourceid) == 'undefined' || resourceid == '' ||resourceid == null){ + url = "/api/v4/resources"; + }else{ + url = "/api/v4/resources/"+resourceid; + } + return axios({ + method: 'get', + url: url, + auth: { + username: username, + password: password + }, + }) +} +//获取资源状态 +export function getResourcesStatus(resourceid){ + let url = "/api/v4/resources/"+resourceid; + return axios({ + method: 'get', + url: url, + auth: { + username: username, + password: password + }, + }) +} + +//连接资源 +export function getConnectResource(resourceid){ + let url = "/api/v4/resources/"+resourceid; + return axios({ + method: 'post', + url: url, + auth: { + username: username, + password: password + }, + }) +} + +//删除资源 +export function deleteResource(resourceid){ + let url = "/api/v4/resources/"+resourceid; + return axios({ + method: 'delete', + url: url, + auth: { + username: username, + password: password + }, + }) +} + + +//获取资源类型 +export function getResourcesType(){ + let url = "/api/v4/resource_types"; + return axios({ + method: 'get', + url: url, + auth: { + username: username, + password: password + }, + }) +} + + +//资源测试连接 +export function getResourcesConnect(query){ + let url = "/api/v4/resources?test=true"; + return axios({ + method: 'post', + url: url, + auth: { + username: username, + password: password + }, + data: query + }) +} +//新增资源 +export function saveResources(query){ + let url = "/api/v4/resources"; + return axios({ + method: 'post', + url: url, + auth: { + username: username, + password: password + }, + data: query + }) +} + + + +//获取规则消息类型 +export function getRulesEvent(){ + let url = "/api/v4/rule_events"; + return axios({ + method: 'get', + url: url, + auth: { + username: username, + password: password + }, + }) +} + +//获取响应动作类型 +export function getActionsEvent(){ + let url = "/api/v4/actions"; + return axios({ + method: 'get', + url: url, + auth: { + username: username, + password: password + }, + }) +} + + +//新增规则引擎 +export function saveRule(query){ + let url = "/api/v4/rules"; + return axios({ + method: 'post', + url: url, + auth: { + username: username, + password: password + }, + data: query + }) +} +//测试规则引擎 +export function testConnectRule(query){ + let url = "/api/v4/rules?test=true"; + return axios({ + method: 'post', + url: url, + auth: { + username: username, + password: password + }, + data: query + }) +} diff --git a/vue/src/components/Codemirror/index.vue b/vue/src/components/Codemirror/index.vue new file mode 100644 index 00000000..06d2d8fa --- /dev/null +++ b/vue/src/components/Codemirror/index.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/vue/vue.config.js b/vue/vue.config.js index faba3cb1..70d3a19f 100644 --- a/vue/vue.config.js +++ b/vue/vue.config.js @@ -40,7 +40,7 @@ module.exports = { } }, ['/api/v4']: { - target: `http://localhost:8081`, + target: `http://wumei.live:8081`, changeOrigin: true, // logLevel: 'debug', },