From f54aa86ef1fb84f88515e4a94d36a864191cb5dd Mon Sep 17 00:00:00 2001
From: jay <75509151@qq.com>
Date: Mon, 7 Aug 2023 16:06:54 +0800
Subject: [PATCH 01/33] =?UTF-8?q?feat:=20postgrep=E9=85=8D=E7=BD=AE?=
=?UTF-8?q?=E4=BF=A1=E6=81=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../iot-data-serviceImpl-rdb/pom.xml | 24 ++--
.../src/main/resources/application.yml | 88 +++++++-------
.../src/main/resources/sql/schema-postgre.sql | 112 ++++++++++++++++++
3 files changed, 171 insertions(+), 53 deletions(-)
create mode 100644 iot-starter/src/main/resources/sql/schema-postgre.sql
diff --git a/iot-common/iot-common-dao/iot-data-serviceImpl-rdb/pom.xml b/iot-common/iot-common-dao/iot-data-serviceImpl-rdb/pom.xml
index 26339754..4ebf8c19 100644
--- a/iot-common/iot-common-dao/iot-data-serviceImpl-rdb/pom.xml
+++ b/iot-common/iot-common-dao/iot-data-serviceImpl-rdb/pom.xml
@@ -48,16 +48,22 @@
yitter-idgenerator
-
- com.h2database
- h2
-
+
+
+
+
-
-
-
-
-
+
+
+
+
+
+
+
+ org.postgresql
+ postgresql
+ 42.2.9
+
commons-io
diff --git a/iot-starter/src/main/resources/application.yml b/iot-starter/src/main/resources/application.yml
index a127a633..27bf84b5 100644
--- a/iot-starter/src/main/resources/application.yml
+++ b/iot-starter/src/main/resources/application.yml
@@ -21,50 +21,50 @@ spring:
init:
schema-locations: classpath:sql/schema.sql
mode: ALWAYS
- datasource:
- url: jdbc:h2:./data/iotkit;MODE=MySQL
- username: sa
- password: 123456
- driverClassName: org.h2.Driver
- type: com.zaxxer.hikari.HikariDataSource
- # 动态数据源文档 https://www.kancloud.cn/tracy5546/dynamic-datasource/content
- dynamic:
- hikari:
- connection-timeout: 5000
- idle-timeout: 30000 # 经过idle-timeout时间如果连接还处于空闲状态, 该连接会被回收
- min-idle: 5 # 池中维护的最小空闲连接数, 默认为 10 个
- max-pool-size: 16 # 池中最大连接数, 包括闲置和使用中的连接, 默认为 10 个
- max-lifetime: 60000 # 如果一个连接超过了时长,且没有被使用, 连接会被回收
- is-auto-commit: true
- primary: master #设置默认的数据源或者数据源组,默认值即为master
- strict: true #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
- datasource:
- # 主库数据源
- master:
- type: ${spring.datasource.type}
- driverClassName: org.h2.Driver
- # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
- # rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
- url: jdbc:h2:./data/iotkit;MODE=MySQL
- username: sa
- password: 123456
- # 从库数据源
- slave:
- lazy: true
- type: ${spring.datasource.type}
- driverClassName: org.h2.Driver
- url: jdbc:h2:./data/iotkit;MODE=MySQL
- username: sa
- password: 123456
-
- # 内置h2 web console设置
- platform: h2
- h2:
- console:
- enabled: true
- path: /h2
- settings:
- web-allow-others: true
+# datasource:
+# url: jdbc:h2:./data/iotkit;MODE=MySQL
+# username: sa
+# password: 123456
+# driverClassName: org.h2.Driver
+# type: com.zaxxer.hikari.HikariDataSource
+# # 动态数据源文档 https://www.kancloud.cn/tracy5546/dynamic-datasource/content
+# dynamic:
+# hikari:
+# connection-timeout: 5000
+# idle-timeout: 30000 # 经过idle-timeout时间如果连接还处于空闲状态, 该连接会被回收
+# min-idle: 5 # 池中维护的最小空闲连接数, 默认为 10 个
+# max-pool-size: 16 # 池中最大连接数, 包括闲置和使用中的连接, 默认为 10 个
+# max-lifetime: 60000 # 如果一个连接超过了时长,且没有被使用, 连接会被回收
+# is-auto-commit: true
+# primary: master #设置默认的数据源或者数据源组,默认值即为master
+# strict: true #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
+# datasource:
+# # 主库数据源
+# master:
+# type: ${spring.datasource.type}
+# driverClassName: org.h2.Driver
+# # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
+# # rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
+# url: jdbc:h2:./data/iotkit;MODE=MySQL
+# username: sa
+# password: 123456
+# # 从库数据源
+# slave:
+# lazy: true
+# type: ${spring.datasource.type}
+# driverClassName: org.h2.Driver
+# url: jdbc:h2:./data/iotkit;MODE=MySQL
+# username: sa
+# password: 123456
+#
+# # 内置h2 web console设置
+# platform: h2
+# h2:
+# console:
+# enabled: true
+# path: /h2
+# settings:
+# web-allow-others: true
#=======内置H2数据库连接设置结束==========>>
diff --git a/iot-starter/src/main/resources/sql/schema-postgre.sql b/iot-starter/src/main/resources/sql/schema-postgre.sql
new file mode 100644
index 00000000..c593d651
--- /dev/null
+++ b/iot-starter/src/main/resources/sql/schema-postgre.sql
@@ -0,0 +1,112 @@
+
+-- ----------------------------
+-- 18、代码生成业务表
+-- ----------------------------
+drop table if exists gen_table;
+create table if not exists gen_table
+(
+ table_id int8,
+ data_name varchar(200) default ''::varchar,
+ table_name varchar(200) default ''::varchar,
+ table_comment varchar(500) default ''::varchar,
+ sub_table_name varchar(64) default ''::varchar,
+ sub_table_fk_name varchar(64) default ''::varchar,
+ class_name varchar(100) default ''::varchar,
+ tpl_category varchar(200) default 'crud'::varchar,
+ package_name varchar(100) default null::varchar,
+ module_name varchar(30) default null::varchar,
+ business_name varchar(30) default null::varchar,
+ function_name varchar(50) default null::varchar,
+ function_author varchar(50) default null::varchar,
+ gen_type char default '0'::bpchar not null,
+ gen_path varchar(200) default '/'::varchar,
+ options varchar(1000) default null::varchar,
+ create_dept int8,
+ create_by int8,
+ create_time timestamp,
+ update_by int8,
+ update_time timestamp,
+ remark varchar(500) default null::varchar,
+ constraint gen_table_pk primary key (table_id)
+ );
+
+comment on table gen_table is '代码生成业务表';
+comment on column gen_table.table_id is '编号';
+comment on column gen_table.data_name is '数据源名称';
+comment on column gen_table.table_name is '表名称';
+comment on column gen_table.table_comment is '表描述';
+comment on column gen_table.sub_table_name is '关联子表的表名';
+comment on column gen_table.sub_table_fk_name is '子表关联的外键名';
+comment on column gen_table.class_name is '实体类名称';
+comment on column gen_table.tpl_category is '使用的模板(CRUD单表操作 TREE树表操作)';
+comment on column gen_table.package_name is '生成包路径';
+comment on column gen_table.module_name is '生成模块名';
+comment on column gen_table.business_name is '生成业务名';
+comment on column gen_table.function_name is '生成功能名';
+comment on column gen_table.function_author is '生成功能作者';
+comment on column gen_table.gen_type is '生成代码方式(0zip压缩包 1自定义路径)';
+comment on column gen_table.gen_path is '生成路径(不填默认项目路径)';
+comment on column gen_table.options is '其它生成选项';
+comment on column gen_table.create_dept is '创建部门';
+comment on column gen_table.create_by is '创建者';
+comment on column gen_table.create_time is '创建时间';
+comment on column gen_table.update_by is '更新者';
+comment on column gen_table.update_time is '更新时间';
+comment on column gen_table.remark is '备注';
+
+-- ----------------------------
+-- 19、代码生成业务表字段
+-- ----------------------------
+drop table if exists gen_table_column;
+create table if not exists gen_table_column
+(
+ column_id int8,
+ table_id int8,
+ column_name varchar(200) default null::varchar,
+ column_comment varchar(500) default null::varchar,
+ column_type varchar(100) default null::varchar,
+ java_type varchar(500) default null::varchar,
+ java_field varchar(200) default null::varchar,
+ is_pk char default null::bpchar,
+ is_increment char default null::bpchar,
+ is_required char default null::bpchar,
+ is_insert char default null::bpchar,
+ is_edit char default null::bpchar,
+ is_list char default null::bpchar,
+ is_query char default null::bpchar,
+ query_type varchar(200) default 'EQ'::varchar,
+ html_type varchar(200) default null::varchar,
+ dict_type varchar(200) default ''::varchar,
+ sort int4,
+ create_dept int8,
+ create_by int8,
+ create_time timestamp,
+ update_by int8,
+ update_time timestamp,
+ constraint gen_table_column_pk primary key (column_id)
+ );
+
+comment on table gen_table_column is '代码生成业务表字段';
+comment on column gen_table_column.column_id is '编号';
+comment on column gen_table_column.table_id is '归属表编号';
+comment on column gen_table_column.column_name is '列名称';
+comment on column gen_table_column.column_comment is '列描述';
+comment on column gen_table_column.column_type is '列类型';
+comment on column gen_table_column.java_type is 'JAVA类型';
+comment on column gen_table_column.java_field is 'JAVA字段名';
+comment on column gen_table_column.is_pk is '是否主键(1是)';
+comment on column gen_table_column.is_increment is '是否自增(1是)';
+comment on column gen_table_column.is_required is '是否必填(1是)';
+comment on column gen_table_column.is_insert is '是否为插入字段(1是)';
+comment on column gen_table_column.is_edit is '是否编辑字段(1是)';
+comment on column gen_table_column.is_list is '是否列表字段(1是)';
+comment on column gen_table_column.is_query is '是否查询字段(1是)';
+comment on column gen_table_column.query_type is '查询方式(等于、不等于、大于、小于、范围)';
+comment on column gen_table_column.html_type is '显示类型(文本框、文本域、下拉框、复选框、单选框、日期控件)';
+comment on column gen_table_column.dict_type is '字典类型';
+comment on column gen_table_column.sort is '排序';
+comment on column gen_table_column.create_dept is '创建部门';
+comment on column gen_table_column.create_by is '创建者';
+comment on column gen_table_column.create_time is '创建时间';
+comment on column gen_table_column.update_by is '更新者';
+comment on column gen_table_column.update_time is '更新时间';
From 4561f0b6f3574d833136e59485d41c3a71c239f6 Mon Sep 17 00:00:00 2001
From: jay <75509151@qq.com>
Date: Mon, 7 Aug 2023 16:13:27 +0800
Subject: [PATCH 02/33] =?UTF-8?q?feat:=20postgrep=E9=85=8D=E7=BD=AE?=
=?UTF-8?q?=E4=BF=A1=E6=81=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
iot-starter/src/main/resources/application.yml | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/iot-starter/src/main/resources/application.yml b/iot-starter/src/main/resources/application.yml
index 27bf84b5..4023ae7f 100644
--- a/iot-starter/src/main/resources/application.yml
+++ b/iot-starter/src/main/resources/application.yml
@@ -19,7 +19,8 @@ spring:
format_sql: true
sql:
init:
- schema-locations: classpath:sql/schema.sql
+# schema-locations: classpath:sql/schema.sql
+ schema-locations: classpath:sql/schema-postgre.sql
mode: ALWAYS
# datasource:
# url: jdbc:h2:./data/iotkit;MODE=MySQL
From 43df7c4ff5e0ad52a45092bf7635ff8cc0d3cca8 Mon Sep 17 00:00:00 2001
From: jay <75509151@qq.com>
Date: Mon, 7 Aug 2023 16:14:54 +0800
Subject: [PATCH 03/33] =?UTF-8?q?feat:=20postgrep=E9=85=8D=E7=BD=AE?=
=?UTF-8?q?=E4=BF=A1=E6=81=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/main/resources/application.yml | 66 ++++++++++++++-----
1 file changed, 49 insertions(+), 17 deletions(-)
diff --git a/iot-starter/src/main/resources/application.yml b/iot-starter/src/main/resources/application.yml
index 4023ae7f..a4e3d10e 100644
--- a/iot-starter/src/main/resources/application.yml
+++ b/iot-starter/src/main/resources/application.yml
@@ -69,23 +69,55 @@ spring:
#=======内置H2数据库连接设置结束==========>>
+# <<==========mysql配置开始==============
# <<==========mysql配置开始==============
- # datasource:
- # url: jdbc:mysql://127.0.0.1:3306/iotkit?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
- # driverClassName: com.mysql.cj.jdbc.Driver
- # username: root
- # password: 123456
- # validationQuery: SELECT 1
- # testOnBorrow: true
- # jpa:
- # database: MySQL
- # database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
- ## show-sql: true
- # hibernate:
- # ddl-auto: update
- # properties:
- # hibernate:
- # format_sql: true
+ datasource:
+ url: jdbc:postgresql://127.0.0.1:5432/iotkit
+ driverClassName: org.postgresql.Driver
+ username: postgres
+ password: 123456
+ validationQuery: SELECT 1
+ testOnBorrow: true
+
+ type: com.zaxxer.hikari.HikariDataSource
+ # 动态数据源文档 https://www.kancloud.cn/tracy5546/dynamic-datasource/content
+ dynamic:
+ hikari:
+ connection-timeout: 5000
+ idle-timeout: 30000 # 经过idle-timeout时间如果连接还处于空闲状态, 该连接会被回收
+ min-idle: 5 # 池中维护的最小空闲连接数, 默认为 10 个
+ max-pool-size: 16 # 池中最大连接数, 包括闲置和使用中的连接, 默认为 10 个
+ max-lifetime: 60000 # 如果一个连接超过了时长,且没有被使用, 连接会被回收
+ is-auto-commit: true
+ primary: master #设置默认的数据源或者数据源组,默认值即为master
+ strict: true #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
+ datasource:
+ # 主库数据源
+ master:
+ type: ${spring.datasource.type}
+ driverClassName: org.postgresql.Driver
+ # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
+ # rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
+ url: jdbc:postgresql://127.0.0.1:5432/iotkit
+ username: postgres
+ password: 123456
+ # 从库数据源
+ slave:
+ lazy: true
+ type: ${spring.datasource.type}
+ driverClassName: org.postgresql.Driver
+ url: jdbc:postgresql://127.0.0.1:5432/iotkit
+ username: postgres
+ password: 123456
+ jpa:
+ database: MySQL
+ database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
+ # show-sql: true
+ hibernate:
+ ddl-auto: update
+ properties:
+ hibernate:
+ format_sql: true
# ============mysql配置结束============>>
#<<================es时序数据配置开始===============
@@ -111,7 +143,7 @@ spring:
redis:
#使用内置redis的配置
#host: redis
- host: 127.0.0.1
+ host: 192.168.6.129
port: 6379
database: 0
From ef2901037ef0c78efa8a70c00d9d6f61df17e48c Mon Sep 17 00:00:00 2001
From: jay <75509151@qq.com>
Date: Mon, 7 Aug 2023 16:54:42 +0800
Subject: [PATCH 04/33] =?UTF-8?q?chore:=20docker=E6=9E=84=E5=BB=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
Dockerfile | 2 --
docker-compose/docker-compose-iita.yml | 3 ++-
2 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/Dockerfile b/Dockerfile
index b41f8bcf..0c46d671 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -4,5 +4,3 @@ ADD iot-starter/target/iot-starter-0.4.5-SNAPSHOT.jar /app/app.jar
ADD data/init /app/data/init
ADD data/components /app/data/components
ADD data/converters /app/data/converters
-EXPOSE 8086
-ENTRYPOINT ["java", "-classpath", ".:lib/*","cc.iotkit.Application"]
diff --git a/docker-compose/docker-compose-iita.yml b/docker-compose/docker-compose-iita.yml
index 9e4dac0f..c03dfe3c 100644
--- a/docker-compose/docker-compose-iita.yml
+++ b/docker-compose/docker-compose-iita.yml
@@ -14,7 +14,8 @@ services:
network_mode: "host"
volumes:
# - ./admin-service.jar:/admin-service.jar
- - /app/data:/app/data/
+ - /app/data/components:/app/data/components
+ - /app/data/converters:/app/data/converters
- /app/config:/app/config/
- /app/log:/app/log/
command:
From 69095099758d029aeccf7dbb54ba43369017cb26 Mon Sep 17 00:00:00 2001
From: jay <75509151@qq.com>
Date: Mon, 7 Aug 2023 19:43:23 +0800
Subject: [PATCH 05/33] =?UTF-8?q?fix:=20post=E9=85=8D=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/main/resources/application.yml | 210 +-----------------
1 file changed, 2 insertions(+), 208 deletions(-)
diff --git a/iot-starter/src/main/resources/application.yml b/iot-starter/src/main/resources/application.yml
index a4e3d10e..4c458af4 100644
--- a/iot-starter/src/main/resources/application.yml
+++ b/iot-starter/src/main/resources/application.yml
@@ -7,217 +7,11 @@ spring:
enabled: true
max-file-size: 10MB
max-request-size: 12MB
-
- #注: 切换数据库时需要将项目根目录中的.init文件删除再重启
- # <<=======内置H2数据库连接设置开始==========
- jpa:
- show-sql: true
- hibernate:
- ddl-auto: update
- properties:
- hibernate:
- format_sql: true
- sql:
- init:
-# schema-locations: classpath:sql/schema.sql
- schema-locations: classpath:sql/schema-postgre.sql
- mode: ALWAYS
-# datasource:
-# url: jdbc:h2:./data/iotkit;MODE=MySQL
-# username: sa
-# password: 123456
-# driverClassName: org.h2.Driver
-# type: com.zaxxer.hikari.HikariDataSource
-# # 动态数据源文档 https://www.kancloud.cn/tracy5546/dynamic-datasource/content
-# dynamic:
-# hikari:
-# connection-timeout: 5000
-# idle-timeout: 30000 # 经过idle-timeout时间如果连接还处于空闲状态, 该连接会被回收
-# min-idle: 5 # 池中维护的最小空闲连接数, 默认为 10 个
-# max-pool-size: 16 # 池中最大连接数, 包括闲置和使用中的连接, 默认为 10 个
-# max-lifetime: 60000 # 如果一个连接超过了时长,且没有被使用, 连接会被回收
-# is-auto-commit: true
-# primary: master #设置默认的数据源或者数据源组,默认值即为master
-# strict: true #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
-# datasource:
-# # 主库数据源
-# master:
-# type: ${spring.datasource.type}
-# driverClassName: org.h2.Driver
-# # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
-# # rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
-# url: jdbc:h2:./data/iotkit;MODE=MySQL
-# username: sa
-# password: 123456
-# # 从库数据源
-# slave:
-# lazy: true
-# type: ${spring.datasource.type}
-# driverClassName: org.h2.Driver
-# url: jdbc:h2:./data/iotkit;MODE=MySQL
-# username: sa
-# password: 123456
-#
-# # 内置h2 web console设置
-# platform: h2
-# h2:
-# console:
-# enabled: true
-# path: /h2
-# settings:
-# web-allow-others: true
- #=======内置H2数据库连接设置结束==========>>
+ profiles:
+ active: postgres
-# <<==========mysql配置开始==============
- # <<==========mysql配置开始==============
- datasource:
- url: jdbc:postgresql://127.0.0.1:5432/iotkit
- driverClassName: org.postgresql.Driver
- username: postgres
- password: 123456
- validationQuery: SELECT 1
- testOnBorrow: true
- type: com.zaxxer.hikari.HikariDataSource
- # 动态数据源文档 https://www.kancloud.cn/tracy5546/dynamic-datasource/content
- dynamic:
- hikari:
- connection-timeout: 5000
- idle-timeout: 30000 # 经过idle-timeout时间如果连接还处于空闲状态, 该连接会被回收
- min-idle: 5 # 池中维护的最小空闲连接数, 默认为 10 个
- max-pool-size: 16 # 池中最大连接数, 包括闲置和使用中的连接, 默认为 10 个
- max-lifetime: 60000 # 如果一个连接超过了时长,且没有被使用, 连接会被回收
- is-auto-commit: true
- primary: master #设置默认的数据源或者数据源组,默认值即为master
- strict: true #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
- datasource:
- # 主库数据源
- master:
- type: ${spring.datasource.type}
- driverClassName: org.postgresql.Driver
- # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
- # rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
- url: jdbc:postgresql://127.0.0.1:5432/iotkit
- username: postgres
- password: 123456
- # 从库数据源
- slave:
- lazy: true
- type: ${spring.datasource.type}
- driverClassName: org.postgresql.Driver
- url: jdbc:postgresql://127.0.0.1:5432/iotkit
- username: postgres
- password: 123456
- jpa:
- database: MySQL
- database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
- # show-sql: true
- hibernate:
- ddl-auto: update
- properties:
- hibernate:
- format_sql: true
- # ============mysql配置结束============>>
-
- #<<================es时序数据配置开始===============
- elasticsearch:
- rest:
- #使用内置es的配置
- #uris: http://elasticsearch:9200
- uris: http://127.0.0.1:9200
- username:
- password:
- connection-timeout: 10s
- #================es时序数据配置结束===============>>
-
- #<<===========tdengine时序数据库配置开始============
- # td-datasource:
- # url: jdbc:TAOS-RS://127.0.0.1:6041/iotkit?timezone=UTC-8&charset=UTF-8&locale=en_US.UTF-8
- # username: root
- # password: taosdata
- # driverClassName: com.taosdata.jdbc.rs.RestfulDriver
- #===========tdengine时序数据库配置开始============>>
-
-
- redis:
- #使用内置redis的配置
- #host: redis
- host: 192.168.6.129
- port: 6379
- database: 0
-
- mvc:
- pathmatch:
- matching-strategy: ant_path_matcher
-# profiles:
-# active: mysql
-
-#application.yml中打开注释支持rocketMq作为消息总线,pom.xml中打开注释使用rocketmq消息总线
-#rocketmq:
-# name-server: 172.16.1.113:9876
-# producer:
-# group: iotkit
-
-#图片存储用的是阿里云oss,如果需要上传产品图片才需要配置
-aliyun:
- bucketId:
- endpoint:
- accessKeyId:
- accessKeySecret:
-
-sa-token:
- # token名称 (同时也是cookie名称)
- token-name: token
- # token有效期,单位s 默认30天, -1代表永不过期
- timeout: 2592000
- # token临时有效期 (指定时间内无操作就视为token过期) 单位: 秒
- activity-timeout: -1
- # 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
- is-concurrent: true
- # 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token)
- is-share: false
- # token风格
- token-style: uuid
- # 是否输出操作日志
- is-log: false
-
-captcha:
- enable: true
- # 页面 <参数设置> 可开启关闭 验证码校验
- # 验证码类型 math 数组计算 char 字符验证
- type: MATH
- # line 线段干扰 circle 圆圈干扰 shear 扭曲干扰
- category: CIRCLE
- # 数字验证码位数
- numberLength: 1
- # 字符验证码长度
- charLength: 4
-
-# 用户配置
-user:
- password:
- # 密码最大错误次数
- maxRetryCount: 5
- # 密码锁定时间(默认10分钟)
- lockTime: 10
-
-# openapi配置
-openapi:
- appid: 123456789
- password: 123456
-
-oss:
- region: xxxxx
- endpoint: xxxxx
- accessKey: xxxxx
- secretKey: xxxxx
- buckName: xxxx
-baetyl:
- api-type: feign
- service-url: http://116.168.30.140:30004
-
-# MyBatisPlus配置
# https://baomidou.com/config/
mybatis-plus:
# 不支持多包, 如有需要可在注解配置 或 提升扫包等级
From f916e72fc6c565983c19b0e2b01e3c7d2e0c82f1 Mon Sep 17 00:00:00 2001
From: jay <75509151@qq.com>
Date: Mon, 7 Aug 2023 20:26:42 +0800
Subject: [PATCH 06/33] update: docker
---
Dockerfile | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Dockerfile b/Dockerfile
index 0c46d671..44002f78 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,6 +1,6 @@
FROM openjdk:11-jre-slim
WORKDIR /app
-ADD iot-starter/target/iot-starter-0.4.5-SNAPSHOT.jar /app/app.jar
ADD data/init /app/data/init
ADD data/components /app/data/components
ADD data/converters /app/data/converters
+ADD iot-starter/target/iot-starter-0.4.5-SNAPSHOT.jar /app/app.jar
\ No newline at end of file
From 58998298a35bb58cdcd13b1c6a5e9a1a7aeac305 Mon Sep 17 00:00:00 2001
From: jay <75509151@qq.com>
Date: Mon, 7 Aug 2023 21:33:22 +0800
Subject: [PATCH 07/33] =?UTF-8?q?fix:=20jpa=E6=95=B0=E6=8D=AE=E5=BA=93?=
=?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E9=85=8D=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
iot-starter/src/main/resources/application.yml | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/iot-starter/src/main/resources/application.yml b/iot-starter/src/main/resources/application.yml
index 4c458af4..0082d9db 100644
--- a/iot-starter/src/main/resources/application.yml
+++ b/iot-starter/src/main/resources/application.yml
@@ -10,7 +10,13 @@ spring:
profiles:
active: postgres
-
+ jpa:
+ show-sql: true
+ hibernate:
+ ddl-auto: update
+ properties:
+ hibernate:
+ format_sql: true
# https://baomidou.com/config/
mybatis-plus:
From f9b73532a65d69161cd43f65bc5d3bfade40ce55 Mon Sep 17 00:00:00 2001
From: jay <75509151@qq.com>
Date: Wed, 9 Aug 2023 10:34:35 +0800
Subject: [PATCH 08/33] =?UTF-8?q?update:=20nb=E7=BB=84=E4=BB=B6=E4=BA=A7?=
=?UTF-8?q?=E5=93=81=E4=B8=8A=20=E6=97=A0=E9=9C=80=E6=81=A2=E5=A4=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../750da259-ff77-4869-a5a5-12a5433b0e4c/component.js | 2 +-
iot-components/iot-nb-component/src/main/resources/component.js | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/data/components/750da259-ff77-4869-a5a5-12a5433b0e4c/component.js b/data/components/750da259-ff77-4869-a5a5-12a5433b0e4c/component.js
index 082f59fa..9020427d 100644
--- a/data/components/750da259-ff77-4869-a5a5-12a5433b0e4c/component.js
+++ b/data/components/750da259-ff77-4869-a5a5-12a5433b0e4c/component.js
@@ -331,7 +331,7 @@ this.onReceive = function (head, type, payload) {
payload: payload
}
},
- action: action
+ action: {}
}
}
diff --git a/iot-components/iot-nb-component/src/main/resources/component.js b/iot-components/iot-nb-component/src/main/resources/component.js
index 082f59fa..9020427d 100644
--- a/iot-components/iot-nb-component/src/main/resources/component.js
+++ b/iot-components/iot-nb-component/src/main/resources/component.js
@@ -331,7 +331,7 @@ this.onReceive = function (head, type, payload) {
payload: payload
}
},
- action: action
+ action: {}
}
}
From cfcbb5d2dfdf6a8047d6951b46f00da63fa574ec Mon Sep 17 00:00:00 2001
From: xiwa
Date: Sun, 13 Aug 2023 01:12:52 +0000
Subject: [PATCH 09/33] update README.md.
Signed-off-by: xiwa
---
README.md | 12 +++++++-----
1 file changed, 7 insertions(+), 5 deletions(-)
diff --git a/README.md b/README.md
index 2e511c2e..3685e52f 100755
--- a/README.md
+++ b/README.md
@@ -74,16 +74,18 @@ Vertx event-bus(内置)、RocketMQ,通过扩展模块可接入其它任意
**注:** es版本为7.15.2,mysql版本为8.0+
##### 关系数据库切换为mysql方法(其它数据库同理)
+1、删掉.init、iotkit.mv.db、iotkit.trace.db文件
-1、将iot-data-serviceImpl-rdb/pom.xml中的mysql驱动注释放开
+2、将iot-data-serviceImpl-rdb/pom.xml中的mysql驱动注释放开
-2、启动时指定active: --spring.profiles.active=mysql
+3、启动时指定active: --spring.profiles.active=mysql
-##### 时序数据库切换为TDengin(版本:2.6x)方法
+##### 时序数据库切换为TDengine(版本:3.x)方法
+1、删掉.init和数据文件
-1、注释掉iot-starter/pom.xml中的 iot-temporal-serviceImpl-es,并打开iot-td-temporal-service的注释
+2、注释掉iot-starter/pom.xml中的 iot-temporal-serviceImpl-es,并打开iot-td-temporal-service的注释
-2、application.xml中注释掉elasticsearch配置,并打开td-datasource配置
+3、注解掉iot-starter下application.xml中的elasticsearch配置,并打开td-datasource配置
##### 消息总线切换为RocketMq方法
From c51b39b76d58bbdda35109f2d0332c1e57601466 Mon Sep 17 00:00:00 2001
From: xiwa
Date: Tue, 15 Aug 2023 15:44:38 +0000
Subject: [PATCH 10/33] update README.md.
Signed-off-by: xiwa
---
README.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/README.md b/README.md
index 3685e52f..c3baf077 100755
--- a/README.md
+++ b/README.md
@@ -73,15 +73,15 @@ Vertx event-bus(内置)、RocketMQ,通过扩展模块可接入其它任意
**注:** es版本为7.15.2,mysql版本为8.0+
-##### 关系数据库切换为mysql方法(其它数据库同理)
+##### H2数据库切换为mysql方法(其它数据库同理)
1、删掉.init、iotkit.mv.db、iotkit.trace.db文件
2、将iot-data-serviceImpl-rdb/pom.xml中的mysql驱动注释放开
-3、启动时指定active: --spring.profiles.active=mysql
+3、application.yml 注释掉内置H2数据库,打开mysql配置注释
-##### 时序数据库切换为TDengine(版本:3.x)方法
-1、删掉.init和数据文件
+##### es切换为TDengine(版本:3.x)方法
+1、删掉.init和关系数据库数据
2、注释掉iot-starter/pom.xml中的 iot-temporal-serviceImpl-es,并打开iot-td-temporal-service的注释
From b49c65312c8afc61f06234f06bb80755688c123a Mon Sep 17 00:00:00 2001
From: zak
Date: Thu, 17 Aug 2023 14:49:34 +0800
Subject: [PATCH 11/33] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dmysql=E5=8A=A8?=
=?UTF-8?q?=E6=80=81=E6=95=B0=E6=8D=AE=E6=BA=90=E9=85=8D=E7=BD=AE=E7=BC=BA?=
=?UTF-8?q?=E5=A4=B1?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/main/resources/application.yml | 47 ++++++++++++-------
1 file changed, 30 insertions(+), 17 deletions(-)
diff --git a/iot-starter/src/main/resources/application.yml b/iot-starter/src/main/resources/application.yml
index f5693157..4adfbdbf 100644
--- a/iot-starter/src/main/resources/application.yml
+++ b/iot-starter/src/main/resources/application.yml
@@ -67,24 +67,37 @@ spring:
web-allow-others: true
#=======内置H2数据库连接设置结束==========>>
-
# <<==========mysql配置开始==============
- # datasource:
- # url: jdbc:mysql://127.0.0.1:3306/iotkit?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
- # driverClassName: com.mysql.cj.jdbc.Driver
- # username: root
- # password: 123456
- # validationQuery: SELECT 1
- # testOnBorrow: true
- # jpa:
- # database: MySQL
- # database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
- ## show-sql: true
- # hibernate:
- # ddl-auto: update
- # properties:
- # hibernate:
- # format_sql: true
+# jpa:
+# database: MySQL
+# database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
+# show-sql: true
+# hibernate:
+# ddl-auto: update
+# properties:
+# hibernate:
+# format_sql: true
+# datasource:
+# type: com.zaxxer.hikari.HikariDataSource
+# dynamic:
+# hikari:
+# connection-timeout: 5000
+# idle-timeout: 30000 # 经过idle-timeout时间如果连接还处于空闲状态, 该连接会被回收
+# min-idle: 5 # 池中维护的最小空闲连接数, 默认为 10 个
+# max-pool-size: 16 # 池中最大连接数, 包括闲置和使用中的连接, 默认为 10 个
+# max-lifetime: 60000 # 如果一个连接超过了时长,且没有被使用, 连接会被回收
+# is-auto-commit: true
+# primary: master #设置默认的数据源或者数据源组,默认值即为master
+# strict: true #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
+# datasource:
+# # 主库数据源
+# master:
+# type: ${spring.datasource.type}
+# driverClassName: com.mysql.cj.jdbc.Driver
+# # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
+# url: jdbc:mysql://192.168.31.136:3306/iotkit?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
+# username: root
+# password: 123456
# ============mysql配置结束============>>
#<<================es时序数据配置开始===============
From 4a316f6b87ad6dc6cbc13373ab6b08dda485610e Mon Sep 17 00:00:00 2001
From: zak
Date: Fri, 18 Aug 2023 15:36:56 +0800
Subject: [PATCH 12/33] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=8C=89?=
=?UTF-8?q?=E5=AD=97=E6=AE=B5=E6=8E=92=E5=BA=8F=E5=A4=B1=E6=95=88=E9=97=AE?=
=?UTF-8?q?=E9=A2=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/main/java/cc/iotkit/data/util/PageBuilder.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/util/PageBuilder.java b/iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/util/PageBuilder.java
index 4c7b658e..115c4505 100644
--- a/iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/util/PageBuilder.java
+++ b/iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/util/PageBuilder.java
@@ -54,7 +54,7 @@ public class PageBuilder {
Map sortMap = pageRequest.getSortMap();
if (CollUtil.isNotEmpty(sortMap)){
sortMap.forEach((k,v) -> {
- orders.add(new Order(Direction.ASC, k));
+ orders.add(new Order(Direction.fromString("desc"), k));
});
}
return orders;
From 9e485741701f0649d374361f2b8d69420a493ad9 Mon Sep 17 00:00:00 2001
From: zak
Date: Fri, 18 Aug 2023 17:31:10 +0800
Subject: [PATCH 13/33] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=A7=84?=
=?UTF-8?q?=E5=88=99=E5=BC=95=E6=93=8E-=E6=89=A7=E8=A1=8C=E6=97=A5?=
=?UTF-8?q?=E5=BF=97Mapstruct=E8=BD=AC=E6=8D=A2=E7=B1=BB=E5=9E=8B=E9=94=99?=
=?UTF-8?q?=E8=AF=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java/cc/iotkit/manager/dto/vo/ruleinfo/RuleLogVo.java | 8 ++------
1 file changed, 2 insertions(+), 6 deletions(-)
diff --git a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/vo/ruleinfo/RuleLogVo.java b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/vo/ruleinfo/RuleLogVo.java
index 23098668..a4f8ba04 100644
--- a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/vo/ruleinfo/RuleLogVo.java
+++ b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/vo/ruleinfo/RuleLogVo.java
@@ -1,6 +1,6 @@
package cc.iotkit.manager.dto.vo.ruleinfo;
-import cc.iotkit.model.rule.RuleInfo;
+import cc.iotkit.model.rule.RuleLog;
import io.github.linpeilie.annotations.AutoMapper;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
@@ -10,7 +10,7 @@ import java.io.Serializable;
@ApiModel(value = "RuleLogVo")
@Data
-@AutoMapper(target = RuleInfo.class)
+@AutoMapper(target = RuleLog.class)
public class RuleLogVo implements Serializable {
private static final long serialVersionUID = -1L;
@@ -18,19 +18,15 @@ public class RuleLogVo implements Serializable {
private Long time;
@ApiModelProperty(value = "规则id")
-
private String ruleId;
@ApiModelProperty(value = "状态")
-
private String state1;
@ApiModelProperty(value = "内容")
-
private String content;
@ApiModelProperty(value = "是否成功")
-
private Boolean success;
}
From 9772801a3c45aa4289673eab04a2f2da7579b552 Mon Sep 17 00:00:00 2001
From: zak
Date: Mon, 21 Aug 2023 11:03:16 +0800
Subject: [PATCH 14/33] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=A7=84?=
=?UTF-8?q?=E5=88=99=E5=BC=95=E6=93=8E-=E6=89=A7=E8=A1=8C=E6=97=A5?=
=?UTF-8?q?=E5=BF=97Mapstruct=E6=98=A0=E5=B0=84=E5=AD=97=E6=AE=B5=E9=94=99?=
=?UTF-8?q?=E8=AF=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java/cc/iotkit/manager/dto/vo/ruleinfo/RuleLogVo.java | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/vo/ruleinfo/RuleLogVo.java b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/vo/ruleinfo/RuleLogVo.java
index a4f8ba04..424e402f 100644
--- a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/vo/ruleinfo/RuleLogVo.java
+++ b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/vo/ruleinfo/RuleLogVo.java
@@ -15,13 +15,13 @@ public class RuleLogVo implements Serializable {
private static final long serialVersionUID = -1L;
@ApiModelProperty(value = "时间")
- private Long time;
+ private Long logAt;
@ApiModelProperty(value = "规则id")
private String ruleId;
@ApiModelProperty(value = "状态")
- private String state1;
+ private String state;
@ApiModelProperty(value = "内容")
private String content;
From ceca2379b154dc54006a666f5615cf235580ccec Mon Sep 17 00:00:00 2001
From: zak
Date: Wed, 23 Aug 2023 11:53:56 +0800
Subject: [PATCH 15/33] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8DJavaScriptEngine?=
=?UTF-8?q?=E6=97=A5=E5=BF=97=E8=BE=93=E5=87=BAargs=E6=A0=BC=E5=BC=8F?=
=?UTF-8?q?=E9=94=99=E8=AF=AF=EF=BC=8C=E5=B9=B6=E6=8F=90=E5=8F=96=E6=96=B9?=
=?UTF-8?q?=E6=B3=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../cc/iotkit/script/JavaScriptEngine.java | 21 ++++++++++++-------
1 file changed, 13 insertions(+), 8 deletions(-)
diff --git a/iot-common/iot-script-engine/src/main/java/cc/iotkit/script/JavaScriptEngine.java b/iot-common/iot-script-engine/src/main/java/cc/iotkit/script/JavaScriptEngine.java
index 681c7ff2..15c892b7 100644
--- a/iot-common/iot-script-engine/src/main/java/cc/iotkit/script/JavaScriptEngine.java
+++ b/iot-common/iot-script-engine/src/main/java/cc/iotkit/script/JavaScriptEngine.java
@@ -52,19 +52,13 @@ public class JavaScriptEngine implements IScriptEngine {
public T invokeMethod(TypeReference type, String methodName, Object... args) {
Value member = jsScript.getMember("invoke");
- StringBuilder sbArgs = new StringBuilder("[");
- //将入参转成json
- for (int i = 0; i < args.length; i++) {
- args[i] = JsonUtils.toJsonString(args[i]);
- sbArgs.append(i == args.length - 1 ? "," : "").append(args[i]);
- }
- sbArgs.append("]");
+ StringBuilder sbArgs = formatArgs(args);
//通过调用invoke方法将目标方法返回结果转成json
Value rst = member.execute(methodName, args);
String json = rst.asString();
- log.info("invoke script {},args:{}, result:{}", methodName, sbArgs, json);
+ log.info("invoke script={}, args={}, result={}", methodName, sbArgs, json);
//没有返回值
if (json == null || "null".equals(json)) {
@@ -74,4 +68,15 @@ public class JavaScriptEngine implements IScriptEngine {
return JsonUtils.parseObject(json, type);
}
+ private static StringBuilder formatArgs(Object[] args) {
+ StringBuilder sbArgs = new StringBuilder("[");
+ //将入参转成json
+ for (int i = 0; i < args.length; i++) {
+ args[i] = JsonUtils.toJsonString(args[i]);
+ sbArgs.append(args[i]).append(i != args.length - 1 ? "," : "");
+ }
+ sbArgs.append("]");
+ return sbArgs;
+ }
+
}
\ No newline at end of file
From 97f48c4b16494faeb612e9825aa03780692a8a03 Mon Sep 17 00:00:00 2001
From: jay <75509151@qq.com>
Date: Tue, 5 Sep 2023 11:07:56 +0800
Subject: [PATCH 16/33] =?UTF-8?q?fix:=20=E5=BE=AE=E4=BF=A1=E9=BB=98?=
=?UTF-8?q?=E8=AE=A4=E9=85=8D=E7=BD=AE=E4=B8=BA=E7=A9=BA?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../main/java/cc/iotkit/web/service/SysLoginService.java | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/iot-starter/src/main/java/cc/iotkit/web/service/SysLoginService.java b/iot-starter/src/main/java/cc/iotkit/web/service/SysLoginService.java
index 3ce5db87..eddc4328 100644
--- a/iot-starter/src/main/java/cc/iotkit/web/service/SysLoginService.java
+++ b/iot-starter/src/main/java/cc/iotkit/web/service/SysLoginService.java
@@ -63,13 +63,13 @@ public class SysLoginService {
@Value("${user.password.lockTime}")
private Integer lockTime;
- @Value("${weixin.appid}")
+ @Value("${weixin.appid:}")
private String appid;
- @Value("${weixin.secret}")
+ @Value("${weixin.secret:}")
private String secret;
- @Value("${weixin.authUrl}")
+ @Value("${weixin.authUrl:}")
private String authUrl;
/**
From 710ee6c293c1a89ccc29120b4443cb74bee39b9e Mon Sep 17 00:00:00 2001
From: jay <75509151@qq.com>
Date: Tue, 5 Sep 2023 11:35:10 +0800
Subject: [PATCH 17/33] =?UTF-8?q?fix:=20=E8=AE=BE=E5=A4=87=E8=A7=A6?=
=?UTF-8?q?=E5=8F=91closehandler=E5=90=8E,=E4=BB=8D=E7=84=B6=E8=83=BD?=
=?UTF-8?q?=E4=B8=8A=E6=8A=A5=E6=B6=88=E6=81=AF,=E8=AE=BE=E5=A4=87?=
=?UTF-8?q?=E7=8A=B6=E6=80=81=E4=B8=8D=E6=AD=A3=E7=A1=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/main/java/cc/iotkit/comp/nb/NBVerticle.java | 1 +
1 file changed, 1 insertion(+)
diff --git a/iot-components/iot-nb-component/src/main/java/cc/iotkit/comp/nb/NBVerticle.java b/iot-components/iot-nb-component/src/main/java/cc/iotkit/comp/nb/NBVerticle.java
index 6f025c31..c8e31109 100644
--- a/iot-components/iot-nb-component/src/main/java/cc/iotkit/comp/nb/NBVerticle.java
+++ b/iot-components/iot-nb-component/src/main/java/cc/iotkit/comp/nb/NBVerticle.java
@@ -114,6 +114,7 @@ public class NBVerticle extends AbstractVerticle {
//删除设备与连接关系
endpointMap.remove(getEndpointKey(r));
});
+ endpoint.close();
}).disconnectMessageHandler(disconnectMessage -> {
log.info("Received disconnect from client, reason code = {}", disconnectMessage.code());
executor.onReceive(new HashMap<>(), "disconnect", clientId, (r) -> {
From 27a541ed67ab3df5bddac6c2606c714f6c026b24 Mon Sep 17 00:00:00 2001
From: jay <75509151@qq.com>
Date: Tue, 5 Sep 2023 19:45:33 +0800
Subject: [PATCH 18/33] =?UTF-8?q?fix:=20=E8=AE=BE=E5=A4=87=E8=A7=A6?=
=?UTF-8?q?=E5=8F=91closehandler=E5=90=8E,=E4=BB=8D=E7=84=B6=E8=83=BD?=
=?UTF-8?q?=E4=B8=8A=E6=8A=A5=E6=B6=88=E6=81=AF,=E8=AE=BE=E5=A4=87?=
=?UTF-8?q?=E7=8A=B6=E6=80=81=E4=B8=8D=E6=AD=A3=E7=A1=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java/cc/iotkit/comp/nb/NBVerticle.java | 23 ++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)
diff --git a/iot-components/iot-nb-component/src/main/java/cc/iotkit/comp/nb/NBVerticle.java b/iot-components/iot-nb-component/src/main/java/cc/iotkit/comp/nb/NBVerticle.java
index c8e31109..eafc3acf 100644
--- a/iot-components/iot-nb-component/src/main/java/cc/iotkit/comp/nb/NBVerticle.java
+++ b/iot-components/iot-nb-component/src/main/java/cc/iotkit/comp/nb/NBVerticle.java
@@ -22,6 +22,7 @@ import io.vertx.core.Future;
import io.vertx.core.buffer.Buffer;
import io.vertx.core.net.PemKeyCertOptions;
import io.vertx.mqtt.*;
+import io.vertx.mqtt.messages.codes.MqttDisconnectReasonCode;
import io.vertx.mqtt.messages.codes.MqttSubAckReasonCode;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.codec.binary.Hex;
@@ -114,7 +115,6 @@ public class NBVerticle extends AbstractVerticle {
//删除设备与连接关系
endpointMap.remove(getEndpointKey(r));
});
- endpoint.close();
}).disconnectMessageHandler(disconnectMessage -> {
log.info("Received disconnect from client, reason code = {}", disconnectMessage.code());
executor.onReceive(new HashMap<>(), "disconnect", clientId, (r) -> {
@@ -159,6 +159,17 @@ public class NBVerticle extends AbstractVerticle {
if (StringUtils.isBlank(payload)) {
return;
}
+ if(Boolean.FALSE.equals(mqttConnectPool.get(clientId))){
+ executor.onReceive(null, "online", clientId);
+ //保存设备与连接关系
+ String productKey = getProductKey(clientId);
+ String deviceName = getDeviceName(clientId);
+ endpointMap.put(getEndpointKey(productKey,deviceName ), endpoint);
+ mqttConnectPool.put(clientId, true);
+ log.info("mqtt client reconnect success,clientId:{}",clientId);
+ }
+
+
try {
Map head = new HashMap<>();
@@ -187,6 +198,16 @@ public class NBVerticle extends AbstractVerticle {
});
}
+ private String getDeviceName(String clientId) {
+ String[] s = clientId.split("_");
+ return s[0];
+ }
+
+ private String getProductKey(String clientId) {
+ String[] s = clientId.split("_");
+ return s[1];
+ }
+
@Override
public void stop() throws Exception {
for (MqttEndpoint endpoint : endpointMap.values()) {
From 79e868095ad7b6a1ebc0b614cd3f3637dabcae0d Mon Sep 17 00:00:00 2001
From: Remember to Smile * <928255825@qq.com>
Date: Wed, 6 Sep 2023 03:14:43 +0000
Subject: [PATCH 19/33] =?UTF-8?q?=E4=BF=AE=E5=A4=8Dtd=E6=95=B0=E6=8D=AE?=
=?UTF-8?q?=E5=BA=93=E5=88=9D=E5=A7=8B=E5=8C=96sql=E9=94=99=E8=AF=AF?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Signed-off-by: Remember to Smile * <928255825@qq.com>
---
.../java/cc/iotkit/temporal/td/service/DbStructureDataImpl.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/iot-common/iot-common-dao/iot-temproal-serviceImpl-td/src/main/java/cc/iotkit/temporal/td/service/DbStructureDataImpl.java b/iot-common/iot-common-dao/iot-temproal-serviceImpl-td/src/main/java/cc/iotkit/temporal/td/service/DbStructureDataImpl.java
index 18dbfbff..133a45bb 100644
--- a/iot-common/iot-common-dao/iot-temproal-serviceImpl-td/src/main/java/cc/iotkit/temporal/td/service/DbStructureDataImpl.java
+++ b/iot-common/iot-common-dao/iot-temproal-serviceImpl-td/src/main/java/cc/iotkit/temporal/td/service/DbStructureDataImpl.java
@@ -128,7 +128,7 @@ public class DbStructureDataImpl implements IDbStructureData {
@Override
@PostConstruct
public void initDbStructure() {
- tdRestApi.execSql("CREATE DATABASEIF NOT EXISTS iotkit KEEP 365 DURATION 10 BUFFER 16 WAL_LEVEL 1;");
+ tdRestApi.execSql("CREATE DATABASE IF NOT EXISTS iotkit KEEP 365 DURATION 10 BUFFER 16 WAL_LEVEL 1;");
//创建规则日志超级表
String sql = TableManager.getCreateSTableSql("rule_log", List.of(
From 90298599acfc34d29a85366a51d68d5f78dc270c Mon Sep 17 00:00:00 2001
From: jay <75509151@qq.com>
Date: Thu, 7 Sep 2023 18:48:47 +0800
Subject: [PATCH 20/33] =?UTF-8?q?fix:=20=E8=AE=BE=E5=A4=87=E8=A7=A6?=
=?UTF-8?q?=E5=8F=91closehandler=E5=90=8E,=E4=BB=8D=E7=84=B6=E8=83=BD?=
=?UTF-8?q?=E4=B8=8A=E6=8A=A5=E6=B6=88=E6=81=AF,=E8=AE=BE=E5=A4=87?=
=?UTF-8?q?=E7=8A=B6=E6=80=81=E4=B8=8D=E6=AD=A3=E7=A1=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/main/java/cc/iotkit/comp/nb/NBVerticle.java | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/iot-components/iot-nb-component/src/main/java/cc/iotkit/comp/nb/NBVerticle.java b/iot-components/iot-nb-component/src/main/java/cc/iotkit/comp/nb/NBVerticle.java
index eafc3acf..c9671ed1 100644
--- a/iot-components/iot-nb-component/src/main/java/cc/iotkit/comp/nb/NBVerticle.java
+++ b/iot-components/iot-nb-component/src/main/java/cc/iotkit/comp/nb/NBVerticle.java
@@ -108,15 +108,19 @@ public class NBVerticle extends AbstractVerticle {
endpoint.accept(false);
endpoint.closeHandler((v) -> {
log.warn("client connection closed,clientId:{}", clientId);
- if (Boolean.FALSE.equals(mqttConnectPool.get(clientId))) {
+ if (!mqttConnectPool.get(clientId)) {
return;
}
executor.onReceive(new HashMap<>(), "disconnect", clientId, (r) -> {
//删除设备与连接关系
endpointMap.remove(getEndpointKey(r));
+ mqttConnectPool.put(clientId, false);
});
}).disconnectMessageHandler(disconnectMessage -> {
log.info("Received disconnect from client, reason code = {}", disconnectMessage.code());
+ if (!mqttConnectPool.get(clientId)) {
+ return;
+ }
executor.onReceive(new HashMap<>(), "disconnect", clientId, (r) -> {
//删除设备与连接关系
endpointMap.remove(getEndpointKey(r));
@@ -159,7 +163,7 @@ public class NBVerticle extends AbstractVerticle {
if (StringUtils.isBlank(payload)) {
return;
}
- if(Boolean.FALSE.equals(mqttConnectPool.get(clientId))){
+ if(! mqttConnectPool.get(clientId)){
executor.onReceive(null, "online", clientId);
//保存设备与连接关系
String productKey = getProductKey(clientId);
@@ -169,8 +173,6 @@ public class NBVerticle extends AbstractVerticle {
log.info("mqtt client reconnect success,clientId:{}",clientId);
}
-
-
try {
Map head = new HashMap<>();
String topic = message.topicName();
From a1c84249e59ce421cd3f152191809397f872a67d Mon Sep 17 00:00:00 2001
From: jay <75509151@qq.com>
Date: Thu, 7 Sep 2023 19:13:39 +0800
Subject: [PATCH 21/33] =?UTF-8?q?add:=20docker=E7=9B=B8=E5=85=B3=E9=85=8D?=
=?UTF-8?q?=E7=BD=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
docker-compose.yml | 75 ++++++++++++++++++++++++++++++++++++++++++++++
docker.env | 19 ++++++++++++
2 files changed, 94 insertions(+)
create mode 100644 docker-compose.yml
create mode 100644 docker.env
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 00000000..a354a5c1
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,75 @@
+version: "3.4"
+
+services:
+ mysql:
+ container_name: iot-mysql
+ image: mysql:8
+ restart: unless-stopped
+ tty: true
+ ports:
+ - "3306:3306"
+ environment:
+ MYSQL_DATABASE: ${MYSQL_DATABASE:-iotkit}
+ MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD:-123456}
+ volumes:
+ - mysql:/var/lib/mysql/
+
+
+ redis:
+ container_name: iot-redis
+ image: redis:6-alpine
+ restart: unless-stopped
+ ports:
+ - "6379:6379"
+ volumes:
+ - redis:/data
+
+ server:
+ container_name: iot-server
+ build:
+ context: ./
+ image: iot-server
+ restart: unless-stopped
+ ports:
+ - "8086:8086"
+ environment:
+ # https://github.com/polovyivan/docker-pass-configs-to-container
+ SPRING_PROFILES_ACTIVE: local
+ JAVA_OPTS:
+ ${JAVA_OPTS:-
+ -Xms512m
+ -Xmx512m
+ -Djava.security.egd=file:/dev/./urandom
+ }
+ ARGS:
+ --spring.datasource.dynamic.datasource.master.url=${MASTER_DATASOURCE_URL:-jdbc:mysql://iot-mysql:3306/iotkit?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true}
+ --spring.datasource.dynamic.datasource.master.username=${MASTER_DATASOURCE_USERNAME:-root}
+ --spring.datasource.dynamic.datasource.master.password=${MASTER_DATASOURCE_PASSWORD:-123456}
+ --spring.datasource.dynamic.datasource.slave.url=${SLAVE_DATASOURCE_URL:-jdbc:mysql://iot-mysql:3306/iotkit?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true}
+ --spring.datasource.dynamic.datasource.slave.username=${SLAVE_DATASOURCE_USERNAME:-root}
+ --spring.datasource.dynamic.datasource.slave.password=${SLAVE_DATASOURCE_PASSWORD:-123456}
+ --spring.redis.host=${REDIS_HOST:-iot-redis}
+ depends_on:
+ - redis
+
+ admin:
+ container_name: iot-admin
+ build:
+ context: ./iot-ui-admin
+ args:
+ NODE_ENV:
+ ENV=${NODE_ENV:-production}
+ PUBLIC_PATH=${PUBLIC_PATH:-/}
+ VUE_APP_TITLE=${VUE_APP_TITLE:-openiita管理系统}
+ image: iot-admin
+ restart: unless-stopped
+ ports:
+ - "8080:80"
+ depends_on:
+ - server
+
+volumes:
+ mysql:
+ driver: local
+ redis:
+ driver: local
diff --git a/docker.env b/docker.env
new file mode 100644
index 00000000..71c3bdc1
--- /dev/null
+++ b/docker.env
@@ -0,0 +1,19 @@
+## mysql
+MYSQL_DATABASE=iotkit
+MYSQL_ROOT_PASSWORD=123456
+
+## server
+JAVA_OPTS=-Xms512m -Xmx512m -Djava.security.egd=file:/dev/./urandom
+
+MASTER_DATASOURCE_URL=jdbc:mysql://iot-mysql:3306/${MYSQL_DATABASE}?useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
+MASTER_DATASOURCE_USERNAME=root
+MASTER_DATASOURCE_PASSWORD=${MYSQL_ROOT_PASSWORD}
+SLAVE_DATASOURCE_URL=${MASTER_DATASOURCE_URL}
+SLAVE_DATASOURCE_USERNAME=${MASTER_DATASOURCE_USERNAME}
+SLAVE_DATASOURCE_PASSWORD=${MASTER_DATASOURCE_PASSWORD}
+REDIS_HOST=iot-redis
+
+## admin
+NODE_ENV=production
+PUBLIC_PATH=/
+VUE_APP_TITLE=iot管理系统
From 39d7152b9cbd28f24c3fe2cfc5b067dcea73bf58 Mon Sep 17 00:00:00 2001
From: jay <75509151@qq.com>
Date: Mon, 11 Sep 2023 10:23:27 +0800
Subject: [PATCH 22/33] update logo
---
README.md | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/README.md b/README.md
index c3baf077..4e17b723 100755
--- a/README.md
+++ b/README.md
@@ -1,7 +1,8 @@
+
-
+
From de53e07304357455538419ac5272279e98deb7ab Mon Sep 17 00:00:00 2001
From: jay <75509151@qq.com>
Date: Thu, 7 Sep 2023 18:48:47 +0800
Subject: [PATCH 23/33] =?UTF-8?q?fix:=20=E9=80=80=E5=87=BA=E7=99=BB?=
=?UTF-8?q?=E5=BD=95=E6=8E=A5=E5=8F=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../cc/iotkit/common/satoken/config/SaTokenConfig.java | 2 +-
.../java/cc/iotkit/common/satoken/utils/LoginHelper.java | 8 +++++++-
.../main/java/cc/iotkit/web/service/SysLoginService.java | 3 +++
3 files changed, 11 insertions(+), 2 deletions(-)
diff --git a/iot-common/iot-common-satoken/src/main/java/cc/iotkit/common/satoken/config/SaTokenConfig.java b/iot-common/iot-common-satoken/src/main/java/cc/iotkit/common/satoken/config/SaTokenConfig.java
index 06471950..c5d0733d 100644
--- a/iot-common/iot-common-satoken/src/main/java/cc/iotkit/common/satoken/config/SaTokenConfig.java
+++ b/iot-common/iot-common-satoken/src/main/java/cc/iotkit/common/satoken/config/SaTokenConfig.java
@@ -46,7 +46,7 @@ public class SaTokenConfig implements WebMvcConfigurer {
List swaggerUrls = List.of("/doc.html","/favicon.ico", "/webjars/**", "/resources/**"
, "/swagger-resources/**", "/swagger-ui.html/**");
- List loginUrls = List.of("/code", "/auth/tenant/list", "/auth/login");
+ List loginUrls = List.of("/code", "/auth/tenant/list", "/auth/login", "/auth/logout");
List openApiUrls = List.of( "/openapi/v1/getToken");
List excludeUrls = new ArrayList<>();
diff --git a/iot-common/iot-common-satoken/src/main/java/cc/iotkit/common/satoken/utils/LoginHelper.java b/iot-common/iot-common-satoken/src/main/java/cc/iotkit/common/satoken/utils/LoginHelper.java
index 07a7fa34..cb1ca8fe 100644
--- a/iot-common/iot-common-satoken/src/main/java/cc/iotkit/common/satoken/utils/LoginHelper.java
+++ b/iot-common/iot-common-satoken/src/main/java/cc/iotkit/common/satoken/utils/LoginHelper.java
@@ -4,10 +4,12 @@ import cc.iotkit.common.constant.TenantConstants;
import cc.iotkit.common.constant.UserConstants;
import cc.iotkit.common.enums.DeviceType;
import cc.iotkit.common.enums.UserType;
+import cc.iotkit.common.exception.BizException;
import cc.iotkit.common.undefined.LoginUser;
import cn.dev33.satoken.context.SaHolder;
import cn.dev33.satoken.context.model.SaStorage;
import cn.dev33.satoken.exception.InvalidContextException;
+import cn.dev33.satoken.session.SaSession;
import cn.dev33.satoken.stp.SaLoginModel;
import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.core.util.ObjectUtil;
@@ -76,7 +78,11 @@ public class LoginHelper {
if (loginUser != null) {
return loginUser;
}
- loginUser = (LoginUser) StpUtil.getTokenSession().get(LOGIN_USER_KEY);
+ SaSession tokenSession = StpUtil.getTokenSession();
+ if(tokenSession == null){
+ return null;
+ }
+ loginUser = (LoginUser) tokenSession.get(LOGIN_USER_KEY);
SaHolder.getStorage().set(LOGIN_USER_KEY, loginUser);
return loginUser;
}
diff --git a/iot-starter/src/main/java/cc/iotkit/web/service/SysLoginService.java b/iot-starter/src/main/java/cc/iotkit/web/service/SysLoginService.java
index eddc4328..a0f86750 100644
--- a/iot-starter/src/main/java/cc/iotkit/web/service/SysLoginService.java
+++ b/iot-starter/src/main/java/cc/iotkit/web/service/SysLoginService.java
@@ -174,6 +174,9 @@ public class SysLoginService {
public void logout() {
try {
LoginUser loginUser = LoginHelper.getLoginUser();
+ if(loginUser==null){
+ return;
+ }
if (LoginHelper.isSuperAdmin()) {
// 超级管理员 登出清除动态租户
TenantHelper.clearDynamic();
From c866098564fea01486501cb2e81164f216972d0d Mon Sep 17 00:00:00 2001
From: jay <75509151@qq.com>
Date: Mon, 18 Sep 2023 14:51:12 +0800
Subject: [PATCH 24/33] =?UTF-8?q?fix:=20=E6=96=B0=E5=A2=9E=E4=BA=A7?=
=?UTF-8?q?=E5=93=81=E6=97=B6productKey=E6=A0=A1=E9=AA=8C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/main/java/cc/iotkit/common/enums/ErrCode.java | 3 ++-
.../cc/iotkit/manager/service/impl/ProductServiceImpl.java | 5 +++++
2 files changed, 7 insertions(+), 1 deletion(-)
diff --git a/iot-common/iot-common-core/src/main/java/cc/iotkit/common/enums/ErrCode.java b/iot-common/iot-common-core/src/main/java/cc/iotkit/common/enums/ErrCode.java
index 930792e4..77b214d9 100644
--- a/iot-common/iot-common-core/src/main/java/cc/iotkit/common/enums/ErrCode.java
+++ b/iot-common/iot-common-core/src/main/java/cc/iotkit/common/enums/ErrCode.java
@@ -104,7 +104,8 @@ public enum ErrCode implements IEnum {
RECORD_NOT_FOUND(00000000, "记录不存在"),
ADD_PLATFORM_USER_ERROR(00000000, "添加平台用户失败"),
UPLOAD_FILE_ERROR(00000000, "上传文件失败"),
- FILE_NAME_IS_NULL(00000000, "文件名为空,获取文件名失败");
+ FILE_NAME_IS_NULL(00000000, "文件名为空,获取文件名失败"),
+ PRODUCT_KEY_EXIST(00000000, "ProductKey已存在");
diff --git a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/impl/ProductServiceImpl.java b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/impl/ProductServiceImpl.java
index fdb32411..b1cd2103 100644
--- a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/impl/ProductServiceImpl.java
+++ b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/impl/ProductServiceImpl.java
@@ -87,6 +87,11 @@ public class ProductServiceImpl implements IProductService {
String secret = UUID.randomUUID().toString(true);
product.setProductSecret(secret);
+ String productKey = data.getProductKey();
+ Product oldProduct = productData.findByProductKey(productKey);
+ if(oldProduct != null){
+ throw new BizException(ErrCode.PRODUCT_KEY_EXIST);
+ }
productData.save(product);
return MapstructUtils.convert(product, ProductVo.class);
From 1229b668b9dc6049cf72438b3a47f7698622f7e8 Mon Sep 17 00:00:00 2001
From: jay <75509151@qq.com>
Date: Fri, 22 Sep 2023 10:36:33 +0800
Subject: [PATCH 25/33] revert application.yml revert pom
---
.../iot-data-serviceImpl-rdb/pom.xml | 18 +-
.../src/main/resources/application.yml | 189 +++++++++++++++++-
2 files changed, 196 insertions(+), 11 deletions(-)
diff --git a/iot-common/iot-common-dao/iot-data-serviceImpl-rdb/pom.xml b/iot-common/iot-common-dao/iot-data-serviceImpl-rdb/pom.xml
index 4ebf8c19..7f9e0162 100644
--- a/iot-common/iot-common-dao/iot-data-serviceImpl-rdb/pom.xml
+++ b/iot-common/iot-common-dao/iot-data-serviceImpl-rdb/pom.xml
@@ -48,10 +48,10 @@
yitter-idgenerator
-
-
-
-
+
+ com.h2database
+ h2
+
@@ -59,11 +59,11 @@
-
- org.postgresql
- postgresql
- 42.2.9
-
+
+
+
+
+
commons-io
diff --git a/iot-starter/src/main/resources/application.yml b/iot-starter/src/main/resources/application.yml
index 0082d9db..c9ba15fd 100644
--- a/iot-starter/src/main/resources/application.yml
+++ b/iot-starter/src/main/resources/application.yml
@@ -7,9 +7,9 @@ spring:
enabled: true
max-file-size: 10MB
max-request-size: 12MB
- profiles:
- active: postgres
+ #注: 切换数据库时需要将项目根目录中的.init文件删除再重启
+ # <<=======内置H2数据库连接设置开始==========
jpa:
show-sql: true
hibernate:
@@ -17,7 +17,186 @@ spring:
properties:
hibernate:
format_sql: true
+ sql:
+ init:
+ schema-locations: classpath:sql/schema.sql
+ mode: ALWAYS
+ datasource:
+ url: jdbc:h2:./data/iotkit;MODE=MySQL
+ username: sa
+ password: 123456
+ driverClassName: org.h2.Driver
+ type: com.zaxxer.hikari.HikariDataSource
+ # 动态数据源文档 https://www.kancloud.cn/tracy5546/dynamic-datasource/content
+ dynamic:
+ hikari:
+ connection-timeout: 5000
+ idle-timeout: 30000 # 经过idle-timeout时间如果连接还处于空闲状态, 该连接会被回收
+ min-idle: 5 # 池中维护的最小空闲连接数, 默认为 10 个
+ max-pool-size: 16 # 池中最大连接数, 包括闲置和使用中的连接, 默认为 10 个
+ max-lifetime: 60000 # 如果一个连接超过了时长,且没有被使用, 连接会被回收
+ is-auto-commit: true
+ primary: master #设置默认的数据源或者数据源组,默认值即为master
+ strict: true #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
+ datasource:
+ # 主库数据源
+ master:
+ type: ${spring.datasource.type}
+ driverClassName: org.h2.Driver
+ # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
+ # rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
+ url: jdbc:h2:./data/iotkit;MODE=MySQL
+ username: sa
+ password: 123456
+ # 从库数据源
+ slave:
+ lazy: true
+ type: ${spring.datasource.type}
+ driverClassName: org.h2.Driver
+ url: jdbc:h2:./data/iotkit;MODE=MySQL
+ username: sa
+ password: 123456
+ # 内置h2 web console设置
+ platform: h2
+ h2:
+ console:
+ enabled: true
+ path: /h2
+ settings:
+ web-allow-others: true
+ #=======内置H2数据库连接设置结束==========>>
+
+ # <<==========mysql配置开始==============
+ # jpa:
+ # database: MySQL
+ # database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
+ # show-sql: true
+ # hibernate:
+ # ddl-auto: update
+ # properties:
+ # hibernate:
+ # format_sql: true
+ # datasource:
+ # type: com.zaxxer.hikari.HikariDataSource
+ # dynamic:
+ # hikari:
+ # connection-timeout: 5000
+ # idle-timeout: 30000 # 经过idle-timeout时间如果连接还处于空闲状态, 该连接会被回收
+ # min-idle: 5 # 池中维护的最小空闲连接数, 默认为 10 个
+ # max-pool-size: 16 # 池中最大连接数, 包括闲置和使用中的连接, 默认为 10 个
+ # max-lifetime: 60000 # 如果一个连接超过了时长,且没有被使用, 连接会被回收
+ # is-auto-commit: true
+ # primary: master #设置默认的数据源或者数据源组,默认值即为master
+ # strict: true #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
+ # datasource:
+ # # 主库数据源
+ # master:
+ # type: ${spring.datasource.type}
+ # driverClassName: com.mysql.cj.jdbc.Driver
+ # # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
+ # url: jdbc:mysql://192.168.31.136:3306/iotkit?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
+ # username: root
+ # password: 123456
+ # ============mysql配置结束============>>
+
+ #<<================es时序数据配置开始===============
+ elasticsearch:
+ rest:
+ #使用内置es的配置
+ #uris: http://elasticsearch:9200
+ uris: http://127.0.0.1:9200
+ username:
+ password:
+ connection-timeout: 10s
+ #================es时序数据配置结束===============>>
+
+ #<<===========tdengine时序数据库配置开始============
+ # td-datasource:
+ # url: jdbc:TAOS-RS://127.0.0.1:6041/iotkit?timezone=UTC-8&charset=UTF-8&locale=en_US.UTF-8
+ # username: root
+ # password: taosdata
+ # driverClassName: com.taosdata.jdbc.rs.RestfulDriver
+ #===========tdengine时序数据库配置开始============>>
+
+ redis:
+ #使用内置redis的配置
+ #host: redis
+ host: 127.0.0.1
+ port: 6379
+ database: 0
+
+ mvc:
+ pathmatch:
+ matching-strategy: ant_path_matcher
+# profiles:
+# active: mysql
+
+#application.yml中打开注释支持rocketMq作为消息总线,pom.xml中打开注释使用rocketmq消息总线
+#rocketmq:
+# name-server: 172.16.1.113:9876
+# producer:
+# group: iotkit
+
+#图片存储用的是阿里云oss,如果需要上传产品图片才需要配置
+aliyun:
+ bucketId:
+ endpoint:
+ accessKeyId:
+ accessKeySecret:
+
+sa-token:
+ # token名称 (同时也是cookie名称)
+ token-name: token
+ # token有效期,单位s 默认30天, -1代表永不过期
+ timeout: 2592000
+ # token临时有效期 (指定时间内无操作就视为token过期) 单位: 秒
+ activity-timeout: -1
+ # 是否允许同一账号并发登录 (为true时允许一起登录, 为false时新登录挤掉旧登录)
+ is-concurrent: true
+ # 在多人登录同一账号时,是否共用一个token (为true时所有登录共用一个token, 为false时每次登录新建一个token)
+ is-share: false
+ # token风格
+ token-style: uuid
+ # 是否输出操作日志
+ is-log: false
+
+captcha:
+ enable: true
+ # 页面 <参数设置> 可开启关闭 验证码校验
+ # 验证码类型 math 数组计算 char 字符验证
+ type: MATH
+ # line 线段干扰 circle 圆圈干扰 shear 扭曲干扰
+ category: CIRCLE
+ # 数字验证码位数
+ numberLength: 1
+ # 字符验证码长度
+ charLength: 4
+
+# 用户配置
+user:
+ password:
+ # 密码最大错误次数
+ maxRetryCount: 5
+ # 密码锁定时间(默认10分钟)
+ lockTime: 10
+
+# openapi配置
+openapi:
+ appid: 123456789
+ password: 123456
+
+oss:
+ region: xxxxx
+ endpoint: xxxxx
+ accessKey: xxxxx
+ secretKey: xxxxx
+ buckName: xxxx
+baetyl:
+ api-type: feign
+ service-url: http://116.168.30.140:30004
+
+# MyBatisPlus配置
# https://baomidou.com/config/
mybatis-plus:
# 不支持多包, 如有需要可在注解配置 或 提升扫包等级
@@ -33,3 +212,9 @@ mybatis-plus:
# AUTO 自增 NONE 空 INPUT 用户输入 ASSIGN_ID 雪花 ASSIGN_UUID 唯一 UUID
# 如需改为自增 需要将数据库表全部设置为自增
idType: ASSIGN_ID
+
+#微信小程序配置
+weixin:
+ appid: xx
+ secret: xx
+ authUrl: xx
\ No newline at end of file
From 03525e444fab9a73445cf56eaf6fcaf1cf894332 Mon Sep 17 00:00:00 2001
From: xiwa
Date: Fri, 20 Oct 2023 23:02:55 +0800
Subject: [PATCH 26/33] =?UTF-8?q?fix:=E5=88=A0=E9=99=A4iot=5Fadmin?=
=?UTF-8?q?=E8=A7=92=E8=89=B2=E6=A0=A1=E9=AA=8C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../java/cc/iotkit/manager/controller/ProductController.java | 2 --
.../java/cc/iotkit/manager/controller/UserInfoController.java | 3 ---
2 files changed, 5 deletions(-)
diff --git a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/ProductController.java b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/ProductController.java
index 4fe91811..f2b2b293 100644
--- a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/ProductController.java
+++ b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/ProductController.java
@@ -124,7 +124,6 @@ public class ProductController {
}
@ApiOperation("品类编辑")
- @SaCheckRole("iot_admin")
@SaCheckPermission("iot:category:edit")
@PostMapping("/category/edit")
public boolean saveCategory(@Validated @RequestBody Request req) {
@@ -133,7 +132,6 @@ public class ProductController {
}
@ApiOperation("删除品类")
- @SaCheckRole("iot_admin")
@SaCheckPermission("iot:category:remove")
@PostMapping("/category/delete")
public boolean delCategory(@Validated @RequestBody Request req) {
diff --git a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/UserInfoController.java b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/UserInfoController.java
index dd906438..5a40ce01 100644
--- a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/UserInfoController.java
+++ b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/UserInfoController.java
@@ -47,7 +47,6 @@ public class UserInfoController {
/**
* 平台用户列表
*/
- @SaCheckRole("iot_admin")
@PostMapping("/platform/users")
public List getPlatformUsers() {
return userInfoData.findByType(UserInfo.USER_TYPE_PLATFORM);
@@ -56,7 +55,6 @@ public class UserInfoController {
/**
* 添加平台用户
*/
- @SaCheckRole("iot_admin")
@PostMapping("/platform/user/add")
public void addPlatformUser(@RequestBody UserInfo user) {
try {
@@ -76,7 +74,6 @@ public class UserInfoController {
/**
* 重置平台用户密码
*/
- @SaCheckRole("iot_admin")
@PostMapping("/platform/user/{uid}/resetPwd")
public void resetPlatformUserPwd(@PathVariable("uid") String uid) {
try {
From 7684f1e9ee90edb52ca4ec67456e30fbc83987ed Mon Sep 17 00:00:00 2001
From: xiwa
Date: Fri, 20 Oct 2023 15:07:04 +0000
Subject: [PATCH 27/33] update README.md.
Signed-off-by: xiwa
---
README.md | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/README.md b/README.md
index 4e17b723..70eadda7 100755
--- a/README.md
+++ b/README.md
@@ -79,7 +79,7 @@ Vertx event-bus(内置)、RocketMQ,通过扩展模块可接入其它任意
2、将iot-data-serviceImpl-rdb/pom.xml中的mysql驱动注释放开
-3、application.yml 注释掉内置H2数据库,打开mysql配置注释
+3、application.yml 注释掉内置H2数据库,打开mysql配置注释(先建好库)
##### es切换为TDengine(版本:3.x)方法
1、删掉.init和关系数据库数据
From 0a90c90498bfbc3a98cf1534cb397dc166dc91d6 Mon Sep 17 00:00:00 2001
From: xiwa
Date: Fri, 20 Oct 2023 23:10:34 +0800
Subject: [PATCH 28/33] =?UTF-8?q?fix:mysql=E9=85=8D=E7=BD=AE=E7=BC=A9?=
=?UTF-8?q?=E8=BF=9B=E8=B0=83=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/main/resources/application.yml | 60 +++++++++----------
1 file changed, 30 insertions(+), 30 deletions(-)
diff --git a/iot-starter/src/main/resources/application.yml b/iot-starter/src/main/resources/application.yml
index c9ba15fd..dbd44c3e 100644
--- a/iot-starter/src/main/resources/application.yml
+++ b/iot-starter/src/main/resources/application.yml
@@ -68,36 +68,36 @@ spring:
#=======内置H2数据库连接设置结束==========>>
# <<==========mysql配置开始==============
- # jpa:
- # database: MySQL
- # database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
- # show-sql: true
- # hibernate:
- # ddl-auto: update
- # properties:
- # hibernate:
- # format_sql: true
- # datasource:
- # type: com.zaxxer.hikari.HikariDataSource
- # dynamic:
- # hikari:
- # connection-timeout: 5000
- # idle-timeout: 30000 # 经过idle-timeout时间如果连接还处于空闲状态, 该连接会被回收
- # min-idle: 5 # 池中维护的最小空闲连接数, 默认为 10 个
- # max-pool-size: 16 # 池中最大连接数, 包括闲置和使用中的连接, 默认为 10 个
- # max-lifetime: 60000 # 如果一个连接超过了时长,且没有被使用, 连接会被回收
- # is-auto-commit: true
- # primary: master #设置默认的数据源或者数据源组,默认值即为master
- # strict: true #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
- # datasource:
- # # 主库数据源
- # master:
- # type: ${spring.datasource.type}
- # driverClassName: com.mysql.cj.jdbc.Driver
- # # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
- # url: jdbc:mysql://192.168.31.136:3306/iotkit?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
- # username: root
- # password: 123456
+# jpa:
+# database: MySQL
+# database-platform: org.hibernate.dialect.MySQL5InnoDBDialect
+# show-sql: true
+# hibernate:
+# ddl-auto: update
+# properties:
+# hibernate:
+# format_sql: true
+# datasource:
+# type: com.zaxxer.hikari.HikariDataSource
+# dynamic:
+# hikari:
+# connection-timeout: 5000
+# idle-timeout: 30000 # 经过idle-timeout时间如果连接还处于空闲状态, 该连接会被回收
+# min-idle: 5 # 池中维护的最小空闲连接数, 默认为 10 个
+# max-pool-size: 16 # 池中最大连接数, 包括闲置和使用中的连接, 默认为 10 个
+# max-lifetime: 60000 # 如果一个连接超过了时长,且没有被使用, 连接会被回收
+# is-auto-commit: true
+# primary: master #设置默认的数据源或者数据源组,默认值即为master
+# strict: true #严格匹配数据源,默认false. true未匹配到指定数据源时抛异常,false使用默认数据源
+# datasource:
+# # 主库数据源
+# master:
+# type: ${spring.datasource.type}
+# driverClassName: com.mysql.cj.jdbc.Driver
+# # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
+# url: jdbc:mysql://127.0.0.1:3306/iotkit?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false
+# username: root
+# password: 123456
# ============mysql配置结束============>>
#<<================es时序数据配置开始===============
From 7217438afbb87067d015cc57f985e8c43d68ecaf Mon Sep 17 00:00:00 2001
From: xiwa
Date: Fri, 3 Nov 2023 23:10:03 +0800
Subject: [PATCH 29/33] fix:bug#I8DLHU
---
.../java/cc/iotkit/data/dao/IJPACommData.java | 30 ++++++++++---------
.../iotkit/data/service/SysUserDataImpl.java | 10 +++----
.../cc/iotkit/config/EmbeddedRedisConfig.java | 11 ++++++-
3 files changed, 31 insertions(+), 20 deletions(-)
diff --git a/iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/dao/IJPACommData.java b/iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/dao/IJPACommData.java
index 49e70876..d0416207 100644
--- a/iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/dao/IJPACommData.java
+++ b/iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/dao/IJPACommData.java
@@ -7,6 +7,7 @@ import cc.iotkit.data.ICommonData;
import cc.iotkit.data.util.PageBuilder;
import cc.iotkit.model.Id;
import org.springframework.data.domain.Example;
+import org.springframework.data.domain.ExampleMatcher;
import org.springframework.data.domain.Page;
import org.springframework.data.jpa.repository.JpaRepository;
@@ -21,7 +22,7 @@ import java.util.Optional;
* @Version: V1.0
* @Description: 基础数据操作接口
*/
-public interface IJPACommData< T extends Id, ID> extends ICommonData {
+public interface IJPACommData, ID> extends ICommonData {
JpaRepository getBaseRepository();
@@ -73,15 +74,15 @@ public interface IJPACommData< T extends Id, ID> extends ICommonData findAll(PageRequest pageRequest) {
+ default Paging findAll(PageRequest pageRequest) {
Example example = genExample(pageRequest.getData());
Page all = null;
- if(Objects.isNull(example)){
+ if (Objects.isNull(example)) {
all = getBaseRepository().findAll(PageBuilder.toPageable(pageRequest));
- }else{
- all =getBaseRepository().findAll(example, PageBuilder.toPageable(pageRequest));
+ } else {
+ all = getBaseRepository().findAll(example, PageBuilder.toPageable(pageRequest));
}
- return PageBuilder.toPaging(all, getTClass());
+ return PageBuilder.toPaging(all, getTClass());
}
/**
@@ -91,11 +92,11 @@ public interface IJPACommData< T extends Id, ID> extends ICommonData findAllByCondition(T data) {
Example example = genExample(data);
List all = null;
- if(Objects.isNull(example)){
- all = getBaseRepository().findAll();
+ if (Objects.isNull(example)) {
+ all = getBaseRepository().findAll();
- }else{
- all = getBaseRepository().findAll(example);
+ } else {
+ all = getBaseRepository().findAll(example);
}
return MapstructUtils.convert(all, getTClass());
@@ -109,7 +110,7 @@ public interface IJPACommData< T extends Id, ID> extends ICommonData, ID> extends ICommonData tbSysUser.status.eq(data.getStatus()))
.and(Objects.nonNull(data.getDeptId()), () -> tbSysUser.deptId.eq(data.getDeptId()))
.and(tbSysUser.delFlag.eq(UserConstants.ROLE_NORMAL))
- .and(Objects.nonNull(data.getRoleId()),()-> tbSysRole.id.eq(data.getRoleId()));
+ .and(Objects.nonNull(data.getRoleId()), () -> tbSysRole.id.eq(data.getRoleId()));
QueryResults tbSysUserQueryResults = jpaQueryFactory.select(Projections.bean(TbSysUser.class, tbSysUser.id, tbSysUser.deptId, tbSysUser.userName,
tbSysUser.nickName, tbSysUser.email, tbSysUser.phonenumber, tbSysUser.createTime)).from(tbSysUser)
@@ -244,7 +244,7 @@ public class SysUserDataImpl implements ISysUserData, IJPACommData selectUnallocatedList(PageRequest to) {
SysUser data = to.getData();
PredicateBuilder builder = PredicateBuilder.instance();
- if(Objects.nonNull(data)){
+ if (Objects.nonNull(data)) {
builder.and(StringUtils.isNotBlank(data.getPhonenumber()), () -> tbSysUser.phonenumber.like(data.getPhonenumber()))
.and(StringUtils.isNotBlank(data.getUserName()), () -> tbSysUser.userName.like(data.getUserName()))
.and(StringUtils.isNotBlank(data.getStatus()), () -> tbSysUser.status.eq(data.getStatus()))
@@ -303,9 +303,9 @@ public class SysUserDataImpl implements ISysUserData, IJPACommData tbSysUser.id.eq(user.getId()))
- .and(StringUtils.isNotEmpty(user.getUserName()), () -> tbSysUser.userName.like(user.getUserName()))
+ .and(StringUtils.isNotEmpty(user.getUserName()), () -> tbSysUser.userName.like("%" + user.getUserName() + "%"))
.and(StringUtils.isNotEmpty(user.getStatus()), () -> tbSysUser.status.eq(user.getStatus()))
- .and(StringUtils.isNotEmpty(user.getPhonenumber()), () -> tbSysUser.phonenumber.like(user.getPhonenumber()))
+ .and(StringUtils.isNotEmpty(user.getPhonenumber()), () -> tbSysUser.phonenumber.like("%" + user.getPhonenumber() + "%"))
.and(ObjectUtil.isNotEmpty(ids), () -> tbSysUser.deptId.in(ids)).build();
}
}
diff --git a/iot-starter/src/main/java/cc/iotkit/config/EmbeddedRedisConfig.java b/iot-starter/src/main/java/cc/iotkit/config/EmbeddedRedisConfig.java
index de0ed01d..b6cf4f17 100644
--- a/iot-starter/src/main/java/cc/iotkit/config/EmbeddedRedisConfig.java
+++ b/iot-starter/src/main/java/cc/iotkit/config/EmbeddedRedisConfig.java
@@ -9,8 +9,10 @@
*/
package cc.iotkit.config;
+import lombok.extern.slf4j.Slf4j;
import redis.embedded.RedisServer;
+@Slf4j
public class EmbeddedRedisConfig {
public static boolean embeddedEnable() {
@@ -28,7 +30,14 @@ public class EmbeddedRedisConfig {
} else {
redisServer = new RedisServer();
}
- redisServer.start();
+ try {
+ redisServer.start();
+ } catch (Exception e) {
+ if (e.getMessage().contains("Address already in use")) {
+ throw new RuntimeException("redis端口被占用,请先停止本地的redis服务");
+ }
+ log.error("start redis server failed", e);
+ }
}
}
From ce6988f9e38a164af8c8dc9006e4addc87d0823e Mon Sep 17 00:00:00 2001
From: xiwa
Date: Wed, 8 Nov 2023 00:17:36 +0800
Subject: [PATCH 30/33] =?UTF-8?q?fix:debug=20toString=E5=BE=AA=E7=8E=AF?=
=?UTF-8?q?=E5=BC=95=E7=94=A8=E4=BF=AE=E5=A4=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/main/java/cc/iotkit/comps/DeviceMessageHandler.java | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/DeviceMessageHandler.java b/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/DeviceMessageHandler.java
index 3a1d9b2a..d988f1a6 100755
--- a/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/DeviceMessageHandler.java
+++ b/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/DeviceMessageHandler.java
@@ -24,6 +24,8 @@ import cc.iotkit.model.device.message.ThingModelMessage;
import cc.iotkit.script.IScriptEngine;
import com.fasterxml.jackson.core.type.TypeReference;
import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
@@ -35,7 +37,8 @@ import java.util.concurrent.TimeUnit;
import java.util.function.Consumer;
@Slf4j
-@Data
+@Getter
+@Setter
public class DeviceMessageHandler implements IMessageHandler {
From 24d4b2862838ec22d6603c13e3bdaa08395472be Mon Sep 17 00:00:00 2001
From: tangfudong <280620913@qq.com>
Date: Wed, 20 Dec 2023 11:29:33 +0800
Subject: [PATCH 31/33] =?UTF-8?q?update=EF=BC=9A=E5=88=9D=E5=A7=8B?=
=?UTF-8?q?=E5=8C=96=E4=B8=AD=E6=B7=BB=E5=8A=A0=E7=B3=BB=E7=BB=9Fapp?=
=?UTF-8?q?=E7=9A=84=E6=95=B0=E6=8D=AE?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
data/init/sys_app.json | 9 +++++++++
.../src/main/java/cc/iotkit/data/model/TbSysApp.java | 2 +-
.../java/cc/iotkit/manager/service/ExampleDataInit.java | 7 ++++++-
3 files changed, 16 insertions(+), 2 deletions(-)
create mode 100644 data/init/sys_app.json
diff --git a/data/init/sys_app.json b/data/init/sys_app.json
new file mode 100644
index 00000000..35ac726d
--- /dev/null
+++ b/data/init/sys_app.json
@@ -0,0 +1,9 @@
+ [
+ {
+ "id": 1,
+ "appId": "wx5eebdd2bab2d805c",
+ "appSecret": "a92c69537573141d06a59a5c814dd02c",
+ "appType": "1",
+ "remark": "智能家居小程序"
+ }
+ ]
diff --git a/iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbSysApp.java b/iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbSysApp.java
index e7cc8503..98d51635 100644
--- a/iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbSysApp.java
+++ b/iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbSysApp.java
@@ -66,7 +66,7 @@ public class TbSysApp extends TenantModel implements TenantAware {
* 备注
*/
@ApiModelProperty(value = "备注")
- private String REMARK;
+ private String remark;
}
diff --git a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/ExampleDataInit.java b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/ExampleDataInit.java
index 4e45493f..4204a938 100644
--- a/iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/ExampleDataInit.java
+++ b/iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/ExampleDataInit.java
@@ -39,7 +39,6 @@ import cc.iotkit.temporal.IDbStructureData;
import com.fasterxml.jackson.core.type.TypeReference;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FileUtils;
-import org.hibernate.exception.DataException;
import org.springframework.beans.factory.SmartInitializingSingleton;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
@@ -160,6 +159,9 @@ public class ExampleDataInit implements SmartInitializingSingleton {
@Autowired
private ISysUserRoleData sysUserRoleData;
+ @Autowired
+ private ISysAppData sysAppData;
+
@Override
public void afterSingletonsInstantiated() {
//等redis实例化后再执行
@@ -291,6 +293,9 @@ public class ExampleDataInit implements SmartInitializingSingleton {
initData("sys_user_role", sysUserRoleData, new TypeReference>() {
});
+
+ initData("sys_app", sysAppData, new TypeReference>() {
+ });
}
private T initData(String name, ICommonData service, TypeReference type) {
From 8bd516de55e28fa6623e8f7362b61ed54e12a164 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=9D=8E=E9=81=93=E7=94=AB?=
Date: Wed, 27 Dec 2023 17:59:00 +0800
Subject: [PATCH 32/33] =?UTF-8?q?fix=EF=BC=9A=E4=BF=AE=E5=A4=8D=E6=A8=A1?=
=?UTF-8?q?=E6=8B=9F=E8=AE=BE=E5=A4=87=E4=B8=8B=E8=A1=8C=E5=B1=9E=E6=80=A7?=
=?UTF-8?q?=E8=B0=83=E8=AF=95=E6=8A=A5=E9=94=99=EF=BC=8C=E4=BF=AE=E5=A4=8D?=
=?UTF-8?q?=E6=A8=A1=E6=8B=9F=E8=AE=BE=E5=A4=87=E4=B8=8B=E8=A1=8C=E5=B1=9E?=
=?UTF-8?q?=E6=80=A7=E6=97=A5=E5=BF=97=E8=AE=B0=E5=BD=95=E6=8A=A5=E9=94=99?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../cc/iotkit/plugin/main/PluginMainImpl.java | 15 +++++++++------
.../ruleengine/handler/RuleDeviceConsumer.java | 4 ++++
2 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/iot-module/iot-plugin/iot-plugin-main/src/main/java/cc/iotkit/plugin/main/PluginMainImpl.java b/iot-module/iot-plugin/iot-plugin-main/src/main/java/cc/iotkit/plugin/main/PluginMainImpl.java
index 014aeb03..22db6d7e 100644
--- a/iot-module/iot-plugin/iot-plugin-main/src/main/java/cc/iotkit/plugin/main/PluginMainImpl.java
+++ b/iot-module/iot-plugin/iot-plugin-main/src/main/java/cc/iotkit/plugin/main/PluginMainImpl.java
@@ -104,17 +104,16 @@ public class PluginMainImpl implements IPluginMain, DeviceService {
throw new BizException(ErrCode.PLUGIN_SERVICE_NOT_FOUND);
}
- if (!(service.getParams() instanceof Map)) {
- throw new BizException(ErrCode.PARAMS_EXCEPTION);
- }
- Map params = (Map) service.getParams();
-
IDevice deviceService = deviceServices.get(0);
String type = service.getType();
String identifier = service.getIdentifier();
ActionResult result = null;
if (ThingService.TYPE_SERVICE.equals(type)) {
+ if (!(service.getParams() instanceof Map)) {
+ throw new BizException(ErrCode.PARAMS_EXCEPTION);
+ }
+ Map params = (Map) service.getParams();
//服务调用
ServiceInvoke action = ServiceInvoke.builder()
.id(service.getMid())
@@ -128,6 +127,10 @@ public class PluginMainImpl implements IPluginMain, DeviceService {
publish(service, result.getCode());
} else if (ThingService.TYPE_PROPERTY.equals(type)) {
if ("set".equals(identifier)) {
+ if (!(service.getParams() instanceof Map)) {
+ throw new BizException(ErrCode.PARAMS_EXCEPTION);
+ }
+ Map params = (Map) service.getParams();
//属性设置
PropertySet action = PropertySet.builder()
.id(service.getMid())
@@ -144,7 +147,7 @@ public class PluginMainImpl implements IPluginMain, DeviceService {
.id(service.getMid())
.productKey(linkPk)
.deviceName(linkDn)
- .keys(new ArrayList<>(params.keySet()))
+ .keys((List) service.getParams())
.build();
//调用插件设备服务接口
result = deviceService.propertyGet(action);
diff --git a/iot-module/iot-rule-engine/src/main/java/cc/iotkit/ruleengine/handler/RuleDeviceConsumer.java b/iot-module/iot-rule-engine/src/main/java/cc/iotkit/ruleengine/handler/RuleDeviceConsumer.java
index 67cd4e80..1b3539eb 100644
--- a/iot-module/iot-rule-engine/src/main/java/cc/iotkit/ruleengine/handler/RuleDeviceConsumer.java
+++ b/iot-module/iot-rule-engine/src/main/java/cc/iotkit/ruleengine/handler/RuleDeviceConsumer.java
@@ -23,6 +23,7 @@ import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ScheduledThreadPoolExecutor;
@@ -53,6 +54,9 @@ public class RuleDeviceConsumer implements ConsumerHandler, A
for (DeviceMessageHandler handler : this.handlers) {
messageHandlerPool.submit(() -> {
try {
+ if (!(msg.getData() instanceof Map)) {
+ msg.setData(new HashMap<>());
+ }
handler.handle(msg);
} catch (Throwable e) {
log.error("handler message error", e);
From eb434732cf341bab2ba0acf957d3adf5ba8ea6e7 Mon Sep 17 00:00:00 2001
From: tangfudong <280620913@qq.com>
Date: Thu, 4 Jan 2024 17:35:19 +0800
Subject: [PATCH 33/33] =?UTF-8?q?fix=EF=BC=9A=E5=B0=8F=E7=A8=8B=E5=BA=8F?=
=?UTF-8?q?=E7=9A=84=E7=99=BB=E5=BD=95=E6=8E=A5=E5=8F=A3=E6=B7=BB=E5=8A=A0?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../iotkit/web/controller/AuthController.java | 17 +++++++++++++++++
.../cc/iotkit/web/service/SysLoginService.java | 2 +-
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/iot-starter/src/main/java/cc/iotkit/web/controller/AuthController.java b/iot-starter/src/main/java/cc/iotkit/web/controller/AuthController.java
index 54ed8b9e..260f7d72 100644
--- a/iot-starter/src/main/java/cc/iotkit/web/controller/AuthController.java
+++ b/iot-starter/src/main/java/cc/iotkit/web/controller/AuthController.java
@@ -19,6 +19,7 @@ import cn.dev33.satoken.annotation.SaIgnore;
import cn.hutool.core.collection.CollUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
+import jakarta.validation.constraints.NotBlank;
import lombok.RequiredArgsConstructor;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.PostMapping;
@@ -69,6 +70,22 @@ public class AuthController {
return loginVo;
}
+ /**
+ * 小程序登录(示例)
+ *
+ * @param xcxCode 小程序code
+ * @return 结果
+ */
+ @ApiOperation("小程序登录")
+ @PostMapping("/xcxLogin")
+ public LoginVo xcxLogin(@NotBlank(message = "{xcx.appId.not.blank}") String appId,@NotBlank(message = "{xcx.code.not.blank}") String xcxCode) {
+ LoginVo loginVo = new LoginVo();
+ // 生成令牌
+ String token = loginService.xcxLogin(appId,xcxCode);
+ loginVo.setToken(token);
+ return loginVo;
+ }
+
/**
* 退出登录
diff --git a/iot-starter/src/main/java/cc/iotkit/web/service/SysLoginService.java b/iot-starter/src/main/java/cc/iotkit/web/service/SysLoginService.java
index 8fad215f..9e8b1a69 100644
--- a/iot-starter/src/main/java/cc/iotkit/web/service/SysLoginService.java
+++ b/iot-starter/src/main/java/cc/iotkit/web/service/SysLoginService.java
@@ -172,7 +172,7 @@ public class SysLoginService {
// 生成token
LoginHelper.loginByDevice(loginUser, DeviceType.XCX);
-// recordLoginInfo(loginUser.getTenantId(), user.getNickName(), Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"));
+ recordLoginInfo(loginUser.getTenantId(), user.getNickName(), Constants.LOGIN_SUCCESS, MessageUtils.message("user.login.success"));
// recordLoginInfo(user.getId());
return StpUtil.getTokenValue();
}