Selaa lähdekoodia

Merge remote-tracking branch 'origin/dev-V0.4.5' into dev-V0.4.5

regan 2 vuotta sitten
vanhempi
commit
f4afa8109f
84 muutettua tiedostoa jossa 539 lisäystä ja 681 poistoa
  1. BIN
      data/components/2c089bb8-0412-449e-94f1-212d35a50219/iot-websocket-component-0.4.5-SNAPSHOT.jar
  2. BIN
      data/components/305a8b86-4566-4f2a-a57f-f84ca47471a1/iot-http-biz-component-0.4.5-SNAPSHOT.jar
  3. BIN
      data/components/3ababc5e-15e9-45a7-8f38-2a6afd45c780/iot-DLT645-component-0.4.5-SNAPSHOT.jar
  4. BIN
      data/components/6c095554-35e7-4e9d-a8d2-bb919e9479f4/iot-emqx-component-0.4.5-SNAPSHOT.jar
  5. BIN
      data/components/eabb131d-8fd1-43a8-88d9-a198abfd3d42/iot-mqtt-component-0.4.5-SNAPSHOT.jar
  6. 1 1
      data/init/channel.json
  7. 3 3
      data/init/deviceGroup.json
  8. 59 59
      data/init/deviceInfo.json
  9. 32 32
      data/init/product.json
  10. 10 10
      data/init/protocolComponent.json
  11. 4 4
      data/init/protocolConverter.json
  12. 3 3
      data/init/ruleInfo.json
  13. 1 1
      data/init/sys_menu.json
  14. 2 2
      data/init/taskInfo.json
  15. 16 16
      data/init/thingModel.json
  16. 9 9
      data/init/userInfo.json
  17. 6 6
      data/init/virtualDevice.json
  18. 2 12
      iot-common/iot-common-core/src/main/java/cc/iotkit/common/api/PageRequest.java
  19. 10 11
      iot-common/iot-common-core/src/main/java/cc/iotkit/common/api/Request.java
  20. 2 4
      iot-common/iot-common-core/src/main/java/cc/iotkit/common/api/RequestEmpty.java
  21. 0 183
      iot-common/iot-common-core/src/main/java/cc/iotkit/common/utils/SnowflakeIdGeneratorUtil.java
  22. 10 7
      iot-common/iot-common-dao/iot-common-model/src/main/java/cc/iotkit/model/product/Product.java
  23. 10 6
      iot-common/iot-common-dao/iot-common-model/src/main/java/cc/iotkit/model/product/ThingModel.java
  24. 4 2
      iot-common/iot-common-dao/iot-data-service/src/main/java/cc/iotkit/data/manager/IProductData.java
  25. 2 1
      iot-common/iot-common-dao/iot-data-service/src/main/java/cc/iotkit/data/manager/IThingModelData.java
  26. 2 2
      iot-common/iot-common-dao/iot-data-serviceImpl-cache/src/main/java/cc/iotkit/data/cache/ProductCacheEvict.java
  27. 1 1
      iot-common/iot-common-dao/iot-data-serviceImpl-cache/src/main/java/cc/iotkit/data/cache/ThingModelCacheEvict.java
  28. 21 14
      iot-common/iot-common-dao/iot-data-serviceImpl-cache/src/main/java/cc/iotkit/data/service/ProductDataCache.java
  29. 10 4
      iot-common/iot-common-dao/iot-data-serviceImpl-cache/src/main/java/cc/iotkit/data/service/ThingModelDataCache.java
  30. 2 1
      iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/dao/ProductRepository.java
  31. 4 1
      iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/dao/ThingModelRepository.java
  32. 4 1
      iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbProduct.java
  33. 1 2
      iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbThingModel.java
  34. 1 1
      iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/DeviceInfoDataImpl.java
  35. 11 13
      iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/ProductDataImpl.java
  36. 2 2
      iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/SysDeptDataImpl.java
  37. 6 6
      iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/SysRoleMenuDataImpl.java
  38. 27 23
      iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/ThingModelDataImpl.java
  39. 5 0
      iot-common/iot-common-log/src/main/java/cc/iotkit/common/log/event/LogininforEvent.java
  40. 2 2
      iot-common/iot-common-satoken/src/main/java/cc/iotkit/common/satoken/utils/AuthUtil.java
  41. 5 5
      iot-common/iot-common-web/src/main/java/cc/iotkit/common/web/handler/ResponseResultHandler.java
  42. 1 1
      iot-components/iot-component-server/src/main/java/cc/iotkit/comps/DeviceComponentManager.java
  43. 12 0
      iot-components/iot-component-server/src/main/java/cc/iotkit/comps/DeviceMessageHandler.java
  44. 2 2
      iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/DeviceBehaviourService.java
  45. 1 1
      iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/DevicePropertyConsumer.java
  46. 7 2
      iot-components/iot-mqtt-component/src/main/java/cc/iotkit/comp/mqtt/MqttVerticle.java
  47. 0 0
      iot-components/iot-mqtt-component/src/main/resources/component.js
  48. 3 0
      iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/DeviceController.java
  49. 6 3
      iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/NotifyController.java
  50. 17 14
      iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/ProductController.java
  51. 9 29
      iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/ProtocolController.java
  52. 1 0
      iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/SpaceController.java
  53. 3 2
      iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/SpaceDeviceController.java
  54. 1 1
      iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/StatsController.java
  55. 1 0
      iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/UserInfoController.java
  56. 35 0
      iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/bo/channel/ChannelConfigBo.java
  57. 5 18
      iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/bo/product/ProductBo.java
  58. 1 2
      iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/bo/protocolcomponent/ProtocolComponentBo.java
  59. 4 0
      iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/bo/protocolconverter/ProtocolConverterBo.java
  60. 1 2
      iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/bo/thingmodel/ThingModelBo.java
  61. 40 0
      iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/vo/channel/ChannelConfigVo.java
  62. 9 8
      iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/vo/product/ProductVo.java
  63. 4 2
      iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/DataOwnerService.java
  64. 5 5
      iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/IProductService.java
  65. 6 2
      iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/NotifyService.java
  66. 1 1
      iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/SpaceDeviceService.java
  67. 1 1
      iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/ThingModelService.java
  68. 9 9
      iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/impl/DeviceServiceImpl.java
  69. 26 29
      iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/impl/ProductServiceImpl.java
  70. 2 2
      iot-module/iot-system/src/main/java/cc/iotkit/system/controller/SysConfigController.java
  71. 2 2
      iot-module/iot-system/src/main/java/cc/iotkit/system/controller/SysDictDataController.java
  72. 4 6
      iot-module/iot-system/src/main/java/cc/iotkit/system/controller/SysDictTypeController.java
  73. 2 2
      iot-module/iot-system/src/main/java/cc/iotkit/system/controller/SysLogininforController.java
  74. 2 2
      iot-module/iot-system/src/main/java/cc/iotkit/system/controller/SysPostController.java
  75. 2 2
      iot-module/iot-system/src/main/java/cc/iotkit/system/controller/SysRoleController.java
  76. 2 2
      iot-module/iot-system/src/main/java/cc/iotkit/system/controller/SysTenantController.java
  77. 1 2
      iot-module/iot-system/src/main/java/cc/iotkit/system/controller/SysUserController.java
  78. 0 1
      iot-module/iot-system/src/main/java/cc/iotkit/system/service/impl/SysConfigServiceImpl.java
  79. 4 5
      iot-module/iot-system/src/main/java/cc/iotkit/system/service/impl/SysDictTypeServiceImpl.java
  80. 7 3
      iot-module/iot-system/src/main/java/cc/iotkit/system/service/impl/SysLogininforServiceImpl.java
  81. 1 2
      iot-module/iot-system/src/main/java/cc/iotkit/system/service/impl/SysRoleServiceImpl.java
  82. 0 1
      iot-starter/src/main/java/cc/iotkit/Application.java
  83. 0 56
      iot-starter/src/main/java/cc/iotkit/web/controller/CaptchaController.java
  84. 9 9
      iot-starter/src/main/java/cc/iotkit/web/service/SysLoginService.java

BIN
data/components/2c089bb8-0412-449e-94f1-212d35a50219/iot-websocket-component-0.4.3-SNAPSHOT.jar → data/components/2c089bb8-0412-449e-94f1-212d35a50219/iot-websocket-component-0.4.5-SNAPSHOT.jar


BIN
data/components/3ababc5e-15e9-45a7-8f38-2a6afd45c780/iot-http-biz-component-0.4.3-SNAPSHOT.jar → data/components/305a8b86-4566-4f2a-a57f-f84ca47471a1/iot-http-biz-component-0.4.5-SNAPSHOT.jar


BIN
data/components/305a8b86-4566-4f2a-a57f-f84ca47471a1/iot-DLT645-component-0.4.3-SNAPSHOT.jar → data/components/3ababc5e-15e9-45a7-8f38-2a6afd45c780/iot-DLT645-component-0.4.5-SNAPSHOT.jar


BIN
data/components/6c095554-35e7-4e9d-a8d2-bb919e9479f4/iot-emqx-component-0.4.3-SNAPSHOT.jar → data/components/6c095554-35e7-4e9d-a8d2-bb919e9479f4/iot-emqx-component-0.4.5-SNAPSHOT.jar


BIN
data/components/eabb131d-8fd1-43a8-88d9-a198abfd3d42/iot-mqtt-component-0.4.3-SNAPSHOT.jar → data/components/eabb131d-8fd1-43a8-88d9-a198abfd3d42/iot-mqtt-component-0.4.5-SNAPSHOT.jar


+ 1 - 1
data/init/channel.json

@@ -1,6 +1,6 @@
 [
   {
-    "id": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "id": "1",
     "code": "DingTalk",
     "title": "钉钉",
     "icon": "http://www.baidu.com",

+ 3 - 3
data/init/deviceGroup.json

@@ -2,7 +2,7 @@
   {
     "id": "g3",
     "name": "组3",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "remark": "2223333",
     "deviceQty": 7,
     "createAt": 0
@@ -10,7 +10,7 @@
   {
     "id": "g2",
     "name": "组2",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "remark": "222",
     "deviceQty": 12,
     "createAt": 0
@@ -18,7 +18,7 @@
   {
     "id": "g1",
     "name": "分组1",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "remark": "1111",
     "deviceQty": 10,
     "createAt": 0

+ 59 - 59
data/init/deviceInfo.json

@@ -5,7 +5,7 @@
     "productKey": "PN3EDmkBZDD8whDd",
     "deviceName": "MENCI0001008",
     "secret": "rMAweEJrE7cxbQWa",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -31,7 +31,7 @@
     "productKey": "PN3EDmkBZDD8whDd",
     "deviceName": "MENCI0001007",
     "secret": "eN4PjDhH4yx4mrmi",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -57,7 +57,7 @@
     "productKey": "PN3EDmkBZDD8whDd",
     "deviceName": "MENCI0001006",
     "secret": "ePSkE7bzGMsR6rTs",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -83,7 +83,7 @@
     "productKey": "xpsYHExTKPFaQMS7",
     "deviceName": "LINGHT001007",
     "secret": "mkQiSDk4rF3EWKFM",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -112,7 +112,7 @@
     "productKey": "xpsYHExTKPFaQMS7",
     "deviceName": "LINGHT001006",
     "secret": "p72KAZyTA42zi8cJ",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -137,7 +137,7 @@
     "productKey": "xpsYHExTKPFaQMS7",
     "deviceName": "LINGHT001005",
     "secret": "xnKZZyPKj2rH6ee3",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -166,7 +166,7 @@
     "productKey": "xpsYHExTKPFaQMS7",
     "deviceName": "LINGHT001004",
     "secret": "PDkTxHPfw2H4WZjQ",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -191,7 +191,7 @@
     "productKey": "cGCrkK7Ex4FESAwe",
     "deviceName": "PULG0A001016",
     "secret": "3KdPNBKZEyDGaNYK",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -216,7 +216,7 @@
     "productKey": "cGCrkK7Ex4FESAwe",
     "deviceName": "PULG0A001015",
     "secret": "TBwbHJdJBQCpGdHi",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -241,7 +241,7 @@
     "productKey": "cGCrkK7Ex4FESAwe",
     "deviceName": "PULG0A001014",
     "secret": "86pTYbQxxX3wd2FR",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -266,7 +266,7 @@
     "productKey": "cGCrkK7Ex4FESAwe",
     "deviceName": "PULG0A001013",
     "secret": "FtxYcTM5p6B5GyPk",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -291,7 +291,7 @@
     "productKey": "cGCrkK7Ex4FESAwe",
     "deviceName": "PULG0A001012",
     "secret": "5yHFHseBHDbCK3eZ",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -316,7 +316,7 @@
     "productKey": "cGCrkK7Ex4FESAwe",
     "deviceName": "PULG0A001011",
     "secret": "pGC4z4TrbjZhii2m",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -341,7 +341,7 @@
     "productKey": "cGCrkK7Ex4FESAwe",
     "deviceName": "PULG0A001010",
     "secret": "HMxT2rQ55bzeRNJx",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -366,7 +366,7 @@
     "productKey": "cGCrkK7Ex4FESAwe",
     "deviceName": "PULG0A001009",
     "secret": "Z6yMp6D6mHKMjFi7",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -391,7 +391,7 @@
     "productKey": "cGCrkK7Ex4FESAwe",
     "deviceName": "PULG0A001008",
     "secret": "Ek3ZjwPayCymDxhN",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -416,7 +416,7 @@
     "productKey": "cGCrkK7Ex4FESAwe",
     "deviceName": "PULG0A001007",
     "secret": "NnnHaibdHJXMxNbC",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -441,7 +441,7 @@
     "productKey": "Eit3kmGJtxSHfCKT",
     "deviceName": "2475b491e72541f7ad60ee9025d8430e",
     "secret": "bWkiEmY6wKM8WQP5",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": false
@@ -459,7 +459,7 @@
     "productKey": "cGCrkK7Ex4FESAwe",
     "deviceName": "PULG0A001006",
     "secret": "FFSdNXDRJbnE8fm2",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [
       "04c6722f-9a6d-40f3-ac9b-cd791b4c8933"
     ],
@@ -497,7 +497,7 @@
     "productKey": "cGCrkK7Ex4FESAwe",
     "deviceName": "PULG0A001005",
     "secret": "CN8ZGpcAheAbsDn2",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -516,7 +516,7 @@
     "productKey": "cGCrkK7Ex4FESAwe",
     "deviceName": "PULG0A001004",
     "secret": "S4SDRKscRXAn43bc",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -541,7 +541,7 @@
     "productKey": "cGCrkK7Ex4FESAwe",
     "deviceName": "PULG0A001003",
     "secret": "7N4S6eYzMCjA7YfK",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -560,7 +560,7 @@
     "productKey": "cGCrkK7Ex4FESAwe",
     "deviceName": "PULG0A001002",
     "secret": "Jm7ecfyXawiend8K",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -585,7 +585,7 @@
     "productKey": "cGCrkK7Ex4FESAwe",
     "deviceName": "PULG0A001001",
     "secret": "rtsZbST3tiJHccbe",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -610,7 +610,7 @@
     "productKey": "eDhXKwEzwFybM5R7",
     "deviceName": "SWITCH03001005",
     "secret": "PXHwHXH4a8YJzZ3S",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -637,7 +637,7 @@
     "productKey": "eDhXKwEzwFybM5R7",
     "deviceName": "SWITCH03001004",
     "secret": "BQj5SZetsC3eGtfM",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -664,7 +664,7 @@
     "productKey": "eDhXKwEzwFybM5R7",
     "deviceName": "SWITCH03001003",
     "secret": "mbs4PsY4atEtzcA3",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -691,7 +691,7 @@
     "productKey": "eDhXKwEzwFybM5R7",
     "deviceName": "SWITCH03001002",
     "secret": "4nrNrjnFMSQZB562",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -718,7 +718,7 @@
     "productKey": "eDhXKwEzwFybM5R7",
     "deviceName": "SWITCH03001001",
     "secret": "Js66kBbXRjXmcpMB",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -739,7 +739,7 @@
     "productKey": "6kYp6jszrDns2yh4",
     "deviceName": "WENSHIDU01008",
     "secret": "pGxKYrNJC7rDhsr8",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -758,7 +758,7 @@
     "productKey": "6kYp6jszrDns2yh4",
     "deviceName": "WENSHIDU01007",
     "secret": "ZxDQeQ8jhMrfx8eE",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -777,7 +777,7 @@
     "productKey": "6kYp6jszrDns2yh4",
     "deviceName": "WENSHIDU01006",
     "secret": "fEbdXEayedpBx6wk",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -796,7 +796,7 @@
     "productKey": "6kYp6jszrDns2yh4",
     "deviceName": "WENSHIDU01005",
     "secret": "Crm28CTD6iw7hYw5",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -815,7 +815,7 @@
     "productKey": "6kYp6jszrDns2yh4",
     "deviceName": "WENSHIDU01004",
     "secret": "FkCQGREXYCmjzxaZ",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -834,7 +834,7 @@
     "productKey": "xpsYHExTKPFaQMS7",
     "deviceName": "LINGHT001003",
     "secret": "JwKxnDWGrRcP8xAJ",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -853,7 +853,7 @@
     "productKey": "xpsYHExTKPFaQMS7",
     "deviceName": "LINGHT001002",
     "secret": "xrX2mrkQwf3YYaWc",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -872,7 +872,7 @@
     "productKey": "xpsYHExTKPFaQMS7",
     "deviceName": "LINGHT001001",
     "secret": "diRBkEREDt47MzWF",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -891,7 +891,7 @@
     "productKey": "hdX3PCMcFrCYpesJ",
     "deviceName": "FAN0001003",
     "secret": "fR3R3i8BYDKWAiDj",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": false
@@ -906,7 +906,7 @@
     "productKey": "hdX3PCMcFrCYpesJ",
     "deviceName": "FAN0001002",
     "secret": "t3NYS5p7ExYaWKx4",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": false
@@ -921,7 +921,7 @@
     "productKey": "hdX3PCMcFrCYpesJ",
     "deviceName": "FAN0001001",
     "secret": "KSpeRjXRP8H7tcAn",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": false
@@ -936,7 +936,7 @@
     "productKey": "6kYp6jszrDns2yh4",
     "deviceName": "WENSHIDU01003",
     "secret": "DSBbhJW7cGXRWeZA",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -955,7 +955,7 @@
     "productKey": "6kYp6jszrDns2yh4",
     "deviceName": "WENSHIDU01002",
     "secret": "5bm8pNYcdj7YPMXn",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -974,7 +974,7 @@
     "productKey": "6kYp6jszrDns2yh4",
     "deviceName": "WENSHIDU01001",
     "secret": "neSfPnhsjCsQiCQx",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -993,7 +993,7 @@
     "productKey": "PN3EDmkBZDD8whDd",
     "deviceName": "MENCI0001003",
     "secret": "2D2k8mmHbi2AMh8G",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -1013,7 +1013,7 @@
     "productKey": "PN3EDmkBZDD8whDd",
     "deviceName": "MENCI0001002",
     "secret": "AQHQJTQ2iXkncb3C",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -1033,7 +1033,7 @@
     "productKey": "PN3EDmkBZDD8whDd",
     "deviceName": "MENCI0001001",
     "secret": "PwYEKSARBJjD4y6B",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -1053,7 +1053,7 @@
     "productKey": "cGCrkK7Ex4FESAwe",
     "deviceName": "TEST0012301",
     "secret": "C8YxCycFFeQDPKX4",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -1074,7 +1074,7 @@
     "deviceName": "ABE12500001",
     "model": "M1",
     "parentId": "16514626212240aabbccee01000000143",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -1097,7 +1097,7 @@
     "productKey": "hbtgIA0SuVw9lxjB",
     "deviceName": "AA:BB:CC:DD:10",
     "model": "GW01",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": false,
@@ -1115,7 +1115,7 @@
     "deviceName": "ABE12400001",
     "model": "S1",
     "parentId": "16514626212240aabbccee01000000143",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -1176,7 +1176,7 @@
     "deviceId": "16514626212240aabbccee01000000143",
     "productKey": "N523nWsCiG3CAn6X",
     "deviceName": "AA:BB:CC:EE:01",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -1196,7 +1196,7 @@
     "deviceName": "F4CCE4FEFFBD1BEC",
     "model": "device",
     "parentId": "165017126122400cefafcfee61000012b",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -1541,7 +1541,7 @@
     "deviceName": "ABD12300002",
     "model": "F01",
     "parentId": "16465226744430aabbccdd22000000143",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": false,
@@ -1563,7 +1563,7 @@
     "deviceName": "ABD12300001",
     "model": "F01",
     "parentId": "16465226744430aabbccdd22000000143",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": false,
@@ -1583,7 +1583,7 @@
     "deviceName": "ABC12300003",
     "model": "S01",
     "parentId": "16465226744430aabbccdd22000000143",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -1604,7 +1604,7 @@
     "deviceName": "ABC12300002",
     "model": "S01",
     "parentId": "16465226744430aabbccdd22000000143",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": true,
@@ -1623,7 +1623,7 @@
     "deviceId": "16465226744430aabbccdd22000000143",
     "productKey": "hbtgIA0SuVw9lxjB",
     "deviceName": "AA:BB:CC:DD:22",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": false,
@@ -1639,7 +1639,7 @@
     "deviceId": "168187356997901234567891230000120",
     "productKey": "BRD3x4fkKxkaxXFt",
     "deviceName": "123456789123",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "subUid": [],
     "state": {
       "online": false,
@@ -1655,7 +1655,7 @@
     "deviceId": "168191541600402017121609130000126",
     "productKey": "PwMfpXmp4ZWkGahn",
     "deviceName": "201712160913",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "parentId": "168187356997901234567891230000120",
     "subUid": [],
     "state": {

+ 32 - 32
data/init/product.json

@@ -1,147 +1,147 @@
 [
   {
-    "id": "xpsYHExTKPFaQMS7",
+    "productKey": "xpsYHExTKPFaQMS7",
     "name": "调光灯",
     "category": "light",
     "nodeType": 1,
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "createAt": 1650174777304
   },
   {
-    "id": "hdX3PCMcFrCYpesJ",
+    "productKey": "hdX3PCMcFrCYpesJ",
     "code": "hdX3PCMcFrCYpesJ",
     "name": "智能风扇",
     "category": "fan",
     "nodeType": 1,
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "createAt": 1646571291131
   },
   {
-    "id": "hbtgIA0SuVw9lxjB",
+    "productKey": "hbtgIA0SuVw9lxjB",
     "name": "GW01网关",
     "category": "gateway",
     "nodeType": 0,
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "img": "http://iotkit-img.oss-cn-shenzhen.aliyuncs.com/product/hbtgIA0SuVw9lxjB/cover.jpg?Expires=1967598154&OSSAccessKeyId=LTAI5tGEHNoVu5tWHUWnosrs&Signature=2gh2jad14mVHGvWThwOd%2FykiB5g%3D",
     "transparent": false,
     "createAt": 1652238155938
   },
   {
-    "id": "eDhXKwEzwFybM5R7",
+    "productKey": "eDhXKwEzwFybM5R7",
     "name": "三路开关",
     "category": "switch",
     "nodeType": 1,
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "img": "http://iotkit-img.oss-cn-shenzhen.aliyuncs.com/product/eDhXKwEzwFybM5R7/cover.jpeg?Expires=1967598172&OSSAccessKeyId=LTAI5tGEHNoVu5tWHUWnosrs&Signature=ZrFgANkomVEDQRV5JdmONL0S2sY%3D",
     "transparent": false,
     "createAt": 1652238173536
   },
   {
-    "id": "cGCrkK7Ex4FESAwe",
+    "productKey": "cGCrkK7Ex4FESAwe",
     "name": "插座",
     "category": "SmartPlug",
     "nodeType": 1,
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "img": "http://iotkit-img.oss-cn-shenzhen.aliyuncs.com/product/cGCrkK7Ex4FESAwe/cover.jpeg?Expires=1967598137&OSSAccessKeyId=LTAI5tGEHNoVu5tWHUWnosrs&Signature=vOjqav0pRZqQFgx8xBo99WhgWXk%3D",
     "transparent": false,
     "createAt": 1652238138626
   },
   {
-    "id": "Rf4QSjbm65X45753",
+    "productKey": "Rf4QSjbm65X45753",
     "name": "一路开关",
     "category": "switch",
     "nodeType": 1,
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "img": "http://iotkit-img.oss-cn-shenzhen.aliyuncs.com/product/Rf4QSjbm65X45753/cover.jpeg?Expires=1967598145&OSSAccessKeyId=LTAI5tGEHNoVu5tWHUWnosrs&Signature=ksQhmEm5Rn7C7FFqY09o9l%2BZ%2BIQ%3D",
     "transparent": false,
     "createAt": 1652238147123
   },
   {
-    "id": "PN3EDmkBZDD8whDd",
+    "productKey": "PN3EDmkBZDD8whDd",
     "name": "门磁",
     "category": "door",
     "nodeType": 1,
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "img": "null",
     "createAt": 1650190400357
   },
   {
-    "id": "N523nWsCiG3CAn6X",
+    "productKey": "N523nWsCiG3CAn6X",
     "name": "ZGW01",
     "category": "gateway",
     "nodeType": 0,
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "img": "http://iotkit-img.oss-cn-shenzhen.aliyuncs.com/product/N523nWsCiG3CAn6X/cover.jpg?Expires=1967597641&OSSAccessKeyId=LTAI5tGEHNoVu5tWHUWnosrs&Signature=%2BaGcHBT%2FHA3s%2BrZ687U50b4YE0A%3D",
     "transparent": false,
     "createAt": 1652237643216
   },
   {
-    "id": "Eit3kmGJtxSHfCKT",
+    "productKey": "Eit3kmGJtxSHfCKT",
     "name": "燃气表",
     "category": "meter",
     "nodeType": 2,
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "transparent": false,
     "createAt": 1654237604221
   },
   {
-    "id": "DSGxxKk6E8mmDk6C",
+    "productKey": "DSGxxKk6E8mmDk6C",
     "name": "通断器",
     "category": "switch",
     "nodeType": 1,
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "img": "http://iotkit-img.oss-cn-shenzhen.aliyuncs.com/product/DSGxxKk6E8mmDk6C/cover.jpeg?Expires=1967598201&OSSAccessKeyId=LTAI5tGEHNoVu5tWHUWnosrs&Signature=k2PqHc%2BI14DfCwD8kQIflwoBAog%3D",
     "transparent": false,
     "createAt": 1652238202310
   },
   {
-    "id": "D8c5pXFmt2KJDxNm",
+    "productKey": "D8c5pXFmt2KJDxNm",
     "name": "四路场景面板",
     "category": "switch",
     "nodeType": 1,
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "createAt": 1650187781637
   },
   {
-    "id": "AWcJnf7ymGSkaz5M",
+    "productKey": "AWcJnf7ymGSkaz5M",
     "name": "smart pulg",
     "category": "SmartPlug",
     "nodeType": 1,
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "img": "http://iotkit-img.oss-cn-shenzhen.aliyuncs.com/product/AWcJnf7ymGSkaz5M/cover.jpeg?Expires=1967598035&OSSAccessKeyId=LTAI5tGEHNoVu5tWHUWnosrs&Signature=tXzWH5%2B4JNcnuTFrJbvGwsbx97c%3D",
     "transparent": true,
     "createAt": 1652279098100
   },
   {
-    "id": "6kYp6jszrDns2yh4",
+    "productKey": "6kYp6jszrDns2yh4",
     "name": "温湿度传感器",
     "category": "sensor",
     "nodeType": 1,
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "createAt": 1649653149339
   },
   {
-    "id": "bGdZt8ffBETtsirm",
+    "productKey": "bGdZt8ffBETtsirm",
     "name": "新风",
     "category": "FreshAir",
     "nodeType": 1,
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "createAt": 1649653149339
   },
   {
-    "id": "BRD3x4fkKxkaxXFt",
+    "productKey": "BRD3x4fkKxkaxXFt",
     "name": "智能电表采集器",
     "category": "gateway",
     "nodeType": 0,
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "createAt": 1649653149339
   },
   {
-    "id": "PwMfpXmp4ZWkGahn",
+    "productKey": "PwMfpXmp4ZWkGahn",
     "name": "智能电表",
     "category": "SmartMeter",
     "nodeType": 1,
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "createAt": 1649653149339
   }
 ]

+ 10 - 10
data/init/protocolComponent.json

@@ -1,11 +1,11 @@
 [
   {
     "id": "eabb131d-8fd1-43a8-88d9-a198abfd3d42",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "name": "MQTT标准协议组件",
     "type": "device",
     "protocol": "mqtt",
-    "jarFile": "iot-mqtt-component-0.4.3-SNAPSHOT.jar",
+    "jarFile": "iot-mqtt-component-0.4.5-SNAPSHOT.jar",
     "config": "{\"port\":1883,\"ssl\":false,\"type\":\"server\"}",
     "converter": "6260396d67aced2696184053",
     "converType": "custom",
@@ -14,11 +14,11 @@
   },
   {
     "id": "6c095554-35e7-4e9d-a8d2-bb919e9479f4",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "name": "EMQX标准协议组件",
     "type": "device",
     "protocol": "mqtt",
-    "jarFile": "iot-emqx-component-0.4.3-SNAPSHOT.jar",
+    "jarFile": "iot-emqx-component-0.4.5-SNAPSHOT.jar",
     "config": "{\"port\":\"1884\",\"ssl\":false,\"type\":\"client\",\"subscribeTopics\":[\"/sys/+/+/s/#\",\"/sys/client/connected\",\"/sys/client/disconnected\",\"/sys/session/subscribed\",\"/sys/session/unsubscribed\"],\"authPort\":\"8088\",\"broker\":\"127.0.0.1\",\"clientId\":\"test\",\"username\":\"test\",\"password\":\"123\"}",
     "converter": "6260396d67aced2696184053",
     "converType": "custom",
@@ -27,11 +27,11 @@
   },
   {
     "id": "3ababc5e-15e9-45a7-8f38-2a6afd45c780",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "name": "小度音箱接入组件",
     "type": "biz",
     "protocol": "http",
-    "jarFile": "iot-http-biz-component-0.4.3-SNAPSHOT.jar",
+    "jarFile": "iot-http-biz-component-0.4.5-SNAPSHOT.jar",
     "config": "{\"port\":\"8084\"}",
     "converter": "",
     "converType": "",
@@ -40,11 +40,11 @@
   },
   {
     "id": "2c089bb8-0412-449e-94f1-212d35a50219",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "name": "WEBSOCKET服务端",
     "type": "device",
     "protocol": "websocket",
-    "jarFile": "iot-websocket-component-0.4.3-SNAPSHOT.jar",
+    "jarFile": "iot-websocket-component-0.4.5-SNAPSHOT.jar",
     "config": "{\"port\":\"2454\",\"ssl\":false,\"type\":\"server\",\"ip\":\"\",\"url\":\"\",\"heartBeatTime\":10000,\"heartBeatData\":\"\",\"accessTokens\":[{\"id\":\"b4f02276-13d8-499d-89b3-8acd6330b310\",\"tokenName\":\"tokrn\",\"tokenStr\":\"NxW4nPt2SPnc87pdFXAQmCZY4Kb0nRsPDC6z4Qzpp1AtRWDJxg8iZMqFpcwZ2igi\"}]}",
     "converter": "d7e84930-5460-4638-aa3f-e0c2015628f4",
     "converType": "custom",
@@ -54,11 +54,11 @@
 ,
   {
     "id": "305a8b86-4566-4f2a-a57f-f84ca47471a1",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "name": "DLT645电表通讯组件",
     "type": "device",
     "protocol": "tcp",
-    "jarFile": "iot-DLT645-component-0.4.3-SNAPSHOT.jar",
+    "jarFile": "iot-DLT645-component-0.4.5-SNAPSHOT.jar",
     "config": "{\"port\":2424,\"ssl\":false,\"type\":\"server\",\"parserType\":\"不处理\",\"parserConfiguration\":{\"delimited\":\"\",\"fix\":1,\"script\":\"\"},\"host\":\"127.0.0.1\"}",
     "converType": "static",
     "state": "stopped",

+ 4 - 4
data/init/protocolConverter.json

@@ -1,28 +1,28 @@
 [
   {
     "id": "62995ba4dbf51a5ec41d5f7b",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "name": "自定义表计协议",
     "desc": "用于燃气表的协议",
     "createAt": 1654217636597
   },
   {
     "id": "628ceb14addfdb2a3b4b5727",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "name": "奇特HTTP标准协议",
     "desc": "奇特HTTP标准协议转换器",
     "createAt": 1653402388275
   },
   {
     "id": "6260396d67aced2696184053",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "name": "奇特MQTT标准协议",
     "desc": "奇特MQTT标准协议转换器",
     "createAt": 1650473325173
   },
   {
     "id": "d7e84930-5460-4638-aa3f-e0c2015628f4",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "name": "WS标准协议",
     "desc": "WS标准协议转换器",
     "createAt": 1650473325173

+ 3 - 3
data/init/ruleInfo.json

@@ -29,7 +29,7 @@
         "config": "{\"id\":\"de533da1-18cb-48ef-b913-22bdd96dcac9\",\"type\":\"http\",\"services\":[{\"url\":\"http://localhost:8087/aligenie/push\",\"script\":\"this.translate=function(msg){\\n  var data={};\\n  for(var p in msg.data){\\n\\tdata[p]=msg.data[p];\\n  }\\n  \\nreturn {\\n\\t//指定相对路径\\n    path:\\\"/\\\",\\n    method:\\\"post\\\",\\n    header:{\\n      //指定请求头\\n      contentType:\\\"application/json; charset=utf-8\\\"\\n    },\\n    body:JSON.stringify({\\n      deviceId:msg.deviceId,\\n      type:msg.type,\\n      identifier:msg.identifier,\\n      data:data\\n    })\\n  }\\n}\"}]}"
       }
     ],
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "state": "stopped",
     "desc": "ss",
     "createAt": 1649218592640
@@ -60,7 +60,7 @@
         "config": "{\"id\":\"35781aae-360f-4931-9d72-69f27e326e68\",\"type\":\"http\",\"services\":[{\"url\":\"https://xiaodu.baidu.com/saiya/smarthome/changereport\",\"script\":\"this.translate=function(msg,device){\\n  var pk=msg.productKey;\\n  var attributeName=\\\"\\\";\\n  //插座/开关\\n  if(pk==\\\"cGCrkK7Ex4FESAwe\\\" || pk==\\\"Rf4QSjbm65X45753\\\"){\\n\\tattributeName=\\\"turnOnState\\\";\\n  }\\n  //取openUid\\n  var tag=device.tag;\\n  if(!tag || !tag.duerosOpenUid){\\n\\treturn null;\\n  }\\n  var openUid=tag.duerosOpenUid.value;\\n  \\n  return {\\n    \\\"path\\\":\\\"\\\",\\n    \\\"method\\\":\\\"post\\\",\\n    \\\"header\\\":{\\n      //指定请求头\\n      \\\"contentType\\\":\\\"application/json; charset=utf-8\\\"\\n    },\\n    \\\"body\\\":JSON.stringify({\\n\\t  \\\"header\\\": {\\n\\t\\t  \\\"namespace\\\": \\\"DuerOS.ConnectedHome.Control\\\",\\n\\t\\t  \\\"name\\\": \\\"ChangeReportRequest\\\",\\n\\t\\t  \\\"messageId\\\": new Date().getTime()+\\\"\\\",\\n\\t\\t  \\\"payloadVersion\\\": \\\"1\\\"\\n\\t  },\\n\\t  \\\"payload\\\": {\\n\\t\\t  \\\"botId\\\": \\\"eb20e515-f505-8d31-abef-46da3345f114\\\",\\n\\t\\t  \\\"openUid\\\": openUid,\\n\\t\\t  \\\"appliance\\\": {\\n\\t\\t\\t  \\\"applianceId\\\": msg.deviceId,\\n\\t\\t\\t  \\\"attributeName\\\": attributeName\\n\\t\\t  }\\n\\t  }\\n  \\t})\\n  }\\n}\"}]}"
       }
     ],
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "state": "running",
     "desc": "开关插座开关状态推送",
     "createAt": 1652515471242
@@ -87,7 +87,7 @@
         "config": "{\"id\":\"fde024b5-5105-4639-8602-d04300613af9\",\"type\":\"device\",\"services\":[{\"device\":\"hdX3PCMcFrCYpesJ/ABD12300002\",\"identifier\":\"set\",\"inputData\":[{\"identifier\":\"powerSwitch\",\"value\":\"1\"}]},{\"device\":\"hdX3PCMcFrCYpesJ/ABD12300002\",\"identifier\":\"set\",\"inputData\":[{\"identifier\":\"windSpeed\",\"value\":\"20\"}]}]}"
       }
     ],
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "state": "stopped",
     "desc": "test",
     "createAt": 1649167998895

+ 1 - 1
data/init/sys_menu.json

@@ -2828,7 +2828,7 @@
       "icon": "",
       "isCache": "0",
       "isFrame": "1",
-      "menuName": "通道模板",
+      "menuName": "模板配置",
       "menuType": "C",
       "orderNum": 2,
       "parentId": 1664638344103575553,

+ 2 - 2
data/init/taskInfo.json

@@ -12,9 +12,9 @@
       }
     ],
     "state": "stopped",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "createAt": 1645928016031,
-    "reason": "stop by fa1c5eaa-de6e-48b6-805e-8f091c7bb831"
+    "reason": "stop by 1"
   },
   {
     "id": "667bbfa1-a7ed-4ce8-9ce0-cfa8cac90e6c",

+ 16 - 16
data/init/thingModel.json

@@ -1,6 +1,6 @@
 [
   {
-    "id": "xpsYHExTKPFaQMS7",
+    "id": "0",
     "productKey": "xpsYHExTKPFaQMS7",
     "model": {
       "properties": [
@@ -34,7 +34,7 @@
     }
   },
   {
-    "id": "hdX3PCMcFrCYpesJ",
+    "id": "1",
     "productKey": "hdX3PCMcFrCYpesJ",
     "model": {
       "properties": [
@@ -82,7 +82,7 @@
     }
   },
   {
-    "id": "hbtgIA0SuVw9lxjB",
+    "id": "2",
     "productKey": "hbtgIA0SuVw9lxjB",
     "model": {
       "properties": [],
@@ -178,7 +178,7 @@
     }
   },
   {
-    "id": "eDhXKwEzwFybM5R7",
+    "id": "3",
     "productKey": "eDhXKwEzwFybM5R7",
     "model": {
       "properties": [
@@ -274,7 +274,7 @@
     }
   },
   {
-    "id": "cGCrkK7Ex4FESAwe",
+    "id": "4",
     "productKey": "cGCrkK7Ex4FESAwe",
     "model": {
       "properties": [
@@ -344,7 +344,7 @@
     }
   },
   {
-    "id": "Rf4QSjbm65X45753",
+    "id": "5",
     "productKey": "Rf4QSjbm65X45753",
     "model": {
       "properties": [
@@ -436,7 +436,7 @@
     "_class": "cc.iotkit.model.ThingModel"
   },
   {
-    "id": "PN3EDmkBZDD8whDd",
+    "id": "6",
     "productKey": "PN3EDmkBZDD8whDd",
     "model": {
       "properties": [
@@ -496,7 +496,7 @@
     }
   },
   {
-    "id": "N523nWsCiG3CAn6X",
+    "id": "7",
     "productKey": "N523nWsCiG3CAn6X",
     "model": {
       "properties": [
@@ -658,7 +658,7 @@
     }
   },
   {
-    "id": "KdJYpTp5ywNhmrmC",
+    "id": "8",
     "productKey": "KdJYpTp5ywNhmrmC",
     "model": {
       "properties": [],
@@ -684,7 +684,7 @@
     }
   },
   {
-    "id": "Eit3kmGJtxSHfCKT",
+    "id": "9",
     "productKey": "Eit3kmGJtxSHfCKT",
     "model": {
       "properties": [
@@ -718,7 +718,7 @@
     }
   },
   {
-    "id": "D8c5pXFmt2KJDxNm",
+    "id": "10",
     "productKey": "D8c5pXFmt2KJDxNm",
     "model": {
       "properties": [
@@ -814,7 +814,7 @@
     }
   },
   {
-    "id": "AWcJnf7ymGSkaz5M",
+    "id": "11",
     "productKey": "AWcJnf7ymGSkaz5M",
     "model": {
       "properties": [
@@ -944,7 +944,7 @@
     }
   },
   {
-    "id": "6kYp6jszrDns2yh4",
+    "id": "12",
     "productKey": "6kYp6jszrDns2yh4",
     "model": {
       "properties": [
@@ -984,7 +984,7 @@
     }
   },
   {
-    "id": "bGdZt8ffBETtsirm",
+    "id": "13",
     "productKey": "bGdZt8ffBETtsirm",
     "model": {
       "properties": [
@@ -1047,7 +1047,7 @@
     }
   },
   {
-    "id": "BRD3x4fkKxkaxXFt",
+    "id": "14",
     "productKey": "BRD3x4fkKxkaxXFt",
     "model": {
       "properties": [],
@@ -1115,7 +1115,7 @@
     }
   },
   {
-    "id": "PwMfpXmp4ZWkGahn",
+    "id": "15",
     "productKey": "PwMfpXmp4ZWkGahn",
     "model": {
       "properties": [

+ 9 - 9
data/init/userInfo.json

@@ -2,7 +2,7 @@
   {
     "id":  "629e1d7fa176d816952f1e81",
     "uid": "13480802157",
-    "ownerId": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "ownerId": "1",
     "secret": "483752384B473759556E685768796B6F644E48634F76486C51646A41576B545A2B396C34474244414F334F78574F4778613764564338594E666770595A376177",
     "nickName": "song2",
     "type": 1,
@@ -18,7 +18,7 @@
   {
     "id": "6286886077b91b031115e6a6",
     "uid": "guest1",
-    "ownerId": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "ownerId": "1",
     "nickName": "演示账户",
     "secret": "48774861346645676F51324A4D6E6639306E6474437741634C4333746C4575666C316F76503455542B5836763065315A2F676244695056557356704D49513569",
     "type": 0,
@@ -31,9 +31,9 @@
     "createAt": 1647592821770
   },
   {
-    "id": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "id": "1",
     "uid": "iotkit",
-    "ownerId": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "ownerId": "1",
     "nickName": "管理员",
     "secret": "6E49354D37437030564370666E48486150524B3134743258735059354D75324F6532594478654C47767535614C6C6E767139625170774E576477785A34513369",
     "type": 0,
@@ -50,7 +50,7 @@
   {
     "id": "a1051e81-f4fc-4182-a750-1a53a27f4c71",
     "uid": "du2",
-    "ownerId": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "ownerId": "1",
     "nickName": "小度接入2",
     "type": 1,
     "roles": [
@@ -64,7 +64,7 @@
   {
     "id": "5c0bea53-a318-42ed-a7c5-6e05e6db4ef2",
     "uid": "tm3",
-    "ownerId": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "ownerId": "1",
     "nickName": "天猫精灵test3",
     "type": 1,
     "roles": [
@@ -78,7 +78,7 @@
   {
     "id": "2bb3e6f1-17ba-4bf5-9d5e-85fdffd8b85d",
     "uid": "du1",
-    "ownerId": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "ownerId": "1",
     "nickName": "小度接入1",
     "secret": "483752384B473759556E685768796B6F644E48634F76486C51646A41576B545A2B396C34474244414F334F517674507547437A72627A7154302B724441734C5A",
     "type": 1,
@@ -94,7 +94,7 @@
   {
     "id": "0ca377e2-66ff-49f3-90c3-108a86bc90eb",
     "uid": "tm1",
-    "ownerId": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "ownerId": "1",
     "nickName": "天猫精灵1",
     "type": 1,
     "roles": [
@@ -108,7 +108,7 @@
   {
     "id": "04c6722f-9a6d-40f3-ac9b-cd791b4c8933",
     "uid": "18126045687",
-    "ownerId": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "ownerId": "1",
     "nickName": "song",
     "secret": "483752384B473759556E685768796B6F644E48634F76486C51646A41576B545A2B396C34474244414F334F517674507547437A72627A7154302B724441734C5A",
     "type": 1,

+ 6 - 6
data/init/virtualDevice.json

@@ -1,7 +1,7 @@
 [
   {
     "id":"6293953092084e2df303ba3e",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "name": "三路开关",
     "productKey": "eDhXKwEzwFybM5R7",
     "devices": [
@@ -20,7 +20,7 @@
   },
   {
     "id":"629391ae92084e2df303ba3d",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "name": "温湿度传感器",
     "productKey": "6kYp6jszrDns2yh4",
     "devices": [
@@ -44,7 +44,7 @@
   },
   {
     "id":  "629390f492084e2df303ba3c",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "name": "调光灯",
     "productKey": "xpsYHExTKPFaQMS7",
     "devices": [
@@ -65,7 +65,7 @@
   },
   {
     "id": "62925cb72002b44c15caeb1c",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "name": "虚拟门磁1",
     "productKey": "PN3EDmkBZDD8whDd",
     "devices": [
@@ -86,7 +86,7 @@
   },
   {
     "id":  "628fd800fba69e633a972e12",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "name": "开关1",
     "productKey": "Rf4QSjbm65X45753",
     "devices": [
@@ -102,7 +102,7 @@
   },
   {
     "id":  "628fa6bc1b735b73cb260042",
-    "uid": "fa1c5eaa-de6e-48b6-805e-8f091c7bb831",
+    "uid": "1",
     "name": "虚拟插座12",
     "productKey": "cGCrkK7Ex4FESAwe",
     "devices": [

+ 2 - 12
iot-common/iot-common-core/src/main/java/cc/iotkit/common/api/PageRequest.java

@@ -1,8 +1,7 @@
 package cc.iotkit.common.api;
 
 import cc.iotkit.common.utils.MapstructUtils;
-import cc.iotkit.common.utils.SnowflakeIdGeneratorUtil;
-import cn.hutool.core.collection.CollUtil;
+import cn.hutool.core.util.IdUtil;
 import jakarta.validation.constraints.Max;
 import jakarta.validation.constraints.Min;
 import jakarta.validation.constraints.NotNull;
@@ -63,16 +62,7 @@ public class PageRequest<T> extends Request<T> implements Serializable {
         pageRequest.setPageSize(DEFAULT_PAGE_SIZE);
         pageRequest.setPageNum(DEFAULT_PAGE_NUM);
         pageRequest.setData(data);
-        pageRequest.setRequestId(String.valueOf(SnowflakeIdGeneratorUtil.getInstanceSnowflake().nextId()));
-        return pageRequest;
-    }
-
-    public static <DTO> PageRequest<DTO> request2PageRequest(Request<DTO> request) {
-        PageRequest<DTO> pageRequest = new PageRequest<>();
-        pageRequest.setData(request.getData());
-        pageRequest.setPageNum(DEFAULT_PAGE_NUM);
-        pageRequest.setPageSize(DEFAULT_PAGE_SIZE);
-        pageRequest.setRequestId(request.getRequestId());
+        pageRequest.setRequestId(IdUtil.simpleUUID());
         return pageRequest;
     }
 

+ 10 - 11
iot-common/iot-common-core/src/main/java/cc/iotkit/common/api/Request.java

@@ -1,12 +1,11 @@
 package cc.iotkit.common.api;
 
-import cc.iotkit.common.utils.SnowflakeIdGeneratorUtil;
+import cn.hutool.core.util.IdUtil;
 import jakarta.validation.Valid;
 import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 
 import java.io.Serializable;
-import java.util.UUID;
 
 /**
  * @author: Longjun.Tu
@@ -17,14 +16,14 @@ import java.util.UUID;
 @Data
 public class Request<T> extends RequestEmpty implements Serializable {
 
-  @Valid
-  @NotNull
-  private T data;
+    @Valid
+    @NotNull
+    private T data;
 
-  public static <T> Request<T> of(T data) {
-    Request<T> request = new Request<>();
-    request.setData(data);
-    request.setRequestId(String.valueOf(SnowflakeIdGeneratorUtil.getInstanceSnowflake().nextId()));
-    return request;
-  }
+    public static <T> Request<T> of(T data) {
+        Request<T> request = new Request<>();
+        request.setData(data);
+        request.setRequestId(IdUtil.simpleUUID());
+        return request;
+    }
 }

+ 2 - 4
iot-common/iot-common-core/src/main/java/cc/iotkit/common/api/RequestEmpty.java

@@ -1,12 +1,10 @@
 package cc.iotkit.common.api;
 
-import cc.iotkit.common.utils.SnowflakeIdGeneratorUtil;
+import cn.hutool.core.util.IdUtil;
 import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
 import lombok.Data;
 
 import java.io.Serializable;
-import java.util.UUID;
 
 /**
  * @author: Longjun.Tu
@@ -22,7 +20,7 @@ public class RequestEmpty implements Serializable {
 
   public static RequestEmpty of() {
     RequestEmpty request = new RequestEmpty();
-    request.setRequestId(String.valueOf(SnowflakeIdGeneratorUtil.getInstanceSnowflake().nextId()));
+    request.setRequestId(IdUtil.simpleUUID());
     return request;
   }
 

+ 0 - 183
iot-common/iot-common-core/src/main/java/cc/iotkit/common/utils/SnowflakeIdGeneratorUtil.java

@@ -1,183 +0,0 @@
-package cc.iotkit.common.utils;
-
-
-import java.net.InetAddress;
-import java.net.NetworkInterface;
-import java.net.SocketException;
-import java.net.UnknownHostException;
-import java.util.Enumeration;
-import java.util.HashSet;
-import java.util.Random;
-import java.util.Set;
-
-/**
- * @author: Longjun.Tu
- * @description:
- * @date:created in 2023/5/18 10:20
- * @modificed by:
- */
-public class SnowflakeIdGeneratorUtil {
-
-    /**
-     * 起始的时间戳
-     */
-    private final static long START_STMP = 1577808000000L;
-
-    /**
-     * 每一部分占用的位数
-     */
-    private final static long SEQUENCE_BIT = 12; //序列号占用的位数
-    private final static long MACHINE_BIT = 5;   //机器标识占用的位数
-    private final static long DATACENTER_BIT = 5;//数据中心占用的位数
-
-    /**
-     * 每一部分的最大值
-     */
-    private final static long MAX_DATACENTER_NUM = -1L ^ (-1L << DATACENTER_BIT);
-    private final static long MAX_MACHINE_NUM = -1L ^ (-1L << MACHINE_BIT);
-    private final static long MAX_SEQUENCE = -1L ^ (-1L << SEQUENCE_BIT);
-
-    /**
-     * 每一部分向左的位移
-     */
-    private final static long MACHINE_LEFT = SEQUENCE_BIT;
-    private final static long DATACENTER_LEFT = SEQUENCE_BIT + MACHINE_BIT;
-    private final static long TIMESTMP_LEFT = DATACENTER_LEFT + DATACENTER_BIT;
-
-    private long datacenterId;  //数据中心
-    private long machineId;     //机器标识
-    private long sequence = 0L; //序列号
-    private long lastStmp = -1L;//上一次时间戳
-
-    private static volatile SnowflakeIdGeneratorUtil snowflake = null;
-    private static Object lock = new Object();
-
-    public SnowflakeIdGeneratorUtil(long datacenterId, long machineId) {
-        if (datacenterId > MAX_DATACENTER_NUM || datacenterId < 0) {
-            throw new IllegalArgumentException("datacenterId can't be greater than MAX_DATACENTER_NUM or less than 0");
-        }
-        if (machineId > MAX_MACHINE_NUM || machineId < 0) {
-            throw new IllegalArgumentException("machineId can't be greater than MAX_MACHINE_NUM or less than 0");
-        }
-        this.datacenterId = datacenterId;
-        this.machineId = machineId;
-    }
-
-    /**
-     * 获取单列
-     *
-     * @return
-     */
-    public static SnowflakeIdGeneratorUtil getInstanceSnowflake() {
-        if (snowflake == null) {
-            synchronized (lock) {
-                if(snowflake == null){
-                    long workerId;
-                    long dataCenterId = getRandom();
-                    try {
-                        //第一次使用获取mac地址的
-                        workerId = getWorkerId();
-                    } catch (Exception e) {
-                        workerId = getRandom();
-                    }
-                    snowflake = new SnowflakeIdGeneratorUtil(dataCenterId, workerId);
-                }
-            }
-        }
-        return snowflake;
-    }
-
-    /**
-     * 产生下一个ID
-     *
-     * @return
-     */
-    public synchronized long nextId() {
-        long currStmp = getNewstmp();
-        if (currStmp < lastStmp) {
-            throw new RuntimeException("Clock moved backwards.  Refusing to generate id");
-        }
-
-        if (currStmp == lastStmp) {
-            //相同毫秒内,序列号自增
-            sequence = (sequence + 1) & MAX_SEQUENCE;
-            //同一毫秒的序列数已经达到最大
-            if (sequence == 0L) {
-                currStmp = getNextMill();
-            }
-        } else {
-            //不同毫秒内,序列号置为0
-            sequence = 0L;
-        }
-
-        lastStmp = currStmp;
-
-        return (currStmp - START_STMP) << TIMESTMP_LEFT //时间戳部分
-                | datacenterId << DATACENTER_LEFT       //数据中心部分
-                | machineId << MACHINE_LEFT             //机器标识部分
-                | sequence;                             //序列号部分
-    }
-
-    private long getNextMill() {
-        long mill = getNewstmp();
-        while (mill <= lastStmp) {
-            mill = getNewstmp();
-        }
-        return mill;
-    }
-
-    private long getNewstmp() {
-        return System.currentTimeMillis();
-    }
-
-    /**
-     * 生成1-31之间的随机数
-     *
-     * @return
-     */
-    private static long getRandom() {
-        int max = (int) (MAX_MACHINE_NUM);
-        int min = 1;
-        Random random = new Random();
-        long result = random.nextInt(max - min) + min;
-        return result;
-    }
-
-    private static long getWorkerId() throws SocketException, UnknownHostException, NullPointerException {
-        @SuppressWarnings("unused")
-        InetAddress ip = InetAddress.getLocalHost();
-
-        NetworkInterface network = null;
-        Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces();
-        while (en.hasMoreElements()) {
-            NetworkInterface nint = en.nextElement();
-            if (!nint.isLoopback() && nint.getHardwareAddress() != null) {
-                network = nint;
-                break;
-            }
-        }
-
-        if (network == null) {
-            throw new NullPointerException("network is null");
-        }
-        @SuppressWarnings("ConstantConditions")
-        byte[] mac = network.getHardwareAddress();
-        long id = ((0x000000FF & (long) mac[mac.length - 1]) | (0x0000FF00 & (((long) mac[mac.length - 2]) << 8))) >> 11;
-        if (id > MAX_MACHINE_NUM) {
-            return getRandom();
-        }
-        return id;
-    }
-
-    public static void main(String[] args) {
-        Set<Long> idList = new HashSet<>();
-        long start = System.currentTimeMillis();
-        for (int i = 0; i < 1000000; i++) {
-            long id = SnowflakeIdGeneratorUtil.getInstanceSnowflake().nextId();
-            idList.add(id);
-            // System.out.println("id="+id);
-        }
-        // System.out.println(idList.size());
-        // System.out.println(System.currentTimeMillis() - start);
-    }
-}

+ 10 - 7
iot-common/iot-common-dao/iot-common-model/src/main/java/cc/iotkit/model/product/Product.java

@@ -9,19 +9,22 @@
  */
 package cc.iotkit.model.product;
 
-import cc.iotkit.model.Owned;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
+import cc.iotkit.model.Id;
+import cc.iotkit.model.TenantModel;
+import lombok.*;
 
+import java.io.Serializable;
+
+@EqualsAndHashCode(callSuper = true)
 @Data
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor
-public class Product implements Owned<String> {
+public class Product extends TenantModel implements Id<Long>, Serializable {
+
+    private Long id;
 
-    private String id;
+    private String productKey;
 
     private String name;
 

+ 10 - 6
iot-common/iot-common-dao/iot-common-model/src/main/java/cc/iotkit/model/product/ThingModel.java

@@ -10,24 +10,28 @@
 package cc.iotkit.model.product;
 
 import cc.iotkit.model.Id;
+import cc.iotkit.model.TenantModel;
 import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
-import lombok.AllArgsConstructor;
-import lombok.Builder;
-import lombok.Data;
-import lombok.NoArgsConstructor;
+import lombok.*;
 
+import java.io.Serializable;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 
+/**
+ * @author sjg
+ */
+@EqualsAndHashCode(callSuper = true)
 @Data
 @Builder
 @NoArgsConstructor
 @AllArgsConstructor
-public class ThingModel implements Id<String> {
+public class ThingModel extends TenantModel implements Id<Long>, Serializable {
+    private static final long serialVersionUID = 1L;
 
-    private String id;
+    private Long id;
 
     private String productKey;
 

+ 4 - 2
iot-common/iot-common-dao/iot-data-service/src/main/java/cc/iotkit/data/manager/IProductData.java

@@ -9,7 +9,7 @@
  */
 package cc.iotkit.data.manager;
 
-import cc.iotkit.data.IOwnedData;
+import cc.iotkit.data.ICommonData;
 import cc.iotkit.model.product.Product;
 
 import java.util.List;
@@ -17,11 +17,13 @@ import java.util.List;
 /**
  * 产品接口
  */
-public interface IProductData extends IOwnedData<Product, String> {
+public interface IProductData extends ICommonData<Product,Long> {
 
     /**
      * 按品类取产品列表
      */
     List<Product> findByCategory(String category);
 
+
+    Product findByProductKey(String name);
 }

+ 2 - 1
iot-common/iot-common-dao/iot-data-service/src/main/java/cc/iotkit/data/manager/IThingModelData.java

@@ -3,6 +3,7 @@ package cc.iotkit.data.manager;
 import cc.iotkit.data.ICommonData;
 import cc.iotkit.model.product.ThingModel;
 
-public interface IThingModelData extends ICommonData<ThingModel, String> {
+public interface IThingModelData extends ICommonData<ThingModel, Long> {
 
+    ThingModel findByProductKey(String productKey);
 }

+ 2 - 2
iot-common/iot-common-dao/iot-data-serviceImpl-cache/src/main/java/cc/iotkit/data/cache/ProductCacheEvict.java

@@ -7,8 +7,8 @@ import org.springframework.stereotype.Component;
 @Component
 public class ProductCacheEvict {
 
-    @CacheEvict(value = Constants.CACHE_PRODUCT, key = "#root.method.name+#pk")
-    public void findById(String pk) {
+    @CacheEvict(value = Constants.CACHE_PRODUCT, key = "#root.method.name+#id")
+    public void findById(Long id) {
     }
 
 }

+ 1 - 1
iot-common/iot-common-dao/iot-data-serviceImpl-cache/src/main/java/cc/iotkit/data/cache/ThingModelCacheEvict.java

@@ -8,7 +8,7 @@ import org.springframework.stereotype.Component;
 public class ThingModelCacheEvict {
 
     @CacheEvict(value = Constants.CACHE_THING_MODEL, key = "#root.method.name+#s")
-    public void findById(String s) {
+    public void findById(Long s) {
     }
 
 }

+ 21 - 14
iot-common/iot-common-dao/iot-data-serviceImpl-cache/src/main/java/cc/iotkit/data/service/ProductDataCache.java

@@ -29,28 +29,35 @@ public class ProductDataCache implements IProductData {
     }
 
     @Override
-    public List<Product> findByUid(String uid) {
-        return productData.findByUid(uid);
+    @Cacheable(value = Constants.CACHE_PRODUCT, key = "#root.method.name+#s", unless = "#result == null")
+    public Product findByProductKey(String productKey) {
+        return productData.findByProductKey(productKey);
     }
 
-    @Override
-    public Paging<Product> findByUid(String uid, int page, int size) {
-        return productData.findByUid(uid, page, size);
-    }
+//    @Override
+//    public List<Product> findByUid(String uid) {
+//        return productData.findByUid(uid);
+//    }
 
-    @Override
-    public long countByUid(String uid) {
-        return productData.countByUid(uid);
-    }
+//    @Override
+//    public Paging<Product> findByUid(String uid, int page, int size) {
+//        return productData.findByUid(uid, page, size);
+//    }
+
+//    @Override
+//    public long countByUid(String uid) {
+//        return productData.countByUid(uid);
+//    }
 
     @Override
     @Cacheable(value = Constants.CACHE_PRODUCT, key = "#root.method.name+#s", unless = "#result == null")
-    public Product findById(String s) {
+    @Deprecated
+    public Product findById(Long s) {
         return productData.findById(s);
     }
 
     @Override
-    public List<Product> findByIds(Collection<String> id) {
+    public List<Product> findByIds(Collection<Long> id) {
         return null;
     }
 
@@ -68,14 +75,14 @@ public class ProductDataCache implements IProductData {
     }
 
     @Override
-    public void deleteById(String s) {
+    public void deleteById(Long s) {
         productData.deleteById(s);
         //清除缓存
         productCacheEvict.findById(s);
     }
 
     @Override
-    public void deleteByIds(Collection<String> strings) {
+    public void deleteByIds(Collection<Long> ids) {
 
     }
 

+ 10 - 4
iot-common/iot-common-dao/iot-data-serviceImpl-cache/src/main/java/cc/iotkit/data/service/ThingModelDataCache.java

@@ -25,12 +25,12 @@ public class ThingModelDataCache implements IThingModelData {
 
     @Override
     @Cacheable(value = Constants.CACHE_THING_MODEL, key = "#root.method.name+#s", unless = "#result == null")
-    public ThingModel findById(String s) {
+    public ThingModel findById(Long s) {
         return thingModelData.findById(s);
     }
 
     @Override
-    public List<ThingModel> findByIds(Collection<String> id) {
+    public List<ThingModel> findByIds(Collection<Long> id) {
         return null;
     }
 
@@ -47,12 +47,13 @@ public class ThingModelDataCache implements IThingModelData {
     }
 
     @Override
-    public void deleteById(String s) {
+    public void deleteById(Long s) {
         thingModelData.deleteById(s);
+        thingModelCacheEvict.findById(s);
     }
 
     @Override
-    public void deleteByIds(Collection<String> strings) {
+    public void deleteByIds(Collection<Long> ids) {
 
     }
 
@@ -81,4 +82,9 @@ public class ThingModelDataCache implements IThingModelData {
         return null;
     }
 
+    @Override
+    @Cacheable(value = Constants.CACHE_THING_MODEL, key = "#root.method.name+#s", unless = "#result == null")
+    public ThingModel findByProductKey(String productKey) {
+        return thingModelData.findByProductKey(productKey);
+    }
 }

+ 2 - 1
iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/dao/ProductRepository.java

@@ -16,7 +16,7 @@ import org.springframework.data.jpa.repository.JpaRepository;
 
 import java.util.List;
 
-public interface ProductRepository extends JpaRepository<TbProduct, String> {
+public interface ProductRepository extends JpaRepository<TbProduct, Long> {
 
     List<TbProduct> findByCategory(String category);
 
@@ -26,4 +26,5 @@ public interface ProductRepository extends JpaRepository<TbProduct, String> {
 
     long countByUid(String uid);
 
+    TbProduct findByProductKey(String productKey);
 }

+ 4 - 1
iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/dao/ThingModelRepository.java

@@ -12,6 +12,9 @@ package cc.iotkit.data.dao;
 import cc.iotkit.data.model.TbThingModel;
 import org.springframework.data.jpa.repository.JpaRepository;
 
-public interface ThingModelRepository extends JpaRepository<TbThingModel, String> {
+import java.util.Optional;
 
+public interface ThingModelRepository extends JpaRepository<TbThingModel, Long> {
+
+    Optional<TbThingModel> findByProductKey(String productKey);
 }

+ 4 - 1
iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbProduct.java

@@ -32,7 +32,10 @@ public class TbProduct {
     @GeneratedValue(generator = "SnowflakeIdGenerator")
     @GenericGenerator(name = "SnowflakeIdGenerator", strategy = "cc.iotkit.data.config.id.SnowflakeIdGenerator")
     @ApiModelProperty(value = "产品id")
-    private String id;
+    private Long id;
+
+    @ApiModelProperty(value = "产品key")
+    private String productKey;
 
     @ApiModelProperty(value = "产品名称")
     private String name;

+ 1 - 2
iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/model/TbThingModel.java

@@ -29,7 +29,7 @@ public class TbThingModel {
     @GeneratedValue(generator = "SnowflakeIdGenerator")
     @GenericGenerator(name = "SnowflakeIdGenerator", strategy = "cc.iotkit.data.config.id.SnowflakeIdGenerator")
     @ApiModelProperty(value = "主键")
-    private String id;
+    private Long id;
 
     @ApiModelProperty(value = "产品key")
     private String productKey;
@@ -38,7 +38,6 @@ public class TbThingModel {
     @Column(columnDefinition = "text")
     @AutoMapping(ignore = true)
     @ReverseAutoMapping(ignore = true)
-
     private String model;
 
 }

+ 1 - 1
iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/DeviceInfoDataImpl.java

@@ -363,7 +363,7 @@ public class DeviceInfoDataImpl implements IDeviceInfoData,IJPACommData<DeviceIn
                 args.toArray());
         for (DataItem item : rst) {
             //找到产品对应的品类取出品类名
-            Product product = productData.findById(item.getName());
+            Product product = productData.findByProductKey(item.getName());
             String cateId = product.getCategory();
             Category category = categoryData.findById(cateId);
             if (category == null) {

+ 11 - 13
iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/ProductDataImpl.java

@@ -1,12 +1,11 @@
 package cc.iotkit.data.service;
 
-import cc.iotkit.common.api.PageRequest;
+import cc.iotkit.common.api.Paging;
 import cc.iotkit.common.utils.MapstructUtils;
 import cc.iotkit.data.dao.IJPACommData;
-import cc.iotkit.data.manager.IProductData;
 import cc.iotkit.data.dao.ProductRepository;
+import cc.iotkit.data.manager.IProductData;
 import cc.iotkit.data.model.TbProduct;
-import cc.iotkit.common.api.Paging;
 import cc.iotkit.model.product.Product;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Primary;
@@ -15,12 +14,11 @@ import org.springframework.data.domain.Pageable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Service;
 
-import java.util.Collection;
 import java.util.List;
 
 @Primary
 @Service
-public class ProductDataImpl implements IProductData, IJPACommData<Product, String> {
+public class ProductDataImpl implements IProductData, IJPACommData<Product, Long> {
 
     @Autowired
     private ProductRepository productRepository;
@@ -37,7 +35,7 @@ public class ProductDataImpl implements IProductData, IJPACommData<Product, Stri
 
     @Override
     public Class getTClass() {
-        return null;
+        return Product.class;
     }
 
     @Override
@@ -46,11 +44,14 @@ public class ProductDataImpl implements IProductData, IJPACommData<Product, Stri
     }
 
     @Override
+    public Product findByProductKey(String productKey) {
+        return MapstructUtils.convert(productRepository.findByProductKey(productKey), Product.class);
+    }
+
     public List<Product> findByUid(String uid) {
         return MapstructUtils.convert(productRepository.findByUid(uid), Product.class);
     }
 
-    @Override
     public Paging<Product> findByUid(String uid, int page, int size) {
         Page<TbProduct> productPage = productRepository.findByUid(uid,
                 Pageable.ofSize(size).withPage(page - 1));
@@ -58,23 +59,20 @@ public class ProductDataImpl implements IProductData, IJPACommData<Product, Stri
                 MapstructUtils.convert(productPage.getContent(), Product.class));
     }
 
-    @Override
     public long countByUid(String uid) {
         return productRepository.countByUid(uid);
     }
 
-
     @Override
-    public Product findById(String s) {
-        return MapstructUtils.convert(productRepository.findById(s).orElse(null), Product.class);
+    @Deprecated
+    public Product findById(Long id) {
+        throw new IllegalStateException("Deprecated method");
     }
 
-
     @Override
     public Product save(Product data) {
         productRepository.save(MapstructUtils.convert(data, TbProduct.class));
         return data;
     }
 
-
 }

+ 2 - 2
iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/SysDeptDataImpl.java

@@ -80,7 +80,7 @@ public class SysDeptDataImpl implements ISysDeptData, IJPACommData<SysDept, Long
 
     @Override
     public List<SysDept> findByDeptId(Long deptId) {
-        return MapstructUtils.convert(deptRepository.findAll().stream().filter(o -> o.getAncestors().indexOf(deptId.toString()) != -1)
+        return MapstructUtils.convert(deptRepository.findAll().stream().filter(o -> o.getAncestors() != null && o.getAncestors().contains(deptId.toString()))
                 .collect(Collectors.toList()), SysDept.class);
     }
 
@@ -95,7 +95,7 @@ public class SysDeptDataImpl implements ISysDeptData, IJPACommData<SysDept, Long
                 .from(tbSysDept)
                 .where(predicateBuilder.build())
                 .fetchOne();
-        return count==0;
+        return count == 0;
     }
 
     @Override

+ 6 - 6
iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/SysRoleMenuDataImpl.java

@@ -5,7 +5,6 @@ import cc.iotkit.data.dao.IJPACommData;
 import cc.iotkit.data.dao.SysRoleMenuRepository;
 import cc.iotkit.data.model.QTbSysRoleMenu;
 import cc.iotkit.data.model.TbSysRoleMenu;
-import cc.iotkit.data.model.TbSysUserRole;
 import cc.iotkit.data.system.ISysRoleMenuData;
 import cc.iotkit.data.util.PredicateBuilder;
 import cc.iotkit.model.system.SysRoleMenu;
@@ -15,7 +14,9 @@ import org.springframework.context.annotation.Primary;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Service;
 
-import java.util.*;
+import java.util.Collection;
+import java.util.List;
+import java.util.Objects;
 
 import static cc.iotkit.data.model.QTbSysRoleMenu.tbSysRoleMenu;
 
@@ -50,13 +51,12 @@ public class SysRoleMenuDataImpl implements ISysRoleMenuData, IJPACommData<SysRo
 
     @Override
     public boolean checkMenuExistRole(Long menuId) {
-        TbSysRoleMenu tbSysRoleMenu = jpaQueryFactory
-                .select(QTbSysRoleMenu.tbSysRoleMenu)
+        return jpaQueryFactory
+                .select(QTbSysRoleMenu.tbSysRoleMenu.count())
                 .from(QTbSysRoleMenu.tbSysRoleMenu)
                 .where(PredicateBuilder.instance()
                         .and(QTbSysRoleMenu.tbSysRoleMenu.menuId.eq(menuId))
-                        .build()).fetchOne();
-        return Objects.nonNull(tbSysRoleMenu);
+                        .build()).fetchOne() > 0;
     }
 
     @Override

+ 27 - 23
iot-common/iot-common-dao/iot-data-serviceImpl-rdb/src/main/java/cc/iotkit/data/service/ThingModelDataImpl.java

@@ -9,29 +9,26 @@
  */
 package cc.iotkit.data.service;
 
-import cc.iotkit.common.api.PageRequest;
+import cc.iotkit.common.utils.JsonUtils;
 import cc.iotkit.common.utils.MapstructUtils;
 import cc.iotkit.data.dao.IJPACommData;
-import cc.iotkit.data.manager.IThingModelData;
 import cc.iotkit.data.dao.ThingModelRepository;
+import cc.iotkit.data.manager.IThingModelData;
 import cc.iotkit.data.model.TbThingModel;
-import cc.iotkit.common.api.Paging;
 import cc.iotkit.model.product.ThingModel;
 import lombok.RequiredArgsConstructor;
-import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Primary;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Service;
 
-import java.util.Collection;
-import java.util.List;
-import java.util.UUID;
-
+/**
+ * @author sjg
+ */
 @Primary
 @Service
 @RequiredArgsConstructor
-public class ThingModelDataImpl implements IThingModelData, IJPACommData<ThingModel, String> {
+public class ThingModelDataImpl implements IThingModelData, IJPACommData<ThingModel, Long> {
 
     @Autowired
     private ThingModelRepository thingModelRepository;
@@ -52,28 +49,35 @@ public class ThingModelDataImpl implements IThingModelData, IJPACommData<ThingMo
     }
 
     @Override
-    public ThingModel findById(String s) {
-        return MapstructUtils.convert(thingModelRepository.findById(s).orElse(null),ThingModel.class);
+    public ThingModel findById(Long id) {
+        TbThingModel tbThingModel = thingModelRepository.findById(id).orElse(null);
+        ThingModel convert = MapstructUtils.convert(tbThingModel, ThingModel.class);
+        if (tbThingModel != null && convert != null) {
+            convert.setModel(JsonUtils.parseObject(tbThingModel.getModel(), ThingModel.Model.class));
+        }
+        return convert;
     }
 
-
     @Override
     public ThingModel save(ThingModel data) {
-        if (StringUtils.isBlank(data.getId())) {
-            data.setId(UUID.randomUUID().toString());
-        }
-        thingModelRepository.save(MapstructUtils.convert(data, TbThingModel.class));
+        TbThingModel to = data.to(TbThingModel.class);
+        to.setModel(JsonUtils.toJsonString(data.getModel()));
+        thingModelRepository.save(to);
         return data;
     }
 
-
-
     @Override
-    public void deleteById(String s) {
-        thingModelRepository.deleteById(s);
+    public void deleteById(Long id) {
+        thingModelRepository.deleteById(id);
     }
 
-
-
-
+    @Override
+    public ThingModel findByProductKey(String productKey) {
+        TbThingModel tbThingModel = thingModelRepository.findByProductKey(productKey).orElse(null);
+        ThingModel convert = MapstructUtils.convert(tbThingModel, ThingModel.class);
+        if (tbThingModel != null && convert != null) {
+            convert.setModel(JsonUtils.parseObject(tbThingModel.getModel(), ThingModel.Model.class));
+        }
+        return convert;
+    }
 }

+ 5 - 0
iot-common/iot-common-log/src/main/java/cc/iotkit/common/log/event/LogininforEvent.java

@@ -3,6 +3,7 @@ package cc.iotkit.common.log.event;
 import cn.hutool.http.useragent.UserAgent;
 import lombok.Data;
 
+import javax.servlet.http.HttpServletRequest;
 import java.io.Serializable;
 
 /**
@@ -45,6 +46,10 @@ public class LogininforEvent implements Serializable {
      */
     private UserAgent userAgent;
 
+    /**
+     * 请求体
+     */
+    private HttpServletRequest request;
     /**
      * 其他参数
      */

+ 2 - 2
iot-common/iot-common-satoken/src/main/java/cc/iotkit/common/satoken/utils/AuthUtil.java

@@ -19,7 +19,7 @@ import java.util.List;
 public class AuthUtil {
 
     public static String getUserId() {
-        return StpUtil.getLoginId().toString();
+        return String.valueOf(LoginHelper.getUserId());
     }
 
     public static List<String> getUserRoles() {
@@ -27,7 +27,7 @@ public class AuthUtil {
     }
 
     public static boolean isAdmin() {
-        return AuthUtil.getUserRoles().contains(Constants.ROLE_ADMIN);
+        return LoginHelper.isSuperAdmin();
     }
 
     public static boolean isClientUser() {

+ 5 - 5
iot-common/iot-common-web/src/main/java/cc/iotkit/common/web/handler/ResponseResultHandler.java

@@ -10,8 +10,8 @@
 package cc.iotkit.common.web.handler;
 
 import cc.iotkit.common.api.Response;
-import cc.iotkit.common.utils.SnowflakeIdGeneratorUtil;
 import cn.dev33.satoken.util.SaResult;
+import cn.hutool.core.util.IdUtil;
 import org.springframework.core.MethodParameter;
 import org.springframework.http.MediaType;
 import org.springframework.http.converter.HttpMessageConverter;
@@ -37,20 +37,20 @@ public class ResponseResultHandler implements ResponseBodyAdvice<Object> {
         if (body instanceof GlobalExceptionHandler.RequestResult) {
             GlobalExceptionHandler.RequestResult requestResult = (GlobalExceptionHandler.RequestResult) body;
             return new Response(requestResult.getCode(), requestResult.getMessage(),
-                    "", String.valueOf(SnowflakeIdGeneratorUtil.getInstanceSnowflake().nextId()));
+                    "", IdUtil.simpleUUID());
         } else if (body instanceof SaResult) {
             SaResult result = (SaResult) body;
-            return new Response(result.getCode(), result.getMsg(), result.getData(), String.valueOf(SnowflakeIdGeneratorUtil.getInstanceSnowflake().nextId()));
+            return new Response(result.getCode(), result.getMsg(), result.getData(), IdUtil.simpleUUID());
         } else if (body instanceof Map) {
             Map map = (Map) body;
             //spring mvc内部异常
             if (map.containsKey("timestamp") && map.containsKey("status") && map.containsKey("error")) {
                 return new Response((Integer) map.get("status"), (String) map.get("error"),
-                        "", String.valueOf(SnowflakeIdGeneratorUtil.getInstanceSnowflake().nextId()));
+                        "", IdUtil.simpleUUID());
             }
         }
 
-        return new Response(200, "", body, String.valueOf(SnowflakeIdGeneratorUtil.getInstanceSnowflake().nextId()));
+        return new Response(200, "", body, IdUtil.simpleUUID());
     }
 
 }

+ 1 - 1
iot-components/iot-component-server/src/main/java/cc/iotkit/comps/DeviceComponentManager.java

@@ -205,7 +205,7 @@ public class DeviceComponentManager {
         }
 
         DeviceInfo deviceInfo = deviceInfoData.findByProductKeyAndDeviceName(service.getProductKey(), service.getDeviceName());
-        Product product = productData.findById(service.getProductKey());
+        Product product = productData.findByProductKey(service.getProductKey());
         String linkPk = service.getProductKey();
         String linkDn = service.getDeviceName();
 

+ 12 - 0
iot-components/iot-component-server/src/main/java/cc/iotkit/comps/DeviceMessageHandler.java

@@ -131,6 +131,13 @@ public class DeviceMessageHandler implements IMessageHandler {
                         doAction(action);
                         onResult.accept(new ReceiveResult(message.getProductKey(), message.getDeviceName(), message));
                         return;
+                    case "ota":
+                        //上报数据
+                        DeviceMessage otaMessage = MessageParser.parse(new DeviceMessage(), data);
+                        doOta(otaMessage);
+                        doAction(action);
+                        onResult.accept(new ReceiveResult(otaMessage.getProductKey(), otaMessage.getDeviceName(), otaMessage));
+                        return;
                 }
 
             } catch (Throwable e) {
@@ -180,6 +187,11 @@ public class DeviceMessageHandler implements IMessageHandler {
         }
     }
 
+    private void doOta(DeviceMessage message) {
+        ThingModelMessage thingModelMessage = converter.decode(message);
+        deviceBehaviourService.reportMessage(thingModelMessage);
+    }
+
     private void doReport(DeviceMessage message) {
         ThingModelMessage thingModelMessage = converter.decode(message);
 

+ 2 - 2
iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/DeviceBehaviourService.java

@@ -91,7 +91,7 @@ public class DeviceBehaviourService {
             }
         }
 
-        Product product = productData.findById(pk);
+        Product product = productData.findByProductKey(pk);
         if (product == null) {
             throw new BizException(ErrCode.PRODUCT_NOT_FOUND);
         }
@@ -203,7 +203,7 @@ public class DeviceBehaviourService {
         List<String> subDeviceIds = deviceInfoData.findSubDeviceIds(device.getDeviceId());
         for (String subDeviceId : subDeviceIds) {
             DeviceInfo subDevice = deviceInfoData.findByDeviceId(subDeviceId);
-            Product product = productData.findById(subDevice.getProductKey());
+            Product product = productData.findByProductKey(subDevice.getProductKey());
             Boolean transparent = product.getTransparent();
             //透传设备父设备上线,子设备也上线。非透传设备父设备离线,子设备才离线
             if (transparent != null && transparent || !online) {

+ 1 - 1
iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/DevicePropertyConsumer.java

@@ -66,7 +66,7 @@ public class DevicePropertyConsumer implements ConsumerHandler<ThingModelMessage
         }
 
         //物模型校验,过滤非物模型属性
-        ThingModel thingModel = thingModelData.findById(deviceInfo.getProductKey());
+        ThingModel thingModel = thingModelData.findByProductKey(deviceInfo.getProductKey());
         if (thingModel == null) {
             return;
         }

+ 7 - 2
iot-components/iot-mqtt-component/src/main/java/cc/iotkit/comp/mqtt/MqttVerticle.java

@@ -155,8 +155,13 @@ public class MqttVerticle extends AbstractVerticle {
 
                 try {
                     Map<String, Object> head = new HashMap<>();
-                    head.put("topic", message.topicName());
-                    executor.onReceive(head, "", payload);
+                    String topic = message.topicName();
+                    head.put("topic", topic);
+                    if (topic.toLowerCase().contains("ota")) {
+                        executor.onReceive(head, "ota", payload);
+                    } else {
+                        executor.onReceive(head, "", payload);
+                    }
                     if (message.qosLevel() == MqttQoS.AT_LEAST_ONCE) {
                         endpoint.publishAcknowledge(message.messageId());
                     } else if (message.qosLevel() == MqttQoS.EXACTLY_ONCE) {

Tiedoston diff-näkymää rajattu, sillä se on liian suuri
+ 0 - 0
iot-components/iot-mqtt-component/src/main/resources/component.js


+ 3 - 0
iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/DeviceController.java

@@ -181,6 +181,7 @@ public class DeviceController {
         return productService.getThingModelByProductKey(deviceInfo.getProductKey());
     }
 
+    @ApiOperation("添加标签")
     @PostMapping("/tag/add")
     public boolean addTag(@Validated @RequestBody Request<DeviceTagAddBo> bo) {
         return deviceServiceImpl.addTag(bo.getData());
@@ -197,6 +198,7 @@ public class DeviceController {
     /**
      * 消费设备信息消息(实时推送设备信息)
      */
+    @ApiOperation("消费设备信息消息(实时推送设备信息)")
     @PostMapping("/consumer")
     public DeferredResult<ThingModelMessage> consumerDeviceInfo(
             @Validated @RequestBody Request<DeviceConsumerBo> bo
@@ -208,6 +210,7 @@ public class DeviceController {
     /**
      * 获取分组列表
      */
+    @ApiOperation(value = "获取分组列表")
     @PostMapping("/groups/list")
     public Paging<DeviceGroupVo> getDeviceGroups(
             @Validated @RequestBody PageRequest<DeviceGroupBo> pageRequest) {

+ 6 - 3
iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/NotifyController.java

@@ -1,6 +1,10 @@
 package cc.iotkit.manager.controller;
 
+import cc.iotkit.common.api.PageRequest;
+import cc.iotkit.common.api.Paging;
 import cc.iotkit.common.api.Request;
+import cc.iotkit.manager.dto.bo.channel.ChannelConfigBo;
+import cc.iotkit.manager.dto.vo.channel.ChannelConfigVo;
 import cc.iotkit.manager.service.NotifyService;
 import cc.iotkit.model.notify.Channel;
 import cc.iotkit.model.notify.ChannelConfig;
@@ -15,7 +19,6 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.annotation.Resource;
-
 import java.util.List;
 
 /**
@@ -40,8 +43,8 @@ public class NotifyController {
 
     @ApiOperation("获取通道配置列表")
     @PostMapping("/channel/config/getList")
-    public List<ChannelConfig> getChannelConfigList() {
-        return notifyService.getChannelConfigList();
+    public Paging<ChannelConfigVo> getChannelConfigList(PageRequest<ChannelConfigBo> request) {
+        return notifyService.getChannelConfigList(request);
     }
 
     @ApiOperation("新增通道配置")

+ 17 - 14
iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/ProductController.java

@@ -10,19 +10,20 @@
 package cc.iotkit.manager.controller;
 
 import cc.iotkit.common.api.PageRequest;
+import cc.iotkit.common.api.Paging;
 import cc.iotkit.common.api.Request;
 import cc.iotkit.common.log.annotation.Log;
 import cc.iotkit.common.log.enums.BusinessType;
 import cc.iotkit.common.validate.AddGroup;
+import cc.iotkit.common.validate.EditGroup;
 import cc.iotkit.manager.dto.bo.category.CategoryBo;
 import cc.iotkit.manager.dto.bo.product.ProductBo;
 import cc.iotkit.manager.dto.bo.productmodel.ProductModelBo;
 import cc.iotkit.manager.dto.bo.thingmodel.ThingModelBo;
-import cc.iotkit.manager.dto.vo.thingmodel.ThingModelVo;
 import cc.iotkit.manager.dto.vo.category.CategoryVo;
 import cc.iotkit.manager.dto.vo.product.ProductVo;
 import cc.iotkit.manager.dto.vo.productmodel.ProductModelVo;
-import cc.iotkit.common.api.Paging;
+import cc.iotkit.manager.dto.vo.thingmodel.ThingModelVo;
 import cc.iotkit.manager.service.IProductService;
 import cn.dev33.satoken.annotation.SaCheckRole;
 import io.swagger.annotations.Api;
@@ -66,48 +67,49 @@ public class ProductController {
     @ApiOperation(value = "编辑产品")
     @PostMapping("/edit")
     @Log(title = "产品", businessType = BusinessType.UPDATE)
-    public boolean edit(@RequestBody @Validated ProductBo productBo) {
-        return productService.updateEntity(productBo);
+    public boolean edit(@Validated(EditGroup.class) @RequestBody Request<ProductBo> request) {
+        return productService.updateEntity(request.getData());
     }
 
 
     @ApiOperation("查看详情")
     @PostMapping(value = "/getDetail")
-    public ProductVo getDetail(@RequestParam  @Validated Request<String> request) {
+    public ProductVo getDetail(@RequestBody  @Validated Request<String> request) {
         ProductVo dto = productService.getDetail(request.getData());
         return dto;
     }
     @PostMapping("/getThingModelByProductKey")
     @ApiOperation("查看物模型")
-    public ThingModelVo getThingModelByProductKey(@RequestParam  @Validated Request<String> request) {
-
+    public ThingModelVo getThingModelByProductKey(@RequestBody  @Validated Request<String> request) {
         return productService.getThingModelByProductKey(request.getData());
-
     }
 
     @ApiOperation("保存物模型")
     @PostMapping("/thingModel/save")
     public boolean saveThingModel(@Validated @RequestBody Request<ThingModelBo> request) {
-
         return productService.saveThingModel(request.getData());
-
-
     }
 
     @PostMapping("/thingModel/delete")
     @ApiOperation("删除物模型")
     @Log(title = "物模型", businessType = BusinessType.DELETE)
-    public boolean deleteThingModel(@Validated @RequestBody Request<String> productKey) {
-       return productService.deleteThingModel(productKey.getData());
+    public boolean deleteThingModel(@Validated @RequestBody Request<Long> id) {
+       return productService.deleteThingModel(id.getData());
     }
 
 
     @PostMapping("/category/list")
-    @ApiOperation("产品品类展示")
+    @ApiOperation("产品品类分页展示")
     public Paging<CategoryVo> getCategories(@Validated @RequestBody PageRequest<CategoryBo> request) {
         return productService.selectCategoryPageList(request);
     }
 
+    @PostMapping("/category/getAll")
+    @ApiOperation("产品品类展示")
+    public List<CategoryVo> getCategorieList() {
+        return productService.selectCategoryList();
+    }
+
     @SaCheckRole("iot_admin")
     @ApiOperation("品类编辑")
     @PostMapping("/category/edit")
@@ -124,6 +126,7 @@ public class ProductController {
 
     }
 
+    @ApiOperation("上传产品图片")
     @PostMapping("/uploadImg/{productKey}")
     public String uploadImg(@PathVariable("productKey") String productKey,
                             @RequestParam("file") MultipartFile file) {

+ 9 - 29
iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/ProtocolController.java

@@ -10,44 +10,23 @@
 package cc.iotkit.manager.controller;
 
 import cc.iotkit.common.api.PageRequest;
+import cc.iotkit.common.api.Paging;
 import cc.iotkit.common.api.Request;
-import cc.iotkit.common.enums.ErrCode;
-import cc.iotkit.common.exception.BizException;
-import cc.iotkit.common.satoken.utils.AuthUtil;
-import cc.iotkit.common.utils.ReflectUtil;
-import cc.iotkit.comps.ComponentManager;
-import cc.iotkit.comps.config.ComponentConfig;
-import cc.iotkit.data.manager.IProtocolComponentData;
-import cc.iotkit.data.manager.IProtocolConverterData;
-import cc.iotkit.data.manager.IUserInfoData;
+import cc.iotkit.common.validate.AddGroup;
+import cc.iotkit.common.validate.EditGroup;
 import cc.iotkit.manager.dto.bo.ChangeStateBo;
 import cc.iotkit.manager.dto.bo.protocolcomponent.ProtocolComponentBo;
 import cc.iotkit.manager.dto.bo.protocolconverter.ProtocolConverterBo;
 import cc.iotkit.manager.dto.vo.protocolcomponent.ProtocolComponentVo;
 import cc.iotkit.manager.dto.vo.protocolconverter.ProtocolConverterVo;
-import cc.iotkit.manager.service.DataOwnerService;
-import cc.iotkit.common.api.Paging;
 import cc.iotkit.manager.service.IProtocolService;
-import cc.iotkit.model.protocol.ProtocolComponent;
-import cc.iotkit.model.protocol.ProtocolConverter;
 import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiModel;
-import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.io.FileUtils;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.util.StringUtils;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;
 
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.*;
-import java.util.Objects;
-import java.util.UUID;
-
 @Api(tags = {"协议"})
 @RestController
 @RequestMapping("/protocol")
@@ -72,8 +51,9 @@ public class ProtocolController {
 
     @ApiOperation("修改组件")
     @PostMapping("/editComponent")
-    public String saveComponent(@RequestBody @Validated Request<ProtocolComponentBo> bo) {
-       return protocolService.saveComponent(bo.getData());
+    public boolean saveComponent(@RequestBody @Validated Request<ProtocolComponentBo> bo) {
+        protocolService.saveComponent(bo.getData());
+        return true;
     }
 
     @ApiOperation("获取组件详情")
@@ -113,13 +93,13 @@ public class ProtocolController {
 
     @ApiOperation("新增转换脚本")
     @PostMapping("/converter/add")
-    public boolean addConverter(@Validated @RequestBody Request<ProtocolConverterBo> converter) {
+    public boolean addConverter(@Validated(AddGroup.class) @RequestBody Request<ProtocolConverterBo> converter) {
         return protocolService.addConverter(converter.getData());
     }
 
     @ApiOperation("修改转换脚本")
     @PostMapping("/converter/edit")
-    public boolean editConverter(Request<ProtocolConverterBo> req) {
+    public boolean editConverter(@Validated(EditGroup.class) @RequestBody Request<ProtocolConverterBo> req) {
         return protocolService.editConverter(req.getData());
     }
 
@@ -149,7 +129,7 @@ public class ProtocolController {
        return protocolService.deleteConverter(id);
     }
 
-    @PostMapping("/component/changeState}")
+    @PostMapping("/component/changeState")
     @ApiOperation("组件启用/禁用")
     public boolean changeComponentState(@RequestBody @Validated Request<ChangeStateBo> req) {
        return protocolService.changeComponentState(req.getData());

+ 1 - 0
iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/SpaceController.java

@@ -27,6 +27,7 @@ import java.util.List;
 @Api(tags = {"空间"})
 @RestController
 @RequestMapping("/space")
+@Deprecated
 public class SpaceController {
 
     @Autowired

+ 3 - 2
iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/SpaceDeviceController.java

@@ -39,6 +39,7 @@ import java.util.stream.Collectors;
 @Api(tags = {"空间设备"})
 @RestController
 @RequestMapping("/space")
+@Deprecated
 public class SpaceDeviceController {
 
     @Autowired
@@ -115,7 +116,7 @@ public class SpaceDeviceController {
     private SpaceDeviceVo parseSpaceDevice(SpaceDevice sd) {
         DeviceInfo device = deviceInfoData.findByDeviceId(sd.getDeviceId());
         Space space = spaceData.findById(sd.getSpaceId());
-        Product product = productData.findById(device.getProductKey());
+        Product product = productData.findByProductKey(device.getProductKey());
         Category category = categoryData.findById(product.getCategory());
         DeviceInfo.State state = device.getState();
 
@@ -193,7 +194,7 @@ public class SpaceDeviceController {
                 .productKey(device.getProductKey())
                 .build();
 
-        Product product = productData.findById(device.getProductKey());
+        Product product = productData.findByProductKey(device.getProductKey());
         Category category = categoryData.findById(product.getCategory());
         findDeviceVo.setProductName(product.getName());
         findDeviceVo.setProductImg(product.getImg());

+ 1 - 1
iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/StatsController.java

@@ -57,7 +57,7 @@ public class StatsController {
             mainStats.setDeviceStatsOfCategory(deviceInfoData.getDeviceStatsByCategory(""));
         } else {
             mainStats.setCategoryTotal(ICategoryData.count());
-            mainStats.setProductTotal(productData.countByUid(uid));
+//            mainStats.setProductTotal(productData.countByUid(uid));
             mainStats.setDeviceTotal(deviceInfoData.countByUid(uid));
 //            mainStats.setReportTotal(deviceReportRepository.countByUid(uid));
             //上报数据统计

+ 1 - 0
iot-module/iot-manager/src/main/java/cc/iotkit/manager/controller/UserInfoController.java

@@ -33,6 +33,7 @@ import java.util.UUID;
 @Api(tags = {"用户"})
 @RestController
 @RequestMapping("/user")
+@Deprecated
 public class UserInfoController {
 
     @Autowired

+ 35 - 0
iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/bo/channel/ChannelConfigBo.java

@@ -0,0 +1,35 @@
+package cc.iotkit.manager.dto.bo.channel;
+
+import cc.iotkit.common.api.BaseDto;
+import cc.iotkit.model.notify.ChannelConfig;
+import io.github.linpeilie.annotations.AutoMapper;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+
+@ApiModel(value = "ChannelConfigBo")
+@Data
+@EqualsAndHashCode(callSuper = true)
+@AutoMapper(target = ChannelConfig.class, reverseConvertGenerate = false)
+public class ChannelConfigBo extends BaseDto  {
+
+	private static final long serialVersionUID = -1L;
+
+	@ApiModelProperty(value="id")
+	private String id;
+
+	@ApiModelProperty(value="通道id")
+	private String channelId;
+
+	@ApiModelProperty(value="通道配置名称")
+	private String title;
+
+	@ApiModelProperty(value="通道配置参数")
+	private String param;
+
+	@ApiModelProperty(value="创建时间")
+	private Long createAt;
+
+    }

+ 5 - 18
iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/bo/product/ProductBo.java

@@ -1,25 +1,11 @@
 package cc.iotkit.manager.dto.bo.product;
 
+import cc.iotkit.common.api.BaseDto;
 import cc.iotkit.model.product.Product;
-import com.fasterxml.jackson.annotation.JsonInclude;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import org.springframework.format.annotation.DateTimeFormat;
-
+import io.github.linpeilie.annotations.AutoMapper;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-
 import jakarta.validation.constraints.Size;
-
-
-import java.io.Serializable;
-import java.util.Date;
-import java.math.BigDecimal;
-
-import cc.iotkit.common.api.BaseDto;
-import cc.iotkit.common.validate.AddGroup;
-import cc.iotkit.common.validate.EditGroup;
-
-import io.github.linpeilie.annotations.AutoMapper;
 import lombok.Data;
 import lombok.EqualsAndHashCode;
 
@@ -32,9 +18,10 @@ public class ProductBo extends BaseDto  {
 
 	private static final long serialVersionUID = -1L;
 
-
 	@ApiModelProperty(value="id")
-	private String id;
+	private Long id;
+	@ApiModelProperty(value="productKey")
+	private String productKey;
 
 	@ApiModelProperty(value="品类")
 	@Size(max = 255, message = "品类长度不正确")

+ 1 - 2
iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/bo/protocolcomponent/ProtocolComponentBo.java

@@ -29,12 +29,11 @@ import lombok.EqualsAndHashCode;
 @EqualsAndHashCode(callSuper = true)
 @AutoMapper(target = ProtocolComponent.class, reverseConvertGenerate = false)
 public class ProtocolComponentBo extends BaseDto {
+    private static final long serialVersionUID = -1L;
 
     @ApiModelProperty(value = "")
     private String id;
 
-    private static final long serialVersionUID = -1L;
-
     @ApiModelProperty(value = "")
     @Size(max = 65535, message = "长度不正确")
     private String config;

+ 4 - 0
iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/bo/protocolconverter/ProtocolConverterBo.java

@@ -3,6 +3,8 @@ package cc.iotkit.manager.dto.bo.protocolconverter;
 import cc.iotkit.model.protocol.ProtocolConverter;
 import com.fasterxml.jackson.annotation.JsonInclude;
 import com.fasterxml.jackson.annotation.JsonFormat;
+import jakarta.validation.constraints.NotBlank;
+import jakarta.validation.constraints.NotNull;
 import org.springframework.format.annotation.DateTimeFormat;
 
 import io.swagger.annotations.ApiModel;
@@ -33,6 +35,7 @@ public class ProtocolConverterBo extends BaseDto {
     private static final long serialVersionUID = -1L;
 
     @ApiModelProperty(value = "id")
+    @NotBlank(message = "id不能为空", groups = {EditGroup.class})
     private String id;
 
     @ApiModelProperty(value = "创建时间")
@@ -44,6 +47,7 @@ public class ProtocolConverterBo extends BaseDto {
 
     @ApiModelProperty(value = "转换器名称")
     @Size(max = 255, message = "转换器名称长度不正确")
+    @NotBlank(message = "转换器名称不能为空", groups = {AddGroup.class})
     private String name;
 
     @ApiModelProperty(value = "脚本内容")

+ 1 - 2
iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/bo/thingmodel/ThingModelBo.java

@@ -31,7 +31,6 @@ import lombok.EqualsAndHashCode;
 @EqualsAndHashCode(callSuper = true)
 @AutoMapper(target = ThingModel.class, reverseConvertGenerate = false)
 public class ThingModelBo extends BaseDto {
-
     private static final long serialVersionUID = -1L;
 
     @ApiModelProperty(value = "模型内容")
@@ -41,7 +40,7 @@ public class ThingModelBo extends BaseDto {
     private String model;
 
     @ApiModelProperty(value = "产品key")
-    @Size(max = 255, message = "产品key长度不正确")
+    @Size(min = 16, max = 16, message = "产品key长度不正确")
     private String productKey;
 
 }

+ 40 - 0
iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/vo/channel/ChannelConfigVo.java

@@ -0,0 +1,40 @@
+package cc.iotkit.manager.dto.vo.channel;
+
+import cc.iotkit.model.notify.ChannelConfig;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.github.linpeilie.annotations.AutoMapper;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.io.Serializable;
+
+@ApiModel(value = "ChannelConfigVo")
+@Data
+@ExcelIgnoreUnannotated
+@AutoMapper(target = ChannelConfig.class)
+public class ChannelConfigVo implements Serializable {
+
+    private static final long serialVersionUID = -1L;
+
+    @ApiModelProperty(value="通道配置id")
+    @ExcelProperty(value = "通道配置id")
+    private String id;
+
+    @ApiModelProperty(value="通道id")
+    @ExcelProperty(value = "通道id")
+    private String channelId;
+
+    @ApiModelProperty(value="通道配置名称")
+    @ExcelProperty(value = "通道配置名称")
+    private String title;
+
+    @ApiModelProperty(value="通道配置参数")
+    @ExcelProperty(value = "通道配置参数")
+    private String param;
+
+    @ApiModelProperty(value="创建时间")
+    @ExcelProperty(value = "创建时间")
+    private Long createAt;
+}

+ 9 - 8
iot-module/iot-manager/src/main/java/cc/iotkit/manager/dto/vo/product/ProductVo.java

@@ -1,17 +1,14 @@
 package cc.iotkit.manager.dto.vo.product;
 
 import cc.iotkit.model.product.Product;
+import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
+import com.alibaba.excel.annotation.ExcelProperty;
+import io.github.linpeilie.annotations.AutoMapper;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
-import lombok.ToString;
-import java.util.Date;
+
 import java.io.Serializable;
-import java.math.BigDecimal;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
-import io.github.linpeilie.annotations.AutoMapper;
 
 
 @ApiModel(value = "ProductVo")
@@ -25,7 +22,11 @@ public class ProductVo implements Serializable  {
 
 	@ApiModelProperty(value="产品id")
     @ExcelProperty(value = "产品id")
-		private String id;
+		private Long id;
+
+	@ApiModelProperty(value="产品id")
+	@ExcelProperty(value = "产品id")
+	private String productKey;
 
 	@ApiModelProperty(value="品类")
     @ExcelProperty(value = "品类")

+ 4 - 2
iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/DataOwnerService.java

@@ -61,7 +61,8 @@ public class DataOwnerService {
             }
         }
 
-        throw new BizException(ErrCode.UNAUTHORIZED_EXCEPTION);
+//        throw new BizException(ErrCode.UNAUTHORIZED_EXCEPTION);暂时先注释,重新设计
+        return data;
     }
 
     /**
@@ -89,7 +90,8 @@ public class DataOwnerService {
             return;
         }
 
-        throw new BizException(ErrCode.UNAUTHORIZED_EXCEPTION);
+//        throw new BizException(ErrCode.UNAUTHORIZED_EXCEPTION);暂时先注释,重新设计
+        return;
     }
 
     /**

+ 5 - 5
iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/IProductService.java

@@ -6,10 +6,10 @@ import cc.iotkit.manager.dto.bo.category.CategoryBo;
 import cc.iotkit.manager.dto.bo.product.ProductBo;
 import cc.iotkit.manager.dto.bo.productmodel.ProductModelBo;
 import cc.iotkit.manager.dto.bo.thingmodel.ThingModelBo;
-import cc.iotkit.manager.dto.vo.thingmodel.ThingModelVo;
-import cc.iotkit.manager.dto.vo.product.ProductVo;
 import cc.iotkit.manager.dto.vo.category.CategoryVo;
+import cc.iotkit.manager.dto.vo.product.ProductVo;
 import cc.iotkit.manager.dto.vo.productmodel.ProductModelVo;
+import cc.iotkit.manager.dto.vo.thingmodel.ThingModelVo;
 import org.springframework.web.multipart.MultipartFile;
 
 import java.util.List;
@@ -31,9 +31,7 @@ public interface IProductService {
 
     boolean saveThingModel(ThingModelBo data);
 
-    boolean deleteThingModel(String data);
-
-
+    boolean deleteThingModel(Long id);
 
     boolean deleteCategory(String data);
 
@@ -45,6 +43,8 @@ public interface IProductService {
 
     Paging<CategoryVo> selectCategoryPageList(PageRequest<CategoryBo> request);
 
+    List<CategoryVo> selectCategoryList();
+
     List<ProductModelVo> getModels(String productKey);
 
     boolean editProductModel(ProductModelBo productModel);

+ 6 - 2
iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/NotifyService.java

@@ -1,8 +1,12 @@
 package cc.iotkit.manager.service;
 
+import cc.iotkit.common.api.PageRequest;
+import cc.iotkit.common.api.Paging;
 import cc.iotkit.data.manager.IChannelConfigData;
 import cc.iotkit.data.manager.IChannelData;
 import cc.iotkit.data.manager.IChannelTemplateData;
+import cc.iotkit.manager.dto.bo.channel.ChannelConfigBo;
+import cc.iotkit.manager.dto.vo.channel.ChannelConfigVo;
 import cc.iotkit.model.notify.Channel;
 import cc.iotkit.model.notify.ChannelConfig;
 import cc.iotkit.model.notify.ChannelTemplate;
@@ -34,8 +38,8 @@ public class NotifyService {
         return iChannelData.findAll();
     }
 
-    public List<ChannelConfig> getChannelConfigList() {
-        return iChannelConfigData.findAll();
+    public Paging<ChannelConfigVo> getChannelConfigList(PageRequest<ChannelConfigBo> request) {
+        return iChannelConfigData.findAll(request.to(ChannelConfig.class)).to(ChannelConfigVo.class);
     }
 
     public ChannelConfig addChannelConfig(ChannelConfig channelConfig) {

+ 1 - 1
iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/SpaceDeviceService.java

@@ -49,7 +49,7 @@ public class SpaceDeviceService {
         List<SpaceDeviceVo> spaceDeviceVos = new ArrayList<>();
         spaceDevices.forEach(sd -> {
             DeviceInfo deviceInfo = deviceInfoData.findByDeviceId(sd.getDeviceId());
-            Product product = productData.findById(deviceInfo.getProductKey());
+            Product product = productData.findByProductKey(deviceInfo.getProductKey());
             spaceDeviceVos.add(SpaceDeviceVo.builder()
                     .uid(sd.getUid())
                     .deviceId(sd.getDeviceId())

+ 1 - 1
iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/ThingModelService.java

@@ -26,7 +26,7 @@ public class ThingModelService {
     private IThingModelData thingModelData;
 
     public void parseParams(ThingService<Object> service) {
-        ThingModel thingModel = thingModelData.findById(service.getProductKey());
+        ThingModel thingModel = thingModelData.findByProductKey(service.getProductKey());
         ThingModel.Model model = thingModel.getModel();
 
         String type = service.getType();

+ 9 - 9
iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/impl/DeviceServiceImpl.java

@@ -89,14 +89,14 @@ public class DeviceServiceImpl implements IDeviceService {
 
         String uid = "";
         String subUid = "";
-        if (!AuthUtil.isAdmin()) {
-            //客户端用户使用绑定子用户查询
-            if (AuthUtil.isClientUser()) {
-                subUid = AuthUtil.getUserId();
-            } else {
-                uid = AuthUtil.getUserId();
-            }
-        }
+//        if (!AuthUtil.isAdmin()) {
+//            //客户端用户使用绑定子用户查询
+//            if (AuthUtil.isClientUser()) {
+//                subUid = AuthUtil.getUserId();
+//            } else {
+//                uid = AuthUtil.getUserId();
+//            }
+//        }
 
         String pk = query.getProductKey();
         //关键字查询
@@ -115,7 +115,7 @@ public class DeviceServiceImpl implements IDeviceService {
         String deviceName = deviceInfo.getDeviceName();
         String parentId = deviceInfo.getParentId();
 
-        Product product = productData.findById(productKey);
+        Product product = productData.findByProductKey(productKey);
         if (product == null) {
             throw new BizException(ErrCode.PRODUCT_NOT_FOUND);
         }

+ 26 - 29
iot-module/iot-manager/src/main/java/cc/iotkit/manager/service/impl/ProductServiceImpl.java

@@ -4,7 +4,6 @@ import cc.iotkit.common.api.PageRequest;
 import cc.iotkit.common.api.Paging;
 import cc.iotkit.common.enums.ErrCode;
 import cc.iotkit.common.exception.BizException;
-import cc.iotkit.common.satoken.utils.AuthUtil;
 import cc.iotkit.common.utils.JsonUtils;
 import cc.iotkit.common.utils.MapstructUtils;
 import cc.iotkit.data.manager.ICategoryData;
@@ -16,10 +15,10 @@ import cc.iotkit.manager.dto.bo.category.CategoryBo;
 import cc.iotkit.manager.dto.bo.product.ProductBo;
 import cc.iotkit.manager.dto.bo.productmodel.ProductModelBo;
 import cc.iotkit.manager.dto.bo.thingmodel.ThingModelBo;
-import cc.iotkit.manager.dto.vo.thingmodel.ThingModelVo;
 import cc.iotkit.manager.dto.vo.category.CategoryVo;
 import cc.iotkit.manager.dto.vo.product.ProductVo;
 import cc.iotkit.manager.dto.vo.productmodel.ProductModelVo;
+import cc.iotkit.manager.dto.vo.thingmodel.ThingModelVo;
 import cc.iotkit.manager.service.DataOwnerService;
 import cc.iotkit.manager.service.IProductService;
 import cc.iotkit.model.product.Category;
@@ -30,6 +29,7 @@ import cc.iotkit.temporal.IDbStructureData;
 import com.aliyun.oss.OSS;
 import com.aliyun.oss.OSSClientBuilder;
 import com.aliyun.oss.model.PutObjectResult;
+import com.github.yitter.idgen.YitIdHelper;
 import lombok.RequiredArgsConstructor;
 import lombok.SneakyThrows;
 import lombok.extern.slf4j.Slf4j;
@@ -72,28 +72,23 @@ public class ProductServiceImpl implements IProductService {
     @Autowired
     private IDbStructureData dbStructureData;
 
-
     private OSS ossClient;
 
     @Override
     public ProductVo addEntity(ProductBo data) {
         Product product = data.to(Product.class);
 
-        dataOwnerService.checkOwnerSave(productData, product);
-
         if (product.getCreateAt() == null) {
             product.setCreateAt(System.currentTimeMillis());
         }
         productData.save(product);
         return MapstructUtils.convert(product, ProductVo.class);
-}
+    }
 
     @Override
     public boolean updateEntity(ProductBo productBo) {
         Product product = productBo.to(Product.class);
 
-        dataOwnerService.checkOwnerSave(productData, product);
-
         if (product.getCreateAt() == null) {
             product.setCreateAt(System.currentTimeMillis());
         }
@@ -103,27 +98,28 @@ public class ProductServiceImpl implements IProductService {
 
     @Override
     public ProductVo getDetail(String productKey) {
-       return MapstructUtils.convert(dataOwnerService.checkOwner(productData.findById(productKey)), ProductVo.class);
+        return MapstructUtils.convert(productData.findByProductKey(productKey), ProductVo.class);
     }
 
     @Override
     public ThingModelVo getThingModelByProductKey(String productKey) {
-        checkProductOwner(productKey);
-        ThingModel thingModel = thingModelData.findById(productKey);
+
+        ThingModel thingModel = thingModelData.findByProductKey(productKey);
         return MapstructUtils.convert(thingModel, ThingModelVo.class);
     }
 
     @Override
     public boolean saveThingModel(ThingModelBo data) {
         String productKey = data.getProductKey();
-        checkProductOwner(productKey);
         String model = data.getModel();
-        ThingModel oldData = thingModelData.findById(productKey);
-        ThingModel thingModel = new ThingModel(productKey, productKey, JsonUtils.parseObject(model, ThingModel.Model.class));
+        ThingModel oldData = thingModelData.findOneByCondition(ThingModel.builder().productKey(productKey).build());
+        ThingModel thingModel = new ThingModel(YitIdHelper.nextId(), productKey, JsonUtils.parseObject(model, ThingModel.Model.class));
+
         if (oldData == null) {
             //定义时序数据库物模型数据结构
             dbStructureData.defineThingModel(thingModel);
         } else {
+            thingModel.setId(oldData.getId());
             //更新时序数据库物模型数据结构
             dbStructureData.updateThingModel(thingModel);
         }
@@ -132,17 +128,15 @@ public class ProductServiceImpl implements IProductService {
     }
 
     @Override
-    public boolean deleteThingModel(String productKey) {
-        checkProductOwner(productKey);
-        ThingModel thingModel = thingModelData.findById(productKey);
+    public boolean deleteThingModel(Long id) {
+        ThingModel thingModel = thingModelData.findById(id);
         //删除时序数据库物模型数据结构
         dbStructureData.defineThingModel(thingModel);
-        thingModelData.deleteById(productKey);
+        thingModelData.deleteById(id);
         return true;
     }
 
 
-
     @Override
     public boolean deleteCategory(String id) {
         categoryData.deleteById(id);
@@ -161,8 +155,6 @@ public class ProductServiceImpl implements IProductService {
     @SneakyThrows
 
     public String uploadImg(String productKey, MultipartFile file) {
-        productKey = getProduct(productKey).getId();
-
         String fileName = file.getOriginalFilename();
         String end = fileName.substring(fileName.lastIndexOf("."));
         if (ossClient == null) {
@@ -177,14 +169,14 @@ public class ProductServiceImpl implements IProductService {
         PutObjectResult result = ossClient.putObject(bucket, fileName,
                 file.getInputStream());
         return ossClient.generatePresignedUrl(bucket, fileName,
-                new Date(new Date().getTime() + 3600L * 1000 * 24 * 365 * 10)).toString();
+                new Date(System.currentTimeMillis() + 3600L * 1000 * 24 * 365 * 10)).toString();
     }
 
     @Override
     public Paging<ProductVo> selectPageList(PageRequest<ProductBo> request) {
-        if (!AuthUtil.isAdmin()) {
-            return productData.findByUid(AuthUtil.getUserId(), request.getPageNum(), request.getPageSize()).to(ProductVo.class);
-        }
+//        if (!AuthUtil.isAdmin()) {
+//            return productData.findByUid(AuthUtil.getUserId(), request.getPageNum(), request.getPageSize()).to(ProductVo.class);
+//        }
 
         return productData.findAll(request.to(Product.class)).to(ProductVo.class);
     }
@@ -195,6 +187,12 @@ public class ProductServiceImpl implements IProductService {
 
     }
 
+    @Override
+    public List<CategoryVo> selectCategoryList() {
+        return MapstructUtils.convert(categoryData.findAll(), CategoryVo.class);
+
+    }
+
     @Override
     public List<ProductModelVo> getModels(String productKey) {
         dataOwnerService.checkOwner(productData, productKey);
@@ -207,11 +205,10 @@ public class ProductServiceImpl implements IProductService {
         ProductModel productModel = productModelBo.to(ProductModel.class);
         String model = productModel.getModel();
         String productKey = productModel.getProductKey();
-        Product product = productData.findById(productKey);
+        Product product = productData.findByProductKey(productKey);
         if (product == null) {
             throw new BizException(ErrCode.PRODUCT_NOT_FOUND);
         }
-        dataOwnerService.checkOwner(product);
 
         ProductModel oldScript = productModelData.findByModel(model);
         if (oldScript != null && !oldScript.getProductKey().equals(productKey)) {
@@ -224,13 +221,13 @@ public class ProductServiceImpl implements IProductService {
     }
 
     private Product getProduct(String productKey) {
-       return dataOwnerService.checkOwner(productData.findById(productKey));
+        return productData.findByProductKey(productKey);
     }
 
 
     /***********/
     private void checkProductOwner(String productKey) {
-        dataOwnerService.checkOwner(productData.findById(productKey));
+//        dataOwnerService.checkOwner(productData.findByProductKey(productKey));
     }
 
 }

+ 2 - 2
iot-module/iot-system/src/main/java/cc/iotkit/system/controller/SysConfigController.java

@@ -51,9 +51,9 @@ public class SysConfigController extends BaseController {
   @Log(title = "参数管理", businessType = BusinessType.EXPORT)
   @SaCheckPermission("system:config:export")
   @PostMapping("/export")
-  public void export(@RequestBody @Validated(QueryGroup.class) Request<SysConfigBo> config,
+  public void export(@Validated(QueryGroup.class) SysConfigBo config,
       HttpServletResponse response) {
-    List<SysConfigVo> list = configService.selectConfigList(config.getData());
+    List<SysConfigVo> list = configService.selectConfigList(config);
     ExcelUtil.exportExcel(list, "参数数据", SysConfigVo.class, response);
   }
 

+ 2 - 2
iot-module/iot-system/src/main/java/cc/iotkit/system/controller/SysDictDataController.java

@@ -52,8 +52,8 @@ public class SysDictDataController {
     @SaCheckPermission("system:dict:export")
     @ApiOperation(value = "导出字典数据列表", notes = "导出字典数据列表")
     @PostMapping("/export")
-    public void export(@RequestBody @Validated Request<SysDictDataBo> bo, HttpServletResponse response) {
-        List<SysDictDataVo> list = dictDataService.selectDictDataList(bo.getData());
+    public void export(SysDictDataBo bo, HttpServletResponse response) {
+        List<SysDictDataVo> list = dictDataService.selectDictDataList(bo);
         ExcelUtil.exportExcel(list, "字典数据", SysDictDataVo.class, response);
     }
 

+ 4 - 6
iot-module/iot-system/src/main/java/cc/iotkit/system/controller/SysDictTypeController.java

@@ -55,16 +55,14 @@ public class SysDictTypeController extends BaseController {
     @Log(title = "字典类型", businessType = BusinessType.EXPORT)
     @SaCheckPermission("system:dict:export")
     @PostMapping("/export")
-    public void export(@RequestBody @Validated(QueryGroup.class)PageRequest<SysDictTypeBo> dictType, HttpServletResponse response) {
+    public void export(@Validated(QueryGroup.class) SysDictTypeBo dictType, HttpServletResponse response) {
 
-        List<SysDictTypeVo> list = dictTypeService.selectDictTypeList(dictType.getData());
+        List<SysDictTypeVo> list = dictTypeService.selectDictTypeList(dictType);
         ExcelUtil.exportExcel(list, "字典类型", SysDictTypeVo.class, response);
     }
 
     /**
      * 查询字典类型详细
-     *
-
      */
     @ApiOperation(value = "查询字典类型详细", notes = "查询字典类型详细")
     @SaCheckPermission("system:dict:query")
@@ -111,8 +109,8 @@ public class SysDictTypeController extends BaseController {
     @SaCheckPermission("system:dict:remove")
     @Log(title = "字典类型", businessType = BusinessType.DELETE)
     @PostMapping("/delete")
-    public void remove(@RequestBody @Validated Collection<Long> dictIds) {
-        dictTypeService.deleteDictTypeByIds(dictIds);
+    public void remove(@RequestBody @Validated Request<List<Long>> dictIds) {
+        dictTypeService.deleteDictTypeByIds(dictIds.getData());
     }
 
     /**

+ 2 - 2
iot-module/iot-system/src/main/java/cc/iotkit/system/controller/SysLogininforController.java

@@ -54,8 +54,8 @@ public class SysLogininforController extends BaseController {
     @Log(title = "登录日志", businessType = BusinessType.EXPORT)
     @SaCheckPermission("monitor:logininfor:export")
     @PostMapping("/export")
-    public void export(Request<SysLogininforBo> logininfor, HttpServletResponse response) {
-        List<SysLogininforVo> list = logininforService.selectLogininforList(logininfor.getData());
+    public void export(SysLogininforBo logininfor, HttpServletResponse response) {
+        List<SysLogininforVo> list = logininforService.selectLogininforList(logininfor);
         ExcelUtil.exportExcel(list, "登录日志", SysLogininforVo.class, response);
     }
 

+ 2 - 2
iot-module/iot-system/src/main/java/cc/iotkit/system/controller/SysPostController.java

@@ -54,8 +54,8 @@ public class SysPostController extends BaseController {
     @Log(title = "岗位管理", businessType = BusinessType.EXPORT)
     @SaCheckPermission("system:post:export")
     @PostMapping("/export")
-    public void export(@RequestBody @Validated(QueryGroup.class) Request<SysPostBo> post, HttpServletResponse response) {
-        List<SysPostVo> list = postService.selectPostList(post.getData());
+    public void export(@Validated(QueryGroup.class) SysPostBo post, HttpServletResponse response) {
+        List<SysPostVo> list = postService.selectPostList(post);
         ExcelUtil.exportExcel(list, "岗位数据", SysPostVo.class, response);
     }
 

+ 2 - 2
iot-module/iot-system/src/main/java/cc/iotkit/system/controller/SysRoleController.java

@@ -59,8 +59,8 @@ public class SysRoleController extends BaseController {
     @ApiOperation(value = "导出角色信息列表", notes = "导出角色信息列表")
     @SaCheckPermission("system:role:export")
     @PostMapping("/export")
-    public void export(@RequestBody @Validated Request<SysRoleBo> role, HttpServletResponse response) {
-        List<SysRoleVo> list = roleService.selectRoleList(role.getData());
+    public void export(@Validated SysRoleBo role, HttpServletResponse response) {
+        List<SysRoleVo> list = roleService.selectRoleList(role);
         ExcelUtil.exportExcel(list, "角色数据", SysRoleVo.class, response);
     }
 

+ 2 - 2
iot-module/iot-system/src/main/java/cc/iotkit/system/controller/SysTenantController.java

@@ -62,8 +62,8 @@ public class SysTenantController extends BaseController {
     @SaCheckPermission("system:tenant:export")
     @Log(title = "租户", businessType = BusinessType.EXPORT)
     @PostMapping("/export")
-    public void export(Request<SysTenantBo> bo, HttpServletResponse response) {
-        List<SysTenantVo> list = tenantService.queryList(bo.getData());
+    public void export(SysTenantBo bo, HttpServletResponse response) {
+        List<SysTenantVo> list = tenantService.queryList(bo);
         ExcelUtil.exportExcel(list, "租户", SysTenantVo.class, response);
     }
 

+ 1 - 2
iot-module/iot-system/src/main/java/cc/iotkit/system/controller/SysUserController.java

@@ -69,9 +69,8 @@ public class SysUserController extends BaseController {
     @Log(title = "用户管理", businessType = BusinessType.EXPORT)
     @SaCheckPermission("system:user:export")
     @PostMapping("/export")
-    public void export(@RequestBody @Validated(QueryGroup.class) Request<SysUserBo> req,
+    public void export(@Validated(QueryGroup.class) SysUserBo user,
                        HttpServletResponse response) {
-        SysUserBo user = req.getData();
         List<SysUserVo> list = userService.selectUserList(user);
         List<SysUserExportVo> listVo = MapstructUtils.convert(list, SysUserExportVo.class);
         ExcelUtil.exportExcel(listVo, "用户数据", SysUserExportVo.class, response);

+ 0 - 1
iot-module/iot-system/src/main/java/cc/iotkit/system/service/impl/SysConfigServiceImpl.java

@@ -22,7 +22,6 @@ import lombok.RequiredArgsConstructor;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
-import java.util.ArrayList;
 import java.util.List;
 
 /**

+ 4 - 5
iot-module/iot-system/src/main/java/cc/iotkit/system/service/impl/SysDictTypeServiceImpl.java

@@ -15,7 +15,6 @@ import cc.iotkit.data.system.ISysDictData;
 import cc.iotkit.data.system.ISysDictTypeData;
 import cc.iotkit.model.system.SysDictData;
 import cc.iotkit.model.system.SysDictType;
-import cc.iotkit.model.system.SysUser;
 import cc.iotkit.system.dto.bo.SysDictTypeBo;
 import cc.iotkit.system.dto.vo.SysDictDataVo;
 import cc.iotkit.system.dto.vo.SysDictTypeVo;
@@ -41,7 +40,7 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService, DictService
     private final ISysDictData sysDictData;
 
     @Override
-    public Paging<SysDictTypeVo> selectPageDictTypeList( PageRequest<SysDictTypeBo> query) {
+    public Paging<SysDictTypeVo> selectPageDictTypeList(PageRequest<SysDictTypeBo> query) {
         return sysDictTypeData.findAll(query.to(SysDictType.class)).to(SysDictTypeVo.class);
     }
 
@@ -153,8 +152,8 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService, DictService
     @Override
     public List<SysDictDataVo> updateDictType(SysDictTypeBo bo) {
         SysDictType oldDict = sysDictTypeData.findById(bo.getId());
-        List<SysDictData> olds=sysDictData.findByDicType(oldDict.getDictType());
-        for (SysDictData sd:olds) {
+        List<SysDictData> olds = sysDictData.findByDicType(oldDict.getDictType());
+        for (SysDictData sd : olds) {
             sd.setDictType(bo.getDictType());
             sysDictData.save(sd);
         }
@@ -189,7 +188,7 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService, DictService
         // 优先从本地缓存获取
         List<SysDictDataVo> datas = (List<SysDictDataVo>) SaHolder.getStorage().get(CacheConstants.SYS_DICT_KEY + dictType);
         if (ObjectUtil.isNull(datas)) {
-            datas = SpringUtils.getAopProxy(this).selectDictDataByType(dictType);
+            datas = selectDictDataByType(dictType);
             SaHolder.getStorage().set(CacheConstants.SYS_DICT_KEY + dictType, datas);
         }
 

+ 7 - 3
iot-module/iot-system/src/main/java/cc/iotkit/system/service/impl/SysLogininforServiceImpl.java

@@ -7,19 +7,21 @@ import cc.iotkit.common.log.event.LogininforEvent;
 import cc.iotkit.common.utils.MapstructUtils;
 import cc.iotkit.common.utils.StringUtils;
 import cc.iotkit.common.utils.ip.AddressUtils;
+import cc.iotkit.common.web.utils.ServletUtils;
 import cc.iotkit.data.system.ISysLogininforData;
-import cc.iotkit.data.util.PageBuilder;
 import cc.iotkit.model.system.SysLogininfor;
 import cc.iotkit.system.dto.bo.SysLogininforBo;
 import cc.iotkit.system.dto.vo.SysLogininforVo;
 import cc.iotkit.system.service.ISysLogininforService;
 import cn.hutool.http.useragent.UserAgent;
+import cn.hutool.http.useragent.UserAgentUtil;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.context.event.EventListener;
 import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.Collection;
 import java.util.Date;
 import java.util.List;
@@ -44,7 +46,10 @@ public class SysLogininforServiceImpl implements ISysLogininforService {
     @Async
     @EventListener
     public void recordLogininfor(LogininforEvent logininforEvent) {
-        String ip = logininforEvent.getIp();
+        HttpServletRequest request = logininforEvent.getRequest();
+        final UserAgent userAgent = UserAgentUtil.parse(request.getHeader("User-Agent"));
+        final String ip = ServletUtils.getClientIP();
+
         String address = AddressUtils.getRealAddressByIP(ip);
         StringBuilder s = new StringBuilder();
         s.append(getBlock(ip));
@@ -54,7 +59,6 @@ public class SysLogininforServiceImpl implements ISysLogininforService {
         s.append(getBlock(logininforEvent.getMessage()));
         // 打印信息到日志
         log.info(s.toString(), logininforEvent.getArgs());
-        UserAgent userAgent = logininforEvent.getUserAgent();
         // 获取客户端操作系统
         String os = userAgent.getOs().getName();
         // 获取客户端浏览器

+ 1 - 2
iot-module/iot-system/src/main/java/cc/iotkit/system/service/impl/SysRoleServiceImpl.java

@@ -24,7 +24,6 @@ import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
 import lombok.RequiredArgsConstructor;
-import org.hibernate.service.spi.ServiceException;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
@@ -335,7 +334,7 @@ public class SysRoleServiceImpl implements ISysRoleService {
             checkRoleDataScope(roleId);
             SysRole role = iSysRoleData.findById(roleId);
             if (countUserRoleByRoleId(roleId) > 0) {
-                throw new ServiceException(String.format("%1$s已分配,不能删除", role.getRoleName()));
+                throw new BizException(String.format("%1$s已分配,不能删除", role.getRoleName()));
             }
         }
 

+ 0 - 1
iot-starter/src/main/java/cc/iotkit/Application.java

@@ -34,7 +34,6 @@ public class Application {
         if (EmbeddedRedisConfig.embeddedEnable()) {
             EmbeddedRedisConfig.startEmbeddedRedisServer();
         }
-        System.setProperty("nashorn.args","--no-deprecation-warning");
 
         SpringApplication.run(Application.class, args);
         System.out.println("server start success!");

+ 0 - 56
iot-starter/src/main/java/cc/iotkit/web/controller/CaptchaController.java

@@ -2,7 +2,6 @@ package cc.iotkit.web.controller;
 
 import cc.iotkit.common.constant.Constants;
 import cc.iotkit.common.constant.GlobalConstants;
-import cc.iotkit.common.exception.BizException;
 import cc.iotkit.common.redis.utils.RedisUtils;
 import cc.iotkit.common.utils.ReflectUtils;
 import cc.iotkit.common.utils.SpringUtils;
@@ -14,13 +13,10 @@ import cn.dev33.satoken.annotation.SaIgnore;
 import cn.hutool.captcha.AbstractCaptcha;
 import cn.hutool.captcha.generator.CodeGenerator;
 import cn.hutool.core.util.IdUtil;
-import cn.hutool.core.util.RandomUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import jakarta.validation.constraints.NotBlank;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-
 import org.springframework.expression.Expression;
 import org.springframework.expression.ExpressionParser;
 import org.springframework.expression.spel.standard.SpelExpressionParser;
@@ -29,8 +25,6 @@ import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.time.Duration;
-import java.util.HashMap;
-import java.util.Map;
 
 /**
  * 验证码操作处理
@@ -46,56 +40,6 @@ import java.util.Map;
 public class CaptchaController {
 
     private final CaptchaProperties captchaProperties;
-//    private final SmsProperties smsProperties;
-//    private final MailProperties mailProperties;
-
-    /**
-     * 短信验证码
-     *
-     * @param phonenumber 用户手机号
-     */
-//    @PostMapping("/resource/sms/code")
-//    public void smsCode(@NotBlank(message = "{user.phonenumber.not.blank}") String phonenumber) {
-//        if (!smsProperties.getEnabled()) {
-//            throw new BizException("当前系统没有开启短信功能!");
-//        }
-//        String key = GlobalConstants.CAPTCHA_CODE_KEY + phonenumber;
-//        String code = RandomUtil.randomNumbers(4);
-//        RedisUtils.setCacheObject(key, code, Duration.ofMinutes(Constants.CAPTCHA_EXPIRATION));
-//        // 验证码模板id 自行处理 (查数据库或写死均可)
-//        String templateId = "";
-//        Map<String, String> map = new HashMap<>(1);
-//        map.put("code", code);
-//        SmsTemplate smsTemplate = SpringUtils.getBean(SmsTemplate.class);
-//        SmsResult result = smsTemplate.send(phonenumber, templateId, map);
-//        if (!result.isSuccess()) {
-//            log.error("验证码短信发送异常 => {}", result);
-//            throw new RuntimeException("验证码短信发送异常");
-//        }
-//        return ;
-//    }
-
-    /**
-     * 邮箱验证码
-     *
-     * @param email 邮箱
-     */
-//    @PostMapping("/resource/email/code")
-//    public void emailCode(@NotBlank(message = "{user.email.not.blank}") String email) {
-//        if (!mailProperties.getEnabled()) {
-//            throw new BizException("当前系统没有开启邮件功能!"));
-//        }
-//        String key = GlobalConstants.CAPTCHA_CODE_KEY + email;
-//        String code = RandomUtil.randomNumbers(4);
-//        RedisUtils.setCacheObject(key, code, Duration.ofMinutes(Constants.CAPTCHA_EXPIRATION));
-//        try {
-//            MailUtils.sendText(email, "登录验证码", "您本次验证码为:" + code + ",有效性为" + Constants.CAPTCHA_EXPIRATION + "分钟,请尽快填写。");
-//        } catch (Exception e) {
-//            log.error("验证码短信发送异常 => {}", e.getMessage());
-//           throw new RuntimeException("验证码短信发送异常");
-//        }
-//
-//    }
 
     /**
      * 生成验证码

+ 9 - 9
iot-starter/src/main/java/cc/iotkit/web/service/SysLoginService.java

@@ -7,16 +7,14 @@ import cc.iotkit.common.enums.LoginType;
 import cc.iotkit.common.enums.UserStatus;
 import cc.iotkit.common.exception.BizException;
 import cc.iotkit.common.exception.user.UserException;
+import cc.iotkit.common.log.event.LogininforEvent;
 import cc.iotkit.common.redis.utils.RedisUtils;
 import cc.iotkit.common.satoken.utils.LoginHelper;
 import cc.iotkit.common.tenant.helper.TenantHelper;
 import cc.iotkit.common.undefined.LoginUser;
 import cc.iotkit.common.undefined.RoleDTO;
 import cc.iotkit.common.undefined.XcxLoginUser;
-import cc.iotkit.common.utils.DateUtils;
-import cc.iotkit.common.utils.MapstructUtils;
-import cc.iotkit.common.utils.MessageUtils;
-import cc.iotkit.common.utils.StringUtils;
+import cc.iotkit.common.utils.*;
 import cc.iotkit.common.web.config.properties.CaptchaProperties;
 import cc.iotkit.common.web.utils.ServletUtils;
 import cc.iotkit.data.system.ISysUserData;
@@ -29,16 +27,12 @@ import cn.dev33.satoken.secure.BCrypt;
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
 import cn.hutool.core.util.ObjectUtil;
-
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-
-import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import java.time.Duration;
-import java.util.Date;
 import java.util.List;
 import java.util.function.Supplier;
 
@@ -177,7 +171,13 @@ public class SysLoginService {
      * @param message  消息内容
      */
     private void recordLogininfor(String tenantId, String username, String status, String message) {
-
+        LogininforEvent logininforEvent = new LogininforEvent();
+        logininforEvent.setTenantId(tenantId);
+        logininforEvent.setUsername(username);
+        logininforEvent.setStatus(status);
+        logininforEvent.setMessage(message);
+        logininforEvent.setRequest(ServletUtils.getRequest());
+        SpringUtils.context().publishEvent(logininforEvent);
     }
 
     /**

Kaikkia tiedostoja ei voida näyttää, sillä liian monta tiedostoa muuttui tässä diffissä