From 61fa50b61205c09be498d88801c142c4fd55511f Mon Sep 17 00:00:00 2001 From: xiwa Date: Thu, 14 Jul 2022 19:45:27 +0800 Subject: [PATCH] =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=8E=A5=E5=8F=A3=E9=87=8D?= =?UTF-8?q?=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- data/iotkit.mv.db | Bin 0 -> 40960 bytes iot-auth-server/pom.xml | 2 +- .../controller/AuthServerController.java | 6 +- iot-common/pom.xml | 2 +- iot-components/iot-component-base/pom.xml | 2 +- .../iot-component-converter/pom.xml | 2 +- iot-components/iot-component-server/pom.xml | 14 +- .../cc/iotkit/comps/BizComponentManager.java | 6 +- .../iotkit/comps/DeviceComponentManager.java | 6 +- .../iotkit/comps/config/ComponentConfig.java | 10 - .../comps/service/DeviceBehaviourService.java | 34 +- ...Service.java => DeviceConfigConsumer.java} | 8 +- .../comps/service/DeviceMessageConsumer.java | 30 +- ...rvice.java => DevicePropertyConsumer.java} | 19 +- .../service/ReportRecordPersistService.java | 40 -- iot-components/iot-ctwing-component/pom.xml | 2 +- .../dependency-reduced-pom.xml | 10 +- iot-components/iot-emqx-component/pom.xml | 2 +- .../iotkit/comp/emqx/EmqxDeviceComponent.java | 8 +- .../dependency-reduced-pom.xml | 4 +- iot-components/iot-http-biz-component/pom.xml | 2 +- .../dependency-reduced-pom.xml | 8 +- iot-components/iot-mqtt-component/pom.xml | 2 +- iot-components/pom.xml | 2 +- .../iotkit/dao/AligenieDeviceRepository.java | 27 -- .../iotkit/dao/AligenieProductRepository.java | 22 - .../cc/iotkit/dao/AppDesignRepository.java | 23 - .../main/java/cc/iotkit/dao/CommonDao.java | 61 --- .../main/java/cc/iotkit/dao/DeviceDao.java | 270 ------------ .../cc/iotkit/dao/DeviceGroupRepository.java | 21 - .../cc/iotkit/dao/DeviceInfoRepository.java | 31 -- .../iotkit/dao/DevicePropertyRepository.java | 18 - .../java/cc/iotkit/dao/DeviceReportDao.java | 79 ---- .../dao/ProtocolComponentRepository.java | 23 - .../dao/ProtocolConverterRepository.java | 16 - .../cc/iotkit/dao/RuleInfoRepository.java | 27 -- .../java/cc/iotkit/dao/RuleLogRepository.java | 23 - .../cc/iotkit/dao/SpaceDeviceRepository.java | 32 -- .../java/cc/iotkit/dao/SpaceRepository.java | 25 -- .../cc/iotkit/dao/TaskInfoRepository.java | 21 - .../java/cc/iotkit/dao/TaskLogRepository.java | 23 - .../dao/ThingModelMessageRepository.java | 21 - .../cc/iotkit/dao/ThingModelRepository.java | 19 - .../dao/ThirdUserSessionRepository.java | 9 - .../iotkit/dao/UserActionLogRepository.java | 17 - .../cc/iotkit/dao/UserInfoRepository.java | 25 -- .../dao/VirtualDeviceLogRepository.java | 21 - .../iotkit/dao/VirtualDeviceRepository.java | 27 -- .../config/ElasticsearchConfiguration.java | 25 -- .../java/cc/iotkit/model/OauthClient.java | 28 -- .../cc/iotkit/model/ThirdUserSession.java | 43 -- .../java/cc/iotkit/model/UserActionLog.java | 87 ---- .../model/aligenie/AligenieProduct.java | 72 --- .../model/device/message/DeviceReport.java | 59 --- .../cc/iotkit/model/product/Category.java | 28 -- iot-data-service/readme.txt | 1 - {iot-data-service => iot-data}/.DS_Store | Bin .../iot-dao/.DS_Store | Bin .../iot-dao/pom.xml | 9 +- .../java/cc/iotkit/dao/CategoryCache.java | 5 +- .../main/java/cc/iotkit/dao/DeviceCache.java | 9 +- .../main/java/cc/iotkit/dao/DeviceDao.java | 122 ++++++ .../java/cc/iotkit/dao/OauthClientCache.java | 5 +- .../main/java/cc/iotkit/dao/ProductCache.java | 15 +- .../main/java/cc/iotkit/dao/SpaceCache.java | 5 +- .../java/cc/iotkit/dao/UserInfoCache.java | 5 +- iot-data/iot-data-cache/pom.xml | 34 ++ .../iotkit/data/cache/DeviceCacheService.java | 41 ++ .../iot-data-service}/pom.xml | 18 +- .../java/cc/iotkit/data/ICategoryData.java | 7 +- .../main/java/cc/iotkit/data/ICommonData.java | 38 +- .../cc/iotkit/data/IDeviceConfigData.java | 5 +- .../java/cc/iotkit/data/IDeviceGroupData.java | 9 +- .../java/cc/iotkit/data/IDeviceInfoData.java | 108 +++++ .../main/java/cc/iotkit/data/IHomeData.java | 8 +- .../java/cc/iotkit/data/IOauthClientData.java | 9 + .../main/java/cc/iotkit/data/IOwnedData.java | 23 +- .../java/cc/iotkit/data/IProductData.java | 15 +- .../cc/iotkit/data/IProductModelData.java | 5 +- .../iotkit/data/IProtocolComponentData.java | 13 + .../iotkit/data/IProtocolConverterData.java | 6 + .../java/cc/iotkit/data/IRuleInfoData.java | 18 + .../main/java/cc/iotkit/data/ISpaceData.java | 15 + .../java/cc/iotkit/data/ISpaceDeviceData.java | 20 + .../java/cc/iotkit/data/ITaskInfoData.java | 6 + .../java/cc/iotkit/data/IThingModelData.java | 9 + .../java/cc/iotkit/data/IUserInfoData.java | 14 + .../cc/iotkit/data/IVirtualDeviceData.java | 16 + iot-data/iot-es-temporal-service/pom.xml | 39 ++ .../es/document/DevicePropertyDoc.java | 43 ++ .../es/service/DevicePropertyDataImpl.java | 32 +- .../temporal/es/service/RuleLogDataImpl.java | 24 + .../temporal/es/service/TaskLogDataImpl.java | 24 + .../es/service/ThingModelMessageDataImpl.java | 26 +- .../es/service/VirtualDeviceLogDataImpl.java | 19 + .../iot-model/.DS_Store | Bin .../iot-model/pom.xml | 6 +- .../main/java/cc/iotkit/model/AppInfo.java | 0 .../src/main/java/cc/iotkit/model/Id.java | 9 + .../java/cc/iotkit/model/InvokeResult.java | 0 .../java/cc/iotkit/model/OauthClient.java | 23 + .../src/main/java/cc/iotkit/model/Owned.java | 4 +- .../src/main/java/cc/iotkit/model/Paging.java | 0 .../src/main/java/cc/iotkit/model/Role.java | 0 .../main/java/cc/iotkit/model/SendCmd.java | 0 .../main/java/cc/iotkit/model/UserInfo.java | 9 +- .../cc/iotkit/model/alert/AlertConfig.java | 9 +- .../cc/iotkit/model/device/DeviceConfig.java | 10 +- .../cc/iotkit/model/device/DeviceGroup.java | 9 +- .../cc/iotkit/model/device/DeviceInfo.java | 11 +- .../cc/iotkit/model/device/VirtualDevice.java | 9 +- .../iotkit/model/device/VirtualDeviceLog.java | 0 .../model/device/message/DeviceProperty.java | 9 +- .../device/message/ThingModelMessage.java | 10 +- .../cc/iotkit/model/product/AppDesign.java | 9 +- .../cc/iotkit/model/product/Category.java | 16 +- .../java/cc/iotkit/model/product/Product.java | 9 +- .../cc/iotkit/model/product/ProductModel.java | 12 +- .../cc/iotkit/model/product/ThingModel.java | 7 +- .../model/protocol/ProtocolComponent.java | 9 +- .../model/protocol/ProtocolConverter.java | 9 +- .../java/cc/iotkit/model/rule/RuleAction.java | 0 .../java/cc/iotkit/model/rule/RuleInfo.java | 9 +- .../java/cc/iotkit/model/rule/RuleLog.java | 0 .../java/cc/iotkit/model/rule/TaskInfo.java | 9 +- .../java/cc/iotkit/model/rule/TaskLog.java | 0 .../main/java/cc/iotkit/model/space/Home.java | 6 +- .../java/cc/iotkit/model/space/Space.java | 9 +- .../cc/iotkit/model/space/SpaceDevice.java | 10 +- .../java/cc/iotkit/model/stats/DataItem.java | 0 .../java/cc/iotkit/model/stats/TimeData.java | 0 iot-data/iot-rdb-data-service/pom.xml | 82 ++++ iot-data/iot-rdb-data-service/readme.md | 4 + .../java/cc/iotkit/data/DataBaseInit.java | 30 ++ .../iotkit/data/dao/CategoryRepository.java | 8 + .../data/dao/DeviceConfigRepository.java | 12 + .../dao/DeviceGroupMappingRepository.java | 16 + .../data/dao/DeviceGroupRepository.java | 14 + .../iotkit/data/dao/DeviceInfoRepository.java | 18 + .../data/dao/DeviceSubUserRepository.java | 12 + .../iotkit/data/dao/DeviceTagRepository.java | 14 + .../data/dao/ProductModelRepository.java | 14 + .../cc/iotkit/data/dao/ProductRepository.java | 20 + .../data/dao/ProtocolComponentRepository.java | 12 + .../cc/iotkit/data/model/CategoryMapper.java | 15 + .../iotkit/data/model/DeviceConfigMapper.java | 15 + .../iotkit/data/model/DeviceGroupMapper.java | 15 + .../iotkit/data/model/DeviceInfoMapper.java | 18 + .../cc/iotkit/data/model/ProductMapper.java | 22 + .../iotkit/data/model/ProductModelMapper.java | 22 + .../data/model/ProtocolComponentMapper.java | 22 + .../java/cc/iotkit/data/model/TbCategory.java | 21 +- .../cc/iotkit/data/model/TbDeviceConfig.java | 33 ++ .../cc/iotkit/data/model/TbDeviceGroup.java | 39 ++ .../data/model/TbDeviceGroupMapping.java | 25 ++ .../cc/iotkit/data/model/TbDeviceInfo.java | 38 ++ .../cc/iotkit/data/model/TbDeviceSubUser.java | 21 + .../cc/iotkit/data/model/TbDeviceTag.java | 41 +- .../java/cc/iotkit/data/model/TbProduct.java | 37 ++ .../cc/iotkit/data/model/TbProductModel.java | 36 ++ .../data/model/TbProtocolComponent.java | 37 ++ .../iotkit/data/service/CategoryDataImpl.java | 66 +++ .../cc/iotkit/data/service/CommonService.java | 55 +++ .../data/service/DeviceConfigDataImpl.java | 80 ++++ .../data/service/DeviceGroupDataImpl.java | 77 ++++ .../data/service/DeviceInfoDataImpl.java | 414 ++++++++++++++++++ .../cc/iotkit/data/service/HomeDataImpl.java | 71 +++ .../data/service/OauthClientDataImpl.java | 51 +++ .../iotkit/data/service/ProductDataImpl.java | 90 ++++ .../data/service/ProductModelDataImpl.java | 71 +++ .../service/ProtocolComponentDataImpl.java | 79 ++++ .../service/ProtocolConverterDataImpl.java | 61 +++ .../iotkit/data/service/RuleInfoDataImpl.java | 76 ++++ .../cc/iotkit/data/service/SpaceDataImpl.java | 76 ++++ .../data/service/SpaceDeviceDataImpl.java | 91 ++++ .../iotkit/data/service/TaskInfoDataImpl.java | 61 +++ .../data/service/ThingModelDataImpl.java | 51 +++ .../iotkit/data/service/UserInfoDataImpl.java | 61 +++ .../data/service/VirtualDeviceDataImpl.java | 72 +++ .../src/main/resources/ddl.sql | 69 +++ .../iot-temporal-service}/pom.xml | 6 +- .../iotkit/temporal/IDevicePropertyData.java | 30 ++ .../java/cc/iotkit/temporal/IRuleLogData.java | 14 + .../java/cc/iotkit/temporal/ITaskLogData.java | 12 + .../temporal/IThingModelMessageData.java | 35 ++ .../temporal/IVirtualDeviceLogData.java | 11 + iot-data/pom.xml | 45 ++ iot-data/readme.md | 4 + iot-message-bus/pom.xml | 2 +- iot-package/pom.xml | 2 +- iot-rule-engine/pom.xml | 2 +- .../iotkit/ruleengine/rule/RuleExecutor.java | 6 +- .../iotkit/ruleengine/rule/RuleManager.java | 12 +- .../iotkit/ruleengine/task/TaskManager.java | 35 +- iot-standalone/pom.xml | 17 +- iot-standalone/{readme.txt => readme.md} | 0 .../cc/iotkit/{manager => }/Application.java | 2 +- .../manager/controller/AppController.java | 101 ----- .../manager/controller/DeviceController.java | 151 +++---- .../manager/controller/ProductController.java | 67 ++- .../controller/ProtocolController.java | 60 ++- .../controller/RuleEngineController.java | 111 ++--- .../manager/controller/SpaceController.java | 36 +- .../controller/SpaceDeviceController.java | 83 ++-- .../manager/controller/StatsController.java | 34 +- .../controller/ThirdAuthController.java | 115 ----- .../controller/UserInfoController.java | 44 +- .../controller/VirtualDeviceController.java | 43 +- .../aligenie/AligenieDeviceController.java | 98 ----- .../aligenie/AligenieProductController.java | 49 --- .../controller/api/AccountController.java | 68 --- .../controller/api/DeviceController.java | 78 ---- .../controller/api/HomeController.java | 122 ------ .../controller/api/ProductController.java | 51 --- .../controller/api/SpaceController.java | 206 --------- .../model/aligenie/AligenieProductVo.java | 39 -- .../manager/service/AppDesignService.java | 87 ---- .../manager/service/DataOwnerService.java | 14 +- .../iotkit/manager/service/DeviceService.java | 24 +- .../manager/service/ExampleDataInit.java | 107 +++-- .../manager/service/SpaceDeviceService.java | 9 +- .../manager/service/ThingModelService.java | 9 +- .../iotkit/manager/service/WeChatService.java | 8 +- .../src/main/resources/application-dev.yml | 46 +- .../src/main/resources/application.yml | 44 ++ iot-test-tool/iot-test-mqtt/pom.xml | 2 +- iot-test-tool/pom.xml | 2 +- iot-virtual-device/pom.xml | 2 +- .../iotkit/virtualdevice/VirtualManager.java | 16 +- pom.xml | 32 +- 230 files changed, 3939 insertions(+), 3135 deletions(-) create mode 100644 data/iotkit.mv.db rename iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/{DeviceConfigService.java => DeviceConfigConsumer.java} (89%) rename iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/{PropertyPersistService.java => DevicePropertyConsumer.java} (77%) delete mode 100644 iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/ReportRecordPersistService.java delete mode 100644 iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/AligenieDeviceRepository.java delete mode 100644 iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/AligenieProductRepository.java delete mode 100644 iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/AppDesignRepository.java delete mode 100644 iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/CommonDao.java delete mode 100644 iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DeviceDao.java delete mode 100644 iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DeviceGroupRepository.java delete mode 100644 iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DeviceInfoRepository.java delete mode 100644 iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DevicePropertyRepository.java delete mode 100644 iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DeviceReportDao.java delete mode 100644 iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ProtocolComponentRepository.java delete mode 100644 iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ProtocolConverterRepository.java delete mode 100644 iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/RuleInfoRepository.java delete mode 100644 iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/RuleLogRepository.java delete mode 100644 iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/SpaceDeviceRepository.java delete mode 100644 iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/SpaceRepository.java delete mode 100644 iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/TaskInfoRepository.java delete mode 100644 iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/TaskLogRepository.java delete mode 100644 iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ThingModelMessageRepository.java delete mode 100644 iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ThingModelRepository.java delete mode 100644 iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ThirdUserSessionRepository.java delete mode 100644 iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/UserActionLogRepository.java delete mode 100644 iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/UserInfoRepository.java delete mode 100644 iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/VirtualDeviceLogRepository.java delete mode 100644 iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/VirtualDeviceRepository.java delete mode 100644 iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/config/ElasticsearchConfiguration.java delete mode 100644 iot-data-service/iot-model/src/main/java/cc/iotkit/model/OauthClient.java delete mode 100644 iot-data-service/iot-model/src/main/java/cc/iotkit/model/ThirdUserSession.java delete mode 100644 iot-data-service/iot-model/src/main/java/cc/iotkit/model/UserActionLog.java delete mode 100644 iot-data-service/iot-model/src/main/java/cc/iotkit/model/aligenie/AligenieProduct.java delete mode 100644 iot-data-service/iot-model/src/main/java/cc/iotkit/model/device/message/DeviceReport.java delete mode 100644 iot-data-service/iot-model/src/main/java/cc/iotkit/model/product/Category.java delete mode 100644 iot-data-service/readme.txt rename {iot-data-service => iot-data}/.DS_Store (100%) rename {iot-data-service => iot-data}/iot-dao/.DS_Store (100%) rename {iot-data-service => iot-data}/iot-dao/pom.xml (81%) rename {iot-data-service => iot-data}/iot-dao/src/main/java/cc/iotkit/dao/CategoryCache.java (90%) rename {iot-data-service => iot-data}/iot-dao/src/main/java/cc/iotkit/dao/DeviceCache.java (85%) create mode 100644 iot-data/iot-dao/src/main/java/cc/iotkit/dao/DeviceDao.java rename {iot-data-service => iot-data}/iot-dao/src/main/java/cc/iotkit/dao/OauthClientCache.java (89%) rename {iot-data-service => iot-data}/iot-dao/src/main/java/cc/iotkit/dao/ProductCache.java (79%) rename {iot-data-service => iot-data}/iot-dao/src/main/java/cc/iotkit/dao/SpaceCache.java (85%) rename {iot-data-service => iot-data}/iot-dao/src/main/java/cc/iotkit/dao/UserInfoCache.java (90%) create mode 100644 iot-data/iot-data-cache/pom.xml create mode 100644 iot-data/iot-data-cache/src/main/java/cc/iotkit/data/cache/DeviceCacheService.java rename {iot-data-service => iot-data/iot-data-service}/pom.xml (60%) rename iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/config/EmbeddedEs.java => iot-data/iot-data-service/src/main/java/cc/iotkit/data/ICategoryData.java (76%) rename iot-data-service/iot-device-dao/src/main/java/cc/iotkit/data/ProductDao.java => iot-data/iot-data-service/src/main/java/cc/iotkit/data/ICommonData.java (51%) rename iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DeviceConfigRepository.java => iot-data/iot-data-service/src/main/java/cc/iotkit/data/IDeviceConfigData.java (76%) rename iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/OauthClientRepository.java => iot-data/iot-data-service/src/main/java/cc/iotkit/data/IDeviceGroupData.java (65%) create mode 100644 iot-data/iot-data-service/src/main/java/cc/iotkit/data/IDeviceInfoData.java rename iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/HomeRepository.java => iot-data/iot-data-service/src/main/java/cc/iotkit/data/IHomeData.java (71%) create mode 100644 iot-data/iot-data-service/src/main/java/cc/iotkit/data/IOauthClientData.java rename iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DeviceReportRepository.java => iot-data/iot-data-service/src/main/java/cc/iotkit/data/IOwnedData.java (54%) rename iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ProductRepository.java => iot-data/iot-data-service/src/main/java/cc/iotkit/data/IProductData.java (68%) rename iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ProductModelRepository.java => iot-data/iot-data-service/src/main/java/cc/iotkit/data/IProductModelData.java (76%) create mode 100644 iot-data/iot-data-service/src/main/java/cc/iotkit/data/IProtocolComponentData.java create mode 100644 iot-data/iot-data-service/src/main/java/cc/iotkit/data/IProtocolConverterData.java create mode 100644 iot-data/iot-data-service/src/main/java/cc/iotkit/data/IRuleInfoData.java create mode 100644 iot-data/iot-data-service/src/main/java/cc/iotkit/data/ISpaceData.java create mode 100644 iot-data/iot-data-service/src/main/java/cc/iotkit/data/ISpaceDeviceData.java create mode 100644 iot-data/iot-data-service/src/main/java/cc/iotkit/data/ITaskInfoData.java create mode 100644 iot-data/iot-data-service/src/main/java/cc/iotkit/data/IThingModelData.java create mode 100644 iot-data/iot-data-service/src/main/java/cc/iotkit/data/IUserInfoData.java create mode 100644 iot-data/iot-data-service/src/main/java/cc/iotkit/data/IVirtualDeviceData.java create mode 100644 iot-data/iot-es-temporal-service/pom.xml create mode 100644 iot-data/iot-es-temporal-service/src/main/java/cc/iotkit/temporal/es/document/DevicePropertyDoc.java rename iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DevicePropertyDao.java => iot-data/iot-es-temporal-service/src/main/java/cc/iotkit/temporal/es/service/DevicePropertyDataImpl.java (64%) create mode 100644 iot-data/iot-es-temporal-service/src/main/java/cc/iotkit/temporal/es/service/RuleLogDataImpl.java create mode 100644 iot-data/iot-es-temporal-service/src/main/java/cc/iotkit/temporal/es/service/TaskLogDataImpl.java rename iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ThingModelMessageDao.java => iot-data/iot-es-temporal-service/src/main/java/cc/iotkit/temporal/es/service/ThingModelMessageDataImpl.java (78%) create mode 100644 iot-data/iot-es-temporal-service/src/main/java/cc/iotkit/temporal/es/service/VirtualDeviceLogDataImpl.java rename {iot-data-service => iot-data}/iot-model/.DS_Store (100%) rename {iot-data-service => iot-data}/iot-model/pom.xml (88%) rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/AppInfo.java (100%) create mode 100644 iot-data/iot-model/src/main/java/cc/iotkit/model/Id.java rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/InvokeResult.java (100%) create mode 100644 iot-data/iot-model/src/main/java/cc/iotkit/model/OauthClient.java rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/Owned.java (92%) rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/Paging.java (100%) rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/Role.java (100%) rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/SendCmd.java (100%) rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/UserInfo.java (84%) rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/alert/AlertConfig.java (77%) rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/device/DeviceConfig.java (72%) rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/device/DeviceGroup.java (71%) rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/device/DeviceInfo.java (84%) rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/device/VirtualDevice.java (85%) rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/device/VirtualDeviceLog.java (100%) rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/device/message/DeviceProperty.java (68%) rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/device/message/ThingModelMessage.java (85%) rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/product/AppDesign.java (70%) rename iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/AppInfoRepository.java => iot-data/iot-model/src/main/java/cc/iotkit/model/product/Category.java (67%) rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/product/Product.java (74%) rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/product/ProductModel.java (67%) rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/product/ThingModel.java (93%) rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/protocol/ProtocolComponent.java (75%) rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/protocol/ProtocolConverter.java (67%) rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/rule/RuleAction.java (100%) rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/rule/RuleInfo.java (72%) rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/rule/RuleLog.java (100%) rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/rule/TaskInfo.java (83%) rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/rule/TaskLog.java (100%) rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/space/Home.java (85%) rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/space/Space.java (73%) rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/space/SpaceDevice.java (75%) rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/stats/DataItem.java (100%) rename {iot-data-service => iot-data}/iot-model/src/main/java/cc/iotkit/model/stats/TimeData.java (100%) create mode 100644 iot-data/iot-rdb-data-service/pom.xml create mode 100644 iot-data/iot-rdb-data-service/readme.md create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/DataBaseInit.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/CategoryRepository.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/DeviceConfigRepository.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/DeviceGroupMappingRepository.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/DeviceGroupRepository.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/DeviceInfoRepository.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/DeviceSubUserRepository.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/DeviceTagRepository.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/ProductModelRepository.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/ProductRepository.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/ProtocolComponentRepository.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/CategoryMapper.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/DeviceConfigMapper.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/DeviceGroupMapper.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/DeviceInfoMapper.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/ProductMapper.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/ProductModelMapper.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/ProtocolComponentMapper.java rename iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/CategoryRepository.java => iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbCategory.java (62%) create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbDeviceConfig.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbDeviceGroup.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbDeviceGroupMapping.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbDeviceInfo.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbDeviceSubUser.java rename iot-data-service/iot-model/src/main/java/cc/iotkit/model/aligenie/AligenieDevice.java => iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbDeviceTag.java (54%) create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbProduct.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbProductModel.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbProtocolComponent.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/CategoryDataImpl.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/CommonService.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/DeviceConfigDataImpl.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/DeviceGroupDataImpl.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/DeviceInfoDataImpl.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/HomeDataImpl.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/OauthClientDataImpl.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/ProductDataImpl.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/ProductModelDataImpl.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/ProtocolComponentDataImpl.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/ProtocolConverterDataImpl.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/RuleInfoDataImpl.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/SpaceDataImpl.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/SpaceDeviceDataImpl.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/TaskInfoDataImpl.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/ThingModelDataImpl.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/UserInfoDataImpl.java create mode 100644 iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/VirtualDeviceDataImpl.java create mode 100644 iot-data/iot-rdb-data-service/src/main/resources/ddl.sql rename {iot-data-service/iot-device-dao => iot-data/iot-temporal-service}/pom.xml (78%) create mode 100644 iot-data/iot-temporal-service/src/main/java/cc/iotkit/temporal/IDevicePropertyData.java create mode 100644 iot-data/iot-temporal-service/src/main/java/cc/iotkit/temporal/IRuleLogData.java create mode 100644 iot-data/iot-temporal-service/src/main/java/cc/iotkit/temporal/ITaskLogData.java create mode 100644 iot-data/iot-temporal-service/src/main/java/cc/iotkit/temporal/IThingModelMessageData.java create mode 100644 iot-data/iot-temporal-service/src/main/java/cc/iotkit/temporal/IVirtualDeviceLogData.java create mode 100644 iot-data/pom.xml create mode 100644 iot-data/readme.md rename iot-standalone/{readme.txt => readme.md} (100%) rename iot-standalone/src/main/java/cc/iotkit/{manager => }/Application.java (98%) delete mode 100644 iot-standalone/src/main/java/cc/iotkit/manager/controller/AppController.java delete mode 100644 iot-standalone/src/main/java/cc/iotkit/manager/controller/ThirdAuthController.java delete mode 100644 iot-standalone/src/main/java/cc/iotkit/manager/controller/aligenie/AligenieDeviceController.java delete mode 100644 iot-standalone/src/main/java/cc/iotkit/manager/controller/aligenie/AligenieProductController.java delete mode 100644 iot-standalone/src/main/java/cc/iotkit/manager/controller/api/AccountController.java delete mode 100644 iot-standalone/src/main/java/cc/iotkit/manager/controller/api/DeviceController.java delete mode 100644 iot-standalone/src/main/java/cc/iotkit/manager/controller/api/HomeController.java delete mode 100644 iot-standalone/src/main/java/cc/iotkit/manager/controller/api/ProductController.java delete mode 100644 iot-standalone/src/main/java/cc/iotkit/manager/controller/api/SpaceController.java delete mode 100644 iot-standalone/src/main/java/cc/iotkit/manager/model/aligenie/AligenieProductVo.java delete mode 100644 iot-standalone/src/main/java/cc/iotkit/manager/service/AppDesignService.java diff --git a/data/iotkit.mv.db b/data/iotkit.mv.db new file mode 100644 index 0000000000000000000000000000000000000000..02a46c01723c10dd8c2fbe8290aeaf7909593339 GIT binary patch literal 40960 zcmeHQOLOB`6}B?=H0|y*lj(*PP#VKbk{J{9uw=;#svO7NG3_|Pc2eD|AnP%cnzWrt zoS|tpQw1}{j>oW}ShA*y4GVqEc zePK;u<7e*a+0kSSKlhH^sr`w23I~y;k?N}D0)7wyL;w*$1P}p401-e05CKF05kLeG z0Yu_0##;{yvZB^By29f9x>veiS}r{(eY5mV zX{GdT>7h_qDZVFu@NCc?imiUTIcy(p?svLdq9RGKsUlXEe=X1r;{KrB7dwx|-tJIr zKkE#J1FVQGI}}&Fk#1`Bx}_M3A=M0hRore4w#8M;9C^0wd7dqsvIpCARjX^Z zquZY4$u--P>V~eXmTq~9X1kKC)g)KdB}l8#V6C|-Hn(;%{inez#kt+u0>I zhZS+N^Q6-ovh}^@PCLG5c^xeHf%x9?HnU)_-`Q#QpNmi1&m#t~wTH0wP_2l&y~wuE zINvV+c<+nvFaI3S16(h>61e;=v9;S94Es$mFnYXTrGKi3J!|CnVyCy&eir$C+%`D< z2LR~5xOXo=bgO;PX|)fZ^mq67UK`aU?ChXF9X_vsmEbY}z;9I%&&+y&xu)L+*q_Fo z!#3?F-A$af3Qp^0cAA-RTKxLCmwMuPW;fcG#n-jC{|IpZm2f%m!Je5M05&YfVDk*b8^h=uLKRZ~P&&j;EPhhmzhpD4x7gY(S%UHMdQW-)CwHaKgo!g5o!Y zA3;<2GFx99>~9|Wf23KP!+f`=-|>p?0LXipK{nw(JoZP$&Ka7@kuI(P)Su7qf5Bdv z@b=HW7~rr6AYObIApd(d$cN3$H@y~glhnpM-whXbyMtzTKXJhFI(troi+Bir`blO# z)zaNWE{}SsQ2g72)52Qe4tbQ_kl9=*!9(nZ{5F|NbjFtGCOTEg&uV0@&&TIykcX^z8vELu9Bb zY*K7yQ!Q?jL2S}2S)w+DmJl*T?F)@kg6wD|VifUQBk8&C`q(yDGtybkHNQHAZe`9h z(zmjG&E!_%wMO7I;?V|cBBVt%BCX5+4y}v+h&93Q5Yy-$YVzoGBRzL5eIwm-=9;2= z*5~axb44+%AYYy2r>A43q;F+d&0I|kXDzv}U<>Y&EG@~3U(OOgzw`+HI4>gmH;L^i3B^P-!n66j7imq!~pTs3uTWWzMAA${@`l}u-Y0Auv%WAc~GjAG|31| z0-=J(U!^}WleElA45NHHSQL|DWGcnTREtqunMHn8%N?0qj)4VNnh|8Qz%(sl8W)Ll zW}1GfAQLf-%0t{Hs>Q@?3e0GLO`bPnlOEWlr`S|yHq~F>CPw_DI0a^aO`gm_3pJv8 zU{gI}6L%pSn-633X?%W8tD>wOP@ygaHcq5A1{XxQN#kye$FOc|ujl}$aK%OA5<(qD0EC)~ z6%h$?i~oy|0C49Ycglt8!U`=@YH3o}Jf)TB)dq@#QIHw?$`^`9opC#!@ppxOVW~bp7Td$3GdzR<=Hz6YHrky2J3-ItE_;1 zMKw8OUu0P1Z5fBQB*)knyyyk_e{7&2^8d()(|l6LVlD7iKknhhBLav3B7g`W0t5ld z|3m)G`Tr>7|D!ta|52{|-%gBqNbr9W0fOZJ=tu&Uk0gl70A@Ih!Om9(@cI8gOFt{D zC*%JC|7SV?E!cuOz^&H-cx{WhazrHTnV$~8vuwB}(E)0-B#wLqIsjKE!h6r95o>By zW<@ZfPQZ;JsZNXnbt0-5qB?P#)rov6AI%>+hWsD-KR%2i0*C-2fCwN0SBn7U{~`b8 z{NE1wzij~jcXQ?c4&(o{z5uKLN1yinq7Sr`00a?<0Kh_{Dk}r12c-n+hUeJ9Q@xX` z06+@>{u>Jb#w+(GE6US4yR(J0XN&ii*RcSgpIYJ<6^>Q*z7*2r4_MjcD=74j1psMD z{wt~Sj|Bk3SB~(?;8@}x-ml`{Ik5m>uJ!$)9vl_`gjfBres|M~`+qG90KWa@@>hiq zFAXoTFcWxbs>;CO^s3r&q}^N=Ue(L+rR!JoOYqPVicc zMtaEU&n!(hB;gAL!WIdQhw-raj*N!RF&=j7;$c)+fiioVHFXczi%sIM{ iotkit-parent cc.iotkit - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT 4.0.0 diff --git a/iot-auth-server/src/main/java/cc/iotkit/oauth/controller/AuthServerController.java b/iot-auth-server/src/main/java/cc/iotkit/oauth/controller/AuthServerController.java index 324c2e8f..e94caa95 100644 --- a/iot-auth-server/src/main/java/cc/iotkit/oauth/controller/AuthServerController.java +++ b/iot-auth-server/src/main/java/cc/iotkit/oauth/controller/AuthServerController.java @@ -10,7 +10,7 @@ package cc.iotkit.oauth.controller; import cc.iotkit.common.utils.JsonUtil; -import cc.iotkit.dao.UserInfoRepository; +import cc.iotkit.data.IUserInfoData; import cc.iotkit.model.UserInfo; import cc.iotkit.oauth.service.TokenRequestHandler; import cc.iotkit.utils.AuthUtil; @@ -33,7 +33,7 @@ import java.util.Map; public class AuthServerController { @Autowired - private UserInfoRepository userInfoRepository; + private IUserInfoData userInfoData; /** * 处理所有OAuth相关请求 @@ -56,7 +56,7 @@ public class AuthServerController { // 登录处理函数 setDoLoginHandle((name, pwd) -> { try { - UserInfo userInfo = userInfoRepository.findByUid(name); + UserInfo userInfo = userInfoData.findByUid(name); if (userInfo != null) { String secret = userInfo.getSecret(); if (AuthUtil.checkPwd(pwd, secret)) { diff --git a/iot-common/pom.xml b/iot-common/pom.xml index 0904079d..07ef57cd 100644 --- a/iot-common/pom.xml +++ b/iot-common/pom.xml @@ -5,7 +5,7 @@ iotkit-parent cc.iotkit - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT 4.0.0 diff --git a/iot-components/iot-component-base/pom.xml b/iot-components/iot-component-base/pom.xml index a36620e9..ba31f36f 100644 --- a/iot-components/iot-component-base/pom.xml +++ b/iot-components/iot-component-base/pom.xml @@ -5,7 +5,7 @@ iot-components cc.iotkit - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT 4.0.0 diff --git a/iot-components/iot-component-converter/pom.xml b/iot-components/iot-component-converter/pom.xml index d6239425..b668ac33 100644 --- a/iot-components/iot-component-converter/pom.xml +++ b/iot-components/iot-component-converter/pom.xml @@ -5,7 +5,7 @@ iot-components cc.iotkit - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT 4.0.0 diff --git a/iot-components/iot-component-server/pom.xml b/iot-components/iot-component-server/pom.xml index f6ed763a..b5d7ed0a 100644 --- a/iot-components/iot-component-server/pom.xml +++ b/iot-components/iot-component-server/pom.xml @@ -5,7 +5,7 @@ iot-components cc.iotkit - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT 4.0.0 @@ -94,7 +94,17 @@ cc.iotkit - iot-device-dao + iot-data-service + + + + cc.iotkit + iot-temporal-service + + + + cc.iotkit + iot-data-cache diff --git a/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/BizComponentManager.java b/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/BizComponentManager.java index 09d98e13..79194d2f 100644 --- a/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/BizComponentManager.java +++ b/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/BizComponentManager.java @@ -16,7 +16,7 @@ import cc.iotkit.comp.CompConfig; import cc.iotkit.comp.IComponent; import cc.iotkit.comps.config.ComponentConfig; import cc.iotkit.comps.service.DeviceBehaviourService; -import cc.iotkit.dao.ProtocolComponentRepository; +import cc.iotkit.data.IProtocolComponentData; import cc.iotkit.model.protocol.ProtocolComponent; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; @@ -41,14 +41,14 @@ public class BizComponentManager { @Autowired private ComponentConfig componentConfig; @Autowired - private ProtocolComponentRepository componentRepository; + private IProtocolComponentData protocolComponentData; @Autowired private DeviceBehaviourService deviceBehaviourService; @PostConstruct public void init() { try { - List componentList = componentRepository + List componentList = protocolComponentData .findByStateAndType(ProtocolComponent.STATE_RUNNING, ProtocolComponent.TYPE_BIZ); for (ProtocolComponent component : componentList) { register(component); diff --git a/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/DeviceComponentManager.java b/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/DeviceComponentManager.java index cd54a89f..301209ab 100644 --- a/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/DeviceComponentManager.java +++ b/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/DeviceComponentManager.java @@ -25,7 +25,7 @@ import cc.iotkit.converter.ScriptConverter; import cc.iotkit.common.thing.ThingService; import cc.iotkit.dao.DeviceCache; import cc.iotkit.dao.ProductCache; -import cc.iotkit.dao.ProtocolComponentRepository; +import cc.iotkit.data.IProtocolComponentData; import cc.iotkit.model.device.DeviceInfo; import cc.iotkit.model.device.message.ThingModelMessage; import cc.iotkit.model.product.Product; @@ -60,7 +60,7 @@ public class DeviceComponentManager { @Autowired private ComponentConfig componentConfig; @Autowired - private ProtocolComponentRepository componentRepository; + private IProtocolComponentData protocolComponentData; @Autowired private DeviceCache deviceCache; @Autowired @@ -71,7 +71,7 @@ public class DeviceComponentManager { @PostConstruct public void init() { try { - List componentList = componentRepository.findByStateAndType( + List componentList = protocolComponentData.findByStateAndType( ProtocolComponent.STATE_RUNNING, ProtocolComponent.TYPE_DEVICE); for (ProtocolComponent component : componentList) { register(component); diff --git a/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/config/ComponentConfig.java b/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/config/ComponentConfig.java index 489e2003..b8f0ffa2 100644 --- a/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/config/ComponentConfig.java +++ b/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/config/ComponentConfig.java @@ -1,6 +1,5 @@ package cc.iotkit.comps.config; -import cc.iotkit.model.device.message.DeviceReport; import cc.iotkit.model.device.message.ThingModelMessage; import cc.iotkit.mq.MqConsumer; import cc.iotkit.mq.MqProducer; @@ -54,13 +53,4 @@ public class ComponentConfig { return new VertxMqConsumer<>(ThingModelMessage.class); } - @Bean("deviceReportProducer") - public MqProducer getDeviceReportProducer() { - return new VertxMqProducer<>(DeviceReport.class); - } - - @Bean("deviceReportConsumer") - public MqConsumer getDeviceReportConsumer() { - return new VertxMqConsumer<>(DeviceReport.class); - } } diff --git a/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/DeviceBehaviourService.java b/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/DeviceBehaviourService.java index 668786e7..f9f78f72 100644 --- a/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/DeviceBehaviourService.java +++ b/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/DeviceBehaviourService.java @@ -17,6 +17,9 @@ import cc.iotkit.common.utils.UniqueIdUtil; import cc.iotkit.comp.model.DeviceState; import cc.iotkit.comp.model.RegisterInfo; import cc.iotkit.dao.*; +import cc.iotkit.data.IDeviceInfoData; +import cc.iotkit.data.IProductModelData; +import cc.iotkit.data.IProductData; import cc.iotkit.model.device.DeviceInfo; import cc.iotkit.model.device.message.ThingModelMessage; import cc.iotkit.model.product.Product; @@ -29,24 +32,24 @@ import org.springframework.stereotype.Service; import java.util.HashMap; import java.util.List; -import java.util.Optional; +import java.util.UUID; @Slf4j @Service public class DeviceBehaviourService { @Autowired - private ProductRepository productRepository; - @Autowired - private ProductModelRepository productModelRepository; + private IProductModelData productModelData; @Autowired private ProductCache productCache; @Autowired - private DeviceInfoRepository deviceInfoRepository; + private IDeviceInfoData deviceInfoData; @Autowired private DeviceCache deviceCache; @Autowired private MqProducer producer; + @Autowired + private IProductData productData; public void register(RegisterInfo info) { try { @@ -80,7 +83,7 @@ public class DeviceBehaviourService { if (parentId != null) { //透传设备:pk为空、model不为空,使用model查询产品 if (StringUtils.isBlank(pk) && StringUtils.isNotBlank(model)) { - ProductModel productModel = productModelRepository.findByModel(model); + ProductModel productModel = productModelData.findByModel(model); if (productModel == null) { throw new BizException("product model does not exist"); } @@ -88,13 +91,12 @@ public class DeviceBehaviourService { } } - Optional optProduct = productRepository.findById(pk); - if (optProduct.isEmpty()) { + Product product = productData.findById(pk); + if (product == null) { throw new BizException("Product does not exist"); } - Product product = optProduct.get(); String uid = product.getUid(); - DeviceInfo device = deviceInfoRepository.findByProductKeyAndDeviceName(pk, info.getDeviceName()); + DeviceInfo device = deviceInfoData.findByProductKeyAndDeviceName(pk, info.getDeviceName()); boolean reportMsg = false; if (device != null) { @@ -130,13 +132,14 @@ public class DeviceBehaviourService { device.setParentId(parentId); reportMsg = true; } - deviceInfoRepository.save(device); + deviceInfoData.save(device); //新设备或更换网关需要产生注册消息 if (reportMsg) { log.info("device registered:{}", JsonUtil.toJsonString(device)); //新注册设备注册消息 ThingModelMessage modelMessage = new ThingModelMessage( + UUID.randomUUID().toString(), UniqueIdUtil.newRequestId(), "", pk, dn, ThingModelMessage.TYPE_LIFETIME, "register", @@ -154,7 +157,7 @@ public class DeviceBehaviourService { String deviceName, String productSecret, String deviceSecret) { - DeviceInfo deviceInfo = deviceInfoRepository.findByProductKeyAndDeviceName(productKey, deviceName); + DeviceInfo deviceInfo = deviceInfoData.findByProductKeyAndDeviceName(productKey, deviceName); if (deviceInfo == null) { throw new BizException("device does not exist"); } @@ -177,7 +180,7 @@ public class DeviceBehaviourService { public void deviceStateChange(String productKey, String deviceName, boolean online) { - DeviceInfo device = deviceInfoRepository.findByProductKeyAndDeviceName(productKey, deviceName); + DeviceInfo device = deviceInfoData.findByProductKeyAndDeviceName(productKey, deviceName); if (device == null) { log.warn(String.format("productKey: %s,device: %s,online: %s", productKey, device, online)); throw new BizException("device does not exist"); @@ -188,7 +191,7 @@ public class DeviceBehaviourService { return; } - List subDevices = deviceInfoRepository.findByParentId(device.getDeviceId()); + List subDevices = deviceInfoData.findByParentId(device.getDeviceId()); for (DeviceInfo subDevice : subDevices) { Product product = productCache.findById(subDevice.getProductKey()); Boolean transparent = product.getTransparent(); @@ -207,10 +210,11 @@ public class DeviceBehaviourService { device.getState().setOnline(false); device.getState().setOfflineTime(System.currentTimeMillis()); } - deviceInfoRepository.save(device); + deviceInfoData.save(device); //设备状态变更消息 ThingModelMessage modelMessage = new ThingModelMessage( + UUID.randomUUID().toString(), UniqueIdUtil.newRequestId(), "", device.getProductKey(), device.getDeviceName(), ThingModelMessage.TYPE_STATE, diff --git a/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/DeviceConfigService.java b/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/DeviceConfigConsumer.java similarity index 89% rename from iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/DeviceConfigService.java rename to iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/DeviceConfigConsumer.java index ab224b75..bec04436 100644 --- a/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/DeviceConfigService.java +++ b/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/DeviceConfigConsumer.java @@ -13,7 +13,7 @@ import cc.iotkit.common.Constants; import cc.iotkit.common.thing.ThingService; import cc.iotkit.common.utils.JsonUtil; import cc.iotkit.comps.DeviceComponentManager; -import cc.iotkit.dao.DeviceConfigRepository; +import cc.iotkit.data.IDeviceConfigData; import cc.iotkit.model.device.DeviceConfig; import cc.iotkit.model.device.message.ThingModelMessage; import cc.iotkit.mq.ConsumerHandler; @@ -30,7 +30,7 @@ import java.util.Map; */ @Slf4j @Service -public class DeviceConfigService implements ConsumerHandler { +public class DeviceConfigConsumer implements ConsumerHandler { @Autowired private MqConsumer configMessageConsumer; @@ -39,7 +39,7 @@ public class DeviceConfigService implements ConsumerHandler { public DeviceComponentManager deviceComponentManager; @Autowired - private DeviceConfigRepository deviceConfigRepository; + private IDeviceConfigData deviceConfigData; @PostConstruct public void init() { @@ -52,7 +52,7 @@ public class DeviceConfigService implements ConsumerHandler { String identifier = msg.getIdentifier(); if (ThingModelMessage.ID_CONFIG_GET.equals(identifier)) { //收到设备获取配置消息,回复配置信息给设备 - DeviceConfig deviceConfig = deviceConfigRepository.findByDeviceId(msg.getDeviceId()); + DeviceConfig deviceConfig = deviceConfigData.findByDeviceId(msg.getDeviceId()); if (deviceConfig == null) { return; } diff --git a/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/DeviceMessageConsumer.java b/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/DeviceMessageConsumer.java index fbb4701f..2fb4d7d4 100644 --- a/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/DeviceMessageConsumer.java +++ b/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/DeviceMessageConsumer.java @@ -10,35 +10,28 @@ package cc.iotkit.comps.service; import cc.iotkit.common.Constants; -import cc.iotkit.dao.*; -import cc.iotkit.model.device.DeviceInfo; -import cc.iotkit.model.device.message.DeviceReport; import cc.iotkit.model.device.message.ThingModelMessage; import cc.iotkit.mq.ConsumerHandler; import cc.iotkit.mq.MqConsumer; import cc.iotkit.mq.MqProducer; +import cc.iotkit.temporal.IThingModelMessageData; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; -import java.util.UUID; @Slf4j @Service public class DeviceMessageConsumer implements ConsumerHandler { @Lazy @Autowired - private ThingModelMessageRepository messageRepository; - @Autowired - private DeviceCache deviceCache; + private IThingModelMessageData thingModelMessageData; @Autowired private MqConsumer thingModelMessageConsumer; @Autowired private MqProducer thingModelMessageMqProducer; - @Autowired - private MqProducer deviceReportProducer; @PostConstruct public void init() { @@ -59,29 +52,12 @@ public class DeviceMessageConsumer implements ConsumerHandler thingModelMessageMqProducer.publish(Constants.DEVICE_CONFIG_TOPIC, msg); } - //重新发布设备上报记录,不包含消息内容,用于数据统计 - deviceReportProducer.publish(Constants.DEVICE_REPORT_RECORD_TOPIC, getDeviceReport(msg)); - //设备消息入库 - messageRepository.save(msg); + thingModelMessageData.add(msg); } catch (Throwable e) { //不能重复消费 log.error("device message consumer error", e); } } - private DeviceReport getDeviceReport(ThingModelMessage message) { - DeviceInfo device = deviceCache.get(message.getDeviceId()); - return DeviceReport.builder() - .id(UUID.randomUUID().toString()) - .deviceId(message.getDeviceId()) - .productKey(message.getProductKey()) - .deviceName(message.getDeviceName()) - .uid(device.getUid()) - .identifier(message.getIdentifier()) - .type(message.getType()) - .code(message.getCode()) - .time(message.getTime()) - .build(); - } } diff --git a/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/PropertyPersistService.java b/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/DevicePropertyConsumer.java similarity index 77% rename from iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/PropertyPersistService.java rename to iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/DevicePropertyConsumer.java index af8de02a..86c85ff8 100644 --- a/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/PropertyPersistService.java +++ b/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/DevicePropertyConsumer.java @@ -3,11 +3,13 @@ package cc.iotkit.comps.service; import cc.iotkit.common.Constants; import cc.iotkit.common.utils.JsonUtil; import cc.iotkit.dao.DeviceDao; -import cc.iotkit.dao.DevicePropertyRepository; +import cc.iotkit.data.IDeviceInfoData; +import cc.iotkit.data.cache.DeviceCacheService; import cc.iotkit.model.device.message.DeviceProperty; import cc.iotkit.model.device.message.ThingModelMessage; import cc.iotkit.mq.ConsumerHandler; import cc.iotkit.mq.MqConsumer; +import cc.iotkit.temporal.IDevicePropertyData; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -22,14 +24,18 @@ import java.util.Map; */ @Slf4j @Service -public class PropertyPersistService implements ConsumerHandler { +public class DevicePropertyConsumer implements ConsumerHandler { @Autowired private MqConsumer thingModelMessageMqConsumer; @Autowired private DeviceDao deviceDao; @Autowired - private DevicePropertyRepository propertyRepository; + private IDevicePropertyData devicePropertyData; + @Autowired + private IDeviceInfoData deviceInfoData; + @Autowired + private DeviceCacheService deviceCacheService; @PostConstruct public void init() { @@ -63,7 +69,7 @@ public class PropertyPersistService implements ConsumerHandler properties) { try { - log.info("update device property,deviceId:{},property:{}", - deviceId, JsonUtil.toJsonString(properties)); - deviceDao.updateProperties(deviceId, properties); + log.info("save device property,deviceId:{},property:{}", deviceId, JsonUtil.toJsonString(properties)); + deviceCacheService.saveProperties(deviceId, properties); } catch (Throwable e) { log.error("save device current properties error", e); } diff --git a/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/ReportRecordPersistService.java b/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/ReportRecordPersistService.java deleted file mode 100644 index 5503b623..00000000 --- a/iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/ReportRecordPersistService.java +++ /dev/null @@ -1,40 +0,0 @@ -package cc.iotkit.comps.service; - -import cc.iotkit.common.Constants; -import cc.iotkit.dao.DeviceReportRepository; -import cc.iotkit.model.device.message.DeviceReport; -import cc.iotkit.mq.ConsumerHandler; -import cc.iotkit.mq.MqConsumer; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; - -import javax.annotation.PostConstruct; - -/** - * 设备上报记录消费入库 - */ -@Slf4j -@Service -public class ReportRecordPersistService implements ConsumerHandler { - - @Autowired - private MqConsumer deviceReportMqConsumer; - @Autowired - private DeviceReportRepository deviceReportRepository; - - @PostConstruct - public void init() { - deviceReportMqConsumer.consume(Constants.DEVICE_REPORT_RECORD_TOPIC, this); - } - - @Override - public void handler(DeviceReport msg) { - try { - deviceReportRepository.save(msg); - } catch (Throwable e) { - log.warn("save report record error", e); - } - } - -} diff --git a/iot-components/iot-ctwing-component/pom.xml b/iot-components/iot-ctwing-component/pom.xml index e0f33f12..e5f87e9d 100644 --- a/iot-components/iot-ctwing-component/pom.xml +++ b/iot-components/iot-ctwing-component/pom.xml @@ -5,7 +5,7 @@ iot-components cc.iotkit - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT 4.0.0 diff --git a/iot-components/iot-emqx-component/dependency-reduced-pom.xml b/iot-components/iot-emqx-component/dependency-reduced-pom.xml index cdfec43f..2b5eb562 100644 --- a/iot-components/iot-emqx-component/dependency-reduced-pom.xml +++ b/iot-components/iot-emqx-component/dependency-reduced-pom.xml @@ -3,7 +3,7 @@ iot-components cc.iotkit - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT 4.0.0 iot-emqx-component @@ -82,25 +82,25 @@ cc.iotkit iot-model - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT compile cc.iotkit iot-dao - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT compile cc.iotkit iot-common - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT compile cc.iotkit iot-component-base - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT compile diff --git a/iot-components/iot-emqx-component/pom.xml b/iot-components/iot-emqx-component/pom.xml index f3d6311b..1a06d708 100644 --- a/iot-components/iot-emqx-component/pom.xml +++ b/iot-components/iot-emqx-component/pom.xml @@ -5,7 +5,7 @@ iot-components cc.iotkit - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT 4.0.0 diff --git a/iot-components/iot-emqx-component/src/main/java/cc/iotkit/comp/emqx/EmqxDeviceComponent.java b/iot-components/iot-emqx-component/src/main/java/cc/iotkit/comp/emqx/EmqxDeviceComponent.java index d956404a..fdbb5245 100644 --- a/iot-components/iot-emqx-component/src/main/java/cc/iotkit/comp/emqx/EmqxDeviceComponent.java +++ b/iot-components/iot-emqx-component/src/main/java/cc/iotkit/comp/emqx/EmqxDeviceComponent.java @@ -18,7 +18,7 @@ import cc.iotkit.comp.model.DeviceState; import cc.iotkit.comp.utils.SpringUtils; import cc.iotkit.converter.DeviceMessage; import cc.iotkit.common.thing.ThingService; -import cc.iotkit.dao.DeviceInfoRepository; +import cc.iotkit.data.IDeviceInfoData; import cc.iotkit.model.device.DeviceInfo; import cc.iotkit.model.device.message.ThingModelMessage; import io.netty.handler.codec.mqtt.MqttQoS; @@ -173,9 +173,9 @@ public class EmqxDeviceComponent extends AbstractDeviceComponent { if (parent == null) { return; } - DeviceInfoRepository deviceInfoRepository = SpringUtils.getBean(DeviceInfoRepository.class); + IDeviceInfoData deviceInfoService = SpringUtils.getBean(IDeviceInfoData.class); - DeviceInfo deviceInfo = deviceInfoRepository.findByProductKeyAndDeviceName(state.getProductKey(), state.getDeviceName()); + DeviceInfo deviceInfo = deviceInfoService.findByProductKeyAndDeviceName(state.getProductKey(), state.getDeviceName()); if (deviceInfo != null) { boolean isOnline = DeviceState.STATE_ONLINE.equals(state.getState()); deviceInfo.getState().setOnline(isOnline); @@ -185,7 +185,7 @@ public class EmqxDeviceComponent extends AbstractDeviceComponent { if (isOnline) { deviceInfo.getState().setOnlineTime(System.currentTimeMillis()); } - deviceInfoRepository.save(deviceInfo); + deviceInfoService.save(deviceInfo); } } diff --git a/iot-components/iot-http-biz-component/dependency-reduced-pom.xml b/iot-components/iot-http-biz-component/dependency-reduced-pom.xml index 4a3d2f0a..5087ebc9 100644 --- a/iot-components/iot-http-biz-component/dependency-reduced-pom.xml +++ b/iot-components/iot-http-biz-component/dependency-reduced-pom.xml @@ -3,7 +3,7 @@ iot-components cc.iotkit - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT 4.0.0 iot-http-biz-component @@ -58,7 +58,7 @@ cc.iotkit iot-component-base - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT compile diff --git a/iot-components/iot-http-biz-component/pom.xml b/iot-components/iot-http-biz-component/pom.xml index cf2b6b8a..425dcbca 100644 --- a/iot-components/iot-http-biz-component/pom.xml +++ b/iot-components/iot-http-biz-component/pom.xml @@ -5,7 +5,7 @@ iot-components cc.iotkit - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT 4.0.0 diff --git a/iot-components/iot-mqtt-component/dependency-reduced-pom.xml b/iot-components/iot-mqtt-component/dependency-reduced-pom.xml index b9652403..74e17596 100644 --- a/iot-components/iot-mqtt-component/dependency-reduced-pom.xml +++ b/iot-components/iot-mqtt-component/dependency-reduced-pom.xml @@ -3,7 +3,7 @@ iot-components cc.iotkit - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT 4.0.0 iot-mqtt-component @@ -80,19 +80,19 @@ cc.iotkit iot-common - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT compile cc.iotkit iot-component-base - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT compile cc.iotkit iot-dao - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT compile diff --git a/iot-components/iot-mqtt-component/pom.xml b/iot-components/iot-mqtt-component/pom.xml index e502eea5..0c27a327 100644 --- a/iot-components/iot-mqtt-component/pom.xml +++ b/iot-components/iot-mqtt-component/pom.xml @@ -5,7 +5,7 @@ iot-components cc.iotkit - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT 4.0.0 diff --git a/iot-components/pom.xml b/iot-components/pom.xml index e3a3ed90..7e213af7 100644 --- a/iot-components/pom.xml +++ b/iot-components/pom.xml @@ -5,7 +5,7 @@ iotkit-parent cc.iotkit - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT 4.0.0 diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/AligenieDeviceRepository.java b/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/AligenieDeviceRepository.java deleted file mode 100644 index b6612c6c..00000000 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/AligenieDeviceRepository.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.dao; - -import cc.iotkit.model.aligenie.AligenieDevice; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; - -import java.util.List; - -public interface AligenieDeviceRepository extends ElasticsearchRepository { - - void deleteByUid(String uid); - - List findByUid(String uid); - - AligenieDevice findByUidAndDeviceId(String uid, String deviceId); - - List findByDeviceId(String deviceId); - -} diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/AligenieProductRepository.java b/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/AligenieProductRepository.java deleted file mode 100644 index 85336158..00000000 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/AligenieProductRepository.java +++ /dev/null @@ -1,22 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.dao; - -import cc.iotkit.model.aligenie.AligenieProduct; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; - -import java.util.List; - -public interface AligenieProductRepository extends ElasticsearchRepository { - - List findByUid(String uid); - - AligenieProduct findByProductKey(String productKey); -} diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/AppDesignRepository.java b/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/AppDesignRepository.java deleted file mode 100644 index 8993fe80..00000000 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/AppDesignRepository.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.dao; - -import cc.iotkit.model.product.AppDesign; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; - -import java.util.List; - -public interface AppDesignRepository extends ElasticsearchRepository { - - AppDesign findByProductKey(String productKey); - - List findByUid(String uid); - -} diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/CommonDao.java b/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/CommonDao.java deleted file mode 100644 index 8110188e..00000000 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/CommonDao.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.dao; - -import cc.iotkit.model.Paging; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Sort; -import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; -import org.springframework.data.elasticsearch.core.SearchHit; -import org.springframework.data.elasticsearch.core.SearchHits; -import org.springframework.data.elasticsearch.core.query.Criteria; -import org.springframework.data.elasticsearch.core.query.CriteriaQuery; -import org.springframework.data.elasticsearch.core.query.Query; -import org.springframework.stereotype.Repository; - -import java.util.ArrayList; -import java.util.List; - -@Repository -public class CommonDao { - - @Autowired - private ElasticsearchRestTemplate elasticsearchRestTemplate; - - /** - * 通用按条件分页查找 - */ - public Paging pagedFind(Class cls, Criteria condition, Sort.Order order, int size, int page) { - Query query = new CriteriaQuery(condition); - long total = elasticsearchRestTemplate.count(query, cls); - query = query.setPageable(PageRequest.of(page - 1, size, Sort.by(order))); - SearchHits searchHits = elasticsearchRestTemplate.search(query, cls); - List list = new ArrayList<>(); - for (SearchHit searchHit : searchHits) { - list.add(searchHit.getContent()); - } - return new Paging<>(total, list); - } - - /** - * 通用按条件查询 - */ - public List find(Class cls, Criteria condition) { - Query query = new CriteriaQuery(condition); - SearchHits searchHits = elasticsearchRestTemplate.search(query, cls); - List list = new ArrayList<>(); - for (SearchHit searchHit : searchHits) { - list.add(searchHit.getContent()); - } - return list; - } - -} diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DeviceDao.java b/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DeviceDao.java deleted file mode 100644 index 7f442b0d..00000000 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DeviceDao.java +++ /dev/null @@ -1,270 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.dao; - -import cc.iotkit.dao.config.EmbeddedEs; -import cc.iotkit.model.Paging; -import cc.iotkit.model.device.DeviceInfo; -import cc.iotkit.model.product.Category; -import cc.iotkit.model.product.Product; -import cc.iotkit.model.stats.DataItem; -import cn.hutool.core.bean.BeanUtil; -import org.apache.commons.lang3.StringUtils; -import org.elasticsearch.index.query.BoolQueryBuilder; -import org.elasticsearch.index.query.QueryBuilders; -import org.elasticsearch.search.aggregations.AggregationBuilders; -import org.elasticsearch.search.aggregations.bucket.terms.ParsedStringTerms; -import org.elasticsearch.search.aggregations.bucket.terms.Terms; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Sort; -import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; -import org.springframework.data.elasticsearch.core.ScriptType; -import org.springframework.data.elasticsearch.core.SearchHit; -import org.springframework.data.elasticsearch.core.SearchHits; -import org.springframework.data.elasticsearch.core.clients.elasticsearch7.ElasticsearchAggregations; -import org.springframework.data.elasticsearch.core.mapping.IndexCoordinates; -import org.springframework.data.elasticsearch.core.query.*; -import org.springframework.stereotype.Repository; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.stream.Collectors; - -@Repository -public class DeviceDao { - - @Autowired - private ElasticsearchRestTemplate elasticsearchRestTemplate; - - @Autowired - private DeviceInfoRepository deviceInfoRepository; - @Autowired - private ProductRepository productRepository; - @Autowired - private CategoryRepository categoryRepository; - - public Paging find(Criteria condition, int size, int page) { - Query query = new CriteriaQuery(condition); - long total = elasticsearchRestTemplate.count(query, DeviceInfo.class); - query = query.setPageable(PageRequest.of(page - 1, size, Sort.by(Sort.Order.desc("createAt")))); - SearchHits searchHits = elasticsearchRestTemplate.search(query, DeviceInfo.class); - List list = new ArrayList<>(); - for (SearchHit searchHit : searchHits) { - list.add(searchHit.getContent()); - } - - return new Paging<>(total, list); - } - - /** - * 更新设备属性 - */ - public void updateProperties(String deviceId, Map properties) { - if (properties == null) { - return; - } - //外置es采用脚本更新 - if (EmbeddedEs.disabled) { - Map param = new HashMap<>(); - param.put("property", BeanUtil.beanToMap(properties)); - param.put("keys", properties.keySet()); - - UpdateQuery updateQuery = UpdateQuery.builder(new CriteriaQuery(new Criteria() - .and("deviceId").is(deviceId))) - .withParams(param) - .withScript("for(key in params.keys){ctx._source.property[key]=params.property[key];}") - .withScriptType(ScriptType.INLINE) - .build(); - elasticsearchRestTemplate.updateByQuery(updateQuery, IndexCoordinates.of("device_info")); - } else { - //内置es采用文档更新 - DeviceInfo deviceInfo = deviceInfoRepository.findByDeviceId(deviceId); - Map oldProps = deviceInfo.getProperty(); - oldProps.putAll(properties); - deviceInfoRepository.save(deviceInfo); - } - } - - /** - * 更新设备标签 - */ - public void updateTag(String deviceId, DeviceInfo.Tag tag) { - Map param = new HashMap<>(); - param.put("tag", BeanUtil.beanToMap(tag)); - - UpdateQuery updateQuery = UpdateQuery.builder(new CriteriaQuery(new Criteria() - .and("deviceId").is(deviceId))) - .withParams(param) - .withScript(String.format("ctx._source.tag.%s=params.tag", tag.getId())) - .withScriptType(ScriptType.INLINE) - .build(); - elasticsearchRestTemplate.updateByQuery(updateQuery, IndexCoordinates.of("device_info")); - } - - /** - * 设置设备标签值为空 - */ - public void setTagNull(String deviceId, String tagId) { -// Query query = Query.query(new Criteria().and("deviceId").is(deviceId)); -// Update update = new Update(); -// update.set("tag." + tagId, null); -// mongoTemplate.updateFirst(query, update, DeviceInfo.class); - } - - /** - * 获取按品类统计的用户设备数 - */ - public List getDeviceStatsByCategory(String uid) { - BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery(); - if (StringUtils.isNotBlank(uid)) { - queryBuilder = - queryBuilder.must(QueryBuilders.termQuery("uid.keyword", uid)); - } - - //先按产品分组统计 - NativeSearchQuery query = new NativeSearchQueryBuilder() - .withQuery(queryBuilder) - .withAggregations( - AggregationBuilders.terms("countByPk").field("productKey.keyword") - .size(1000) - .subAggregation(AggregationBuilders.count("count").field("productKey.keyword")) - ) - .build(); - - ElasticsearchAggregations result = (ElasticsearchAggregations) elasticsearchRestTemplate - .search(query, DeviceInfo.class).getAggregations(); - ParsedStringTerms terms = result.aggregations().get("countByPk"); - List buckets = terms.getBuckets(); - Map productCount = new HashMap<>(); - for (Terms.Bucket bucket : buckets) { - productCount.put(bucket.getKeyAsString(), bucket.getDocCount()); - } - - //取用户下产品列表 - Iterable products; - if (StringUtils.isNotBlank(uid)) { - products = productRepository.findByUid(uid); - } else { - products = productRepository.findAll(); - } - Map pkCateMap = new HashMap<>(); - for (Product product : products) { - pkCateMap.put(product.getId(), product.getCategory()); - } - - //取品类列表 - Map cateNames = new HashMap<>(); - for (Category category : categoryRepository.findAll()) { - cateNames.put(category.getId(), category.getName()); - } - - Map cateStats = new HashMap<>(); - productCount.forEach((key, val) -> { - String cateName = cateNames.get(pkCateMap.get(key)); - //按品类汇总 - long total = cateStats.getOrDefault(cateName, 0L); - total += val; - cateStats.put(cateName, total); - }); - - List items = new ArrayList<>(); - cateStats.forEach((key, val) -> { - items.add(new DataItem(key, val)); - }); - - return items; - } - - /** - * 获取按品类统计的设备数 - */ - public List getDeviceStatsByCategory() { - return getDeviceStatsByCategory(null); - } - - /** - * 根据分组id查询分组下所有设备 - */ - public List findByGroupId(String groupId) { - Query query = new CriteriaQuery(new Criteria().and("group." + groupId).exists()); - SearchHits searchHits = elasticsearchRestTemplate.search(query, DeviceInfo.class); - return searchHits.stream().map(SearchHit::getContent).collect(Collectors.toList()); - } - - /** - * 按分组id统计设备数量 - */ - public long countByGroupId(String groupId) { - Query query = new CriteriaQuery(new Criteria().and("group." + groupId).exists()); - return elasticsearchRestTemplate.count(query, DeviceInfo.class); - } - - /** - * 按设备id更新设备分组 - */ - public void updateGroupByDeviceId(String deviceId, DeviceInfo.Group group) { - Map param = new HashMap<>(); - param.put("group", BeanUtil.beanToMap(group)); - - UpdateQuery updateQuery = UpdateQuery.builder(new CriteriaQuery(new Criteria() - .and("deviceId").is(deviceId))) - .withParams(param) - .withScript(String.format("ctx._source.group.%s=params.group", group.getId())) - .withScriptType(ScriptType.INLINE) - .build(); - elasticsearchRestTemplate.updateByQuery(updateQuery, IndexCoordinates.of("device_info")); - } - - /** - * 按组id更新设备分组 - */ - public void updateGroup(String groupId, DeviceInfo.Group group) { - Map param = new HashMap<>(); - param.put("group", BeanUtil.beanToMap(group)); - - UpdateQuery updateQuery = UpdateQuery.builder(new CriteriaQuery(new Criteria() - .and("group." + groupId).exists())) - .withParams(param) - .withScript(String.format("ctx._source.group.%s=params.group", groupId)) - .withScriptType(ScriptType.INLINE) - .build(); - - elasticsearchRestTemplate.update(updateQuery, IndexCoordinates.of("device_info")); - } - - /** - * 移除指定设备信息中的分组 - */ - public void removeGroup(String deviceId, String groupId) { - UpdateQuery updateQuery = UpdateQuery.builder(new CriteriaQuery( - Criteria.where("deviceId").is(deviceId))) - .withScript(String.format("ctx._source.group.remove('%s')", groupId)) - .withScriptType(ScriptType.INLINE) - .build(); - - elasticsearchRestTemplate.updateByQuery(updateQuery, IndexCoordinates.of("device_info")); - } - - /** - * 移除设备信息中的分组 - */ - public void removeGroup(String groupId) { - UpdateQuery updateQuery = UpdateQuery.builder(new CriteriaQuery(new Criteria() - .and("group." + groupId).exists())) - .withScript(String.format("ctx._source.group.remove('%s')", groupId)) - .withScriptType(ScriptType.INLINE) - .build(); - - elasticsearchRestTemplate.update(updateQuery, IndexCoordinates.of("device_info")); - } -} diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DeviceGroupRepository.java b/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DeviceGroupRepository.java deleted file mode 100644 index 164b1225..00000000 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DeviceGroupRepository.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.dao; - -import cc.iotkit.model.device.DeviceGroup; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; - -public interface DeviceGroupRepository extends ElasticsearchRepository { - - Page findByNameLike(String name, Pageable pageable); - -} diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DeviceInfoRepository.java b/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DeviceInfoRepository.java deleted file mode 100644 index b5e00f48..00000000 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DeviceInfoRepository.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.dao; - -import cc.iotkit.model.device.DeviceInfo; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; - -import java.util.List; - -public interface DeviceInfoRepository extends ElasticsearchRepository { - - DeviceInfo findByProductKeyAndDeviceName(String productKey, String deviceName); - - DeviceInfo findByDeviceId(String deviceId); - - List findByParentId(String parentId); - - List findByParentIdAndUid(String parentId, String uid); - - List findByDeviceName(String deviceName); - - long countByUid(String uid); - -} diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DevicePropertyRepository.java b/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DevicePropertyRepository.java deleted file mode 100644 index 235a67ba..00000000 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DevicePropertyRepository.java +++ /dev/null @@ -1,18 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.dao; - -import cc.iotkit.model.device.message.DeviceProperty; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; - -public interface DevicePropertyRepository extends ElasticsearchRepository { - - -} diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DeviceReportDao.java b/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DeviceReportDao.java deleted file mode 100644 index 5e8ff5ff..00000000 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DeviceReportDao.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.dao; - -import cc.iotkit.model.device.message.DeviceReport; -import cc.iotkit.model.stats.TimeData; -import lombok.SneakyThrows; -import org.elasticsearch.index.query.BoolQueryBuilder; -import org.elasticsearch.index.query.QueryBuilders; -import org.elasticsearch.search.aggregations.AggregationBuilders; -import org.elasticsearch.search.aggregations.bucket.histogram.DateHistogramInterval; -import org.elasticsearch.search.aggregations.bucket.histogram.Histogram; -import org.elasticsearch.search.aggregations.bucket.histogram.ParsedDateHistogram; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; -import org.springframework.data.elasticsearch.core.clients.elasticsearch7.ElasticsearchAggregations; -import org.springframework.data.elasticsearch.core.query.NativeSearchQuery; -import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; -import org.springframework.stereotype.Repository; - -import java.time.ZonedDateTime; -import java.util.ArrayList; -import java.util.List; - -@Repository -public class DeviceReportDao { - - @Autowired - private ElasticsearchRestTemplate template; - - /** - * 按用户统计时间段内上报次数 - */ - public List getDeviceMessageStatsWithUid(String uid, long start, long end) { - BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery() - .must(QueryBuilders.rangeQuery("time") - .from(start, true).to(end, true)); - if (uid != null) { - queryBuilder = - queryBuilder.must(QueryBuilders.termQuery("uid", uid)); - } - - NativeSearchQuery query = new NativeSearchQueryBuilder() - .withQuery(queryBuilder) - .withAggregations(AggregationBuilders.dateHistogram("agg") - .field("time") - .calendarInterval(DateHistogramInterval.HOUR) - .calendarInterval(DateHistogramInterval.hours(1)) - ) - .build(); - - ElasticsearchAggregations result = (ElasticsearchAggregations) template - .search(query, DeviceReport.class).getAggregations(); - ParsedDateHistogram histogram = result.aggregations().get("agg"); - - List data = new ArrayList<>(); - for (Histogram.Bucket bucket : histogram.getBuckets()) { - long seconds = ((ZonedDateTime) bucket.getKey()).toInstant().getEpochSecond(); - data.add(new TimeData(seconds * 1000, bucket.getDocCount())); - } - - return data; - } - - /** - * 统计时间段内上报次数 - */ - @SneakyThrows - public List getDeviceMessageStats(long start, long end) { - return getDeviceMessageStatsWithUid(null, start, end); - } -} diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ProtocolComponentRepository.java b/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ProtocolComponentRepository.java deleted file mode 100644 index 51a83d5f..00000000 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ProtocolComponentRepository.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.dao; - -import cc.iotkit.model.protocol.ProtocolComponent; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; - -import java.util.List; - -public interface ProtocolComponentRepository extends ElasticsearchRepository { - - List findByState(String state); - - List findByStateAndType(String state, String type); - -} diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ProtocolConverterRepository.java b/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ProtocolConverterRepository.java deleted file mode 100644 index f98b098c..00000000 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ProtocolConverterRepository.java +++ /dev/null @@ -1,16 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.dao; - -import cc.iotkit.model.protocol.ProtocolConverter; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; - -public interface ProtocolConverterRepository extends ElasticsearchRepository { -} diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/RuleInfoRepository.java b/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/RuleInfoRepository.java deleted file mode 100644 index f3c0208a..00000000 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/RuleInfoRepository.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.dao; - -import cc.iotkit.model.rule.RuleInfo; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; - -import java.util.List; - -public interface RuleInfoRepository extends ElasticsearchRepository { - - List findByUidAndType(String uid, String type); - - Page findByUidAndType(String uid, String type, Pageable pageable); - - Page findByType(String type, Pageable pageable); - -} diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/RuleLogRepository.java b/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/RuleLogRepository.java deleted file mode 100644 index 70987735..00000000 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/RuleLogRepository.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.dao; - -import cc.iotkit.model.rule.RuleLog; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; - -public interface RuleLogRepository extends ElasticsearchRepository { - - void deleteByRuleId(String ruleId); - - Page findByRuleId(String ruleId, Pageable pageable); - -} diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/SpaceDeviceRepository.java b/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/SpaceDeviceRepository.java deleted file mode 100644 index 17be8897..00000000 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/SpaceDeviceRepository.java +++ /dev/null @@ -1,32 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.dao; - -import cc.iotkit.model.space.SpaceDevice; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; - -import java.util.List; - -public interface SpaceDeviceRepository extends ElasticsearchRepository { - - List findByUidOrderByUseAtDesc(String uid); - - List findByUidOrderByAddAtDesc(String uid); - - List findByUid(String uid); - - List findBySpaceIdOrderByAddAtDesc(String spaceId); - - List findByUidAndSpaceIdOrderByAddAtDesc(String uid, String spaceId); - - SpaceDevice findByDeviceId(String deviceId); - - SpaceDevice findByDeviceIdAndUid(String deviceId, String uid); -} diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/SpaceRepository.java b/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/SpaceRepository.java deleted file mode 100644 index 687e00bc..00000000 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/SpaceRepository.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.dao; - -import cc.iotkit.model.space.Space; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; - -import java.util.List; - -public interface SpaceRepository extends ElasticsearchRepository { - - List findByUidOrderByCreateAtDesc(String uid); - - List findByUidAndHomeIdOrderByCreateAtDesc(String uid, String homeId); - - List findByHomeId(String homeId); - -} diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/TaskInfoRepository.java b/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/TaskInfoRepository.java deleted file mode 100644 index 53705f29..00000000 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/TaskInfoRepository.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.dao; - -import cc.iotkit.model.rule.TaskInfo; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; - -import java.util.List; - -public interface TaskInfoRepository extends ElasticsearchRepository { - - List findByUid(String uid); - -} diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/TaskLogRepository.java b/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/TaskLogRepository.java deleted file mode 100644 index 570b21d9..00000000 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/TaskLogRepository.java +++ /dev/null @@ -1,23 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.dao; - -import cc.iotkit.model.rule.TaskLog; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; - -public interface TaskLogRepository extends ElasticsearchRepository { - - void deleteByTaskId(String taskId); - - Page findByTaskId(String taskId, Pageable pageable); - -} diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ThingModelMessageRepository.java b/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ThingModelMessageRepository.java deleted file mode 100644 index 073d0d78..00000000 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ThingModelMessageRepository.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.dao; - -import cc.iotkit.model.device.message.ThingModelMessage; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; - -public interface ThingModelMessageRepository extends ElasticsearchRepository { - - Page findByTypeAndIdentifier(String type, String identifier, Pageable pageable); - -} diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ThingModelRepository.java b/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ThingModelRepository.java deleted file mode 100644 index e1071d4b..00000000 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ThingModelRepository.java +++ /dev/null @@ -1,19 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.dao; - -import cc.iotkit.model.product.ThingModel; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; - -public interface ThingModelRepository extends ElasticsearchRepository { - - ThingModel findByProductKey(String productKey); - -} diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ThirdUserSessionRepository.java b/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ThirdUserSessionRepository.java deleted file mode 100644 index 602f57b0..00000000 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ThirdUserSessionRepository.java +++ /dev/null @@ -1,9 +0,0 @@ -package cc.iotkit.dao; - -import cc.iotkit.model.ThirdUserSession; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; - -public interface ThirdUserSessionRepository extends ElasticsearchRepository { - - -} diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/UserActionLogRepository.java b/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/UserActionLogRepository.java deleted file mode 100644 index 1bf60cf8..00000000 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/UserActionLogRepository.java +++ /dev/null @@ -1,17 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.dao; - -import cc.iotkit.model.UserActionLog; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; - -public interface UserActionLogRepository extends ElasticsearchRepository { - -} diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/UserInfoRepository.java b/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/UserInfoRepository.java deleted file mode 100644 index a8195ea8..00000000 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/UserInfoRepository.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.dao; - -import cc.iotkit.model.UserInfo; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; - -import java.util.List; - -public interface UserInfoRepository extends ElasticsearchRepository { - - UserInfo findByUid(String uid); - - List findByType(int type); - - List findByTypeAndOwnerId(int type, String ownerId); - -} diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/VirtualDeviceLogRepository.java b/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/VirtualDeviceLogRepository.java deleted file mode 100644 index 89853aa0..00000000 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/VirtualDeviceLogRepository.java +++ /dev/null @@ -1,21 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.dao; - -import cc.iotkit.model.device.VirtualDeviceLog; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; - -public interface VirtualDeviceLogRepository extends ElasticsearchRepository { - - Page findByVirtualDeviceId(String virtualDeviceId, Pageable pageable); - -} diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/VirtualDeviceRepository.java b/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/VirtualDeviceRepository.java deleted file mode 100644 index 8a275fc9..00000000 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/VirtualDeviceRepository.java +++ /dev/null @@ -1,27 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.dao; - -import cc.iotkit.model.device.VirtualDevice; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.Pageable; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; - -import java.util.List; - -public interface VirtualDeviceRepository extends ElasticsearchRepository { - - Page findByUid(String uid, Pageable pageable); - - List findByUidAndState(String uid, String state); - - List findByTriggerAndState(String trigger, String state); - -} diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/config/ElasticsearchConfiguration.java b/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/config/ElasticsearchConfiguration.java deleted file mode 100644 index 76967e5c..00000000 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/config/ElasticsearchConfiguration.java +++ /dev/null @@ -1,25 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ - -package cc.iotkit.dao.config; - -import org.springframework.context.annotation.ComponentScan; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.FilterType; -import org.springframework.context.annotation.Lazy; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; -import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories; - -@Lazy -@Configuration -@EnableElasticsearchRepositories(basePackages = "cc.iotkit.dao", includeFilters = -@ComponentScan.Filter(type = FilterType.ASSIGNABLE_TYPE, value = ElasticsearchRepository.class)) -public class ElasticsearchConfiguration { -} diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/OauthClient.java b/iot-data-service/iot-model/src/main/java/cc/iotkit/model/OauthClient.java deleted file mode 100644 index eee2151d..00000000 --- a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/OauthClient.java +++ /dev/null @@ -1,28 +0,0 @@ -package cc.iotkit.model; - -import lombok.Data; -import org.springframework.data.annotation.Id; -import org.springframework.data.elasticsearch.annotations.Document; -import org.springframework.data.elasticsearch.annotations.Field; -import org.springframework.data.elasticsearch.annotations.FieldType; - -/** - * oauth2的client - */ -@Data -@Document(indexName = "oauth_client") -public class OauthClient { - - @Id - private String clientId; - - private String name; - - private String clientSecret; - - private String allowUrl; - - @Field(type = FieldType.Date) - private Long createAt; - -} diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/ThirdUserSession.java b/iot-data-service/iot-model/src/main/java/cc/iotkit/model/ThirdUserSession.java deleted file mode 100644 index 1c6e0ddd..00000000 --- a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/ThirdUserSession.java +++ /dev/null @@ -1,43 +0,0 @@ -package cc.iotkit.model; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import org.springframework.data.annotation.Id; -import org.springframework.data.elasticsearch.annotations.Document; -import org.springframework.data.elasticsearch.annotations.Field; -import org.springframework.data.elasticsearch.annotations.FieldType; - -/** - * 第三方接入用户会话 - */ -@Data -@Document(indexName = "third_user_session") -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class ThirdUserSession { - - /** - * 账号id - */ - @Id - private String uid; - - /** - * 账号类型 - */ - private String type; - - /** - * 登录授权后的token - */ - private String token; - - /** - * 授权时间 - */ - @Field(type = FieldType.Date) - private Long authAt; -} diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/UserActionLog.java b/iot-data-service/iot-model/src/main/java/cc/iotkit/model/UserActionLog.java deleted file mode 100644 index af576a1e..00000000 --- a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/UserActionLog.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.model; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import org.springframework.data.annotation.Id; -import org.springframework.data.elasticsearch.annotations.Document; -import org.springframework.data.elasticsearch.annotations.Field; -import org.springframework.data.elasticsearch.annotations.FieldType; - -/** - * 用户操作日志 - */ -@Document(indexName = "user_action_log") -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class UserActionLog { - - @Id - private String id; - - private String uid; - - /** - * 类型 - * 0:设备控制 - * 1:添加设备 - * 2:分享设备 - * 3:创建空间 - * 4:分享家庭 - */ - private int type; - - /** - * 操作目标 - */ - private String target; - - /** - * 日志内容 - */ - private Object log; - - /** - * 操作结果 - */ - private String result; - - @Field(type = FieldType.Date) - private Long createAt; - - public enum Type { - DEVICE_CONTROL("设备控制", 0), - DEVICE_ADD("添加设备", 1), - DEVICE_SHARED("分享设备", 2), - SPACE_ADD("创建空间", 3), - HOME_SHARED("分享家庭", 4); - - private String name; - private int value; - - private Type(String name, int value) { - this.name = name; - this.value = value; - } - - public String getName() { - return name; - } - - public int getValue() { - return value; - } - } -} diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/aligenie/AligenieProduct.java b/iot-data-service/iot-model/src/main/java/cc/iotkit/model/aligenie/AligenieProduct.java deleted file mode 100644 index 79575e43..00000000 --- a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/aligenie/AligenieProduct.java +++ /dev/null @@ -1,72 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.model.aligenie; - -import cc.iotkit.model.Owned; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import org.springframework.data.annotation.Id; -import org.springframework.data.elasticsearch.annotations.Document; -import org.springframework.data.elasticsearch.annotations.Field; -import org.springframework.data.elasticsearch.annotations.FieldType; - -import java.util.List; - -/** - * 天猫精灵产品 - */ -@Data -@NoArgsConstructor -@AllArgsConstructor -@Builder -@Document(indexName = "aligenie_product") -public class AligenieProduct implements Owned { - - @Id - private String productId; - private String deviceType; - private String brand; - private String model; - private String icon; - private List properties; - private List actions; - - /** - * 对应系统中的产品pk - */ - private String productKey; - /** - * 物模型转换配置 - */ - private String transform; - - /** - * 所属系统账户 - */ - private String uid; - - @Field(type = FieldType.Date) - private Long createAt; - - @Override - public String getId() { - return productId; - } - - @Data - @NoArgsConstructor - @AllArgsConstructor - public static class Property { - private String name; - private String value; - } -} diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/device/message/DeviceReport.java b/iot-data-service/iot-model/src/main/java/cc/iotkit/model/device/message/DeviceReport.java deleted file mode 100644 index d027043d..00000000 --- a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/device/message/DeviceReport.java +++ /dev/null @@ -1,59 +0,0 @@ -package cc.iotkit.model.device.message; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; -import org.springframework.data.annotation.Id; -import org.springframework.data.elasticsearch.annotations.Document; -import org.springframework.data.elasticsearch.annotations.Field; -import org.springframework.data.elasticsearch.annotations.FieldType; - -/** - * 设备上报消息-用于统计 - */ -@Data -@NoArgsConstructor -@AllArgsConstructor -@Builder -@Document(indexName = "device_report") -public class DeviceReport { - - @Id - private String id; - - private String deviceId; - - private String productKey; - - private String deviceName; - - /** - * 设备所属用户 - */ - private String uid; - - /** - * 消息类型 - * lifetime:生命周期 - * state:状态 - * property:属性 - * event:事件 - * service:服务 - */ - private String type; - - private String identifier; - - /** - * 消息状态码 - */ - private int code; - - /** - * 消息上报时间 - */ - @Field(type = FieldType.Date) - private Long time; - -} diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/product/Category.java b/iot-data-service/iot-model/src/main/java/cc/iotkit/model/product/Category.java deleted file mode 100644 index c0bed285..00000000 --- a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/product/Category.java +++ /dev/null @@ -1,28 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.model.product; - -import lombok.Data; -import org.springframework.data.annotation.Id; -import org.springframework.data.elasticsearch.annotations.Document; -import org.springframework.data.elasticsearch.annotations.Field; -import org.springframework.data.elasticsearch.annotations.FieldType; - -@Data -@Document(indexName = "category") -public class Category { - @Id - private String id; - - private String name; - - @Field(type = FieldType.Date) - private Long createAt; -} diff --git a/iot-data-service/readme.txt b/iot-data-service/readme.txt deleted file mode 100644 index 236af5ad..00000000 --- a/iot-data-service/readme.txt +++ /dev/null @@ -1 +0,0 @@ -与数据存取相关内容的模块 diff --git a/iot-data-service/.DS_Store b/iot-data/.DS_Store similarity index 100% rename from iot-data-service/.DS_Store rename to iot-data/.DS_Store diff --git a/iot-data-service/iot-dao/.DS_Store b/iot-data/iot-dao/.DS_Store similarity index 100% rename from iot-data-service/iot-dao/.DS_Store rename to iot-data/iot-dao/.DS_Store diff --git a/iot-data-service/iot-dao/pom.xml b/iot-data/iot-dao/pom.xml similarity index 81% rename from iot-data-service/iot-dao/pom.xml rename to iot-data/iot-dao/pom.xml index cb1ed0ea..65ba9685 100644 --- a/iot-data-service/iot-dao/pom.xml +++ b/iot-data/iot-dao/pom.xml @@ -3,9 +3,9 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - iot-data-service + iot-data cc.iotkit - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT 4.0.0 @@ -33,6 +33,11 @@ iot-model + + cc.iotkit + iot-data-service + + \ No newline at end of file diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/CategoryCache.java b/iot-data/iot-dao/src/main/java/cc/iotkit/dao/CategoryCache.java similarity index 90% rename from iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/CategoryCache.java rename to iot-data/iot-dao/src/main/java/cc/iotkit/dao/CategoryCache.java index 7be74f38..58dfffa8 100644 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/CategoryCache.java +++ b/iot-data/iot-dao/src/main/java/cc/iotkit/dao/CategoryCache.java @@ -10,6 +10,7 @@ package cc.iotkit.dao; import cc.iotkit.common.Constants; +import cc.iotkit.data.ICategoryData; import cc.iotkit.model.product.Category; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.Cacheable; @@ -22,7 +23,7 @@ import javax.annotation.PostConstruct; public class CategoryCache { @Autowired - private CategoryRepository categoryRepository; + private ICategoryData categoryData; private static CategoryCache INSTANCE; @@ -37,6 +38,6 @@ public class CategoryCache { @Cacheable(value = Constants.CATEGORY_CACHE, key = "#id") public Category getById(String id) { - return categoryRepository.findById(id).orElse(null); + return categoryData.findById(id); } } diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DeviceCache.java b/iot-data/iot-dao/src/main/java/cc/iotkit/dao/DeviceCache.java similarity index 85% rename from iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DeviceCache.java rename to iot-data/iot-dao/src/main/java/cc/iotkit/dao/DeviceCache.java index 517843a1..3bd79464 100644 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DeviceCache.java +++ b/iot-data/iot-dao/src/main/java/cc/iotkit/dao/DeviceCache.java @@ -10,6 +10,7 @@ package cc.iotkit.dao; import cc.iotkit.common.Constants; +import cc.iotkit.data.IDeviceInfoData; import cc.iotkit.model.device.DeviceInfo; import cc.iotkit.model.stats.DataItem; import org.springframework.beans.factory.annotation.Autowired; @@ -23,7 +24,7 @@ import java.util.List; public class DeviceCache { @Autowired - private DeviceInfoRepository deviceInfoRepository; + private IDeviceInfoData deviceInfoData; @Autowired private DeviceDao deviceDao; @@ -40,17 +41,17 @@ public class DeviceCache { @Cacheable(value = Constants.DEVICE_CACHE, key = "#pk+'_'+#dn") public DeviceInfo getDeviceInfo(String pk, String dn) { - return deviceInfoRepository.findByProductKeyAndDeviceName(pk, dn); + return deviceInfoData.findByProductKeyAndDeviceName(pk, dn); } @Cacheable(value = Constants.DEVICE_CACHE, key = "#deviceId") public DeviceInfo get(String deviceId) { - return deviceInfoRepository.findById(deviceId).orElse(null); + return deviceInfoData.findByDeviceId(deviceId); } @Cacheable(value = Constants.DEVICE_STATS_CACHE, key = "#uid") public List getDeviceStatsByCategory(String uid) { - return deviceDao.getDeviceStatsByCategory(uid); + return deviceInfoData.getDeviceStatsByCategory(uid); } } diff --git a/iot-data/iot-dao/src/main/java/cc/iotkit/dao/DeviceDao.java b/iot-data/iot-dao/src/main/java/cc/iotkit/dao/DeviceDao.java new file mode 100644 index 00000000..ca28c850 --- /dev/null +++ b/iot-data/iot-dao/src/main/java/cc/iotkit/dao/DeviceDao.java @@ -0,0 +1,122 @@ +/* + * +---------------------------------------------------------------------- + * | Copyright (c) 奇特物联 2021-2022 All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed 未经许可不能去掉「奇特物联」相关版权 + * +---------------------------------------------------------------------- + * | Author: xw2sy@163.com + * +---------------------------------------------------------------------- + */ +package cc.iotkit.dao; + +import cc.iotkit.data.ICategoryData; +import cc.iotkit.data.IDeviceInfoData; +import cc.iotkit.data.IProductData; +import cc.iotkit.model.device.DeviceInfo; +import cc.iotkit.model.product.Category; +import cc.iotkit.model.product.Product; +import cc.iotkit.model.stats.DataItem; +import org.apache.commons.lang3.StringUtils; +import org.elasticsearch.index.query.BoolQueryBuilder; +import org.elasticsearch.index.query.QueryBuilders; +import org.elasticsearch.search.aggregations.AggregationBuilders; +import org.elasticsearch.search.aggregations.bucket.terms.ParsedStringTerms; +import org.elasticsearch.search.aggregations.bucket.terms.Terms; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; +import org.springframework.data.elasticsearch.core.clients.elasticsearch7.ElasticsearchAggregations; +import org.springframework.data.elasticsearch.core.query.NativeSearchQuery; +import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; +import org.springframework.stereotype.Repository; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +@Repository +public class DeviceDao { + + @Autowired + private ElasticsearchRestTemplate elasticsearchRestTemplate; + + @Autowired + private IDeviceInfoData deviceInfoData; + @Autowired + private IProductData productData; + @Autowired + private ICategoryData categoryData; + + /** + * 获取按品类统计的用户设备数 + */ + public List getDeviceStatsByCategory(String uid) { + BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery(); + if (StringUtils.isNotBlank(uid)) { + queryBuilder = + queryBuilder.must(QueryBuilders.termQuery("uid.keyword", uid)); + } + + //先按产品分组统计 + NativeSearchQuery query = new NativeSearchQueryBuilder() + .withQuery(queryBuilder) + .withAggregations( + AggregationBuilders.terms("countByPk").field("productKey.keyword") + .size(1000) + .subAggregation(AggregationBuilders.count("count").field("productKey.keyword")) + ) + .build(); + + ElasticsearchAggregations result = (ElasticsearchAggregations) elasticsearchRestTemplate + .search(query, DeviceInfo.class).getAggregations(); + ParsedStringTerms terms = result.aggregations().get("countByPk"); + List buckets = terms.getBuckets(); + Map productCount = new HashMap<>(); + for (Terms.Bucket bucket : buckets) { + productCount.put(bucket.getKeyAsString(), bucket.getDocCount()); + } + + //取用户下产品列表 + Iterable products; + if (StringUtils.isNotBlank(uid)) { + products = productData.findByUid(uid); + } else { + products = productData.findAll(); + } + Map pkCateMap = new HashMap<>(); + for (Product product : products) { + pkCateMap.put(product.getId(), product.getCategory()); + } + + //取品类列表 + Map cateNames = new HashMap<>(); + for (Category category : categoryData.findAll()) { + cateNames.put(category.getId(), category.getName()); + } + + Map cateStats = new HashMap<>(); + productCount.forEach((key, val) -> { + String cateName = cateNames.get(pkCateMap.get(key)); + //按品类汇总 + long total = cateStats.getOrDefault(cateName, 0L); + total += val; + cateStats.put(cateName, total); + }); + + List items = new ArrayList<>(); + cateStats.forEach((key, val) -> { + items.add(new DataItem(key, val)); + }); + + return items; + } + + /** + * 获取按品类统计的设备数 + */ + public List getDeviceStatsByCategory() { + return getDeviceStatsByCategory(null); + } + + +} diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/OauthClientCache.java b/iot-data/iot-dao/src/main/java/cc/iotkit/dao/OauthClientCache.java similarity index 89% rename from iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/OauthClientCache.java rename to iot-data/iot-dao/src/main/java/cc/iotkit/dao/OauthClientCache.java index 7ad431dd..769e63f9 100644 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/OauthClientCache.java +++ b/iot-data/iot-dao/src/main/java/cc/iotkit/dao/OauthClientCache.java @@ -10,6 +10,7 @@ package cc.iotkit.dao; import cc.iotkit.common.Constants; +import cc.iotkit.data.IOauthClientData; import cc.iotkit.model.OauthClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.Cacheable; @@ -21,7 +22,7 @@ import javax.annotation.PostConstruct; public class OauthClientCache { @Autowired - private OauthClientRepository oauthClientRepository; + private IOauthClientData oauthClientData; private static OauthClientCache INSTANCE; @@ -36,7 +37,7 @@ public class OauthClientCache { @Cacheable(value = Constants.OAUTH_CLIENT_CACHE, key = "#clientId") public OauthClient getClient(String clientId) { - return oauthClientRepository.findById(clientId).orElse(null); + return oauthClientData.findByClientId(clientId); } } diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ProductCache.java b/iot-data/iot-dao/src/main/java/cc/iotkit/dao/ProductCache.java similarity index 79% rename from iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ProductCache.java rename to iot-data/iot-dao/src/main/java/cc/iotkit/dao/ProductCache.java index bbd633fd..6e52753f 100644 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ProductCache.java +++ b/iot-data/iot-dao/src/main/java/cc/iotkit/dao/ProductCache.java @@ -10,6 +10,9 @@ package cc.iotkit.dao; import cc.iotkit.common.Constants; +import cc.iotkit.data.IProductModelData; +import cc.iotkit.data.IProductData; +import cc.iotkit.data.IThingModelData; import cc.iotkit.model.product.Product; import cc.iotkit.model.product.ProductModel; import cc.iotkit.model.product.ThingModel; @@ -23,11 +26,11 @@ import javax.annotation.PostConstruct; public class ProductCache { @Autowired - private ProductRepository productRepository; + private IProductData productData; @Autowired - private ThingModelRepository thingModelRepository; + private IThingModelData thingModelData; @Autowired - private ProductModelRepository productModelRepository; + private IProductModelData productModelData; private static ProductCache INSTANCE; @@ -42,17 +45,17 @@ public class ProductCache { @Cacheable(value = Constants.PRODUCT_CACHE, key = "'product'+#pk") public Product findById(String pk) { - return productRepository.findById(pk).orElse(new Product()); + return productData.findById(pk); } @Cacheable(value = Constants.THING_MODEL_CACHE, key = "'thing_model'+#pk") public ThingModel getThingModel(String pk) { - return thingModelRepository.findByProductKey(pk); + return thingModelData.findByProductKey(pk); } @Cacheable(value = Constants.PRODUCT_SCRIPT_CACHE, key = "'product_script'+#model") public ProductModel getProductScriptByModel(String model) { - return productModelRepository.findByModel(model); + return productModelData.findByModel(model); } diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/SpaceCache.java b/iot-data/iot-dao/src/main/java/cc/iotkit/dao/SpaceCache.java similarity index 85% rename from iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/SpaceCache.java rename to iot-data/iot-dao/src/main/java/cc/iotkit/dao/SpaceCache.java index 3d7e192d..e0afb043 100644 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/SpaceCache.java +++ b/iot-data/iot-dao/src/main/java/cc/iotkit/dao/SpaceCache.java @@ -1,6 +1,7 @@ package cc.iotkit.dao; import cc.iotkit.common.Constants; +import cc.iotkit.data.ISpaceData; import cc.iotkit.model.space.Space; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.Cacheable; @@ -12,7 +13,7 @@ import javax.annotation.PostConstruct; public class SpaceCache { @Autowired - private SpaceRepository spaceRepository; + private ISpaceData spaceData; private static SpaceCache INSTANCE; @@ -27,7 +28,7 @@ public class SpaceCache { @Cacheable(value = Constants.SPACE_CACHE, key = "#spaceId") public Space getSpace(String spaceId) { - return spaceRepository.findById(spaceId).orElse(null); + return spaceData.findById(spaceId); } } diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/UserInfoCache.java b/iot-data/iot-dao/src/main/java/cc/iotkit/dao/UserInfoCache.java similarity index 90% rename from iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/UserInfoCache.java rename to iot-data/iot-dao/src/main/java/cc/iotkit/dao/UserInfoCache.java index fb1a11af..5b4b0b96 100644 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/UserInfoCache.java +++ b/iot-data/iot-dao/src/main/java/cc/iotkit/dao/UserInfoCache.java @@ -10,6 +10,7 @@ package cc.iotkit.dao; import cc.iotkit.common.Constants; +import cc.iotkit.data.IUserInfoData; import cc.iotkit.model.UserInfo; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.cache.annotation.Cacheable; @@ -21,7 +22,7 @@ import javax.annotation.PostConstruct; public class UserInfoCache { @Autowired - private UserInfoRepository userInfoRepository; + private IUserInfoData userInfoData; private static UserInfoCache INSTANCE; @@ -36,7 +37,7 @@ public class UserInfoCache { @Cacheable(value = Constants.USER_CACHE, key = "#uid") public UserInfo getUserInfo(String uid) { - return userInfoRepository.findById(uid).orElse(null); + return userInfoData.findById(uid); } } diff --git a/iot-data/iot-data-cache/pom.xml b/iot-data/iot-data-cache/pom.xml new file mode 100644 index 00000000..5fcf688b --- /dev/null +++ b/iot-data/iot-data-cache/pom.xml @@ -0,0 +1,34 @@ + + + + iotkit-parent + cc.iotkit + 0.3.3-SNAPSHOT + ../../pom.xml + + 4.0.0 + + iot-data-cache + + + + + org.springframework + spring-context + + + + org.springframework.data + spring-data-redis + + + + cc.iotkit + iot-common + + + + + \ No newline at end of file diff --git a/iot-data/iot-data-cache/src/main/java/cc/iotkit/data/cache/DeviceCacheService.java b/iot-data/iot-data-cache/src/main/java/cc/iotkit/data/cache/DeviceCacheService.java new file mode 100644 index 00000000..a6fbcab3 --- /dev/null +++ b/iot-data/iot-data-cache/src/main/java/cc/iotkit/data/cache/DeviceCacheService.java @@ -0,0 +1,41 @@ +package cc.iotkit.data.cache; + +import cc.iotkit.common.utils.JsonUtil; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.redis.core.StringRedisTemplate; +import org.springframework.stereotype.Service; + +import java.util.Map; + +@Service +public class DeviceCacheService { + + private static final String PROPERTY_CACHE_KEY = "str:device:property:%s"; + + @Autowired + private StringRedisTemplate redisTemplate; + + private String getPropertyCacheKey(String deviceId) { + return String.format(PROPERTY_CACHE_KEY, deviceId); + } + + /** + * 保存设备属性到redis + * + * @param deviceId 设备id + * @param properties 设备属性map + */ + public void saveProperties(String deviceId, Map properties) { + redisTemplate.opsForValue().set(getPropertyCacheKey(deviceId), JsonUtil.toJsonString(properties)); + } + + /** + * 获取设备属性map + * + * @param deviceId 设备id + */ + public Map getProperties(String deviceId) { + return JsonUtil.parse(redisTemplate.opsForValue().get(getPropertyCacheKey(deviceId)), Map.class); + } + +} diff --git a/iot-data-service/pom.xml b/iot-data/iot-data-service/pom.xml similarity index 60% rename from iot-data-service/pom.xml rename to iot-data/iot-data-service/pom.xml index 84921355..7b9342ab 100644 --- a/iot-data-service/pom.xml +++ b/iot-data/iot-data-service/pom.xml @@ -3,20 +3,20 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - iotkit-parent + iot-data cc.iotkit - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT 4.0.0 - pom - - - iot-model - iot-dao - iot-device-dao - iot-data-service + + + cc.iotkit + iot-model + + + \ No newline at end of file diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/config/EmbeddedEs.java b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/ICategoryData.java similarity index 76% rename from iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/config/EmbeddedEs.java rename to iot-data/iot-data-service/src/main/java/cc/iotkit/data/ICategoryData.java index dad0002a..3a8aa250 100644 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/config/EmbeddedEs.java +++ b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/ICategoryData.java @@ -7,10 +7,9 @@ * | Author: xw2sy@163.com * +---------------------------------------------------------------------- */ -package cc.iotkit.dao.config; +package cc.iotkit.data; -public interface EmbeddedEs { - - boolean disabled = "true".equals(System.getProperty("disabledEmbeddedEs")); +import cc.iotkit.model.product.Category; +public interface ICategoryData extends ICommonData { } diff --git a/iot-data-service/iot-device-dao/src/main/java/cc/iotkit/data/ProductDao.java b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/ICommonData.java similarity index 51% rename from iot-data-service/iot-device-dao/src/main/java/cc/iotkit/data/ProductDao.java rename to iot-data/iot-data-service/src/main/java/cc/iotkit/data/ICommonData.java index 18cd25a1..bf3ee466 100644 --- a/iot-data-service/iot-device-dao/src/main/java/cc/iotkit/data/ProductDao.java +++ b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/ICommonData.java @@ -9,43 +9,51 @@ */ package cc.iotkit.data; -import cc.iotkit.model.product.Product; +import cc.iotkit.model.Id; +import cc.iotkit.model.Paging; import java.util.List; /** - * 产品接口 + * 数据基础服务接口 */ -public interface ProductDao { +public interface ICommonData, ID> { /** - * 通过产品id取产品信息 + * 通过ID取数据 */ - Product findById(String id); + T findById(ID id); /** - * 添加产品 + * 保存数据,id不为空更新,否则添加 */ - void add(Product product); + T save(T data); /** - * 按id更新产品 + * 添加数据 */ - void updateById(Product product); + T add(T data); /** - * 按用户id统计产品数量 + * 按id删除 */ - long countByUid(String uid); + void deleteById(ID id); /** - * 按用户id取产品列表 + * 总数统计 */ - List findByUid(String uid); + long count(); /** - * 按品类取产品列表 + * 取所有数据 */ - List findByCategory(String category); + List findAll(); + /** + * 分页获取所有信息 + * + * @param page 页码,从0开始 + * @param size 分页大小 + */ + Paging findAll(int page, int size); } diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DeviceConfigRepository.java b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IDeviceConfigData.java similarity index 76% rename from iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DeviceConfigRepository.java rename to iot-data/iot-data-service/src/main/java/cc/iotkit/data/IDeviceConfigData.java index 7a110723..0c971ede 100644 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DeviceConfigRepository.java +++ b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IDeviceConfigData.java @@ -7,12 +7,11 @@ * | Author: xw2sy@163.com * +---------------------------------------------------------------------- */ -package cc.iotkit.dao; +package cc.iotkit.data; import cc.iotkit.model.device.DeviceConfig; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; -public interface DeviceConfigRepository extends ElasticsearchRepository { +public interface IDeviceConfigData extends ICommonData { DeviceConfig findByProductKeyAndDeviceName(String productKey, String deviceName); diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/OauthClientRepository.java b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IDeviceGroupData.java similarity index 65% rename from iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/OauthClientRepository.java rename to iot-data/iot-data-service/src/main/java/cc/iotkit/data/IDeviceGroupData.java index 71dd5224..93c7664f 100644 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/OauthClientRepository.java +++ b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IDeviceGroupData.java @@ -7,12 +7,13 @@ * | Author: xw2sy@163.com * +---------------------------------------------------------------------- */ -package cc.iotkit.dao; +package cc.iotkit.data; -import cc.iotkit.model.OauthClient; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; +import cc.iotkit.model.Paging; +import cc.iotkit.model.device.DeviceGroup; -public interface OauthClientRepository extends ElasticsearchRepository { +public interface IDeviceGroupData extends ICommonData { + Paging findByNameLike(String name, int page, int size); } diff --git a/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IDeviceInfoData.java b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IDeviceInfoData.java new file mode 100644 index 00000000..d1864803 --- /dev/null +++ b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IDeviceInfoData.java @@ -0,0 +1,108 @@ +/* + * +---------------------------------------------------------------------- + * | Copyright (c) 奇特物联 2021-2022 All rights reserved. + * +---------------------------------------------------------------------- + * | Licensed 未经许可不能去掉「奇特物联」相关版权 + * +---------------------------------------------------------------------- + * | Author: xw2sy@163.com + * +---------------------------------------------------------------------- + */ +package cc.iotkit.data; + +import cc.iotkit.model.Paging; +import cc.iotkit.model.device.DeviceInfo; +import cc.iotkit.model.stats.DataItem; + +import java.util.List; + +public interface IDeviceInfoData extends IOwnedData { + + /** + * 根据设备ID取设备信息 + * + * @param deviceId 设备ID + */ + DeviceInfo findByDeviceId(String deviceId); + + /** + * 按productKey和deviceName取设备信息 + */ + DeviceInfo findByProductKeyAndDeviceName(String productKey, String deviceName); + + /** + * 根据父设备ID取子设备列表 + * + * @param parentId 父设备ID + */ + List findByParentId(String parentId); + + /** + * 根据deviceName查找设备 + */ + List findByDeviceName(String deviceName); + + /** + * 按条件搜索设备 + * + * @param uid 所属账号id + * @param subUid 子账号id + * @param productKey 产品key + * @param groupId 设备分组 + * @param state 是否在线:online在线,offline离线 + * @param keyword 关键字 + * @param page 页码 + * @param size 分页大小 + */ + Paging findByConditions(String uid, String subUid, String productKey, + String groupId, String state, String keyword, + int page, int size); + + /** + * 更新设备标签 + * + * @param deviceId 设备ID + * @param tag 标签 + */ + void updateTag(String deviceId, DeviceInfo.Tag tag); + + /** + * 获取按品类统计的用户设备数 + */ + List getDeviceStatsByCategory(String uid); + + /** + * 按分组id统计设备数量 + */ + long countByGroupId(String groupId); + + /** + * 将设备添加到分组 + * + * @param deviceId 设备ID + * @param group 设备分组 + */ + void addToGroup(String deviceId, DeviceInfo.Group group); + + /** + * 按组id更新设备分组 + * + * @param groupId 分组ID + * @param group 设备分组信息 + */ + void updateGroup(String groupId, DeviceInfo.Group group); + + /** + * 移除指定设备信息中的分组 + * + * @param deviceId 设备ID + * @param groupId 分组ID + */ + void removeGroup(String deviceId, String groupId); + + /** + * 移除设备信息中的分组 + * + * @param groupId 分组ID + */ + void removeGroup(String groupId); +} diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/HomeRepository.java b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IHomeData.java similarity index 71% rename from iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/HomeRepository.java rename to iot-data/iot-data-service/src/main/java/cc/iotkit/data/IHomeData.java index 2f9376bc..ed405358 100644 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/HomeRepository.java +++ b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IHomeData.java @@ -7,16 +7,12 @@ * | Author: xw2sy@163.com * +---------------------------------------------------------------------- */ -package cc.iotkit.dao; +package cc.iotkit.data; import cc.iotkit.model.space.Home; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; -import java.util.List; -public interface HomeRepository extends ElasticsearchRepository { - - List findByUid(String uid); +public interface IHomeData extends IOwnedData { Home findByUidAndCurrent(String uid, boolean current); diff --git a/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IOauthClientData.java b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IOauthClientData.java new file mode 100644 index 00000000..973ea64f --- /dev/null +++ b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IOauthClientData.java @@ -0,0 +1,9 @@ +package cc.iotkit.data; + +import cc.iotkit.model.OauthClient; + +public interface IOauthClientData extends ICommonData { + + OauthClient findByClientId(String clientId); + +} diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DeviceReportRepository.java b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IOwnedData.java similarity index 54% rename from iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DeviceReportRepository.java rename to iot-data/iot-data-service/src/main/java/cc/iotkit/data/IOwnedData.java index 8021bbfd..ef7f26a8 100644 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DeviceReportRepository.java +++ b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IOwnedData.java @@ -7,13 +7,28 @@ * | Author: xw2sy@163.com * +---------------------------------------------------------------------- */ -package cc.iotkit.dao; +package cc.iotkit.data; -import cc.iotkit.model.device.message.DeviceReport; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; +import cc.iotkit.model.Owned; +import cc.iotkit.model.Paging; -public interface DeviceReportRepository extends ElasticsearchRepository { +import java.util.List; +/** + * 数据基础服务接口 + */ +public interface IOwnedData, ID> extends ICommonData { + + /** + * 按所属用户取数据 + */ + List findByUid(String uid); + + Paging findByUid(String uid, int page, int size); + + /** + * 按所属用户统计总数 + */ long countByUid(String uid); } diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ProductRepository.java b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IProductData.java similarity index 68% rename from iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ProductRepository.java rename to iot-data/iot-data-service/src/main/java/cc/iotkit/data/IProductData.java index a9dab9d9..f3f7589a 100644 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ProductRepository.java +++ b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IProductData.java @@ -7,19 +7,20 @@ * | Author: xw2sy@163.com * +---------------------------------------------------------------------- */ -package cc.iotkit.dao; +package cc.iotkit.data; import cc.iotkit.model.product.Product; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import java.util.List; -public interface ProductRepository extends ElasticsearchRepository { - - long countByUid(String uid); - - List findByUid(String uid); +/** + * 产品接口 + */ +public interface IProductData extends IOwnedData { + /** + * 按品类取产品列表 + */ List findByCategory(String category); } diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ProductModelRepository.java b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IProductModelData.java similarity index 76% rename from iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ProductModelRepository.java rename to iot-data/iot-data-service/src/main/java/cc/iotkit/data/IProductModelData.java index 9498d277..8656ca63 100644 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ProductModelRepository.java +++ b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IProductModelData.java @@ -7,14 +7,13 @@ * | Author: xw2sy@163.com * +---------------------------------------------------------------------- */ -package cc.iotkit.dao; +package cc.iotkit.data; import cc.iotkit.model.product.ProductModel; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import java.util.List; -public interface ProductModelRepository extends ElasticsearchRepository { +public interface IProductModelData extends ICommonData { ProductModel findByModel(String model); diff --git a/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IProtocolComponentData.java b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IProtocolComponentData.java new file mode 100644 index 00000000..0f459f5f --- /dev/null +++ b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IProtocolComponentData.java @@ -0,0 +1,13 @@ +package cc.iotkit.data; + +import cc.iotkit.model.protocol.ProtocolComponent; + +import java.util.List; + +public interface IProtocolComponentData extends IOwnedData { + + List findByState(String state); + + List findByStateAndType(String state, String type); + +} diff --git a/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IProtocolConverterData.java b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IProtocolConverterData.java new file mode 100644 index 00000000..edc50788 --- /dev/null +++ b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IProtocolConverterData.java @@ -0,0 +1,6 @@ +package cc.iotkit.data; + +import cc.iotkit.model.protocol.ProtocolConverter; + +public interface IProtocolConverterData extends IOwnedData { +} diff --git a/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IRuleInfoData.java b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IRuleInfoData.java new file mode 100644 index 00000000..6bc2fadb --- /dev/null +++ b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IRuleInfoData.java @@ -0,0 +1,18 @@ +package cc.iotkit.data; + +import cc.iotkit.model.Paging; +import cc.iotkit.model.rule.RuleInfo; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; + +import java.util.List; + +public interface IRuleInfoData extends IOwnedData { + + List findByUidAndType(String uid, String type); + + Paging findByUidAndType(String uid, String type, int page, int size); + + Paging findByType(String type, int page, int size); + +} diff --git a/iot-data/iot-data-service/src/main/java/cc/iotkit/data/ISpaceData.java b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/ISpaceData.java new file mode 100644 index 00000000..92057044 --- /dev/null +++ b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/ISpaceData.java @@ -0,0 +1,15 @@ +package cc.iotkit.data; + +import cc.iotkit.model.space.Space; + +import java.util.List; + +public interface ISpaceData extends IOwnedData { + + List findByUidOrderByCreateAtDesc(String uid); + + List findByUidAndHomeIdOrderByCreateAtDesc(String uid, String homeId); + + List findByHomeId(String homeId); + +} diff --git a/iot-data/iot-data-service/src/main/java/cc/iotkit/data/ISpaceDeviceData.java b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/ISpaceDeviceData.java new file mode 100644 index 00000000..d791182e --- /dev/null +++ b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/ISpaceDeviceData.java @@ -0,0 +1,20 @@ +package cc.iotkit.data; + +import cc.iotkit.model.space.SpaceDevice; + +import java.util.List; + +public interface ISpaceDeviceData extends IOwnedData { + + List findByUidOrderByUseAtDesc(String uid); + + List findByUidOrderByAddAtDesc(String uid); + + List findBySpaceIdOrderByAddAtDesc(String spaceId); + + List findByUidAndSpaceIdOrderByAddAtDesc(String uid, String spaceId); + + SpaceDevice findByDeviceId(String deviceId); + + SpaceDevice findByDeviceIdAndUid(String deviceId, String uid); +} diff --git a/iot-data/iot-data-service/src/main/java/cc/iotkit/data/ITaskInfoData.java b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/ITaskInfoData.java new file mode 100644 index 00000000..6686fad3 --- /dev/null +++ b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/ITaskInfoData.java @@ -0,0 +1,6 @@ +package cc.iotkit.data; + +import cc.iotkit.model.rule.TaskInfo; + +public interface ITaskInfoData extends IOwnedData { +} diff --git a/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IThingModelData.java b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IThingModelData.java new file mode 100644 index 00000000..26e3891c --- /dev/null +++ b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IThingModelData.java @@ -0,0 +1,9 @@ +package cc.iotkit.data; + +import cc.iotkit.model.product.ThingModel; + +public interface IThingModelData extends ICommonData { + + ThingModel findByProductKey(String productKey); + +} diff --git a/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IUserInfoData.java b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IUserInfoData.java new file mode 100644 index 00000000..641e34df --- /dev/null +++ b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IUserInfoData.java @@ -0,0 +1,14 @@ +package cc.iotkit.data; + +import cc.iotkit.model.UserInfo; + +import java.util.List; + +public interface IUserInfoData extends ICommonData { + + UserInfo findByUid(String uid); + + List findByType(int type); + + List findByTypeAndOwnerId(int type, String ownerId); +} diff --git a/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IVirtualDeviceData.java b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IVirtualDeviceData.java new file mode 100644 index 00000000..42b89f2a --- /dev/null +++ b/iot-data/iot-data-service/src/main/java/cc/iotkit/data/IVirtualDeviceData.java @@ -0,0 +1,16 @@ +package cc.iotkit.data; + +import cc.iotkit.model.Paging; +import cc.iotkit.model.device.VirtualDevice; + +import java.util.List; + +public interface IVirtualDeviceData extends IOwnedData { + + Paging findByUid(String uid, int size, int page); + + List findByUidAndState(String uid, String state); + + List findByTriggerAndState(String trigger, String state); + +} diff --git a/iot-data/iot-es-temporal-service/pom.xml b/iot-data/iot-es-temporal-service/pom.xml new file mode 100644 index 00000000..b639f6ad --- /dev/null +++ b/iot-data/iot-es-temporal-service/pom.xml @@ -0,0 +1,39 @@ + + + + iot-data + cc.iotkit + 0.3.3-SNAPSHOT + + 4.0.0 + + iot-es-temporal-service + + + + + org.projectlombok + lombok + provided + + + + org.springframework.data + spring-data-elasticsearch + + + + com.fasterxml.jackson.core + jackson-annotations + + + + cc.iotkit + iot-temporal-service + + + + + \ No newline at end of file diff --git a/iot-data/iot-es-temporal-service/src/main/java/cc/iotkit/temporal/es/document/DevicePropertyDoc.java b/iot-data/iot-es-temporal-service/src/main/java/cc/iotkit/temporal/es/document/DevicePropertyDoc.java new file mode 100644 index 00000000..40fe567a --- /dev/null +++ b/iot-data/iot-es-temporal-service/src/main/java/cc/iotkit/temporal/es/document/DevicePropertyDoc.java @@ -0,0 +1,43 @@ +package cc.iotkit.temporal.es.document; + +import cc.iotkit.model.device.message.DeviceProperty; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.springframework.data.annotation.Id; +import org.springframework.data.elasticsearch.annotations.Document; +import org.springframework.data.elasticsearch.annotations.Field; +import org.springframework.data.elasticsearch.annotations.FieldType; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Builder +@Document(indexName = "device_property") +public class DevicePropertyDoc { + + @Id + private String id; + + private String deviceId; + + private String name; + + private Object value; + + @Field(type = FieldType.Date) + private Long time; + + public DeviceProperty de() { + return new DeviceProperty(id, deviceId, name, value, time); + } + + public DevicePropertyDoc(DeviceProperty raw) { + this.id = raw.getId(); + this.deviceId = raw.getDeviceId(); + this.name = raw.getName(); + this.value = raw.getValue(); + this.time = raw.getTime(); + } +} diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DevicePropertyDao.java b/iot-data/iot-es-temporal-service/src/main/java/cc/iotkit/temporal/es/service/DevicePropertyDataImpl.java similarity index 64% rename from iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DevicePropertyDao.java rename to iot-data/iot-es-temporal-service/src/main/java/cc/iotkit/temporal/es/service/DevicePropertyDataImpl.java index 86ebc31a..ba661a4b 100644 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/DevicePropertyDao.java +++ b/iot-data/iot-es-temporal-service/src/main/java/cc/iotkit/temporal/es/service/DevicePropertyDataImpl.java @@ -1,31 +1,23 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.dao; +package cc.iotkit.temporal.es.service; import cc.iotkit.model.device.message.DeviceProperty; +import cc.iotkit.temporal.IDevicePropertyData; +import cc.iotkit.temporal.es.document.DevicePropertyDoc; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.sort.FieldSortBuilder; import org.elasticsearch.search.sort.SortOrder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; -import org.springframework.data.elasticsearch.core.SearchHit; import org.springframework.data.elasticsearch.core.SearchHits; import org.springframework.data.elasticsearch.core.query.NativeSearchQuery; import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; -import org.springframework.stereotype.Repository; +import org.springframework.stereotype.Service; import java.util.List; import java.util.stream.Collectors; -@Repository -public class DevicePropertyDao { +@Service +public class DevicePropertyDataImpl implements IDevicePropertyData { @Autowired private ElasticsearchRestTemplate template; @@ -41,9 +33,17 @@ public class DevicePropertyDao { ) .withSorts(new FieldSortBuilder("time").order(SortOrder.ASC)) .build(); - SearchHits result = template.search(query, DeviceProperty.class); + SearchHits result = template.search(query, DevicePropertyDoc.class); return result.getSearchHits().stream() - .map(SearchHit::getContent).collect(Collectors.toList()); + .map(h -> h.getContent().de()) + .collect(Collectors.toList()); } + @Override + public void addProperties(List properties) { + template.save(properties.stream().map(DevicePropertyDoc::new) + .collect(Collectors.toList())); + } + + } diff --git a/iot-data/iot-es-temporal-service/src/main/java/cc/iotkit/temporal/es/service/RuleLogDataImpl.java b/iot-data/iot-es-temporal-service/src/main/java/cc/iotkit/temporal/es/service/RuleLogDataImpl.java new file mode 100644 index 00000000..c7d1a660 --- /dev/null +++ b/iot-data/iot-es-temporal-service/src/main/java/cc/iotkit/temporal/es/service/RuleLogDataImpl.java @@ -0,0 +1,24 @@ +package cc.iotkit.temporal.es.service; + +import cc.iotkit.model.Paging; +import cc.iotkit.model.rule.RuleLog; +import cc.iotkit.temporal.IRuleLogData; +import org.springframework.stereotype.Service; + +@Service +public class RuleLogDataImpl implements IRuleLogData { + @Override + public void deleteByRuleId(String ruleId) { + + } + + @Override + public Paging findByRuleId(String ruleId, int page, int size) { + return null; + } + + @Override + public void add(RuleLog log) { + + } +} diff --git a/iot-data/iot-es-temporal-service/src/main/java/cc/iotkit/temporal/es/service/TaskLogDataImpl.java b/iot-data/iot-es-temporal-service/src/main/java/cc/iotkit/temporal/es/service/TaskLogDataImpl.java new file mode 100644 index 00000000..5f713a1b --- /dev/null +++ b/iot-data/iot-es-temporal-service/src/main/java/cc/iotkit/temporal/es/service/TaskLogDataImpl.java @@ -0,0 +1,24 @@ +package cc.iotkit.temporal.es.service; + +import cc.iotkit.model.Paging; +import cc.iotkit.model.rule.TaskLog; +import cc.iotkit.temporal.ITaskLogData; +import org.springframework.stereotype.Service; + +@Service +public class TaskLogDataImpl implements ITaskLogData { + @Override + public void deleteByTaskId(String taskId) { + + } + + @Override + public Paging findByTaskId(String taskId, int page, int size) { + return null; + } + + @Override + public void add(TaskLog log) { + + } +} diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ThingModelMessageDao.java b/iot-data/iot-es-temporal-service/src/main/java/cc/iotkit/temporal/es/service/ThingModelMessageDataImpl.java similarity index 78% rename from iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ThingModelMessageDao.java rename to iot-data/iot-es-temporal-service/src/main/java/cc/iotkit/temporal/es/service/ThingModelMessageDataImpl.java index ba2b447d..c4821240 100644 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/ThingModelMessageDao.java +++ b/iot-data/iot-es-temporal-service/src/main/java/cc/iotkit/temporal/es/service/ThingModelMessageDataImpl.java @@ -1,7 +1,9 @@ -package cc.iotkit.dao; +package cc.iotkit.temporal.es.service; import cc.iotkit.model.Paging; import cc.iotkit.model.device.message.ThingModelMessage; +import cc.iotkit.model.stats.TimeData; +import cc.iotkit.temporal.IThingModelMessageData; import org.apache.commons.lang3.StringUtils; import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.QueryBuilders; @@ -13,12 +15,13 @@ import org.springframework.data.elasticsearch.core.SearchHit; import org.springframework.data.elasticsearch.core.SearchHits; import org.springframework.data.elasticsearch.core.query.NativeSearchQuery; import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; -import org.springframework.stereotype.Repository; +import org.springframework.stereotype.Service; +import java.util.List; import java.util.stream.Collectors; -@Repository -public class ThingModelMessageDao { +@Service +public class ThingModelMessageDataImpl implements IThingModelMessageData { @Autowired private ElasticsearchRestTemplate template; @@ -41,4 +44,19 @@ public class ThingModelMessageDao { return new Paging<>(result.getTotalHits(), result.getSearchHits().stream() .map(SearchHit::getContent).collect(Collectors.toList())); } + + @Override + public List getDeviceMessageStatsWithUid(String uid, long start, long end) { + return null; + } + + @Override + public void add(ThingModelMessage msg) { + + } + + @Override + public long count() { + return 0; + } } diff --git a/iot-data/iot-es-temporal-service/src/main/java/cc/iotkit/temporal/es/service/VirtualDeviceLogDataImpl.java b/iot-data/iot-es-temporal-service/src/main/java/cc/iotkit/temporal/es/service/VirtualDeviceLogDataImpl.java new file mode 100644 index 00000000..0265adc6 --- /dev/null +++ b/iot-data/iot-es-temporal-service/src/main/java/cc/iotkit/temporal/es/service/VirtualDeviceLogDataImpl.java @@ -0,0 +1,19 @@ +package cc.iotkit.temporal.es.service; + +import cc.iotkit.model.Paging; +import cc.iotkit.model.device.VirtualDeviceLog; +import cc.iotkit.temporal.IVirtualDeviceLogData; +import org.springframework.stereotype.Service; + +@Service +public class VirtualDeviceLogDataImpl implements IVirtualDeviceLogData { + @Override + public Paging findByVirtualDeviceId(String virtualDeviceId, int page, int size) { + return null; + } + + @Override + public void add(VirtualDeviceLog log) { + + } +} diff --git a/iot-data-service/iot-model/.DS_Store b/iot-data/iot-model/.DS_Store similarity index 100% rename from iot-data-service/iot-model/.DS_Store rename to iot-data/iot-model/.DS_Store diff --git a/iot-data-service/iot-model/pom.xml b/iot-data/iot-model/pom.xml similarity index 88% rename from iot-data-service/iot-model/pom.xml rename to iot-data/iot-model/pom.xml index d179b25f..e9522dc8 100644 --- a/iot-data-service/iot-model/pom.xml +++ b/iot-data/iot-model/pom.xml @@ -3,11 +3,11 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - iot-data-service + iot-data cc.iotkit - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT 4.0.0 iot-model diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/AppInfo.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/AppInfo.java similarity index 100% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/AppInfo.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/AppInfo.java diff --git a/iot-data/iot-model/src/main/java/cc/iotkit/model/Id.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/Id.java new file mode 100644 index 00000000..599bc93e --- /dev/null +++ b/iot-data/iot-model/src/main/java/cc/iotkit/model/Id.java @@ -0,0 +1,9 @@ +package cc.iotkit.model; + +public interface Id { + + T getId(); + + void setId(T id); + +} diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/InvokeResult.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/InvokeResult.java similarity index 100% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/InvokeResult.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/InvokeResult.java diff --git a/iot-data/iot-model/src/main/java/cc/iotkit/model/OauthClient.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/OauthClient.java new file mode 100644 index 00000000..ecf0917b --- /dev/null +++ b/iot-data/iot-model/src/main/java/cc/iotkit/model/OauthClient.java @@ -0,0 +1,23 @@ +package cc.iotkit.model; + +import lombok.Data; + +/** + * oauth2的client + */ +@Data +public class OauthClient implements Id { + + private String id; + + private String clientId; + + private String name; + + private String clientSecret; + + private String allowUrl; + + private Long createAt; + +} diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/Owned.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/Owned.java similarity index 92% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/Owned.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/Owned.java index dbcf9e73..e5196ff5 100644 --- a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/Owned.java +++ b/iot-data/iot-model/src/main/java/cc/iotkit/model/Owned.java @@ -9,9 +9,7 @@ */ package cc.iotkit.model; -public interface Owned { - - String getId(); +public interface Owned extends Id { String getUid(); diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/Paging.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/Paging.java similarity index 100% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/Paging.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/Paging.java diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/Role.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/Role.java similarity index 100% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/Role.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/Role.java diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/SendCmd.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/SendCmd.java similarity index 100% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/SendCmd.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/SendCmd.java diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/UserInfo.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/UserInfo.java similarity index 84% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/UserInfo.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/UserInfo.java index 7c02768b..8e25db87 100644 --- a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/UserInfo.java +++ b/iot-data/iot-model/src/main/java/cc/iotkit/model/UserInfo.java @@ -14,10 +14,6 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.springframework.data.annotation.Id; -import org.springframework.data.elasticsearch.annotations.Document; -import org.springframework.data.elasticsearch.annotations.Field; -import org.springframework.data.elasticsearch.annotations.FieldType; import java.util.ArrayList; import java.util.List; @@ -27,13 +23,11 @@ import java.util.List; @Builder @NoArgsConstructor @AllArgsConstructor -@Document(indexName = "user_info") -public class UserInfo implements Owned { +public class UserInfo implements Id { public static final int USER_TYPE_PLATFORM = 0; public static final int USER_TYPE_CLIENT = 1; - @Id private String id; /** @@ -98,7 +92,6 @@ public class UserInfo implements Owned { */ private List usePlatforms = new ArrayList<>(); - @Field(type = FieldType.Date) private Long createAt; } diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/alert/AlertConfig.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/alert/AlertConfig.java similarity index 77% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/alert/AlertConfig.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/alert/AlertConfig.java index 89c59191..66f50fab 100644 --- a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/alert/AlertConfig.java +++ b/iot-data/iot-model/src/main/java/cc/iotkit/model/alert/AlertConfig.java @@ -14,10 +14,6 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.springframework.data.annotation.Id; -import org.springframework.data.elasticsearch.annotations.Document; -import org.springframework.data.elasticsearch.annotations.Field; -import org.springframework.data.elasticsearch.annotations.FieldType; /** * 告警配置 @@ -26,12 +22,10 @@ import org.springframework.data.elasticsearch.annotations.FieldType; @Builder @NoArgsConstructor @AllArgsConstructor -@Document(indexName = "alert_config") -public class AlertConfig implements Owned { +public class AlertConfig implements Owned { public static final String TYPE_EMAIL="email"; public static final String TYPE_DINGDING_ROBOT="dingding_robot"; - @Id private String id; /** @@ -64,7 +58,6 @@ public class AlertConfig implements Owned { */ private boolean enable; - @Field(type = FieldType.Date) private Long createAt; } diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/device/DeviceConfig.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/device/DeviceConfig.java similarity index 72% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/device/DeviceConfig.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/device/DeviceConfig.java index 20a17ba2..e935354d 100644 --- a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/device/DeviceConfig.java +++ b/iot-data/iot-model/src/main/java/cc/iotkit/model/device/DeviceConfig.java @@ -9,26 +9,21 @@ */ package cc.iotkit.model.device; +import cc.iotkit.model.Id; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.springframework.data.annotation.Id; -import org.springframework.data.elasticsearch.annotations.Document; -import org.springframework.data.elasticsearch.annotations.Field; -import org.springframework.data.elasticsearch.annotations.FieldType; /** * 设备配置 */ @Data -@Document(indexName = "device_config") @Builder @NoArgsConstructor @AllArgsConstructor -public class DeviceConfig { +public class DeviceConfig implements Id { - @Id private String id; private String deviceId; @@ -45,6 +40,5 @@ public class DeviceConfig { */ private String config; - @Field(type = FieldType.Date) private Long createAt; } diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/device/DeviceGroup.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/device/DeviceGroup.java similarity index 71% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/device/DeviceGroup.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/device/DeviceGroup.java index e2c4bd5d..34207fb3 100644 --- a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/device/DeviceGroup.java +++ b/iot-data/iot-model/src/main/java/cc/iotkit/model/device/DeviceGroup.java @@ -11,22 +11,16 @@ package cc.iotkit.model.device; import cc.iotkit.model.Owned; import lombok.Data; -import org.springframework.data.annotation.Id; -import org.springframework.data.elasticsearch.annotations.Document; -import org.springframework.data.elasticsearch.annotations.Field; -import org.springframework.data.elasticsearch.annotations.FieldType; /** * 设备分组 */ @Data -@Document(indexName = "device_group") -public class DeviceGroup implements Owned { +public class DeviceGroup implements Owned { /** * 分组id */ - @Id private String id; /** @@ -52,7 +46,6 @@ public class DeviceGroup implements Owned { /** * 创建时间 */ - @Field(type = FieldType.Date) private long createAt; } diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/device/DeviceInfo.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/device/DeviceInfo.java similarity index 84% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/device/DeviceInfo.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/device/DeviceInfo.java index 394d22d2..e0cda92d 100644 --- a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/device/DeviceInfo.java +++ b/iot-data/iot-model/src/main/java/cc/iotkit/model/device/DeviceInfo.java @@ -14,10 +14,6 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.springframework.data.annotation.Id; -import org.springframework.data.elasticsearch.annotations.Document; -import org.springframework.data.elasticsearch.annotations.Field; -import org.springframework.data.elasticsearch.annotations.FieldType; import java.util.ArrayList; import java.util.HashMap; @@ -25,13 +21,11 @@ import java.util.List; import java.util.Map; @Data -@Document(indexName = "device_info") @Builder @NoArgsConstructor @AllArgsConstructor -public class DeviceInfo implements Owned { +public class DeviceInfo implements Owned { - @Id private String id; private String deviceId; @@ -85,7 +79,6 @@ public class DeviceInfo implements Owned { */ private Map group = new HashMap<>(); - @Field(type = FieldType.Date) private Long createAt; @Data @@ -107,7 +100,7 @@ public class DeviceInfo implements Owned { public static class Tag { private String id; private String name; - private Object value; + private String value; } @Data diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/device/VirtualDevice.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/device/VirtualDevice.java similarity index 85% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/device/VirtualDevice.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/device/VirtualDevice.java index 93db302d..13d86885 100644 --- a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/device/VirtualDevice.java +++ b/iot-data/iot-model/src/main/java/cc/iotkit/model/device/VirtualDevice.java @@ -14,10 +14,6 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.springframework.data.annotation.Id; -import org.springframework.data.elasticsearch.annotations.Document; -import org.springframework.data.elasticsearch.annotations.Field; -import org.springframework.data.elasticsearch.annotations.FieldType; import java.util.ArrayList; import java.util.List; @@ -26,11 +22,10 @@ import java.util.List; * 虚拟设备 */ @Data -@Document(indexName = "virtual_device") @Builder @NoArgsConstructor @AllArgsConstructor -public class VirtualDevice implements Owned { +public class VirtualDevice implements Owned { public static final String STATE_STOPPED = "stopped"; public static final String STATE_RUNNING = "running"; @@ -57,7 +52,6 @@ public class VirtualDevice implements Owned { */ public static final String TRIGGER_RANDOM = "random"; - @Id private String id; /** @@ -108,7 +102,6 @@ public class VirtualDevice implements Owned { /** * 创建时间 */ - @Field(type = FieldType.Date) private Long createAt = System.currentTimeMillis(); } diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/device/VirtualDeviceLog.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/device/VirtualDeviceLog.java similarity index 100% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/device/VirtualDeviceLog.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/device/VirtualDeviceLog.java diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/device/message/DeviceProperty.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/device/message/DeviceProperty.java similarity index 68% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/device/message/DeviceProperty.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/device/message/DeviceProperty.java index acfc58fd..d8a11240 100644 --- a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/device/message/DeviceProperty.java +++ b/iot-data/iot-model/src/main/java/cc/iotkit/model/device/message/DeviceProperty.java @@ -12,19 +12,13 @@ package cc.iotkit.model.device.message; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import org.springframework.data.annotation.Id; -import org.springframework.data.elasticsearch.annotations.Document; -import org.springframework.data.elasticsearch.annotations.Field; -import org.springframework.data.elasticsearch.annotations.FieldType; @Data @NoArgsConstructor @AllArgsConstructor -@Document(indexName = "device_property") public class DeviceProperty { - @Id - private String mid; + private String id; private String deviceId; @@ -32,7 +26,6 @@ public class DeviceProperty { private Object value; - @Field(type = FieldType.Date) private Long time; } diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/device/message/ThingModelMessage.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/device/message/ThingModelMessage.java similarity index 85% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/device/message/ThingModelMessage.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/device/message/ThingModelMessage.java index 55875558..173d02ff 100644 --- a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/device/message/ThingModelMessage.java +++ b/iot-data/iot-model/src/main/java/cc/iotkit/model/device/message/ThingModelMessage.java @@ -13,10 +13,6 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.springframework.data.annotation.Id; -import org.springframework.data.elasticsearch.annotations.Document; -import org.springframework.data.elasticsearch.annotations.Field; -import org.springframework.data.elasticsearch.annotations.FieldType; import java.util.HashMap; import java.util.Map; @@ -28,7 +24,6 @@ import java.util.Map; @NoArgsConstructor @AllArgsConstructor @Builder -@Document(indexName = "thing_model_messages") public class ThingModelMessage { public static final String TYPE_LIFETIME = "lifetime"; @@ -43,7 +38,8 @@ public class ThingModelMessage { public static final String ID_CONFIG_GET = "get"; public static final String ID_CONFIG_SET = "set"; - @Id + private String id; + private String mid; private String deviceId; @@ -74,13 +70,11 @@ public class ThingModelMessage { /** * 时间戳,设备上的事件或数据产生的本地时间 */ - @Field(type = FieldType.Date) private Long occurred; /** * 消息上报时间 */ - @Field(type = FieldType.Date) private Long time; public Map dataToMap() { diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/product/AppDesign.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/product/AppDesign.java similarity index 70% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/product/AppDesign.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/product/AppDesign.java index 551473cd..7de7c223 100644 --- a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/product/AppDesign.java +++ b/iot-data/iot-model/src/main/java/cc/iotkit/model/product/AppDesign.java @@ -14,19 +14,13 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.springframework.data.annotation.Id; -import org.springframework.data.elasticsearch.annotations.Document; -import org.springframework.data.elasticsearch.annotations.Field; -import org.springframework.data.elasticsearch.annotations.FieldType; @Data @Builder @NoArgsConstructor @AllArgsConstructor -@Document(indexName = "app_design") -public class AppDesign implements Owned { +public class AppDesign implements Owned { - @Id private String id; private String productKey; @@ -37,7 +31,6 @@ public class AppDesign implements Owned { private Boolean state; - @Field(type = FieldType.Date) private Long modifyAt; } diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/AppInfoRepository.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/product/Category.java similarity index 67% rename from iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/AppInfoRepository.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/product/Category.java index 8947bcc0..f07c9824 100644 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/AppInfoRepository.java +++ b/iot-data/iot-model/src/main/java/cc/iotkit/model/product/Category.java @@ -7,10 +7,18 @@ * | Author: xw2sy@163.com * +---------------------------------------------------------------------- */ -package cc.iotkit.dao; +package cc.iotkit.model.product; -import cc.iotkit.model.AppInfo; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; +import cc.iotkit.model.Id; +import lombok.Data; + +@Data +public class Category implements Id { + + private String id; + + private String name; + + private Long createAt; -public interface AppInfoRepository extends ElasticsearchRepository { } diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/product/Product.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/product/Product.java similarity index 74% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/product/Product.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/product/Product.java index a4a090e9..6b9f22d4 100644 --- a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/product/Product.java +++ b/iot-data/iot-model/src/main/java/cc/iotkit/model/product/Product.java @@ -14,19 +14,13 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.springframework.data.annotation.Id; -import org.springframework.data.elasticsearch.annotations.Document; -import org.springframework.data.elasticsearch.annotations.Field; -import org.springframework.data.elasticsearch.annotations.FieldType; @Data @Builder @NoArgsConstructor @AllArgsConstructor -@Document(indexName = "product") -public class Product implements Owned { +public class Product implements Owned { - @Id private String id; private String name; @@ -47,7 +41,6 @@ public class Product implements Owned { */ private Boolean transparent; - @Field(type = FieldType.Date) private Long createAt; public boolean isTransparent() { diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/product/ProductModel.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/product/ProductModel.java similarity index 67% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/product/ProductModel.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/product/ProductModel.java index 261754ad..4a172485 100644 --- a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/product/ProductModel.java +++ b/iot-data/iot-model/src/main/java/cc/iotkit/model/product/ProductModel.java @@ -1,20 +1,16 @@ package cc.iotkit.model.product; +import cc.iotkit.model.Id; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.springframework.data.annotation.Id; -import org.springframework.data.elasticsearch.annotations.Document; -import org.springframework.data.elasticsearch.annotations.Field; -import org.springframework.data.elasticsearch.annotations.FieldType; @Data @Builder @NoArgsConstructor @AllArgsConstructor -@Document(indexName = "product_model") -public class ProductModel { +public class ProductModel implements Id { public static final String TYPE_JS = "JavaScript"; public static final String TYPE_LUA = "LuaScript"; @@ -22,10 +18,11 @@ public class ProductModel { public static final String STATE_DEV = "dev"; public static final String STATE_PUBLISH = "publish"; + private String id; + /** * 型号在所有产品中唯一 */ - @Id private String model; private String name; @@ -41,7 +38,6 @@ public class ProductModel { */ private String state; - @Field(type = FieldType.Date) private Long modifyAt; } diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/product/ThingModel.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/product/ThingModel.java similarity index 93% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/product/ThingModel.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/product/ThingModel.java index bba3276d..b50c46fe 100644 --- a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/product/ThingModel.java +++ b/iot-data/iot-model/src/main/java/cc/iotkit/model/product/ThingModel.java @@ -9,13 +9,12 @@ */ package cc.iotkit.model.product; +import cc.iotkit.model.Id; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.springframework.data.annotation.Id; -import org.springframework.data.elasticsearch.annotations.Document; import java.util.HashMap; import java.util.List; @@ -23,13 +22,11 @@ import java.util.Map; import java.util.stream.Collectors; @Data -@Document(indexName = "thing_model") @Builder @NoArgsConstructor @AllArgsConstructor -public class ThingModel { +public class ThingModel implements Id { - @Id private String id; private String productKey; diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/protocol/ProtocolComponent.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/protocol/ProtocolComponent.java similarity index 75% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/protocol/ProtocolComponent.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/protocol/ProtocolComponent.java index 285482bb..bc5cefe0 100644 --- a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/protocol/ProtocolComponent.java +++ b/iot-data/iot-model/src/main/java/cc/iotkit/model/protocol/ProtocolComponent.java @@ -11,14 +11,9 @@ package cc.iotkit.model.protocol; import cc.iotkit.model.Owned; import lombok.Data; -import org.springframework.data.annotation.Id; -import org.springframework.data.elasticsearch.annotations.Document; -import org.springframework.data.elasticsearch.annotations.Field; -import org.springframework.data.elasticsearch.annotations.FieldType; @Data -@Document(indexName = "protocol_component") -public class ProtocolComponent implements Owned { +public class ProtocolComponent implements Owned { public static final String STATE_STOPPED = "stopped"; public static final String STATE_RUNNING = "running"; @@ -27,7 +22,6 @@ public class ProtocolComponent implements Owned { public static final String SCRIPT_FILE_NAME = "component.js"; - @Id private String id; /** @@ -49,7 +43,6 @@ public class ProtocolComponent implements Owned { private String state; - @Field(type = FieldType.Date) private Long createAt; } diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/protocol/ProtocolConverter.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/protocol/ProtocolConverter.java similarity index 67% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/protocol/ProtocolConverter.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/protocol/ProtocolConverter.java index cb4ff98e..ae4de0c2 100644 --- a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/protocol/ProtocolConverter.java +++ b/iot-data/iot-model/src/main/java/cc/iotkit/model/protocol/ProtocolConverter.java @@ -11,18 +11,12 @@ package cc.iotkit.model.protocol; import cc.iotkit.model.Owned; import lombok.Data; -import org.springframework.data.annotation.Id; -import org.springframework.data.elasticsearch.annotations.Document; -import org.springframework.data.elasticsearch.annotations.Field; -import org.springframework.data.elasticsearch.annotations.FieldType; -@Document(indexName = "protocol_converter") @Data -public class ProtocolConverter implements Owned { +public class ProtocolConverter implements Owned { public static final String SCRIPT_FILE_NAME = "converter.js"; - @Id private String id; /** @@ -34,6 +28,5 @@ public class ProtocolConverter implements Owned { private String desc; - @Field(type = FieldType.Date) private Long createAt; } diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/rule/RuleAction.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/rule/RuleAction.java similarity index 100% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/rule/RuleAction.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/rule/RuleAction.java diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/rule/RuleInfo.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/rule/RuleInfo.java similarity index 72% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/rule/RuleInfo.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/rule/RuleInfo.java index f87c5e00..c61af219 100644 --- a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/rule/RuleInfo.java +++ b/iot-data/iot-model/src/main/java/cc/iotkit/model/rule/RuleInfo.java @@ -4,18 +4,13 @@ import cc.iotkit.model.Owned; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; -import org.springframework.data.annotation.Id; -import org.springframework.data.elasticsearch.annotations.Document; -import org.springframework.data.elasticsearch.annotations.Field; -import org.springframework.data.elasticsearch.annotations.FieldType; import java.util.List; @Data @NoArgsConstructor @AllArgsConstructor -@Document(indexName = "rule_info") -public class RuleInfo implements Owned { +public class RuleInfo implements Owned { public static final String STATE_STOPPED = "stopped"; public static final String STATE_RUNNING = "running"; @@ -23,7 +18,6 @@ public class RuleInfo implements Owned { public static final String TYPE_SCENE = "scene"; public static final String TYPE_FLOW = "flow"; - @Id private String id; private String name; @@ -42,7 +36,6 @@ public class RuleInfo implements Owned { private String desc; - @Field(type = FieldType.Date) private Long createAt; @Data diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/rule/RuleLog.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/rule/RuleLog.java similarity index 100% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/rule/RuleLog.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/rule/RuleLog.java diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/rule/TaskInfo.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/rule/TaskInfo.java similarity index 83% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/rule/TaskInfo.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/rule/TaskInfo.java index 910c76ca..9ffbbb38 100644 --- a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/rule/TaskInfo.java +++ b/iot-data/iot-model/src/main/java/cc/iotkit/model/rule/TaskInfo.java @@ -14,10 +14,6 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.springframework.data.annotation.Id; -import org.springframework.data.elasticsearch.annotations.Document; -import org.springframework.data.elasticsearch.annotations.Field; -import org.springframework.data.elasticsearch.annotations.FieldType; import java.util.List; @@ -26,8 +22,7 @@ import java.util.List; @Builder @NoArgsConstructor @AllArgsConstructor -@Document(indexName = "task_info") -public class TaskInfo implements Owned { +public class TaskInfo implements Owned { public static String TYPE_TIMER = "timer"; public static String TYPE_DELAY = "delay"; @@ -37,7 +32,6 @@ public class TaskInfo implements Owned { public static String STATE_INVALID = "invalid"; public static String STATE_FINISHED = "finished"; - @Id private String id; private String name; @@ -74,7 +68,6 @@ public class TaskInfo implements Owned { */ private String uid; - @Field(type = FieldType.Date) private Long createAt; /** diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/rule/TaskLog.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/rule/TaskLog.java similarity index 100% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/rule/TaskLog.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/rule/TaskLog.java diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/space/Home.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/space/Home.java similarity index 85% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/space/Home.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/space/Home.java index 85001de0..6e1af78f 100644 --- a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/space/Home.java +++ b/iot-data/iot-model/src/main/java/cc/iotkit/model/space/Home.java @@ -14,17 +14,13 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.springframework.data.annotation.Id; -import org.springframework.data.elasticsearch.annotations.Document; @Data @Builder @NoArgsConstructor @AllArgsConstructor -@Document(indexName = "home") -public class Home implements Owned { +public class Home implements Owned { - @Id private String id; /** diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/space/Space.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/space/Space.java similarity index 73% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/space/Space.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/space/Space.java index e023ce57..fecba9e9 100644 --- a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/space/Space.java +++ b/iot-data/iot-model/src/main/java/cc/iotkit/model/space/Space.java @@ -14,19 +14,13 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.springframework.data.annotation.Id; -import org.springframework.data.elasticsearch.annotations.Document; -import org.springframework.data.elasticsearch.annotations.Field; -import org.springframework.data.elasticsearch.annotations.FieldType; @Data @Builder @NoArgsConstructor @AllArgsConstructor -@Document(indexName = "space") -public class Space implements Owned { +public class Space implements Owned { - @Id private String id; /** @@ -49,6 +43,5 @@ public class Space implements Owned { */ private Integer deviceNum; - @Field(type = FieldType.Date) private Long createAt; } diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/space/SpaceDevice.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/space/SpaceDevice.java similarity index 75% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/space/SpaceDevice.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/space/SpaceDevice.java index f9ec9322..1dd055a6 100644 --- a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/space/SpaceDevice.java +++ b/iot-data/iot-model/src/main/java/cc/iotkit/model/space/SpaceDevice.java @@ -14,19 +14,13 @@ import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.springframework.data.annotation.Id; -import org.springframework.data.elasticsearch.annotations.Document; -import org.springframework.data.elasticsearch.annotations.Field; -import org.springframework.data.elasticsearch.annotations.FieldType; @Data @Builder @NoArgsConstructor @AllArgsConstructor -@Document(indexName = "space_device") -public class SpaceDevice implements Owned { +public class SpaceDevice implements Owned { - @Id private String id; /** @@ -62,13 +56,11 @@ public class SpaceDevice implements Owned { /** * 添加时间 */ - @Field(type = FieldType.Date) private Long addAt; /** * 使用时间 */ - @Field(type = FieldType.Date) private Long useAt; } diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/stats/DataItem.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/stats/DataItem.java similarity index 100% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/stats/DataItem.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/stats/DataItem.java diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/stats/TimeData.java b/iot-data/iot-model/src/main/java/cc/iotkit/model/stats/TimeData.java similarity index 100% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/stats/TimeData.java rename to iot-data/iot-model/src/main/java/cc/iotkit/model/stats/TimeData.java diff --git a/iot-data/iot-rdb-data-service/pom.xml b/iot-data/iot-rdb-data-service/pom.xml new file mode 100644 index 00000000..d7a2fb0b --- /dev/null +++ b/iot-data/iot-rdb-data-service/pom.xml @@ -0,0 +1,82 @@ + + + + iot-data + cc.iotkit + 0.3.3-SNAPSHOT + + 0.3.3-SNAPSHOT + 4.0.0 + + iot-rdb-data-service + + + + + org.springframework.boot + spring-boot-starter-data-jpa + + + + + + + + + mysql + mysql-connector-java + + + + commons-io + commons-io + + + + org.mapstruct + mapstruct + + + + org.projectlombok + lombok + provided + + + + cc.iotkit + iot-data-service + + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.1 + + 11 + 11 + + + org.projectlombok + lombok + 1.18.24 + + + org.mapstruct + mapstruct-processor + 1.4.2.Final + + + + + + + + + \ No newline at end of file diff --git a/iot-data/iot-rdb-data-service/readme.md b/iot-data/iot-rdb-data-service/readme.md new file mode 100644 index 00000000..e93c095d --- /dev/null +++ b/iot-data/iot-rdb-data-service/readme.md @@ -0,0 +1,4 @@ +## 关系型数据库的数据服务实现模块 + +如:h2、mysql,由jpa兼容不同数据库方言 + diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/DataBaseInit.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/DataBaseInit.java new file mode 100644 index 00000000..0502d552 --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/DataBaseInit.java @@ -0,0 +1,30 @@ +package cc.iotkit.data; + +import org.apache.commons.io.FileUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.util.ResourceUtils; + +import javax.annotation.PostConstruct; +import java.io.File; +import java.io.IOException; + +import static java.nio.charset.StandardCharsets.UTF_8; + +@Service +public class DataBaseInit { + + @Autowired + private JdbcTemplate template; + +// @PostConstruct + public void initDb() throws IOException { + //执行初始化数据库脚本 + File file = ResourceUtils.getFile("ddl.sql"); + String ddl = FileUtils.readFileToString(file, UTF_8); + + template.execute(ddl); + } + +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/CategoryRepository.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/CategoryRepository.java new file mode 100644 index 00000000..04daa52b --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/CategoryRepository.java @@ -0,0 +1,8 @@ +package cc.iotkit.data.dao; + +import cc.iotkit.data.model.TbCategory; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface CategoryRepository extends JpaRepository { + +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/DeviceConfigRepository.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/DeviceConfigRepository.java new file mode 100644 index 00000000..014c06cb --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/DeviceConfigRepository.java @@ -0,0 +1,12 @@ +package cc.iotkit.data.dao; + +import cc.iotkit.data.model.TbDeviceConfig; +import org.springframework.data.jpa.repository.JpaRepository; + +public interface DeviceConfigRepository extends JpaRepository { + + TbDeviceConfig findByProductKeyAndDeviceName(String productKey, String deviceName); + + TbDeviceConfig findByDeviceId(String deviceId); + +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/DeviceGroupMappingRepository.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/DeviceGroupMappingRepository.java new file mode 100644 index 00000000..416c4ff8 --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/DeviceGroupMappingRepository.java @@ -0,0 +1,16 @@ +package cc.iotkit.data.dao; + +import cc.iotkit.data.model.TbDeviceGroupMapping; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public interface DeviceGroupMappingRepository extends JpaRepository { + + List findByDeviceId(String deviceId); + + TbDeviceGroupMapping findByDeviceIdAndGroupId(String deviceId, String groupId); + + long countByGroupId(String groupId); + +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/DeviceGroupRepository.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/DeviceGroupRepository.java new file mode 100644 index 00000000..5cd3b803 --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/DeviceGroupRepository.java @@ -0,0 +1,14 @@ +package cc.iotkit.data.dao; + +import cc.iotkit.data.model.TbDeviceGroup; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public interface DeviceGroupRepository extends JpaRepository { + + Page findByNameLike(String name, Pageable pageable); + +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/DeviceInfoRepository.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/DeviceInfoRepository.java new file mode 100644 index 00000000..283935fa --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/DeviceInfoRepository.java @@ -0,0 +1,18 @@ +package cc.iotkit.data.dao; + +import cc.iotkit.data.model.TbDeviceInfo; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public interface DeviceInfoRepository extends JpaRepository { + + TbDeviceInfo findByDeviceId(String deviceId); + + TbDeviceInfo findByProductKeyAndDeviceName(String productKey, String deviceName); + + List findByParentId(String parentId); + + List findByDeviceName(String deviceName); + +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/DeviceSubUserRepository.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/DeviceSubUserRepository.java new file mode 100644 index 00000000..da863006 --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/DeviceSubUserRepository.java @@ -0,0 +1,12 @@ +package cc.iotkit.data.dao; + +import cc.iotkit.data.model.TbDeviceSubUser; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public interface DeviceSubUserRepository extends JpaRepository { + + List findByDeviceId(String deviceId); + +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/DeviceTagRepository.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/DeviceTagRepository.java new file mode 100644 index 00000000..be15f44a --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/DeviceTagRepository.java @@ -0,0 +1,14 @@ +package cc.iotkit.data.dao; + +import cc.iotkit.data.model.TbDeviceTag; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public interface DeviceTagRepository extends JpaRepository { + + List findByDeviceId(String deviceId); + + TbDeviceTag findByDeviceIdAndCode(String deviceId, String code); + +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/ProductModelRepository.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/ProductModelRepository.java new file mode 100644 index 00000000..a60876a7 --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/ProductModelRepository.java @@ -0,0 +1,14 @@ +package cc.iotkit.data.dao; + +import cc.iotkit.data.model.TbProductModel; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public interface ProductModelRepository extends JpaRepository { + + TbProductModel findByModel(String model); + + List findByProductKey(String productKey); + +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/ProductRepository.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/ProductRepository.java new file mode 100644 index 00000000..5d20de84 --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/ProductRepository.java @@ -0,0 +1,20 @@ +package cc.iotkit.data.dao; + +import cc.iotkit.data.model.TbProduct; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public interface ProductRepository extends JpaRepository { + + List findByCategory(String category); + + List findByUid(String uid); + + Page findByUid(String uid, Pageable pageable); + + long countByUid(String uid); + +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/ProtocolComponentRepository.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/ProtocolComponentRepository.java new file mode 100644 index 00000000..620d5a39 --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/dao/ProtocolComponentRepository.java @@ -0,0 +1,12 @@ +package cc.iotkit.data.dao; + +import cc.iotkit.data.model.TbProtocolComponent; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public interface ProtocolComponentRepository extends JpaRepository { + + List findByState(String state); + +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/CategoryMapper.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/CategoryMapper.java new file mode 100644 index 00000000..041eaabb --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/CategoryMapper.java @@ -0,0 +1,15 @@ +package cc.iotkit.data.model; + +import cc.iotkit.model.product.Category; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface CategoryMapper { + + CategoryMapper M = Mappers.getMapper(CategoryMapper.class); + + Category toDto(TbCategory vo); + + TbCategory toVo(Category dto); +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/DeviceConfigMapper.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/DeviceConfigMapper.java new file mode 100644 index 00000000..eada56c0 --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/DeviceConfigMapper.java @@ -0,0 +1,15 @@ +package cc.iotkit.data.model; + +import cc.iotkit.model.device.DeviceConfig; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface DeviceConfigMapper { + + DeviceConfigMapper M = Mappers.getMapper(DeviceConfigMapper.class); + + DeviceConfig toDto(TbDeviceConfig vo); + + TbDeviceConfig toVo(DeviceConfig dto); +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/DeviceGroupMapper.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/DeviceGroupMapper.java new file mode 100644 index 00000000..c9a19d24 --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/DeviceGroupMapper.java @@ -0,0 +1,15 @@ +package cc.iotkit.data.model; + +import cc.iotkit.model.device.DeviceGroup; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface DeviceGroupMapper { + + DeviceGroupMapper M = Mappers.getMapper(DeviceGroupMapper.class); + + DeviceGroup toDto(TbDeviceGroup vo); + + TbDeviceGroup toVo(DeviceGroup dto); +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/DeviceInfoMapper.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/DeviceInfoMapper.java new file mode 100644 index 00000000..24d4905f --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/DeviceInfoMapper.java @@ -0,0 +1,18 @@ +package cc.iotkit.data.model; + +import cc.iotkit.model.device.DeviceInfo; +import org.mapstruct.Mapper; +import org.mapstruct.Mapping; +import org.mapstruct.factory.Mappers; + +@Mapper +public interface DeviceInfoMapper { + + DeviceInfoMapper M = Mappers.getMapper(DeviceInfoMapper.class); + + @Mapping(target = "state", ignore = true) + DeviceInfo toDto(TbDeviceInfo vo); + + @Mapping(target = "state", ignore = true) + TbDeviceInfo toVo(DeviceInfo dto); +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/ProductMapper.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/ProductMapper.java new file mode 100644 index 00000000..296f18cb --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/ProductMapper.java @@ -0,0 +1,22 @@ +package cc.iotkit.data.model; + +import cc.iotkit.model.product.Product; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; +import java.util.stream.Collectors; + +@Mapper +public interface ProductMapper { + + ProductMapper M = Mappers.getMapper(ProductMapper.class); + + Product toDto(TbProduct vo); + + TbProduct toVo(Product dto); + + static List toDto(List products) { + return products.stream().map(M::toDto).collect(Collectors.toList()); + } +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/ProductModelMapper.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/ProductModelMapper.java new file mode 100644 index 00000000..b917a0a5 --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/ProductModelMapper.java @@ -0,0 +1,22 @@ +package cc.iotkit.data.model; + +import cc.iotkit.model.product.ProductModel; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; +import java.util.stream.Collectors; + +@Mapper +public interface ProductModelMapper { + + ProductModelMapper M = Mappers.getMapper(ProductModelMapper.class); + + ProductModel toDto(TbProductModel vo); + + TbProductModel toVo(ProductModel dto); + + static List toDto(List list) { + return list.stream().map(M::toDto).collect(Collectors.toList()); + } +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/ProtocolComponentMapper.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/ProtocolComponentMapper.java new file mode 100644 index 00000000..54e0cb25 --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/ProtocolComponentMapper.java @@ -0,0 +1,22 @@ +package cc.iotkit.data.model; + +import cc.iotkit.model.protocol.ProtocolComponent; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; +import java.util.stream.Collectors; + +@Mapper +public interface ProtocolComponentMapper { + + ProtocolComponentMapper M = Mappers.getMapper(ProtocolComponentMapper.class); + + ProtocolComponent toDto(TbProtocolComponent vo); + + TbProtocolComponent toVo(ProtocolComponent dto); + + static List toDto(List list) { + return list.stream().map(M::toDto).collect(Collectors.toList()); + } +} diff --git a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/CategoryRepository.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbCategory.java similarity index 62% rename from iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/CategoryRepository.java rename to iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbCategory.java index d0f9834f..f2976712 100644 --- a/iot-data-service/iot-dao/src/main/java/cc/iotkit/dao/CategoryRepository.java +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbCategory.java @@ -7,13 +7,24 @@ * | Author: xw2sy@163.com * +---------------------------------------------------------------------- */ -package cc.iotkit.dao; +package cc.iotkit.data.model; -import cc.iotkit.model.product.Category; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; +import lombok.Data; -public interface CategoryRepository extends ElasticsearchRepository { +import javax.persistence.Entity; +import javax.persistence.Table; + +@Data +@Entity +@Table(name = "category") +public class TbCategory { + + @javax.persistence.Id + private String id; + + private String name; + + private Long createAt; - int countBy(); } diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbDeviceConfig.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbDeviceConfig.java new file mode 100644 index 00000000..c9c7c2a5 --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbDeviceConfig.java @@ -0,0 +1,33 @@ +package cc.iotkit.data.model; + +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +@Data +@Entity +@Table(name = "device_config") +public class TbDeviceConfig { + + @Id + private String id; + + private String deviceId; + + /** + * 产品key + */ + private String productKey; + + private String deviceName; + + /** + * 设备配置json内容 + */ + private String config; + + private Long createAt; + +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbDeviceGroup.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbDeviceGroup.java new file mode 100644 index 00000000..2cd7b392 --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbDeviceGroup.java @@ -0,0 +1,39 @@ +package cc.iotkit.data.model; + +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +@Data +@Entity +@Table(name = "device_group") +public class TbDeviceGroup { + + @Id + private String id; + + private String name; + + /** + * 所属用户 + */ + private String uid; + + /** + * 分组说明 + */ + private String remark; + + /** + * 设备数量 + */ + private int deviceQty; + + /** + * 创建时间 + */ + private long createAt; + +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbDeviceGroupMapping.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbDeviceGroupMapping.java new file mode 100644 index 00000000..1e82038e --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbDeviceGroupMapping.java @@ -0,0 +1,25 @@ +package cc.iotkit.data.model; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Entity +@Table(name = "device_group_mapping") +public class TbDeviceGroupMapping { + + @Id + private String id; + + private String deviceId; + + private String groupId; + +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbDeviceInfo.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbDeviceInfo.java new file mode 100644 index 00000000..b9aecdf1 --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbDeviceInfo.java @@ -0,0 +1,38 @@ +package cc.iotkit.data.model; + +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Table; + +@Data +@Entity +@Table(name = "device_info") +public class TbDeviceInfo { + + @javax.persistence.Id + private String id; + + private String deviceId; + + private String productKey; + + private String deviceName; + + private String model; + + private String secret; + + private String parentId; + + private String uid; + + private String state; + + private Long onlineTime; + + private Long offlineTime; + + private Long createAt; + +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbDeviceSubUser.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbDeviceSubUser.java new file mode 100644 index 00000000..4ab94b4a --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbDeviceSubUser.java @@ -0,0 +1,21 @@ +package cc.iotkit.data.model; + +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +@Data +@Entity +@Table(name = "device_sub_user") +public class TbDeviceSubUser { + + @Id + private String id; + + private String deviceId; + + private String uid; + +} diff --git a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/aligenie/AligenieDevice.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbDeviceTag.java similarity index 54% rename from iot-data-service/iot-model/src/main/java/cc/iotkit/model/aligenie/AligenieDevice.java rename to iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbDeviceTag.java index 0d6f1839..e3051f5d 100644 --- a/iot-data-service/iot-model/src/main/java/cc/iotkit/model/aligenie/AligenieDevice.java +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbDeviceTag.java @@ -7,58 +7,43 @@ * | Author: xw2sy@163.com * +---------------------------------------------------------------------- */ -package cc.iotkit.model.aligenie; +package cc.iotkit.data.model; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; import lombok.NoArgsConstructor; -import org.springframework.data.annotation.Id; -import org.springframework.data.elasticsearch.annotations.Document; -import java.util.Map; +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; @Data @Builder @NoArgsConstructor @AllArgsConstructor -@Document(indexName = "aligenie_device") -public class AligenieDevice { +@Entity +@Table(name = "device_tag") +public class TbDeviceTag { + @Id private String id; - /** - * 关联用户id - */ - private String uid; - - /** - * 用户token - */ - private String token; - - /** - * 空间中的设备id - */ private String deviceId; /** - * 天猫精灵产品ID + * 标签码 */ - private String productId; + private String code; /** - * 空间中的设备名称 + * 标签名称 */ private String name; /** - * 空间名称 + * 标签值 */ - private String spaceName; + private String value; - /** - * 设备当前属性值 - */ - private Map status; } diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbProduct.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbProduct.java new file mode 100644 index 00000000..3547a931 --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbProduct.java @@ -0,0 +1,37 @@ +package cc.iotkit.data.model; + +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +@Data +@Entity +@Table(name = "product") +public class TbProduct { + + @Id + private String id; + + private String name; + + private String category; + + private Integer nodeType; + + /** + * 所属平台用户ID + */ + private String uid; + + private String img; + + /** + * 是否透传,true/false + */ + private String transparent; + + private Long createAt; + +} \ No newline at end of file diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbProductModel.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbProductModel.java new file mode 100644 index 00000000..979e55b7 --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbProductModel.java @@ -0,0 +1,36 @@ +package cc.iotkit.data.model; + +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +@Data +@Entity +@Table(name = "product_model") +public class TbProductModel { + + @Id + private String id; + + /** + * 型号在所有产品中唯一 + */ + private String model; + + private String name; + + private String productKey; + + private String type; + + private String script; + + /** + * 脚本状态,只有发布状态才生效 + */ + private String state; + + private Long modifyAt; +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbProtocolComponent.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbProtocolComponent.java new file mode 100644 index 00000000..62e74cf8 --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/model/TbProtocolComponent.java @@ -0,0 +1,37 @@ +package cc.iotkit.data.model; + +import lombok.Data; + +import javax.persistence.Entity; +import javax.persistence.Id; +import javax.persistence.Table; + +@Data +@Entity +@Table(name = "protocol_component") +public class TbProtocolComponent { + + @Id + private String id; + + /** + * 所属性用户id + */ + private String uid; + + private String name; + + private String type; + + private String protocol; + + private String jarFile; + + private String config; + + private String converter; + + private String state; + + private Long createAt; +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/CategoryDataImpl.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/CategoryDataImpl.java new file mode 100644 index 00000000..fd30a92a --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/CategoryDataImpl.java @@ -0,0 +1,66 @@ +package cc.iotkit.data.service; + +import cc.iotkit.data.ICategoryData; +import cc.iotkit.data.dao.CategoryRepository; +import cc.iotkit.data.model.CategoryMapper; +import cc.iotkit.data.model.TbCategory; +import cc.iotkit.model.Paging; +import cc.iotkit.model.product.Category; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.stream.Collectors; + +@Service +public class CategoryDataImpl implements ICategoryData { + + @Autowired + private CategoryRepository categoryRepository; + + @Override + public Category findById(String s) { + return CategoryMapper.M.toDto(categoryRepository.findById(s).orElse(null)); + } + + @Override + public Category save(Category data) { + TbCategory tb = categoryRepository.save(CategoryMapper.M.toVo(data)); + data.setId(tb.getId()); + return data; + } + + @Override + public Category add(Category data) { + TbCategory tb = categoryRepository.save(CategoryMapper.M.toVo(data)); + data.setId(tb.getId()); + return data; + } + + @Override + public void deleteById(String s) { + categoryRepository.deleteById(s); + } + + @Override + public long count() { + return categoryRepository.count(); + } + + @Override + public List findAll() { + return categoryRepository.findAll().stream() + .map(CategoryMapper.M::toDto).collect(Collectors.toList()); + } + + @Override + public Paging findAll(int page, int size) { + return new Paging<>( + categoryRepository.count(), + categoryRepository.findAll(Pageable.ofSize(size).withPage(page - 1)) + .stream().map(CategoryMapper.M::toDto).collect(Collectors.toList()) + ); + } + +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/CommonService.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/CommonService.java new file mode 100644 index 00000000..445bbef3 --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/CommonService.java @@ -0,0 +1,55 @@ +package cc.iotkit.data.service; + +import cc.iotkit.data.ICommonData; +import cc.iotkit.model.Id; +import cc.iotkit.model.Paging; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public class CommonService, T> implements ICommonData { + + private final JpaRepository repository; + + public CommonService(JpaRepository repository) { + this.repository = repository; + } + + @Override + public VO findById(T id) { + return repository.findById(id).orElse(null); + } + + @Override + public VO save(VO data) { + return repository.save(data); + } + + @Override + public VO add(VO data) { + return repository.save(data); + } + + @Override + public void deleteById(T id) { + repository.deleteById(id); + } + + @Override + public long count() { + return repository.count(); + } + + @Override + public List findAll() { + return repository.findAll(); + } + + @Override + public Paging findAll(int page, int size) { + Page rst = repository.findAll(Pageable.ofSize(size).withPage(page - 1)); + return new Paging<>(rst.getTotalElements(), rst.getContent()); + } +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/DeviceConfigDataImpl.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/DeviceConfigDataImpl.java new file mode 100644 index 00000000..6cb519f0 --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/DeviceConfigDataImpl.java @@ -0,0 +1,80 @@ +package cc.iotkit.data.service; + +import cc.iotkit.data.IDeviceConfigData; +import cc.iotkit.data.dao.DeviceConfigRepository; +import cc.iotkit.data.model.DeviceConfigMapper; +import cc.iotkit.data.model.TbDeviceConfig; +import cc.iotkit.model.Paging; +import cc.iotkit.model.device.DeviceConfig; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.UUID; +import java.util.stream.Collectors; + +@Service +public class DeviceConfigDataImpl implements IDeviceConfigData { + + @Autowired + private DeviceConfigRepository deviceConfigRepository; + + @Override + public DeviceConfig findByProductKeyAndDeviceName(String productKey, String deviceName) { + return DeviceConfigMapper.M.toDto(deviceConfigRepository.findByProductKeyAndDeviceName(productKey, deviceName)); + } + + @Override + public DeviceConfig findByDeviceId(String deviceId) { + return DeviceConfigMapper.M.toDto(deviceConfigRepository.findByDeviceId(deviceId)); + } + + @Override + public DeviceConfig findById(String s) { + return DeviceConfigMapper.M.toDto(deviceConfigRepository.findById(s).orElse(null)); + } + + @Override + public DeviceConfig save(DeviceConfig data) { + if (StringUtils.isBlank(data.getId())) { + data.setId(UUID.randomUUID().toString()); + } + deviceConfigRepository.save(DeviceConfigMapper.M.toVo(data)); + return data; + } + + @Override + public DeviceConfig add(DeviceConfig data) { + return save(data); + } + + @Override + public void deleteById(String s) { + deviceConfigRepository.deleteById(s); + } + + @Override + public long count() { + return deviceConfigRepository.count(); + } + + @Override + public List findAll() { + return deviceConfigRepository.findAll().stream().map(DeviceConfigMapper.M::toDto) + .collect(Collectors.toList()); + } + + @Override + public Paging findAll(int page, int size) { + Page tbDeviceConfigs = deviceConfigRepository.findAll(Pageable.ofSize(size).withPage(page - 1)); + return new Paging<>( + tbDeviceConfigs.getTotalElements(), + tbDeviceConfigs.getContent() + .stream().map(DeviceConfigMapper.M::toDto) + .collect(Collectors.toList()) + ); + } +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/DeviceGroupDataImpl.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/DeviceGroupDataImpl.java new file mode 100644 index 00000000..0bd73910 --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/DeviceGroupDataImpl.java @@ -0,0 +1,77 @@ +package cc.iotkit.data.service; + +import cc.iotkit.data.IDeviceGroupData; +import cc.iotkit.data.dao.DeviceGroupRepository; +import cc.iotkit.data.model.DeviceGroupMapper; +import cc.iotkit.data.model.TbDeviceGroup; +import cc.iotkit.model.Paging; +import cc.iotkit.model.device.DeviceGroup; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.UUID; +import java.util.stream.Collectors; + +@Service +public class DeviceGroupDataImpl implements IDeviceGroupData { + + @Autowired + private DeviceGroupRepository deviceGroupRepository; + + @Override + public Paging findByNameLike(String name, int page, int size) { + Page groups = deviceGroupRepository.findByNameLike(name, Pageable.ofSize(size).withPage(page - 1)); + return new Paging<>(groups.getTotalElements(), groups.getContent() + .stream().map(DeviceGroupMapper.M::toDto) + .collect(Collectors.toList())); + } + + @Override + public DeviceGroup findById(String s) { + return DeviceGroupMapper.M.toDto(deviceGroupRepository.findById(s).orElse(null)); + } + + @Override + public DeviceGroup save(DeviceGroup data) { + if (StringUtils.isBlank(data.getId())) { + data.setId(UUID.randomUUID().toString()); + } + deviceGroupRepository.save(DeviceGroupMapper.M.toVo(data)); + return data; + } + + @Override + public DeviceGroup add(DeviceGroup data) { + data.setCreateAt(System.currentTimeMillis()); + return save(data); + } + + @Override + public void deleteById(String s) { + deviceGroupRepository.deleteById(s); + } + + @Override + public long count() { + return deviceGroupRepository.count(); + } + + @Override + public List findAll() { + return deviceGroupRepository.findAll() + .stream().map(DeviceGroupMapper.M::toDto) + .collect(Collectors.toList()); + } + + @Override + public Paging findAll(int page, int size) { + Page groups = deviceGroupRepository.findAll(Pageable.ofSize(size).withPage(page - 1)); + return new Paging<>(groups.getTotalElements(), groups.getContent() + .stream().map(DeviceGroupMapper.M::toDto) + .collect(Collectors.toList())); + } +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/DeviceInfoDataImpl.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/DeviceInfoDataImpl.java new file mode 100644 index 00000000..772de679 --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/DeviceInfoDataImpl.java @@ -0,0 +1,414 @@ +package cc.iotkit.data.service; + +import cc.iotkit.common.utils.ReflectUtil; +import cc.iotkit.data.IDeviceInfoData; +import cc.iotkit.data.dao.*; +import cc.iotkit.data.model.*; +import cc.iotkit.model.Paging; +import cc.iotkit.model.device.DeviceInfo; +import cc.iotkit.model.stats.DataItem; +import lombok.Data; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.*; +import java.util.stream.Collectors; + +@Service +public class DeviceInfoDataImpl implements IDeviceInfoData { + + @Autowired + private DeviceInfoRepository deviceInfoRepository; + @Autowired + private DeviceSubUserRepository deviceSubUserRepository; + @Autowired + private DeviceGroupMappingRepository deviceGroupMappingRepository; + @Autowired + private DeviceGroupRepository deviceGroupRepository; + @Autowired + private DeviceTagRepository deviceTagRepository; + @Autowired + private JdbcTemplate jdbcTemplate; + + @Override + public DeviceInfo findByDeviceId(String deviceId) { + TbDeviceInfo tbDeviceInfo = deviceInfoRepository.findByDeviceId(deviceId); + DeviceInfo dto = DeviceInfoMapper.M.toDto(tbDeviceInfo); + + fillDeviceInfo(deviceId, tbDeviceInfo, dto); + + return dto; + } + + /** + * 填充设备其它信息 + */ + private void fillDeviceInfo(String deviceId, TbDeviceInfo vo, DeviceInfo dto) { + //取子关联用户 + dto.setSubUid(deviceSubUserRepository.findByDeviceId(deviceId).stream() + .map(TbDeviceSubUser::getUid).collect(Collectors.toList())); + + //取设备所属分组 + List groupMappings = deviceGroupMappingRepository.findByDeviceId(deviceId); + Map groups = new HashMap<>(); + for (TbDeviceGroupMapping mapping : groupMappings) { + TbDeviceGroup deviceGroup = deviceGroupRepository.findById(mapping.getGroupId()).orElse(null); + if (deviceGroup == null) { + continue; + } + groups.put(deviceGroup.getId(), new DeviceInfo.Group(deviceGroup.getId(), deviceGroup.getName())); + } + dto.setGroup(groups); + + //取设备标签 + List deviceTags = deviceTagRepository.findByDeviceId(deviceId); + Map tagMap = new HashMap<>(); + for (TbDeviceTag tag : deviceTags) { + tagMap.put(tag.getCode(), new DeviceInfo.Tag(tag.getCode(), tag.getName(), tag.getValue())); + } + dto.setTag(tagMap); + + //将设备状态从vo转为dto的 + parseStateToDto(vo, dto); + } + + /** + * 将设备状态从vo转为dto的 + */ + private void parseStateToDto(TbDeviceInfo vo, DeviceInfo dto) { + dto.setState(new DeviceInfo.State("online".equals(vo.getState()), + vo.getOnlineTime(), vo.getOfflineTime())); + } + + /** + * 将设备状态从dto转vo + */ + private void parseStateToVo(DeviceInfo dto, TbDeviceInfo vo) { + DeviceInfo.State state = dto.getState(); + vo.setState(state.isOnline() ? "online" : "offline"); + vo.setOfflineTime(state.getOfflineTime()); + vo.setOnlineTime(state.getOnlineTime()); + } + + /** + * 将数据库中查出来的vo转为dto + */ + private DeviceInfo parseVoToDto(TbDeviceInfo vo) { + DeviceInfo dto = DeviceInfoMapper.M.toDto(vo); + fillDeviceInfo(vo.getDeviceId(), vo, dto); + return dto; + } + + /** + * 将数据库中查出来的vo列表转为dto列表 + */ + private List parseVoToDto(List vos) { + return vos.stream().map(d -> { + DeviceInfo dto = DeviceInfoMapper.M.toDto(d); + fillDeviceInfo(d.getDeviceId(), d, dto); + return dto; + }).collect(Collectors.toList()); + } + + @Override + public DeviceInfo findByProductKeyAndDeviceName(String productKey, String deviceName) { + return parseVoToDto(deviceInfoRepository.findByProductKeyAndDeviceName(productKey, deviceName)); + } + + @Override + public List findByParentId(String parentId) { + return parseVoToDto(deviceInfoRepository.findByParentId(parentId)); + } + + @Override + public List findByDeviceName(String deviceName) { + return parseVoToDto(deviceInfoRepository.findByDeviceName(deviceName)); + } + + @Override + public Paging findByConditions(String uid, String subUid, + String productKey, String groupId, + String state, String keyword, + int page, int size) { + String sql = "SELECT\n" + + "a.id,\n" + + "a.device_id,\n" + + "a.product_key,\n" + + "a.device_name,\n" + + "a.model,\n" + + "a.secret,\n" + + "a.parent_id,\n" + + "a.uid,\n" + + "a.state,\n" + + "a.online_time,\n" + + "a.offline_time,\n" + + "a.create_at\n" + + "FROM device_info a "; + + if (StringUtils.isNotBlank(groupId)) { + sql += " JOIN device_group_mapping b on a.device_id=b.device_id\n" + + " JOIN device_group c on b.group_id=c.id "; + } + if (StringUtils.isNotBlank(subUid)) { + sql += " JOIN device_sub_user d on d.device_id=a.device_id "; + } + + List args = new ArrayList<>(); + sql += " where 1=1 "; + if (StringUtils.isNotBlank(groupId)) { + sql += "and c.id=? "; + args.add(groupId); + } + + if (StringUtils.isNotBlank(subUid)) { + sql += "and d.uid=? "; + args.add(subUid); + } else if (StringUtils.isNotBlank(uid)) { + sql += "and a.uid=? "; + args.add(uid); + } + + if (StringUtils.isNotBlank(productKey)) { + sql += "and a.product_key=? "; + args.add(productKey); + } + + if (StringUtils.isNotBlank(state)) { + sql += "and a.state=? "; + args.add(state); + } + + if (StringUtils.isNotBlank(keyword)) { + keyword = "%" + keyword.trim() + "%"; + sql += "and (a.device_id like ? or a.device_name like ?) "; + args.add(keyword); + } + + sql += String.format("order by create_at desc limit %d,%d", (page - 1) * size, size); + + List list = jdbcTemplate.query(sql, (rs, rowNum) -> DeviceInfo.builder() + .id(rs.getString("id")) + .deviceId(rs.getString("device_id")) + .deviceName(rs.getString("device_name")) + .productKey(rs.getString("product_key")) + .model(rs.getString("model")) + .secret(rs.getString("secret")) + .parentId(rs.getString("parent_id")) + .uid(rs.getString("uid")) + .state(new DeviceInfo.State( + "online".equals(rs.getString("state")), + rs.getLong("online_time"), + rs.getLong("offline_time") + )) + .createAt(rs.getLong("create_at")) + .build(), args.toArray()); + + sql = sql.replaceAll("SELECT.*FROM", "SELECT count(*) FROM "); + sql = sql.replaceAll("order by create_at desc limit.*", ""); + Long total = jdbcTemplate.queryForObject(sql, Long.class, args); + + //把当前页的deviceId串连起来作为in的参数 + String deviceIds = list.stream().map(d -> "'" + d.getDeviceId() + "'").collect(Collectors.joining(",")); + + //取设备所属分组 + List groups = jdbcTemplate.queryForList("SELECT \n" + + "a.id,\n" + + "a.`name` \n" + + "b.device_id as deviceId \n" + + "FROM\n" + + "device_group a \n" + + "JOIN device_group_mapping b on a.id=b.group_id\n" + + String.format("WHERE b.device_id in(%s)", deviceIds), DeviceIdGroup.class); + + //取设备标签 + List tags = jdbcTemplate.queryForList("\n" + + "SELECT\n" + + "a.id,\n" + + "a.`code`,\n" + + "a.`name`,\n" + + "a.`value`\n" + + "FROM device_tag a " + + String.format("WHERE a.device_id IN(%s)", deviceIds), TbDeviceTag.class); + + for (DeviceInfo device : list) { + //设置设备分组 + Map groupMap = new HashMap<>(); + groups.stream().filter(g -> device.getDeviceId().equals(g.getDeviceId())) + .forEach(g -> groupMap.put(g.getId(), + new DeviceInfo.Group(g.getId(), g.getName()))); + device.setGroup(groupMap); + + //设置设备标签 + Map tagMap = new HashMap<>(); + tags.stream().filter(t -> device.getDeviceId().equals(t.getDeviceId())) + .forEach(t -> tagMap.put(t.getCode(), + new DeviceInfo.Tag(t.getCode(), t.getName(), t.getValue()))); + device.setTag(tagMap); + } + + return new Paging<>(total, list); + } + + @Override + public void updateTag(String deviceId, DeviceInfo.Tag tag) { + TbDeviceTag deviceTag = deviceTagRepository.findByDeviceIdAndCode(deviceId, tag.getId()); + if (deviceTag != null) { + deviceTag.setName(tag.getName()); + deviceTag.setValue(tag.getValue()); + deviceTagRepository.save(deviceTag); + } else { + deviceTagRepository.save( + TbDeviceTag.builder() + .id(UUID.randomUUID().toString()) + .code(tag.getId()) + .deviceId(deviceId) + .name(tag.getName()) + .value(tag.getValue()) + .build() + ); + } + } + + @Override + public List getDeviceStatsByCategory(String uid) { + return null; + } + + @Override + public long countByGroupId(String groupId) { + return deviceGroupMappingRepository.countByGroupId(groupId); + } + + @Override + @Transactional + public void addToGroup(String deviceId, DeviceInfo.Group group) { + String groupId = UUID.randomUUID().toString(); + deviceGroupMappingRepository.save(new TbDeviceGroupMapping(groupId, deviceId, group.getId())); + + //更新设备数量 + updateGroupDeviceCount(groupId); + } + + private void updateGroupDeviceCount(String groupId) { + //更新设备数量 + TbDeviceGroup deviceGroup = deviceGroupRepository.findById(groupId).orElse(null); + if (deviceGroup != null) { + deviceGroup.setDeviceQty((int) countByGroupId(groupId)); + deviceGroupRepository.save(deviceGroup); + } + } + + @Override + public void updateGroup(String groupId, DeviceInfo.Group group) { + deviceGroupRepository.save(new TbDeviceGroup()); + } + + @Override + @Transactional + public void removeGroup(String deviceId, String groupId) { + jdbcTemplate.update("delete device_group_mapping " + + "where device_id=? and group_id=?", deviceId, groupId); + //更新设备数量 + updateGroupDeviceCount(groupId); + } + + @Override + @Transactional + public void removeGroup(String groupId) { + jdbcTemplate.update("delete device_group_mapping " + + "where group_id=?", groupId); + //更新设备数量 + updateGroupDeviceCount(groupId); + } + + @Override + public List findByUid(String uid) { + return new ArrayList<>(); + } + + @Override + public Paging findByUid(String uid, int page, int size) { + return new Paging<>(); + } + + @Override + public long countByUid(String uid) { + return 0; + } + + @Override + public DeviceInfo findById(String s) { + return DeviceInfoMapper.M.toDto( + deviceInfoRepository.findById(s).orElse(null)); + } + + @Override + @Transactional + public DeviceInfo save(DeviceInfo data) { + TbDeviceInfo vo = deviceInfoRepository.findByDeviceId(data.getDeviceId()); + if (StringUtils.isBlank(data.getId())) { + data.setId(UUID.randomUUID().toString()); + } + if (vo == null) { + vo = new TbDeviceInfo(); + } + + ReflectUtil.copyNoNulls(data, vo); + //状态转换 + parseStateToVo(data, vo); + //保存设备信息 + deviceInfoRepository.save(vo); + + //设备分组转换 + Map groupMap = data.getGroup(); + groupMap.forEach((id, group) -> { + TbDeviceGroupMapping mapping = deviceGroupMappingRepository.findByDeviceIdAndGroupId(data.getDeviceId(), id); + if (mapping == null) { + //保存设备分组与设备对应关系 + deviceGroupMappingRepository.save(new TbDeviceGroupMapping( + UUID.randomUUID().toString(), + data.getDeviceId(), + id + )); + } + }); + + return data; + } + + @Override + public DeviceInfo add(DeviceInfo data) { + data.setCreateAt(System.currentTimeMillis()); + return save(data); + } + + @Override + public void deleteById(String s) { + deviceInfoRepository.deleteById(s); + } + + @Override + public long count() { + return deviceInfoRepository.count(); + } + + @Override + public List findAll() { + return new ArrayList<>(); + } + + @Override + public Paging findAll(int page, int size) { + return new Paging<>(); + } + + @Data + public static class DeviceIdGroup { + private String id; + private String deviceId; + private String name; + } +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/HomeDataImpl.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/HomeDataImpl.java new file mode 100644 index 00000000..89c0175d --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/HomeDataImpl.java @@ -0,0 +1,71 @@ +package cc.iotkit.data.service; + +import cc.iotkit.data.IHomeData; +import cc.iotkit.model.Paging; +import cc.iotkit.model.space.Home; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class HomeDataImpl implements IHomeData { + @Override + public Home findByUidAndCurrent(String uid, boolean current) { + return null; + } + + @Override + public Home findByUidAndId(String uid, String id) { + return null; + } + + @Override + public List findByUid(String uid) { + return null; + } + + @Override + public Paging findByUid(String uid, int page, int size) { + return null; + } + + @Override + public long countByUid(String uid) { + return 0; + } + + @Override + public Home findById(String s) { + return null; + } + + @Override + public Home save(Home data) { + return null; + } + + @Override + public Home add(Home data) { + return null; + } + + @Override + public void deleteById(String s) { + + } + + @Override + public long count() { + return 0; + } + + @Override + public List findAll() { + return null; + } + + @Override + public Paging findAll(int page, int size) { + return null; + } +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/OauthClientDataImpl.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/OauthClientDataImpl.java new file mode 100644 index 00000000..07e223cb --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/OauthClientDataImpl.java @@ -0,0 +1,51 @@ +package cc.iotkit.data.service; + +import cc.iotkit.data.IOauthClientData; +import cc.iotkit.model.OauthClient; +import cc.iotkit.model.Paging; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class OauthClientDataImpl implements IOauthClientData { + @Override + public OauthClient findByClientId(String clientId) { + return null; + } + + @Override + public OauthClient findById(String s) { + return null; + } + + @Override + public OauthClient save(OauthClient data) { + return null; + } + + @Override + public OauthClient add(OauthClient data) { + return null; + } + + @Override + public void deleteById(String s) { + + } + + @Override + public long count() { + return 0; + } + + @Override + public List findAll() { + return null; + } + + @Override + public Paging findAll(int page, int size) { + return null; + } +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/ProductDataImpl.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/ProductDataImpl.java new file mode 100644 index 00000000..827c78fb --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/ProductDataImpl.java @@ -0,0 +1,90 @@ +package cc.iotkit.data.service; + +import cc.iotkit.data.IProductData; +import cc.iotkit.data.dao.ProductRepository; +import cc.iotkit.data.model.ProductMapper; +import cc.iotkit.data.model.TbProduct; +import cc.iotkit.model.Paging; +import cc.iotkit.model.product.Product; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.data.domain.Page; +import org.springframework.data.domain.Pageable; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.UUID; + +@Service +public class ProductDataImpl implements IProductData { + + @Autowired + private ProductRepository productRepository; + + + @Override + public List findByCategory(String category) { + return ProductMapper.toDto(productRepository.findByCategory(category)); + } + + @Override + public List findByUid(String uid) { + return ProductMapper.toDto(productRepository.findByUid(uid)); + } + + @Override + public Paging findByUid(String uid, int page, int size) { + Page productPage = productRepository.findByUid(uid, + Pageable.ofSize(size).withPage(page - 1)); + return new Paging<>(productPage.getTotalElements(), + ProductMapper.toDto(productPage.getContent())); + } + + @Override + public long countByUid(String uid) { + return productRepository.countByUid(uid); + } + + @Override + public Product findById(String s) { + return ProductMapper.M.toDto(productRepository.findById(s).orElse(null)); + } + + @Override + public Product save(Product data) { + if (StringUtils.isBlank(data.getId())) { + data.setId(UUID.randomUUID().toString()); + } + productRepository.save(ProductMapper.M.toVo(data)); + return data; + } + + @Override + public Product add(Product data) { + data.setCreateAt(System.currentTimeMillis()); + return save(data); + } + + @Override + public void deleteById(String s) { + productRepository.deleteById(s); + } + + @Override + public long count() { + return productRepository.count(); + } + + @Override + public List findAll() { + return ProductMapper.toDto(productRepository.findAll()); + } + + @Override + public Paging findAll(int page, int size) { + Page productPage = productRepository.findAll( + Pageable.ofSize(size).withPage(page - 1)); + return new Paging<>(productPage.getTotalElements(), + ProductMapper.toDto(productPage.getContent())); + } +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/ProductModelDataImpl.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/ProductModelDataImpl.java new file mode 100644 index 00000000..67617af0 --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/ProductModelDataImpl.java @@ -0,0 +1,71 @@ +package cc.iotkit.data.service; + +import cc.iotkit.data.IProductModelData; +import cc.iotkit.data.dao.ProductModelRepository; +import cc.iotkit.data.model.ProductModelMapper; +import cc.iotkit.model.Paging; +import cc.iotkit.model.product.ProductModel; +import org.apache.commons.lang3.StringUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; + +@Service +public class ProductModelDataImpl implements IProductModelData { + + @Autowired + private ProductModelRepository productModelRepository; + + @Override + public ProductModel findByModel(String model) { + return ProductModelMapper.M.toDto(productModelRepository.findByModel(model)); + } + + @Override + public List findByProductKey(String productKey) { + return ProductModelMapper.toDto(productModelRepository.findByProductKey(productKey)); + } + + @Override + public ProductModel findById(String s) { + return ProductModelMapper.M.toDto(productModelRepository.findById(s).orElse(null)); + } + + @Override + public ProductModel save(ProductModel data) { + if (StringUtils.isBlank(data.getId())) { + data.setId(UUID.randomUUID().toString()); + } + data.setModifyAt(System.currentTimeMillis()); + productModelRepository.save(ProductModelMapper.M.toVo(data)); + return null; + } + + @Override + public ProductModel add(ProductModel data) { + return save(data); + } + + @Override + public void deleteById(String s) { + productModelRepository.deleteById(s); + } + + @Override + public long count() { + return productModelRepository.count(); + } + + @Override + public List findAll() { + return new ArrayList<>(); + } + + @Override + public Paging findAll(int page, int size) { + return new Paging<>(); + } +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/ProtocolComponentDataImpl.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/ProtocolComponentDataImpl.java new file mode 100644 index 00000000..3236ff4d --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/ProtocolComponentDataImpl.java @@ -0,0 +1,79 @@ +package cc.iotkit.data.service; + +import cc.iotkit.data.IProtocolComponentData; +import cc.iotkit.data.dao.ProtocolComponentRepository; +import cc.iotkit.data.model.ProtocolComponentMapper; +import cc.iotkit.model.Paging; +import cc.iotkit.model.protocol.ProtocolComponent; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +public class ProtocolComponentDataImpl implements IProtocolComponentData { + + @Autowired + private ProtocolComponentRepository protocolComponentRepository; + + @Override + public List findByState(String state) { + return ProtocolComponentMapper.toDto(protocolComponentRepository.findByState(state)); + } + + @Override + public List findByStateAndType(String state, String type) { + return new ArrayList<>(); + } + + @Override + public List findByUid(String uid) { + return null; + } + + @Override + public Paging findByUid(String uid, int page, int size) { + return null; + } + + @Override + public long countByUid(String uid) { + return 0; + } + + @Override + public ProtocolComponent findById(String s) { + return null; + } + + @Override + public ProtocolComponent save(ProtocolComponent data) { + return null; + } + + @Override + public ProtocolComponent add(ProtocolComponent data) { + return null; + } + + @Override + public void deleteById(String s) { + + } + + @Override + public long count() { + return 0; + } + + @Override + public List findAll() { + return null; + } + + @Override + public Paging findAll(int page, int size) { + return null; + } +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/ProtocolConverterDataImpl.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/ProtocolConverterDataImpl.java new file mode 100644 index 00000000..86ef7a0d --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/ProtocolConverterDataImpl.java @@ -0,0 +1,61 @@ +package cc.iotkit.data.service; + +import cc.iotkit.data.IProtocolConverterData; +import cc.iotkit.model.Paging; +import cc.iotkit.model.protocol.ProtocolConverter; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class ProtocolConverterDataImpl implements IProtocolConverterData { + @Override + public List findByUid(String uid) { + return null; + } + + @Override + public Paging findByUid(String uid, int page, int size) { + return null; + } + + @Override + public long countByUid(String uid) { + return 0; + } + + @Override + public ProtocolConverter findById(String s) { + return null; + } + + @Override + public ProtocolConverter save(ProtocolConverter data) { + return null; + } + + @Override + public ProtocolConverter add(ProtocolConverter data) { + return null; + } + + @Override + public void deleteById(String s) { + + } + + @Override + public long count() { + return 0; + } + + @Override + public List findAll() { + return null; + } + + @Override + public Paging findAll(int page, int size) { + return null; + } +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/RuleInfoDataImpl.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/RuleInfoDataImpl.java new file mode 100644 index 00000000..1fd5d3e4 --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/RuleInfoDataImpl.java @@ -0,0 +1,76 @@ +package cc.iotkit.data.service; + +import cc.iotkit.data.IRuleInfoData; +import cc.iotkit.model.Paging; +import cc.iotkit.model.rule.RuleInfo; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class RuleInfoDataImpl implements IRuleInfoData { + @Override + public List findByUidAndType(String uid, String type) { + return null; + } + + @Override + public Paging findByUidAndType(String uid, String type, int page, int size) { + return null; + } + + @Override + public Paging findByType(String type, int page, int size) { + return null; + } + + @Override + public List findByUid(String uid) { + return null; + } + + @Override + public Paging findByUid(String uid, int page, int size) { + return null; + } + + @Override + public long countByUid(String uid) { + return 0; + } + + @Override + public RuleInfo findById(String s) { + return null; + } + + @Override + public RuleInfo save(RuleInfo data) { + return null; + } + + @Override + public RuleInfo add(RuleInfo data) { + return null; + } + + @Override + public void deleteById(String s) { + + } + + @Override + public long count() { + return 0; + } + + @Override + public List findAll() { + return null; + } + + @Override + public Paging findAll(int page, int size) { + return null; + } +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/SpaceDataImpl.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/SpaceDataImpl.java new file mode 100644 index 00000000..8cf74302 --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/SpaceDataImpl.java @@ -0,0 +1,76 @@ +package cc.iotkit.data.service; + +import cc.iotkit.data.ISpaceData; +import cc.iotkit.model.Paging; +import cc.iotkit.model.space.Space; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class SpaceDataImpl implements ISpaceData { + @Override + public List findByUidOrderByCreateAtDesc(String uid) { + return null; + } + + @Override + public List findByUidAndHomeIdOrderByCreateAtDesc(String uid, String homeId) { + return null; + } + + @Override + public List findByHomeId(String homeId) { + return null; + } + + @Override + public List findByUid(String uid) { + return null; + } + + @Override + public Paging findByUid(String uid, int page, int size) { + return null; + } + + @Override + public long countByUid(String uid) { + return 0; + } + + @Override + public Space findById(String s) { + return null; + } + + @Override + public Space save(Space data) { + return null; + } + + @Override + public Space add(Space data) { + return null; + } + + @Override + public void deleteById(String s) { + + } + + @Override + public long count() { + return 0; + } + + @Override + public List findAll() { + return null; + } + + @Override + public Paging findAll(int page, int size) { + return null; + } +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/SpaceDeviceDataImpl.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/SpaceDeviceDataImpl.java new file mode 100644 index 00000000..ceeb90b5 --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/SpaceDeviceDataImpl.java @@ -0,0 +1,91 @@ +package cc.iotkit.data.service; + +import cc.iotkit.data.ISpaceDeviceData; +import cc.iotkit.model.Paging; +import cc.iotkit.model.space.SpaceDevice; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class SpaceDeviceDataImpl implements ISpaceDeviceData { + @Override + public List findByUidOrderByUseAtDesc(String uid) { + return null; + } + + @Override + public List findByUidOrderByAddAtDesc(String uid) { + return null; + } + + @Override + public List findBySpaceIdOrderByAddAtDesc(String spaceId) { + return null; + } + + @Override + public List findByUidAndSpaceIdOrderByAddAtDesc(String uid, String spaceId) { + return null; + } + + @Override + public SpaceDevice findByDeviceId(String deviceId) { + return null; + } + + @Override + public SpaceDevice findByDeviceIdAndUid(String deviceId, String uid) { + return null; + } + + @Override + public List findByUid(String uid) { + return null; + } + + @Override + public Paging findByUid(String uid, int page, int size) { + return null; + } + + @Override + public long countByUid(String uid) { + return 0; + } + + @Override + public SpaceDevice findById(String s) { + return null; + } + + @Override + public SpaceDevice save(SpaceDevice data) { + return null; + } + + @Override + public SpaceDevice add(SpaceDevice data) { + return null; + } + + @Override + public void deleteById(String s) { + + } + + @Override + public long count() { + return 0; + } + + @Override + public List findAll() { + return null; + } + + @Override + public Paging findAll(int page, int size) { + return null; + } +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/TaskInfoDataImpl.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/TaskInfoDataImpl.java new file mode 100644 index 00000000..236372d4 --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/TaskInfoDataImpl.java @@ -0,0 +1,61 @@ +package cc.iotkit.data.service; + +import cc.iotkit.data.ITaskInfoData; +import cc.iotkit.model.Paging; +import cc.iotkit.model.rule.TaskInfo; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class TaskInfoDataImpl implements ITaskInfoData { + @Override + public List findByUid(String uid) { + return null; + } + + @Override + public Paging findByUid(String uid, int page, int size) { + return null; + } + + @Override + public long countByUid(String uid) { + return 0; + } + + @Override + public TaskInfo findById(String s) { + return null; + } + + @Override + public TaskInfo save(TaskInfo data) { + return null; + } + + @Override + public TaskInfo add(TaskInfo data) { + return null; + } + + @Override + public void deleteById(String s) { + + } + + @Override + public long count() { + return 0; + } + + @Override + public List findAll() { + return null; + } + + @Override + public Paging findAll(int page, int size) { + return null; + } +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/ThingModelDataImpl.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/ThingModelDataImpl.java new file mode 100644 index 00000000..b03fd883 --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/ThingModelDataImpl.java @@ -0,0 +1,51 @@ +package cc.iotkit.data.service; + +import cc.iotkit.data.IThingModelData; +import cc.iotkit.model.Paging; +import cc.iotkit.model.product.ThingModel; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class ThingModelDataImpl implements IThingModelData { + @Override + public ThingModel findByProductKey(String productKey) { + return null; + } + + @Override + public ThingModel findById(String s) { + return null; + } + + @Override + public ThingModel save(ThingModel data) { + return null; + } + + @Override + public ThingModel add(ThingModel data) { + return null; + } + + @Override + public void deleteById(String s) { + + } + + @Override + public long count() { + return 0; + } + + @Override + public List findAll() { + return null; + } + + @Override + public Paging findAll(int page, int size) { + return null; + } +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/UserInfoDataImpl.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/UserInfoDataImpl.java new file mode 100644 index 00000000..f44c85d5 --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/UserInfoDataImpl.java @@ -0,0 +1,61 @@ +package cc.iotkit.data.service; + +import cc.iotkit.data.IUserInfoData; +import cc.iotkit.model.Paging; +import cc.iotkit.model.UserInfo; +import org.springframework.stereotype.Service; + +import java.util.List; + +@Service +public class UserInfoDataImpl implements IUserInfoData { + @Override + public UserInfo findByUid(String uid) { + return null; + } + + @Override + public List findByType(int type) { + return null; + } + + @Override + public List findByTypeAndOwnerId(int type, String ownerId) { + return null; + } + + @Override + public UserInfo findById(String s) { + return null; + } + + @Override + public UserInfo save(UserInfo data) { + return null; + } + + @Override + public UserInfo add(UserInfo data) { + return null; + } + + @Override + public void deleteById(String s) { + + } + + @Override + public long count() { + return 0; + } + + @Override + public List findAll() { + return null; + } + + @Override + public Paging findAll(int page, int size) { + return null; + } +} diff --git a/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/VirtualDeviceDataImpl.java b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/VirtualDeviceDataImpl.java new file mode 100644 index 00000000..aa82d421 --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/java/cc/iotkit/data/service/VirtualDeviceDataImpl.java @@ -0,0 +1,72 @@ +package cc.iotkit.data.service; + +import cc.iotkit.data.IVirtualDeviceData; +import cc.iotkit.model.Paging; +import cc.iotkit.model.device.VirtualDevice; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; + +@Service +public class VirtualDeviceDataImpl implements IVirtualDeviceData { + @Override + public List findByUid(String uid) { + return null; + } + + @Override + public Paging findByUid(String uid, int size, int page) { + return null; + } + + @Override + public long countByUid(String uid) { + return 0; + } + + @Override + public List findByUidAndState(String uid, String state) { + return null; + } + + @Override + public List findByTriggerAndState(String trigger, String state) { + return new ArrayList<>(); + } + + @Override + public VirtualDevice findById(String s) { + return null; + } + + @Override + public VirtualDevice save(VirtualDevice data) { + return null; + } + + @Override + public VirtualDevice add(VirtualDevice data) { + return null; + } + + @Override + public void deleteById(String s) { + + } + + @Override + public long count() { + return 0; + } + + @Override + public List findAll() { + return null; + } + + @Override + public Paging findAll(int page, int size) { + return null; + } +} diff --git a/iot-data/iot-rdb-data-service/src/main/resources/ddl.sql b/iot-data/iot-rdb-data-service/src/main/resources/ddl.sql new file mode 100644 index 00000000..78328a88 --- /dev/null +++ b/iot-data/iot-rdb-data-service/src/main/resources/ddl.sql @@ -0,0 +1,69 @@ +# 品类表 +CREATE TABLE IF NOT EXISTS category( + id varchar(32) comment "品类id", + `name` varchar(100) comment "品类名称", + createAt TIMESTAMP comment "创建时间", + PRIMARY KEY(id) +); + +# 设备表 +CREATE TABLE IF NOT EXISTS device_info( + id varchar(32), + deviceId varchar(32) COMMENT "设备ID", + productKey varchar(32) COMMENT "产品key", + deviceName varchar(32) COMMENT "设备唯一码", + model varchar(32) COMMENT "设备型号", + secret varchar(32) COMMENT "设备密钥", + parentId varchar(32) COMMENT "父级设备ID", + uid varchar(32) COMMENT "设备所属用户ID", + createAt TIMESTAMP COMMENT "创建时间", + INDEX idx_device_id (deviceId), + INDEX idx_device_name (deviceName), + PRIMARY KEY(id) +); + +# 设备子用户表,一个设备可分配给多个子用户 +CREATE TABLE IF NOT EXISTS device_sub_user( + id varchar(32), + deviceId varchar(32) COMMENT "设备ID", + uid varchar(32) COMMENT "子用户ID", + INDEX idx_device_id (deviceId), + PRIMARY KEY(id) +); + +# 设备在线状态表 +CREATE TABLE IF NOT EXISTS device_online_state( + deviceId varchar(32) COMMENT "设备ID", + `online` TINYINT COMMENT "在线状态(0:离线,1:在线)", + onlineTime TIMESTAMP COMMENT "上线时间", + offlineTime TIMESTAMP COMMENT "离线时间", + PRIMARY KEY(deviceId) +); + +# 设备关联标签表 +CREATE TABLE IF NOT EXISTS device_tag( + id varchar(32), + deviceId varchar(32) COMMENT "设备ID", + `code` varchar(32) COMMENT "标签码", + `name` varchar(32) COMMENT "标签名称", + `value` varchar(100) COMMENT "标签值", + INDEX idx_device_id (deviceId), + PRIMARY KEY(id) +); + +# 设备关联分组表 +CREATE TABLE IF NOT EXISTS device_group_mapping( + id varchar(32), + deviceId varchar(32) COMMENT "设备ID", + groupId varchar(32) COMMENT "分组码", + INDEX idx_device_id (deviceId), + PRIMARY KEY(id) +); + + + + + + + + diff --git a/iot-data-service/iot-device-dao/pom.xml b/iot-data/iot-temporal-service/pom.xml similarity index 78% rename from iot-data-service/iot-device-dao/pom.xml rename to iot-data/iot-temporal-service/pom.xml index 0e3bca2d..366f38ab 100644 --- a/iot-data-service/iot-device-dao/pom.xml +++ b/iot-data/iot-temporal-service/pom.xml @@ -3,13 +3,13 @@ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - iot-data-service + iot-data cc.iotkit - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT 4.0.0 - iot-device-dao + iot-temporal-service diff --git a/iot-data/iot-temporal-service/src/main/java/cc/iotkit/temporal/IDevicePropertyData.java b/iot-data/iot-temporal-service/src/main/java/cc/iotkit/temporal/IDevicePropertyData.java new file mode 100644 index 00000000..19d04a21 --- /dev/null +++ b/iot-data/iot-temporal-service/src/main/java/cc/iotkit/temporal/IDevicePropertyData.java @@ -0,0 +1,30 @@ +package cc.iotkit.temporal; + + +import cc.iotkit.model.device.message.DeviceProperty; + +import java.util.List; + +/** + * 设备属性时序数据接口 + */ +public interface IDevicePropertyData { + + /** + * 按时间范围取设备指定属性的历史数据 + * + * @param deviceId 设备id + * @param name 属性名称 + * @param start 开始时间戳 + * @param end 结束时间戳 + */ + List findDevicePropertyHistory(String deviceId, String name, long start, long end); + + /** + * 添加多个属性 + * + * @param properties 属性列表 + */ + void addProperties(List properties); + +} diff --git a/iot-data/iot-temporal-service/src/main/java/cc/iotkit/temporal/IRuleLogData.java b/iot-data/iot-temporal-service/src/main/java/cc/iotkit/temporal/IRuleLogData.java new file mode 100644 index 00000000..bc912ce6 --- /dev/null +++ b/iot-data/iot-temporal-service/src/main/java/cc/iotkit/temporal/IRuleLogData.java @@ -0,0 +1,14 @@ +package cc.iotkit.temporal; + +import cc.iotkit.model.Paging; +import cc.iotkit.model.rule.RuleLog; + +public interface IRuleLogData { + + void deleteByRuleId(String ruleId); + + Paging findByRuleId(String ruleId, int page, int size); + + void add(RuleLog log); + +} diff --git a/iot-data/iot-temporal-service/src/main/java/cc/iotkit/temporal/ITaskLogData.java b/iot-data/iot-temporal-service/src/main/java/cc/iotkit/temporal/ITaskLogData.java new file mode 100644 index 00000000..9f3875b7 --- /dev/null +++ b/iot-data/iot-temporal-service/src/main/java/cc/iotkit/temporal/ITaskLogData.java @@ -0,0 +1,12 @@ +package cc.iotkit.temporal; + +import cc.iotkit.model.Paging; +import cc.iotkit.model.rule.TaskLog; + +public interface ITaskLogData { + void deleteByTaskId(String taskId); + + Paging findByTaskId(String taskId, int page, int size); + + void add(TaskLog log); +} diff --git a/iot-data/iot-temporal-service/src/main/java/cc/iotkit/temporal/IThingModelMessageData.java b/iot-data/iot-temporal-service/src/main/java/cc/iotkit/temporal/IThingModelMessageData.java new file mode 100644 index 00000000..1a39000a --- /dev/null +++ b/iot-data/iot-temporal-service/src/main/java/cc/iotkit/temporal/IThingModelMessageData.java @@ -0,0 +1,35 @@ +package cc.iotkit.temporal; + +import cc.iotkit.model.Paging; +import cc.iotkit.model.device.message.ThingModelMessage; +import cc.iotkit.model.stats.TimeData; + +import java.util.List; + +public interface IThingModelMessageData { + + /** + * 按消息类型和标识符取设备消息 + * + * @param deviceId 设备id + * @param type 消息类型 + * @param identifier 标识符 + * @param page 页码 + * @param size 页大小 + */ + Paging findByTypeAndIdentifier(String deviceId, String type, + String identifier, int page, int size); + + /** + * 按用户统计时间段内上报次数 + * + * @param uid 用户id + * @param start 开始时间戳 + * @param end 结束时间戳 + */ + List getDeviceMessageStatsWithUid(String uid, long start, long end); + + void add(ThingModelMessage msg); + + long count(); +} diff --git a/iot-data/iot-temporal-service/src/main/java/cc/iotkit/temporal/IVirtualDeviceLogData.java b/iot-data/iot-temporal-service/src/main/java/cc/iotkit/temporal/IVirtualDeviceLogData.java new file mode 100644 index 00000000..319769e1 --- /dev/null +++ b/iot-data/iot-temporal-service/src/main/java/cc/iotkit/temporal/IVirtualDeviceLogData.java @@ -0,0 +1,11 @@ +package cc.iotkit.temporal; + +import cc.iotkit.model.Paging; +import cc.iotkit.model.device.VirtualDeviceLog; + +public interface IVirtualDeviceLogData { + + Paging findByVirtualDeviceId(String virtualDeviceId, int page, int size); + + void add(VirtualDeviceLog log); +} diff --git a/iot-data/pom.xml b/iot-data/pom.xml new file mode 100644 index 00000000..b41bc873 --- /dev/null +++ b/iot-data/pom.xml @@ -0,0 +1,45 @@ + + + + iotkit-parent + cc.iotkit + 0.3.3-SNAPSHOT + + 4.0.0 + pom + + + iot-model + iot-dao + iot-data-service + iot-data-cache + iot-temporal-service + iot-es-temporal-service + iot-rdb-data-service + + + iot-data + + + + + + + org.mapstruct + mapstruct + 1.4.2.Final + + + + org.mapstruct + mapstruct-processor + 1.4.2.Final + + + + + + + \ No newline at end of file diff --git a/iot-data/readme.md b/iot-data/readme.md new file mode 100644 index 00000000..b10f5cbb --- /dev/null +++ b/iot-data/readme.md @@ -0,0 +1,4 @@ +## 与数据存取相关内容的模块 + +包含:数据接口定义、数据实体类定义、关系型数据库接口实现、NoSQL数据库接口实现、数据缓存服务 + diff --git a/iot-message-bus/pom.xml b/iot-message-bus/pom.xml index f3dec2d6..db7bef82 100644 --- a/iot-message-bus/pom.xml +++ b/iot-message-bus/pom.xml @@ -5,7 +5,7 @@ iotkit-parent cc.iotkit - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT 4.0.0 diff --git a/iot-package/pom.xml b/iot-package/pom.xml index 83cf6d50..17959ca1 100644 --- a/iot-package/pom.xml +++ b/iot-package/pom.xml @@ -5,7 +5,7 @@ iotkit-parent cc.iotkit - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT 4.0.0 diff --git a/iot-rule-engine/pom.xml b/iot-rule-engine/pom.xml index d835409a..0febc8b8 100644 --- a/iot-rule-engine/pom.xml +++ b/iot-rule-engine/pom.xml @@ -5,7 +5,7 @@ iotkit-parent cc.iotkit - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT 4.0.0 diff --git a/iot-rule-engine/src/main/java/cc/iotkit/ruleengine/rule/RuleExecutor.java b/iot-rule-engine/src/main/java/cc/iotkit/ruleengine/rule/RuleExecutor.java index 96251a2c..7a679e96 100644 --- a/iot-rule-engine/src/main/java/cc/iotkit/ruleengine/rule/RuleExecutor.java +++ b/iot-rule-engine/src/main/java/cc/iotkit/ruleengine/rule/RuleExecutor.java @@ -10,12 +10,12 @@ package cc.iotkit.ruleengine.rule; import cc.iotkit.common.utils.JsonUtil; -import cc.iotkit.dao.RuleLogRepository; import cc.iotkit.model.device.message.ThingModelMessage; import cc.iotkit.model.rule.RuleLog; import cc.iotkit.ruleengine.action.Action; import cc.iotkit.ruleengine.filter.Filter; import cc.iotkit.ruleengine.listener.Listener; +import cc.iotkit.temporal.IRuleLogData; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; @@ -34,7 +34,7 @@ public class RuleExecutor { @Lazy @Autowired - private RuleLogRepository ruleLogRepository; + private IRuleLogData ruleLogData; public void execute(ThingModelMessage message, Rule rule) { if (!doListeners(message, rule)) { @@ -69,7 +69,7 @@ public class RuleExecutor { ruleLog.setContent(e.toString()); } finally { ruleLog.setLogAt(System.currentTimeMillis()); - ruleLogRepository.save(ruleLog); + ruleLogData.add(ruleLog); } } diff --git a/iot-rule-engine/src/main/java/cc/iotkit/ruleengine/rule/RuleManager.java b/iot-rule-engine/src/main/java/cc/iotkit/ruleengine/rule/RuleManager.java index 06967c9d..884b2bef 100644 --- a/iot-rule-engine/src/main/java/cc/iotkit/ruleengine/rule/RuleManager.java +++ b/iot-rule-engine/src/main/java/cc/iotkit/ruleengine/rule/RuleManager.java @@ -11,7 +11,8 @@ package cc.iotkit.ruleengine.rule; import cc.iotkit.common.utils.JsonUtil; import cc.iotkit.dao.DeviceCache; -import cc.iotkit.dao.RuleInfoRepository; +import cc.iotkit.data.IRuleInfoData; +import cc.iotkit.model.Paging; import cc.iotkit.model.rule.RuleAction; import cc.iotkit.model.rule.RuleInfo; import cc.iotkit.ruleengine.action.*; @@ -44,7 +45,7 @@ public class RuleManager { private RuleMessageHandler ruleMessageHandler; @Autowired - private RuleInfoRepository ruleInfoRepository; + private IRuleInfoData ruleInfoData; @Autowired private DeviceCache deviceCache; @@ -61,9 +62,8 @@ public class RuleManager { public void initRules() { int idx = 0; while (true) { - Page rules = ruleInfoRepository.findAll(PageRequest.of(idx, - 1000, Sort.by(Sort.Order.desc("createAt")))); - rules.get().forEach(rule -> { + Paging rules = ruleInfoData.findAll(idx, 1000); + rules.getData().forEach(rule -> { try { //不添加停止的规则 if (RuleInfo.STATE_STOPPED.equals(rule.getState())) { @@ -76,7 +76,7 @@ public class RuleManager { } }); idx++; - if (rules.getContent().size() == 0) { + if (rules.getTotal() == 0) { break; } } diff --git a/iot-rule-engine/src/main/java/cc/iotkit/ruleengine/task/TaskManager.java b/iot-rule-engine/src/main/java/cc/iotkit/ruleengine/task/TaskManager.java index e7a2405a..5ff5d25d 100644 --- a/iot-rule-engine/src/main/java/cc/iotkit/ruleengine/task/TaskManager.java +++ b/iot-rule-engine/src/main/java/cc/iotkit/ruleengine/task/TaskManager.java @@ -10,10 +10,11 @@ package cc.iotkit.ruleengine.task; import cc.iotkit.common.exception.BizException; -import cc.iotkit.dao.TaskInfoRepository; -import cc.iotkit.dao.TaskLogRepository; +import cc.iotkit.data.ITaskInfoData; +import cc.iotkit.model.Paging; import cc.iotkit.model.rule.TaskInfo; import cc.iotkit.model.rule.TaskLog; +import cc.iotkit.temporal.ITaskLogData; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.quartz.*; @@ -22,12 +23,8 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationContextAware; import org.springframework.context.annotation.Lazy; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Sort; import java.util.Date; -import java.util.Optional; import java.util.UUID; import java.util.concurrent.Executors; import java.util.concurrent.ScheduledExecutorService; @@ -39,11 +36,11 @@ public class TaskManager implements ApplicationContextAware { private ApplicationContext applicationContext; @Autowired - private TaskInfoRepository taskInfoRepository; + private ITaskInfoData taskInfoData; @Lazy @Autowired - private TaskLogRepository taskLogRepository; + private ITaskLogData taskLogData; public TaskManager() { ScheduledExecutorService executorService = Executors.newScheduledThreadPool(1); @@ -53,8 +50,8 @@ public class TaskManager implements ApplicationContextAware { public void initTask() { int idx = 0; while (true) { - Page tasks = taskInfoRepository.findAll(PageRequest.of(idx, 1000, Sort.by(Sort.Order.desc("createAt")))); - tasks.get().forEach(task -> { + Paging tasks = taskInfoData.findAll(idx, 1000); + tasks.getData().forEach(task -> { try { if (!TaskInfo.STATE_RUNNING.equals(task.getState())) { return; @@ -66,7 +63,7 @@ public class TaskManager implements ApplicationContextAware { } }); idx++; - if (tasks.getSize() == 0) { + if (tasks.getTotal() == 0) { break; } } @@ -148,25 +145,23 @@ public class TaskManager implements ApplicationContextAware { } public TaskInfo updateTaskState(String taskId, String state, String reason) { - Optional dbTask = taskInfoRepository.findById(taskId); - if (!dbTask.isPresent()) { + TaskInfo taskInfo = taskInfoData.findById(taskId); + if (taskInfo == null) { return null; } - TaskInfo taskInfo = dbTask.get(); taskInfo.setState(state); taskInfo.setReason(reason); - taskInfoRepository.save(taskInfo); + taskInfoData.save(taskInfo); return taskInfo; } public void finishTask(String taskId) { - Optional dbTask = taskInfoRepository.findById(taskId); - if (!dbTask.isPresent()) { + TaskInfo taskInfo = taskInfoData.findById(taskId); + if (taskInfo == null) { return; } - TaskInfo taskInfo = dbTask.get(); taskInfo.setState(TaskInfo.STATE_FINISHED); - taskInfoRepository.save(taskInfo); + taskInfoData.save(taskInfo); } @SneakyThrows @@ -216,7 +211,7 @@ public class TaskManager implements ApplicationContextAware { } public void addLog(String taskId, boolean success, String content) { - taskLogRepository.save(TaskLog.builder() + taskLogData.add(TaskLog.builder() .id(UUID.randomUUID().toString()) .taskId(taskId) .success(success) diff --git a/iot-standalone/pom.xml b/iot-standalone/pom.xml index ecdf563f..601f7a87 100644 --- a/iot-standalone/pom.xml +++ b/iot-standalone/pom.xml @@ -5,7 +5,7 @@ iotkit-parent cc.iotkit - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT 4.0.0 @@ -140,6 +140,21 @@ iot-message-bus + + cc.iotkit + iot-temporal-service + + + + cc.iotkit + iot-rdb-data-service + + + + cc.iotkit + iot-es-temporal-service + + diff --git a/iot-standalone/readme.txt b/iot-standalone/readme.md similarity index 100% rename from iot-standalone/readme.txt rename to iot-standalone/readme.md diff --git a/iot-standalone/src/main/java/cc/iotkit/manager/Application.java b/iot-standalone/src/main/java/cc/iotkit/Application.java similarity index 98% rename from iot-standalone/src/main/java/cc/iotkit/manager/Application.java rename to iot-standalone/src/main/java/cc/iotkit/Application.java index ebc926c4..57d37d8c 100644 --- a/iot-standalone/src/main/java/cc/iotkit/manager/Application.java +++ b/iot-standalone/src/main/java/cc/iotkit/Application.java @@ -7,7 +7,7 @@ * | Author: xw2sy@163.com * +---------------------------------------------------------------------- */ -package cc.iotkit.manager; +package cc.iotkit; import cc.iotkit.manager.config.EmbeddedElasticSearchConfig; import cc.iotkit.manager.config.EmbeddedRedisConfig; diff --git a/iot-standalone/src/main/java/cc/iotkit/manager/controller/AppController.java b/iot-standalone/src/main/java/cc/iotkit/manager/controller/AppController.java deleted file mode 100644 index 011734f9..00000000 --- a/iot-standalone/src/main/java/cc/iotkit/manager/controller/AppController.java +++ /dev/null @@ -1,101 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.manager.controller; - -import cc.iotkit.dao.AppDesignRepository; -import cc.iotkit.dao.CategoryRepository; -import cc.iotkit.dao.ProductRepository; -import cc.iotkit.manager.model.vo.AppDesignVo; -import cc.iotkit.manager.service.DataOwnerService; -import cc.iotkit.model.Paging; -import cc.iotkit.model.product.AppDesign; -import cc.iotkit.model.product.Category; -import cc.iotkit.model.product.Product; -import cc.iotkit.utils.AuthUtil; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; - -@Slf4j -@RestController -@RequestMapping("/app") -public class AppController { - - @Autowired - private ProductRepository productRepository; - @Autowired - private CategoryRepository categoryRepository; - @Autowired - private AppDesignRepository appDesignRepository; - @Autowired - private DataOwnerService dataOwnerService; - - @PostMapping("/designs") - public Paging getDesigns() { - - List appDesignVos = new ArrayList<>(); - Iterable products; - Iterable appDesigns; - if (AuthUtil.isAdmin()) { - products = productRepository.findAll(); - appDesigns = appDesignRepository.findAll(); - } else { - products = productRepository.findByUid(AuthUtil.getUserId()); - appDesigns = appDesignRepository.findByUid(AuthUtil.getUserId()); - } - - products.forEach(product -> { - Category category = categoryRepository.findById(product.getCategory()).orElse(new Category()); - AppDesignVo dhVo = AppDesignVo.builder() - .productName(product.getName()) - .cateName(category.getName()) - .productKey(product.getId()) - .build(); - appDesignVos.add(dhVo); - for (AppDesign dh : appDesigns) { - if (product.getId().equals(dh.getProductKey())) { - dhVo.setId(dh.getId()); - dhVo.setModifyAt(dh.getModifyAt()); - dhVo.setState(dh.getState()); - break; - } - } - }); - - return new Paging<>(appDesignRepository.count(), - appDesignVos); - } - - @GetMapping("/designDetail") - public AppDesign designDetail(String id) { - if (StringUtils.isBlank(id)) { - return new AppDesign(); - } - return dataOwnerService.checkOwner(appDesignRepository.findById(id) - .orElse(new AppDesign())); - } - - @PostMapping("/saveDesign") - public void saveDesign(AppDesign design) throws IOException { - design.setState(false); - design.setModifyAt(System.currentTimeMillis()); - dataOwnerService.checkOwnerSave(appDesignRepository, design); - appDesignRepository.save(design); - } - -} diff --git a/iot-standalone/src/main/java/cc/iotkit/manager/controller/DeviceController.java b/iot-standalone/src/main/java/cc/iotkit/manager/controller/DeviceController.java index 1e51850d..c36a90f6 100644 --- a/iot-standalone/src/main/java/cc/iotkit/manager/controller/DeviceController.java +++ b/iot-standalone/src/main/java/cc/iotkit/manager/controller/DeviceController.java @@ -16,12 +16,18 @@ import cc.iotkit.common.utils.ReflectUtil; import cc.iotkit.common.utils.UniqueIdUtil; import cc.iotkit.comps.service.DeviceBehaviourService; import cc.iotkit.dao.*; +import cc.iotkit.data.IDeviceConfigData; +import cc.iotkit.data.IDeviceGroupData; +import cc.iotkit.data.IDeviceInfoData; +import cc.iotkit.data.IProductData; import cc.iotkit.manager.model.query.DeviceQuery; import cc.iotkit.manager.service.DataOwnerService; import cc.iotkit.manager.service.DeferredDataConsumer; import cc.iotkit.manager.service.DeviceService; import cc.iotkit.model.device.DeviceConfig; import cc.iotkit.model.device.DeviceGroup; +import cc.iotkit.temporal.IDevicePropertyData; +import cc.iotkit.temporal.IThingModelMessageData; import cc.iotkit.utils.AuthUtil; import cc.iotkit.model.InvokeResult; import cc.iotkit.model.Paging; @@ -34,16 +40,11 @@ import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Lazy; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Sort; -import org.springframework.data.elasticsearch.core.query.Criteria; import org.springframework.web.bind.annotation.*; import org.springframework.web.context.request.async.DeferredResult; import java.util.List; import java.util.Map; -import java.util.Optional; @Slf4j @RestController @@ -53,31 +54,29 @@ public class DeviceController { @Autowired private DeviceService deviceService; @Autowired - private DeviceInfoRepository deviceInfoRepository; + private IDeviceInfoData deviceInfoData; @Autowired - private ProductRepository productRepository; - @Autowired - private DeviceDao deviceDao; + private IProductData productData; @Autowired private DataOwnerService dataOwnerService; @Autowired private ProductController productController; @Lazy @Autowired - private ThingModelMessageDao thingModelMessageDao; + private IThingModelMessageData thingModelMessageData; @Lazy @Autowired - private DevicePropertyDao devicePropertyDao; + private IDevicePropertyData devicePropertyData; @Autowired private DeviceBehaviourService behaviourService; @Autowired DeferredDataConsumer deferredDataConsumer; @Autowired - private DeviceGroupRepository deviceGroupRepository; + private IDeviceGroupData deviceGroupData; @Autowired private DeviceCache deviceCache; @Autowired - private DeviceConfigRepository deviceConfigRepository; + private IDeviceConfigData deviceConfigData; @PostMapping(Constants.API_DEVICE.INVOKE_SERVICE) public InvokeResult invokeService(@PathVariable("deviceId") String deviceId, @@ -100,45 +99,31 @@ public class DeviceController { @PathVariable("size") int size, @PathVariable("page") int page, @RequestBody DeviceQuery query) { - Criteria condition = new Criteria(); - - String uid = AuthUtil.getUserId(); + String uid = ""; + String subUid = ""; if (!AuthUtil.isAdmin()) { //客户端用户使用绑定子用户查询 if (AuthUtil.isClientUser()) { - condition = condition.and("subUid").matches(uid); + subUid = AuthUtil.getUserId(); } else { - condition = condition.and("uid").is(uid); + uid = AuthUtil.getUserId(); } } String pk = query.getProductKey(); - if (StringUtils.isNotBlank(pk)) { - condition = condition.and("productKey").is(pk); - } //关键字查询 String keyword = query.getKeyword(); - if (StringUtils.isNotBlank(keyword)) { - condition = condition.and( - Criteria.where("deviceName").contains(keyword).and("deviceId").contains(keyword) - ); - } String group = query.getGroup(); - if (StringUtils.isNotBlank(group)) { - condition = condition.and("group." + group).exists(); - } String state = query.getState(); - if (StringUtils.isNotBlank(state)) { - condition = condition.and("state.online").is(state.equals("online")); - } - return deviceDao.find(condition, size, page); + return deviceInfoData.findByConditions(uid, subUid, pk, group, + state, keyword, page, size); } @PostMapping("/create") public void createDevice(String productKey, String deviceName) { - Optional productOpt = productRepository.findById(productKey); - if (productOpt.isEmpty()) { + Product product = productData.findById(productKey); + if (product == null) { throw new BizException("the product does not exist"); } @@ -152,7 +137,7 @@ public class DeviceController { DeviceInfo device = new DeviceInfo(); device.setId(DeviceUtil.newDeviceId(deviceName)); - device.setUid(productOpt.get().getUid()); + device.setUid(product.getUid()); device.setDeviceId(device.getId()); device.setProductKey(productKey); device.setDeviceName(deviceName); @@ -160,33 +145,36 @@ public class DeviceController { device.setState(new DeviceInfo.State(false, null, null)); device.setCreateAt(System.currentTimeMillis()); - deviceInfoRepository.save(device); + deviceInfoData.save(device); } @GetMapping("/{deviceId}/children") public List getChildren(@PathVariable("deviceId") String deviceId) { - if (AuthUtil.isAdmin()) { - return deviceInfoRepository.findByParentId(deviceId); + DeviceInfo deviceInfo = deviceInfoData.findByDeviceId(deviceId); + if (deviceInfo == null) { + throw new BizException("device does not exist"); } - return deviceInfoRepository.findByParentIdAndUid(deviceId, AuthUtil.getUserId()); + + dataOwnerService.checkOwner(deviceInfo); + return deviceInfoData.findByParentId(deviceId); } @GetMapping(Constants.API_DEVICE.DETAIL) public DeviceInfo getDetail(@PathVariable("deviceId") String deviceId) { - return dataOwnerService.checkOwner(deviceInfoRepository.findById(deviceId).orElse(new DeviceInfo())); + return dataOwnerService.checkOwner(deviceInfoData.findByDeviceId(deviceId)); } @GetMapping("/{pk}/{dn}") public DeviceInfo getByPkDn(@PathVariable("pk") String pk, @PathVariable("dn") String dn) { return dataOwnerService.checkOwner( - deviceInfoRepository.findByProductKeyAndDeviceName(pk, dn)); + deviceInfoData.findByProductKeyAndDeviceName(pk, dn)); } @PostMapping("/{deviceId}/delete") public void deleteDevice(@PathVariable("deviceId") String deviceId) { deviceId = getDetail(deviceId).getDeviceId(); - deviceInfoRepository.deleteById(deviceId); + deviceInfoData.deleteById(deviceId); } @PostMapping("/{deviceId}/logs/{size}/{page}") @@ -195,7 +183,7 @@ public class DeviceController { @PathVariable("size") int size, @PathVariable("page") int page, String type, String identifier) { - return thingModelMessageDao.findByTypeAndIdentifier(deviceId, type, identifier, page, size); + return thingModelMessageData.findByTypeAndIdentifier(deviceId, type, identifier, page, size); } @GetMapping("/{deviceId}/property/{name}/{start}/{end}") @@ -204,7 +192,7 @@ public class DeviceController { @PathVariable("name") String name, @PathVariable("start") long start, @PathVariable("end") long end) { - return devicePropertyDao.findDevicePropertyHistory(deviceId, name, start, end); + return devicePropertyData.findDevicePropertyHistory(deviceId, name, start, end); } @PostMapping("/{deviceId}/unbind") @@ -222,16 +210,16 @@ public class DeviceController { @PostMapping("/{deviceId}/tag/add") public void addTag(@PathVariable("deviceId") String deviceId, DeviceInfo.Tag tag) { - DeviceInfo device = deviceInfoRepository.findByDeviceId(deviceId); + DeviceInfo device = deviceInfoData.findByDeviceId(deviceId); dataOwnerService.checkOwner(device); - deviceDao.updateTag(deviceId, tag); + deviceInfoData.updateTag(deviceId, tag); } @PostMapping("/{deviceId}/simulateSend") public void simulateSend( @PathVariable("deviceId") String deviceId, @RequestBody ThingModelMessage message) { - DeviceInfo device = deviceInfoRepository.findByDeviceId(deviceId); + DeviceInfo device = deviceInfoData.findByDeviceId(deviceId); dataOwnerService.checkOwner(device); message.setMid(UniqueIdUtil.newRequestId()); @@ -249,7 +237,7 @@ public class DeviceController { @PathVariable("clientId") String clientId ) { String uid = AuthUtil.getUserId(); - DeviceInfo deviceInfo = deviceInfoRepository.findByDeviceId(deviceId); + DeviceInfo deviceInfo = deviceInfoData.findByDeviceId(deviceId); dataOwnerService.checkOwner(deviceInfo); //按用户+客户端ID订阅 @@ -266,9 +254,7 @@ public class DeviceController { @PathVariable("page") int page, String name ) { - Page groupPage = deviceGroupRepository.findByNameLike(name, - PageRequest.of(page - 1, size, Sort.by(Sort.Order.desc("createAt")))); - return new Paging<>(groupPage.getTotalElements(), groupPage.getContent()); + return deviceGroupData.findByNameLike(name, page, size); } /** @@ -277,10 +263,10 @@ public class DeviceController { @PostMapping("/group/add") public void addGroup(DeviceGroup group) { group.setUid(AuthUtil.getUserId()); - if (deviceGroupRepository.existsById(group.getId())) { + if (deviceGroupData.findById(group.getId()) != null) { throw new BizException("group id already exists"); } - deviceGroupRepository.save(group); + deviceGroupData.save(group); } /** @@ -288,17 +274,16 @@ public class DeviceController { */ @PostMapping("/group/save") public void saveGroup(DeviceGroup group) { - Optional optGroup = deviceGroupRepository.findById(group.getId()); - if (optGroup.isEmpty()) { + DeviceGroup dbGroup = deviceGroupData.findById(group.getId()); + if (dbGroup == null) { throw new BizException("group id does not exists"); } - DeviceGroup dbGroup = optGroup.get(); dataOwnerService.checkOwner(dbGroup); ReflectUtil.copyNoNulls(group, dbGroup); - deviceGroupRepository.save(dbGroup); + deviceGroupData.save(dbGroup); //更新设备中的组信息 - deviceDao.updateGroup(dbGroup.getId(), new DeviceInfo.Group(dbGroup.getId(), dbGroup.getName())); + deviceInfoData.updateGroup(dbGroup.getId(), new DeviceInfo.Group(dbGroup.getId(), dbGroup.getName())); } /** @@ -306,17 +291,16 @@ public class DeviceController { */ @DeleteMapping("/group/delete/{id}") public void deleteGroup(@PathVariable("id") String id) { - Optional optGroup = deviceGroupRepository.findById(id); - if (optGroup.isEmpty()) { + DeviceGroup group = deviceGroupData.findById(id); + if (group == null) { throw new BizException("device group does not exist"); } - DeviceGroup group = optGroup.get(); dataOwnerService.checkOwner(group); //删除分组 - deviceGroupRepository.deleteById(id); + deviceGroupData.deleteById(id); //移除设备信息中的分组 - deviceDao.removeGroup(group.getId()); + deviceInfoData.removeGroup(group.getId()); } /** @@ -324,19 +308,18 @@ public class DeviceController { */ @PostMapping("/group/clear/{id}") public void clearGroup(@PathVariable("id") String id) { - Optional optGroup = deviceGroupRepository.findById(id); - if (optGroup.isEmpty()) { + DeviceGroup group = deviceGroupData.findById(id); + if (group == null) { throw new BizException("device group does not exist"); } - DeviceGroup group = optGroup.get(); dataOwnerService.checkOwner(group); //设备数量清零 group.setDeviceQty(0); - deviceGroupRepository.save(group); + deviceGroupData.save(group); //移除设备信息中的分组 - deviceDao.removeGroup(group.getId()); + deviceInfoData.removeGroup(group.getId()); } /** @@ -344,11 +327,10 @@ public class DeviceController { */ @PostMapping("/group/addDevices/{group}") public void addToGroup(@PathVariable("group") String group, @RequestBody List devices) { - Optional optGroup = deviceGroupRepository.findById(group); - if (optGroup.isEmpty()) { + DeviceGroup deviceGroup = deviceGroupData.findById(group); + if (deviceGroup == null) { throw new BizException("device group does not exists"); } - DeviceGroup deviceGroup = optGroup.get(); dataOwnerService.checkOwner(deviceGroup); for (String device : devices) { @@ -358,14 +340,14 @@ public class DeviceController { } dataOwnerService.checkOwner(deviceInfo); - //更新设备所在组 - deviceDao.updateGroupByDeviceId(device, new DeviceInfo.Group(group, deviceGroup.getName())); + //添加设备到组 + deviceInfoData.addToGroup(device, new DeviceInfo.Group(group, deviceGroup.getName())); } //统计组下设备数量 - long qty = deviceDao.countByGroupId(group); + long qty = deviceInfoData.countByGroupId(group); //更新组信息 deviceGroup.setDeviceQty((int) qty); - deviceGroupRepository.save(deviceGroup); + deviceGroupData.save(deviceGroup); } /** @@ -373,11 +355,10 @@ public class DeviceController { */ @PostMapping("/group/removeDevices/{group}") public void removeDevices(@PathVariable("group") String group, @RequestBody List devices) { - Optional optGroup = deviceGroupRepository.findById(group); - if (optGroup.isEmpty()) { + DeviceGroup deviceGroup = deviceGroupData.findById(group); + if (deviceGroup == null) { throw new BizException("device group does not exists"); } - DeviceGroup deviceGroup = optGroup.get(); dataOwnerService.checkOwner(deviceGroup); for (String device : devices) { @@ -388,13 +369,13 @@ public class DeviceController { dataOwnerService.checkOwner(deviceInfo); //删除设备所在组 - deviceDao.removeGroup(device, group); + deviceInfoData.removeGroup(device, group); } //统计组下设备数量 - long qty = deviceDao.countByGroupId(group); + long qty = deviceInfoData.countByGroupId(group); //更新组信息 deviceGroup.setDeviceQty((int) qty); - deviceGroupRepository.save(deviceGroup); + deviceGroupData.save(deviceGroup); } /** @@ -405,7 +386,7 @@ public class DeviceController { DeviceInfo deviceInfo = deviceCache.get(deviceId); dataOwnerService.checkOwner(deviceInfo); - DeviceConfig deviceConfig = deviceConfigRepository.findByDeviceId(deviceId); + DeviceConfig deviceConfig = deviceConfigData.findByDeviceId(deviceId); if (deviceConfig == null) { deviceConfig = DeviceConfig.builder() .deviceId(deviceId) @@ -418,7 +399,7 @@ public class DeviceController { deviceConfig.setConfig(config); } - deviceConfigRepository.save(deviceConfig); + deviceConfigData.save(deviceConfig); } /** @@ -428,7 +409,7 @@ public class DeviceController { public DeviceConfig getConfig(@PathVariable("deviceId") String deviceId) { DeviceInfo deviceInfo = deviceCache.get(deviceId); dataOwnerService.checkOwner(deviceInfo); - return deviceConfigRepository.findByDeviceId(deviceId); + return deviceConfigData.findByDeviceId(deviceId); } /** diff --git a/iot-standalone/src/main/java/cc/iotkit/manager/controller/ProductController.java b/iot-standalone/src/main/java/cc/iotkit/manager/controller/ProductController.java index 65acc4c2..09b37054 100644 --- a/iot-standalone/src/main/java/cc/iotkit/manager/controller/ProductController.java +++ b/iot-standalone/src/main/java/cc/iotkit/manager/controller/ProductController.java @@ -11,7 +11,10 @@ package cc.iotkit.manager.controller; import cc.iotkit.common.exception.BizException; import cc.iotkit.common.utils.JsonUtil; -import cc.iotkit.dao.*; +import cc.iotkit.data.ICategoryData; +import cc.iotkit.data.IProductData; +import cc.iotkit.data.IProductModelData; +import cc.iotkit.data.IThingModelData; import cc.iotkit.manager.config.AliyunConfig; import cc.iotkit.manager.service.DataOwnerService; import cc.iotkit.model.Paging; @@ -26,17 +29,12 @@ import com.aliyun.oss.OSSClientBuilder; import com.aliyun.oss.model.PutObjectResult; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Sort; -import org.springframework.data.elasticsearch.core.query.Criteria; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import java.util.ArrayList; import java.util.Date; import java.util.List; -import java.util.Optional; @Slf4j @RestController @@ -44,19 +42,17 @@ import java.util.Optional; public class ProductController { @Autowired - private ProductRepository productRepository; + private IProductData productData; @Autowired - private ThingModelRepository thingModelRepository; + private IThingModelData thingModelData; @Autowired - private CategoryRepository categoryRepository; + private ICategoryData categoryData; @Autowired private DataOwnerService dataOwnerService; @Autowired private AliyunConfig aliyunConfig; @Autowired - private ProductModelRepository productModelRepository; - @Autowired - private CommonDao commonDao; + private IProductModelData productModelData; private OSS ossClient; @@ -64,70 +60,63 @@ public class ProductController { @PostMapping("/list/{size}/{page}") public Paging getProducts( @PathVariable("size") int size, - @PathVariable("page") int page, - String id) { - Criteria criteria = new Criteria(); - - if (StringUtils.isNotBlank(id)) { - criteria = criteria.and("id").is(id); - } + @PathVariable("page") int page) { if (!AuthUtil.isAdmin()) { - criteria = criteria.and("uid").is(AuthUtil.getUserId()); + return productData.findByUid(AuthUtil.getUserId(), page - 1, size); } - return commonDao.pagedFind(Product.class, criteria, Sort.Order.desc("createAt"), size, page); + + return productData.findAll(page - 1, size); } @PostMapping("/save") public void save(Product product) { - dataOwnerService.checkOwnerSave(productRepository, product); + dataOwnerService.checkOwnerSave(productData, product); if (product.getCreateAt() == null) { product.setCreateAt(System.currentTimeMillis()); } - productRepository.save(product); + productData.save(product); } @GetMapping("/{productKey}") public Product getProduct(@PathVariable("productKey") String productKey) { - return dataOwnerService.checkOwner(productRepository.findById(productKey).orElse(new Product())); + return dataOwnerService.checkOwner(productData.findById(productKey)); } @GetMapping("/thingModel/{productKey}") public ThingModel getThingModel(@PathVariable("productKey") String productKey) { productKey = getProduct(productKey).getId(); - return thingModelRepository.findById(productKey).orElse(new ThingModel(productKey)); + return thingModelData.findById(productKey); } @PostMapping("/thingModel/save") public void saveThingModel(String productKey, String model) { productKey = getProduct(productKey).getId(); - thingModelRepository.save(new ThingModel(productKey, productKey, JsonUtil.parse(model, ThingModel.Model.class))); + thingModelData.save(new ThingModel(productKey, productKey, JsonUtil.parse(model, ThingModel.Model.class))); } @PostMapping("/thingModel/{productKey}/delete") public void deleteThingModel(String productKey) { productKey = getProduct(productKey).getId(); - thingModelRepository.deleteById(productKey); + thingModelData.deleteById(productKey); } @GetMapping("/categories") public List getCategories() { - List list = new ArrayList<>(); - categoryRepository.findAll().forEach(list::add); - return list; + return categoryData.findAll(); } @SaCheckRole("iot_admin") @PostMapping("/saveCategory") public void saveCategory(Category cate) { cate.setCreateAt(System.currentTimeMillis()); - categoryRepository.save(cate); + categoryData.save(cate); } @SaCheckRole("iot_admin") @PostMapping("/delCategory") public void delCategory(String id) { - categoryRepository.deleteById(id); + categoryData.deleteById(id); } @SneakyThrows @@ -155,26 +144,26 @@ public class ProductController { @GetMapping("/{productKey}/models") public List getModels(@PathVariable("productKey") String productKey) { - dataOwnerService.checkOwner(productRepository, productKey); - return productModelRepository.findByProductKey(productKey); + dataOwnerService.checkOwner(productData, productKey); + return productModelData.findByProductKey(productKey); } @PostMapping("/saveProductModel") public void saveProductModel(ProductModel productModel) { String model = productModel.getModel(); String productKey = productModel.getProductKey(); - Optional optProduct = productRepository.findById(productKey); - if (!optProduct.isPresent()) { + Product product = productData.findById(productKey); + if (product == null) { throw new BizException("product does not exist"); } - dataOwnerService.checkOwner(optProduct.get()); + dataOwnerService.checkOwner(product); - ProductModel oldScript = productModelRepository.findByModel(model); + ProductModel oldScript = productModelData.findByModel(model); if (oldScript != null && !oldScript.getProductKey().equals(productKey)) { throw new BizException("model already exists"); } productModel.setModifyAt(System.currentTimeMillis()); - productModelRepository.save(productModel); + productModelData.save(productModel); } } diff --git a/iot-standalone/src/main/java/cc/iotkit/manager/controller/ProtocolController.java b/iot-standalone/src/main/java/cc/iotkit/manager/controller/ProtocolController.java index 598cc455..02b90996 100644 --- a/iot-standalone/src/main/java/cc/iotkit/manager/controller/ProtocolController.java +++ b/iot-standalone/src/main/java/cc/iotkit/manager/controller/ProtocolController.java @@ -14,20 +14,17 @@ import cc.iotkit.common.utils.JsonUtil; import cc.iotkit.common.utils.ReflectUtil; import cc.iotkit.comps.ComponentManager; import cc.iotkit.comps.config.ComponentConfig; -import cc.iotkit.dao.ProtocolComponentRepository; -import cc.iotkit.dao.ProtocolConverterRepository; -import cc.iotkit.dao.UserInfoRepository; +import cc.iotkit.data.IProtocolComponentData; +import cc.iotkit.data.IProtocolConverterData; +import cc.iotkit.data.IUserInfoData; import cc.iotkit.manager.service.DataOwnerService; -import cc.iotkit.utils.AuthUtil; import cc.iotkit.model.Paging; import cc.iotkit.model.protocol.ProtocolComponent; import cc.iotkit.model.protocol.ProtocolConverter; +import cc.iotkit.utils.AuthUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Sort; import org.springframework.util.StringUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; @@ -35,7 +32,7 @@ import org.springframework.web.multipart.MultipartFile; import java.io.File; import java.io.IOException; import java.nio.file.*; -import java.util.Optional; +import java.util.Objects; import java.util.UUID; @Slf4j @@ -47,16 +44,16 @@ public class ProtocolController { private ComponentConfig componentConfig; @Autowired - private ProtocolComponentRepository protocolComponentRepository; + private IProtocolComponentData protocolComponentData; @Autowired - private ProtocolConverterRepository protocolConverterRepository; + private IProtocolConverterData protocolConverterData; @Autowired private DataOwnerService dataOwnerService; @Autowired - private UserInfoRepository userInfoRepository; + private IUserInfoData userInfoData; @Autowired private ComponentManager componentManager; @@ -69,7 +66,7 @@ public class ProtocolController { throw new BizException("file is null"); } log.info("saving upload jar file:{}", file.getName()); - String fileName = StringUtils.cleanPath(file.getOriginalFilename()); + String fileName = StringUtils.cleanPath(Objects.requireNonNull(file.getOriginalFilename())); try { if (StringUtils.hasLength(id)) { getAndCheckComponent(id); @@ -97,14 +94,14 @@ public class ProtocolController { throw new BizException("component jar file does not exist"); } - Optional optComponent = protocolComponentRepository.findById(id); - if (optComponent.isPresent()) { + ProtocolComponent protocolComponent = protocolComponentData.findById(id); + if (protocolComponent == null) { throw new BizException("component already exists"); } try { component.setCreateAt(System.currentTimeMillis()); component.setUid(AuthUtil.getUserId()); - protocolComponentRepository.save(component); + protocolComponentData.save(component); } catch (Throwable e) { throw new BizException("add protocol component error", e); } @@ -126,7 +123,7 @@ public class ProtocolController { try { componentManager.deRegister(id); - protocolComponentRepository.save(component); + protocolComponentData.save(component); } catch (Throwable e) { throw new BizException("add protocol component error", e); } @@ -163,11 +160,10 @@ public class ProtocolController { } private ProtocolComponent getAndCheckComponent(@PathVariable("id") String id) { - Optional optComponent = protocolComponentRepository.findById(id); - if (!optComponent.isPresent()) { + ProtocolComponent oldComponent = protocolComponentData.findById(id); + if (oldComponent == null) { throw new BizException("the component does not exists"); } - ProtocolComponent oldComponent = optComponent.get(); dataOwnerService.checkOwner(oldComponent); return oldComponent; } @@ -190,7 +186,7 @@ public class ProtocolController { } catch (NoSuchFileException e) { log.warn("delete component script error", e); } - protocolComponentRepository.deleteById(component.getId()); + protocolComponentData.deleteById(component.getId()); } catch (Throwable e) { throw new BizException("delete protocol component error", e); } @@ -200,22 +196,19 @@ public class ProtocolController { public Paging getComponents( @PathVariable("size") int size, @PathVariable("page") int page) { - Page components = protocolComponentRepository.findAll( - PageRequest.of(page - 1, size, Sort.by(Sort.Order.desc("createAt")))); - components.getContent().forEach(c -> c.setState( + Paging components = protocolComponentData.findAll(page - 1, size); + components.getData().forEach(c -> c.setState( componentManager.isRunning(c.getId()) ? ProtocolComponent.STATE_RUNNING : ProtocolComponent.STATE_STOPPED )); - return new Paging<>(components.getTotalElements(), components.getContent()); + return components; } @PostMapping("/converters/{size}/{page}") public Paging getConverters( @PathVariable("size") int size, @PathVariable("page") int page) { - Page converters = protocolConverterRepository.findAll( - PageRequest.of(page - 1, size, Sort.by(Sort.Order.desc("createAt")))); - return new Paging<>(converters.getTotalElements(), converters.getContent()); + return protocolConverterData.findAll(page - 1, size); } @PostMapping("/addConverter") @@ -224,7 +217,7 @@ public class ProtocolController { converter.setId(null); converter.setCreateAt(System.currentTimeMillis()); converter.setUid(AuthUtil.getUserId()); - protocolConverterRepository.save(converter); + protocolConverterData.save(converter); } catch (Throwable e) { throw new BizException("add protocol converter error", e); } @@ -235,19 +228,18 @@ public class ProtocolController { ProtocolConverter oldConverter = getAndCheckConverter(converter.getId()); converter = ReflectUtil.copyNoNulls(converter, oldConverter); try { - protocolConverterRepository.save(converter); + protocolConverterData.save(converter); } catch (Throwable e) { throw new BizException("add protocol converter error", e); } } private ProtocolConverter getAndCheckConverter(String id) { - Optional optConverter = protocolConverterRepository.findById(id); - if (!optConverter.isPresent()) { + ProtocolConverter converter = protocolConverterData.findById(id); + if (converter == null) { throw new BizException("the protocol converter does not exists"); } - ProtocolConverter converter = optConverter.get(); dataOwnerService.checkOwner(converter); return converter; } @@ -296,7 +288,7 @@ public class ProtocolController { } catch (NoSuchFileException e) { log.warn("delete converter script error", e); } - protocolConverterRepository.deleteById(id); + protocolConverterData.deleteById(id); } catch (Throwable e) { throw new BizException("delete protocol converter error", e); } @@ -319,7 +311,7 @@ public class ProtocolController { componentManager.deRegister(id); component.setState(ProtocolComponent.STATE_STOPPED); } - protocolComponentRepository.save(component); + protocolComponentData.save(component); } } diff --git a/iot-standalone/src/main/java/cc/iotkit/manager/controller/RuleEngineController.java b/iot-standalone/src/main/java/cc/iotkit/manager/controller/RuleEngineController.java index 1e90784b..0666463d 100644 --- a/iot-standalone/src/main/java/cc/iotkit/manager/controller/RuleEngineController.java +++ b/iot-standalone/src/main/java/cc/iotkit/manager/controller/RuleEngineController.java @@ -11,9 +11,9 @@ package cc.iotkit.manager.controller; import cc.iotkit.common.exception.BizException; import cc.iotkit.common.utils.ReflectUtil; -import cc.iotkit.dao.*; +import cc.iotkit.data.IRuleInfoData; +import cc.iotkit.data.ITaskInfoData; import cc.iotkit.manager.service.DataOwnerService; -import cc.iotkit.utils.AuthUtil; import cc.iotkit.model.Paging; import cc.iotkit.model.rule.RuleInfo; import cc.iotkit.model.rule.RuleLog; @@ -21,17 +21,16 @@ import cc.iotkit.model.rule.TaskInfo; import cc.iotkit.model.rule.TaskLog; import cc.iotkit.ruleengine.rule.RuleManager; import cc.iotkit.ruleengine.task.TaskManager; +import cc.iotkit.temporal.IRuleLogData; +import cc.iotkit.temporal.ITaskLogData; +import cc.iotkit.utils.AuthUtil; import lombok.extern.slf4j.Slf4j; import org.apache.commons.lang3.StringUtils; import org.quartz.SchedulerException; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.context.annotation.Lazy; -import org.springframework.data.domain.*; import org.springframework.web.bind.annotation.*; -import java.util.ArrayList; import java.util.List; -import java.util.Optional; import java.util.UUID; @Slf4j @@ -40,14 +39,13 @@ import java.util.UUID; public class RuleEngineController { @Autowired - private TaskInfoRepository taskInfoRepository; + private ITaskInfoData taskInfoData; @Autowired - private RuleInfoRepository ruleInfoRepository; + private IRuleInfoData ruleInfoData; - @Lazy @Autowired - private RuleLogRepository ruleLogRepository; + private IRuleLogData ruleLogData; @Autowired private DataOwnerService dataOwnerService; @@ -58,9 +56,8 @@ public class RuleEngineController { @Autowired private RuleManager ruleManager; - @Lazy @Autowired - private TaskLogRepository taskLogRepository; + private ITaskLogData taskLogData; @PostMapping("/rules/{type}/{size}/{page}") public Paging rules( @@ -70,13 +67,11 @@ public class RuleEngineController { ) { RuleInfo ruleInfo = new RuleInfo(); ruleInfo.setType(type); - Page rules; if (AuthUtil.isAdmin()) { - rules = ruleInfoRepository.findByType(type, Pageable.ofSize(size).withPage(page - 1)); + return ruleInfoData.findByType(type, page - 1, size); } else { - rules = ruleInfoRepository.findByUidAndType(AuthUtil.getUserId(), type, Pageable.ofSize(size).withPage(page - 1)); + return ruleInfoData.findByUidAndType(AuthUtil.getUserId(), type, page - 1, size); } - return new Paging<>(rules.getTotalElements(), rules.getContent()); } @PostMapping("/rule/save") @@ -86,14 +81,13 @@ public class RuleEngineController { rule.setState(RuleInfo.STATE_STOPPED); rule.setCreateAt(System.currentTimeMillis()); rule.setUid(AuthUtil.getUserId()); - ruleInfoRepository.save(rule); + ruleInfoData.save(rule); ruleManager.add(rule); } else { - Optional oldRule = ruleInfoRepository.findById(rule.getId()); - if (!oldRule.isPresent()) { + RuleInfo ruleInfo = ruleInfoData.findById(rule.getId()); + if (ruleInfo == null) { throw new BizException("Rule does not exist"); } - RuleInfo ruleInfo = oldRule.get(); if (RuleInfo.STATE_RUNNING.equals(ruleInfo.getState())) { throw new BizException("Rule is running"); } @@ -106,47 +100,44 @@ public class RuleEngineController { ruleInfo.setName(rule.getName()); ruleInfo.setDesc(rule.getDesc()); - ruleInfoRepository.save(ruleInfo); + ruleInfoData.save(ruleInfo); } } @PostMapping("/rule/{ruleId}/pause") public void pauseRule(@PathVariable("ruleId") String ruleId) { - Optional ruleOpt = ruleInfoRepository.findById(ruleId); - if (ruleOpt.isEmpty()) { + RuleInfo ruleInfo = ruleInfoData.findById(ruleId); + if (ruleInfo == null) { throw new BizException("Rule does not exist"); } - RuleInfo ruleInfo = ruleOpt.get(); dataOwnerService.checkOwner(ruleInfo); ruleInfo.setState(RuleInfo.STATE_STOPPED); - ruleInfoRepository.save(ruleInfo); + ruleInfoData.save(ruleInfo); ruleManager.pause(ruleInfo.getId()); } @PostMapping("/rule/{ruleId}/resume") public void resumeRule(@PathVariable("ruleId") String ruleId) { - Optional ruleOpt = ruleInfoRepository.findById(ruleId); - if (ruleOpt.isEmpty()) { + RuleInfo ruleInfo = ruleInfoData.findById(ruleId); + if (ruleInfo == null) { throw new BizException("Rule does not exist"); } - RuleInfo ruleInfo = ruleOpt.get(); dataOwnerService.checkOwner(ruleInfo); ruleInfo.setState(RuleInfo.STATE_RUNNING); - ruleInfoRepository.save(ruleInfo); + ruleInfoData.save(ruleInfo); ruleManager.resume(ruleInfo); } @DeleteMapping("/rule/{ruleId}/delete") public void deleteRule(@PathVariable("ruleId") String ruleId) { - Optional ruleOpt = ruleInfoRepository.findById(ruleId); - if (ruleOpt.isEmpty()) { + RuleInfo ruleInfo = ruleInfoData.findById(ruleId); + if (ruleInfo == null) { throw new BizException("Rule does not exist"); } - RuleInfo ruleInfo = ruleOpt.get(); dataOwnerService.checkOwner(ruleInfo); - ruleInfoRepository.delete(ruleInfo); + ruleInfoData.deleteById(ruleInfo.getId()); ruleManager.remove(ruleInfo.getId()); - ruleLogRepository.deleteByRuleId(ruleId); + ruleLogData.deleteByRuleId(ruleId); } @PostMapping("/rule/{ruleId}/logs/{size}/{page}") @@ -157,24 +148,20 @@ public class RuleEngineController { ) { RuleLog ruleLog = new RuleLog(); ruleLog.setRuleId(ruleId); - Page ruleLogs = ruleLogRepository.findByRuleId(ruleId, - PageRequest.of(page - 1, size, Sort.by(Sort.Order.desc("logAt")))); - return new Paging<>(ruleLogs.getTotalElements(), ruleLogs.getContent()); + return ruleLogData.findByRuleId(ruleId, page - 1, size); } @DeleteMapping("/rule/{ruleId}/logs/clear") public void clearRuleLogs(@PathVariable("ruleId") String ruleId) { - ruleLogRepository.deleteByRuleId(ruleId); + ruleLogData.deleteByRuleId(ruleId); } @PostMapping("/tasks") public List tasks() { - List list = new ArrayList<>(); if (AuthUtil.isAdmin()) { - taskInfoRepository.findAll().forEach(list::add); - return list; + return taskInfoData.findAll(); } - return taskInfoRepository.findByUid(AuthUtil.getUserId()); + return taskInfoData.findByUid(AuthUtil.getUserId()); } @PostMapping("/saveTask") @@ -185,46 +172,43 @@ public class RuleEngineController { taskInfo.setCreateAt(System.currentTimeMillis()); taskInfo.setState(TaskInfo.STATE_STOP); } else { - Optional taskOpt = taskInfoRepository.findById(taskInfo.getId()); - if (taskOpt.isEmpty()) { + TaskInfo oldTask = taskInfoData.findById(taskInfo.getId()); + if (oldTask == null) { throw new BizException("Task does not exist"); } - TaskInfo oldTask = taskOpt.get(); taskInfo = ReflectUtil.copyNoNulls(taskInfo, oldTask); dataOwnerService.checkOwner(taskInfo); } - taskInfoRepository.save(taskInfo); + taskInfoData.save(taskInfo); } @PostMapping("/task/{taskId}/pause") public void pauseTask(@PathVariable("taskId") String taskId) { - Optional optionalTaskInfo = taskInfoRepository.findById(taskId); - if (optionalTaskInfo.isEmpty()) { + TaskInfo taskInfo = taskInfoData.findById(taskId); + if (taskInfo == null) { throw new BizException("Task does not exist"); } - dataOwnerService.checkOwner(optionalTaskInfo.get()); + dataOwnerService.checkOwner(taskInfo); taskManager.pauseTask(taskId, "stop by " + AuthUtil.getUserId()); } @PostMapping("/task/{taskId}/resume") public void resumeTask(@PathVariable("taskId") String taskId) { - Optional optionalTaskInfo = taskInfoRepository.findById(taskId); - if (optionalTaskInfo.isEmpty()) { + TaskInfo taskInfo = taskInfoData.findById(taskId); + if (taskInfo == null) { throw new BizException("Task does not exist"); } - dataOwnerService.checkOwner(optionalTaskInfo.get()); + dataOwnerService.checkOwner(taskInfo); taskManager.resumeTask(taskId, "resume by " + AuthUtil.getUserId()); } @PostMapping("/task/{taskId}/renew") public void renewTask(@PathVariable("taskId") String taskId) { - Optional optionalTaskInfo = taskInfoRepository.findById(taskId); - if (optionalTaskInfo.isEmpty()) { + TaskInfo taskInfo = taskInfoData.findById(taskId); + if (taskInfo == null) { throw new BizException("Task does not exist"); } - TaskInfo taskInfo = optionalTaskInfo.get(); - dataOwnerService.checkOwner(taskInfo); try { taskManager.renewTask(taskInfo); @@ -238,16 +222,15 @@ public class RuleEngineController { @DeleteMapping("/task/{taskId}/delete") public void deleteTask(@PathVariable("taskId") String taskId) { - Optional optionalTaskInfo = taskInfoRepository.findById(taskId); - if (optionalTaskInfo.isEmpty()) { + TaskInfo taskInfo = taskInfoData.findById(taskId); + if (taskInfo == null) { throw new BizException("Task does not exist"); } - TaskInfo taskInfo = optionalTaskInfo.get(); dataOwnerService.checkOwner(taskInfo); taskManager.deleteTask(taskId, "delete by " + AuthUtil.getUserId()); - taskInfoRepository.deleteById(taskId); - taskLogRepository.deleteByTaskId(taskId); + taskInfoData.deleteById(taskId); + taskLogData.deleteByTaskId(taskId); } @PostMapping("/task/{taskId}/logs/{size}/{page}") @@ -258,14 +241,12 @@ public class RuleEngineController { ) { TaskLog taskLog = new TaskLog(); taskLog.setTaskId(taskId); - Page taskLogs = taskLogRepository.findByTaskId(taskId, - PageRequest.of(page - 1, size, Sort.by(Sort.Order.desc("logAt")))); - return new Paging<>(taskLogs.getTotalElements(), taskLogs.getContent()); + return taskLogData.findByTaskId(taskId, page - 1, size); } @DeleteMapping("/task/{taskId}/logs/clear") public void clearTaskLogs(@PathVariable("taskId") String taskId) { - taskLogRepository.deleteByTaskId(taskId); + taskLogData.deleteByTaskId(taskId); } } diff --git a/iot-standalone/src/main/java/cc/iotkit/manager/controller/SpaceController.java b/iot-standalone/src/main/java/cc/iotkit/manager/controller/SpaceController.java index 6f3edf42..90f598b0 100644 --- a/iot-standalone/src/main/java/cc/iotkit/manager/controller/SpaceController.java +++ b/iot-standalone/src/main/java/cc/iotkit/manager/controller/SpaceController.java @@ -10,8 +10,8 @@ package cc.iotkit.manager.controller; import cc.iotkit.common.exception.BizException; -import cc.iotkit.dao.HomeRepository; -import cc.iotkit.dao.SpaceRepository; +import cc.iotkit.data.IHomeData; +import cc.iotkit.data.ISpaceData; import cc.iotkit.manager.service.DataOwnerService; import cc.iotkit.utils.AuthUtil; import cc.iotkit.model.space.Home; @@ -21,7 +21,6 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; import java.util.List; -import java.util.Optional; @RestController @@ -29,9 +28,9 @@ import java.util.Optional; public class SpaceController { @Autowired - private SpaceRepository spaceRepository; + private ISpaceData spaceData; @Autowired - private HomeRepository homeRepository; + private IHomeData homeData; @Autowired private DataOwnerService dataOwnerService; @@ -40,7 +39,7 @@ public class SpaceController { */ @GetMapping("/currentHome") public Home getCurrentHome() { - return homeRepository.findByUidAndCurrent(AuthUtil.getUserId(), true); + return homeData.findByUidAndCurrent(AuthUtil.getUserId(), true); } /** @@ -48,11 +47,10 @@ public class SpaceController { */ @PostMapping("/saveHome/{id}") public void saveHome(@PathVariable("id") String id, Home home) { - Optional optHome = homeRepository.findById(id); - if (!optHome.isPresent()) { + Home oldHome = homeData.findById(id); + if (home==null) { throw new BizException("home does not exist"); } - Home oldHome = optHome.get(); dataOwnerService.checkOwner(oldHome); if (StringUtils.isNotBlank(home.getName())) { oldHome.setName(home.getName()); @@ -60,7 +58,7 @@ public class SpaceController { if (StringUtils.isNotBlank(home.getAddress())) { oldHome.setName(home.getAddress()); } - homeRepository.save(oldHome); + homeData.save(oldHome); } /** @@ -68,7 +66,7 @@ public class SpaceController { */ @GetMapping("/spaces/{homeId}") public List getSpaces(@PathVariable("homeId") String homeId) { - return spaceRepository.findByUidAndHomeIdOrderByCreateAtDesc(AuthUtil.getUserId(), homeId); + return spaceData.findByUidAndHomeIdOrderByCreateAtDesc(AuthUtil.getUserId(), homeId); } /** @@ -77,11 +75,11 @@ public class SpaceController { @PostMapping("/addSpace") public void addSpace(String name) { String uid = AuthUtil.getUserId(); - Home currHome = homeRepository.findByUidAndCurrent(uid, true); + Home currHome = homeData.findByUidAndCurrent(uid, true); if (currHome == null) { throw new BizException("current home does not exist"); } - spaceRepository.save(Space.builder() + spaceData.save(Space.builder() .homeId(currHome.getId()) .name(name) .uid(uid) @@ -92,24 +90,24 @@ public class SpaceController { @DeleteMapping("/delSpace/{id}") public void delSpace(@PathVariable("id") String id) { checkExistAndOwner(id); - spaceRepository.deleteById(id); + spaceData.deleteById(id); } @PostMapping("/saveSpace/{id}") public void saveSpace(@PathVariable("id") String id, String name) { Space oldSpace = checkExistAndOwner(id); oldSpace.setName(name); - spaceRepository.save(oldSpace); + spaceData.save(oldSpace); } private Space checkExistAndOwner(String id) { - Optional optSpace = spaceRepository.findById(id); - if (!optSpace.isPresent()) { + Space space = spaceData.findById(id); + if (space == null) { throw new BizException("space does not exist"); } - dataOwnerService.checkOwner(optSpace.get()); - return optSpace.get(); + dataOwnerService.checkOwner(space); + return space; } } diff --git a/iot-standalone/src/main/java/cc/iotkit/manager/controller/SpaceDeviceController.java b/iot-standalone/src/main/java/cc/iotkit/manager/controller/SpaceDeviceController.java index 697da87b..3f415dd3 100644 --- a/iot-standalone/src/main/java/cc/iotkit/manager/controller/SpaceDeviceController.java +++ b/iot-standalone/src/main/java/cc/iotkit/manager/controller/SpaceDeviceController.java @@ -12,6 +12,10 @@ package cc.iotkit.manager.controller; import cc.iotkit.common.Constants; import cc.iotkit.common.exception.BizException; import cc.iotkit.dao.*; +import cc.iotkit.data.IDeviceInfoData; +import cc.iotkit.data.ISpaceData; +import cc.iotkit.data.ISpaceDeviceData; +import cc.iotkit.data.IUserInfoData; import cc.iotkit.manager.model.vo.FindDeviceVo; import cc.iotkit.manager.model.vo.SpaceDeviceVo; import cc.iotkit.manager.service.DataOwnerService; @@ -38,9 +42,9 @@ import java.util.stream.Collectors; public class SpaceDeviceController { @Autowired - private SpaceDeviceRepository spaceDeviceRepository; + private ISpaceDeviceData spaceDeviceData; @Autowired - private DeviceInfoRepository deviceInfoRepository; + private IDeviceInfoData deviceInfoData; @Autowired private DeviceCache deviceCache; @Autowired @@ -50,18 +54,18 @@ public class SpaceDeviceController { @Autowired private SpaceCache spaceCache; @Autowired - private SpaceRepository spaceRepository; + private ISpaceData spaceData; @Autowired private DataOwnerService dataOwnerService; @Autowired - private UserInfoRepository userInfoRepository; + private IUserInfoData userInfoData; /** * 我最近使用的设备列表 */ @GetMapping(Constants.API_SPACE.RECENT_DEVICES) public List getMyRecentDevices() { - List spaceDevices = spaceDeviceRepository.findByUidOrderByUseAtDesc(AuthUtil.getUserId()); + List spaceDevices = spaceDeviceData.findByUidOrderByUseAtDesc(AuthUtil.getUserId()); return spaceDevices.stream().map((this::parseSpaceDevice)).collect(Collectors.toList()); } @@ -76,17 +80,17 @@ public class SpaceDeviceController { List spaceDevices; if ("all".equals(spaceId)) { //全部设备 - spaceDevices = spaceDeviceRepository.findByUidOrderByUseAtDesc(uid); + spaceDevices = spaceDeviceData.findByUidOrderByUseAtDesc(uid); } else { //按空间获取 - spaceDevices = spaceDeviceRepository. + spaceDevices = spaceDeviceData. findByUidAndSpaceIdOrderByAddAtDesc(uid, spaceId); } return spaceDevices.stream().map((this::parseSpaceDevice)).collect(Collectors.toList()); } private SpaceDeviceVo parseSpaceDevice(SpaceDevice sd) { - DeviceInfo device = deviceInfoRepository.findByDeviceId(sd.getDeviceId()); + DeviceInfo device = deviceInfoData.findByDeviceId(sd.getDeviceId()); Space space = spaceCache.getSpace(sd.getSpaceId()); Product product = productCache.findById(device.getProductKey()); Category category = categoryCache.getById(product.getCategory()); @@ -115,7 +119,7 @@ public class SpaceDeviceController { */ @GetMapping("/{userId}/devices") public List getDevices(@PathVariable("userId") String userId) { - List spaceDevices = spaceDeviceRepository.findByUid(userId); + List spaceDevices = spaceDeviceData.findByUid(userId); return spaceDevices.stream().map((this::parseSpaceDevice)).collect(Collectors.toList()); } @@ -128,8 +132,12 @@ public class SpaceDeviceController { throw new BizException("mac is blank"); } + if (mac.trim().length() < 3) { + throw new BizException("mac 长度不能小于3"); + } + List findDeviceVos = new ArrayList<>(); - List devices = deviceInfoRepository.findByDeviceName(mac); + List devices = deviceInfoData.findByDeviceName(mac); if (devices == null) { return findDeviceVos; } @@ -138,14 +146,14 @@ public class SpaceDeviceController { List subDevices = new ArrayList<>(); for (DeviceInfo device : devices) { if (device.getParentId() == null) { - subDevices = deviceInfoRepository.findByParentId(device.getDeviceId()); + subDevices = deviceInfoData.findByParentId(device.getDeviceId()); } } devices.addAll(subDevices); //查找空间设备 for (DeviceInfo device : devices) { - SpaceDevice spaceDevice = spaceDeviceRepository.findByDeviceId(device.getDeviceId()); + SpaceDevice spaceDevice = spaceDeviceData.findByDeviceId(device.getDeviceId()); if (spaceDevice == null) { //没有被其它人占用 findDeviceVos.add(getFindDeviceVo(device)); @@ -175,23 +183,21 @@ public class SpaceDeviceController { @PostMapping(Constants.API_SPACE.ADD_DEVICE) public void addDevice(SpaceDevice device) { String deviceId = device.getDeviceId(); - DeviceInfo deviceInfo = deviceInfoRepository.findByDeviceId(deviceId); + DeviceInfo deviceInfo = deviceInfoData.findByDeviceId(deviceId); if (deviceInfo == null) { throw new BizException("device does not exist"); } String spaceId = device.getSpaceId(); - Optional optSpace = spaceRepository.findById(spaceId); - if (!optSpace.isPresent()) { + Space space = spaceData.findById(spaceId); + if (space == null) { throw new BizException("space does not exist"); } - SpaceDevice oldSpaceDevice = spaceDeviceRepository.findByDeviceId(deviceId); + SpaceDevice oldSpaceDevice = spaceDeviceData.findByDeviceId(deviceId); if (oldSpaceDevice != null) { throw new BizException("device has been added"); } - Space space = optSpace.get(); - SpaceDevice spaceDevice = SpaceDevice.builder() .deviceId(deviceId) .spaceId(spaceId) @@ -201,7 +207,7 @@ public class SpaceDeviceController { .uid(AuthUtil.getUserId()) .addAt(System.currentTimeMillis()) .build(); - spaceDeviceRepository.save(spaceDevice); + spaceDeviceData.save(spaceDevice); //更新设备子用户列表 List subUid = deviceInfo.getSubUid(); @@ -211,8 +217,8 @@ public class SpaceDeviceController { } String uid = AuthUtil.getUserId(); - Optional optUser = userInfoRepository.findById(uid); - if (!optUser.isPresent()) { + UserInfo userInfo = userInfoData.findById(uid); + if (userInfo == null) { throw new BizException("user does not exist"); } if (!subUid.contains(uid)) { @@ -220,14 +226,14 @@ public class SpaceDeviceController { } //更新设备标签,标识设备是用的哪个第三方平台 - List platforms = optUser.get().getUsePlatforms(); + List platforms = userInfo.getUsePlatforms(); Map tags = deviceInfo.getTag(); for (String platform : platforms) { Constants.ThirdPlatform thirdPlatform = Constants.ThirdPlatform.valueOf(platform); tags.put(platform, new DeviceInfo.Tag(platform, thirdPlatform.desc, "是")); } - deviceInfoRepository.save(deviceInfo); + deviceInfoData.save(deviceInfo); } /** @@ -236,20 +242,20 @@ public class SpaceDeviceController { @DeleteMapping(Constants.API_SPACE.REMOVE_DEVICE) public void removeDevice(String deviceId) { String uid = AuthUtil.getUserId(); - SpaceDevice spaceDevice = spaceDeviceRepository.findByDeviceIdAndUid(deviceId, uid); + SpaceDevice spaceDevice = spaceDeviceData.findByDeviceIdAndUid(deviceId, uid); if (spaceDevice == null) { throw new BizException("space device does not exist"); } dataOwnerService.checkOwner(spaceDevice); - spaceDeviceRepository.deleteById(spaceDevice.getId()); - DeviceInfo deviceInfo = deviceInfoRepository.findByDeviceId(deviceId); - Optional optUser = userInfoRepository.findById(uid); - if (optUser.isEmpty()) { + spaceDeviceData.deleteById(spaceDevice.getId()); + DeviceInfo deviceInfo = deviceInfoData.findByDeviceId(deviceId); + UserInfo userInfo = userInfoData.findById(uid); + if (userInfo == null) { throw new BizException("user does not exist"); } - List platforms = optUser.get().getUsePlatforms(); + List platforms = userInfo.getUsePlatforms(); List subUid = deviceInfo.getSubUid(); subUid.remove(uid); //删除设备标签 @@ -257,7 +263,7 @@ public class SpaceDeviceController { deviceInfo.getTag().remove(platform); } - deviceInfoRepository.save(deviceInfo); + deviceInfoData.save(deviceInfo); } /** @@ -266,14 +272,13 @@ public class SpaceDeviceController { @PostMapping(Constants.API_SPACE.SAVE_DEVICE) public void saveDevice(SpaceDevice spaceDevice) { dataOwnerService.checkOwner(spaceDevice); - Optional optData = spaceDeviceRepository.findById(spaceDevice.getId()); - if (optData.isEmpty()) { + SpaceDevice oldData = spaceDeviceData.findById(spaceDevice.getId()); + if (oldData == null) { throw new BizException("space device does not exist"); } - SpaceDevice oldData = optData.get(); oldData.setName(spaceDevice.getName()); oldData.setSpaceId(spaceDevice.getSpaceId()); - spaceDeviceRepository.save(oldData); + spaceDeviceData.save(oldData); } /** @@ -282,10 +287,10 @@ public class SpaceDeviceController { @GetMapping(Constants.API_SPACE.GET_DEVICE) public SpaceDeviceVo getSpaceDevice(@PathVariable("deviceId") String deviceId) { String uid = AuthUtil.getUserId(); - SpaceDevice spaceDevice = spaceDeviceRepository.findByDeviceIdAndUid(deviceId, uid); + SpaceDevice spaceDevice = spaceDeviceData.findByDeviceIdAndUid(deviceId, uid); //更新设备使用时间 spaceDevice.setUseAt(System.currentTimeMillis()); - spaceDeviceRepository.save(spaceDevice); + spaceDeviceData.save(spaceDevice); return parseSpaceDevice(spaceDevice); } @@ -295,7 +300,7 @@ public class SpaceDeviceController { */ @PostMapping(Constants.API_SPACE.SET_OPEN_UID) public void setOpenUid(String deviceId, String platform, String openUid) { - SpaceDevice spaceDevice = spaceDeviceRepository.findByDeviceId(deviceId); + SpaceDevice spaceDevice = spaceDeviceData.findByDeviceId(deviceId); if (spaceDevice == null) { throw new BizException("space device does not exist"); } @@ -304,12 +309,12 @@ public class SpaceDeviceController { dataOwnerService.checkOwner(spaceDevice); //找到设备 - DeviceInfo deviceInfo = deviceInfoRepository.findByDeviceId(deviceId); + DeviceInfo deviceInfo = deviceInfoData.findByDeviceId(deviceId); Map tags = deviceInfo.getTag(); String openUidName = platform + "OpenUid"; //给设备添加对应平台openUid的设备标签 Constants.ThirdOpenUid thirdOpenUid = Constants.ThirdOpenUid.valueOf(openUidName); tags.put(openUidName, new DeviceInfo.Tag(openUidName, thirdOpenUid.desc, openUid)); - deviceInfoRepository.save(deviceInfo); + deviceInfoData.save(deviceInfo); } } diff --git a/iot-standalone/src/main/java/cc/iotkit/manager/controller/StatsController.java b/iot-standalone/src/main/java/cc/iotkit/manager/controller/StatsController.java index 0ca07431..dfecb930 100644 --- a/iot-standalone/src/main/java/cc/iotkit/manager/controller/StatsController.java +++ b/iot-standalone/src/main/java/cc/iotkit/manager/controller/StatsController.java @@ -10,7 +10,11 @@ package cc.iotkit.manager.controller; import cc.iotkit.dao.*; +import cc.iotkit.data.ICategoryData; +import cc.iotkit.data.IDeviceInfoData; +import cc.iotkit.data.IProductData; import cc.iotkit.manager.model.stats.MainStats; +import cc.iotkit.temporal.IThingModelMessageData; import cc.iotkit.utils.AuthUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -24,15 +28,13 @@ import org.springframework.web.bind.annotation.RestController; public class StatsController { @Autowired - private CategoryRepository categoryRepository; + private ICategoryData ICategoryData; @Autowired - private ProductRepository productRepository; + private IProductData productData; @Autowired - private DeviceInfoRepository deviceInfoRepository; + private IDeviceInfoData deviceInfoData; @Autowired - private DeviceReportRepository deviceReportRepository; - @Autowired - private DeviceReportDao deviceReportDao; + private IThingModelMessageData thingModelMessageData; @Autowired private DeviceCache deviceCache; @@ -43,21 +45,21 @@ public class StatsController { long now = System.currentTimeMillis(); if (AuthUtil.isAdmin()) { - mainStats.setCategoryTotal(categoryRepository.count()); - mainStats.setProductTotal(productRepository.count()); - mainStats.setDeviceTotal(deviceInfoRepository.count()); - mainStats.setReportTotal(deviceReportRepository.count()); + mainStats.setCategoryTotal(ICategoryData.count()); + mainStats.setProductTotal(productData.count()); + mainStats.setDeviceTotal(deviceInfoData.count()); + mainStats.setReportTotal(thingModelMessageData.count()); //上报数据统计 - mainStats.setReportDataStats(deviceReportDao.getDeviceMessageStats(now - 48 * 3600 * 1000, now)); + mainStats.setReportDataStats(thingModelMessageData.getDeviceMessageStatsWithUid(null, now - 48 * 3600 * 1000, now)); //产品数量统计 mainStats.setDeviceStatsOfCategory(deviceCache.getDeviceStatsByCategory("")); } else { - mainStats.setCategoryTotal(categoryRepository.count()); - mainStats.setProductTotal(productRepository.countByUid(uid)); - mainStats.setDeviceTotal(deviceInfoRepository.countByUid(uid)); - mainStats.setReportTotal(deviceReportRepository.countByUid(uid)); + mainStats.setCategoryTotal(ICategoryData.count()); + mainStats.setProductTotal(productData.countByUid(uid)); + mainStats.setDeviceTotal(deviceInfoData.countByUid(uid)); +// mainStats.setReportTotal(deviceReportRepository.countByUid(uid)); //上报数据统计 - mainStats.setReportDataStats(deviceReportDao.getDeviceMessageStatsWithUid(uid, now - 48 * 3600 * 1000, now)); + mainStats.setReportDataStats(thingModelMessageData.getDeviceMessageStatsWithUid(uid, now - 48 * 3600 * 1000, now)); //产品数量统计 mainStats.setDeviceStatsOfCategory(deviceCache.getDeviceStatsByCategory(uid)); } diff --git a/iot-standalone/src/main/java/cc/iotkit/manager/controller/ThirdAuthController.java b/iot-standalone/src/main/java/cc/iotkit/manager/controller/ThirdAuthController.java deleted file mode 100644 index 594cc51a..00000000 --- a/iot-standalone/src/main/java/cc/iotkit/manager/controller/ThirdAuthController.java +++ /dev/null @@ -1,115 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.manager.controller; - -import cc.iotkit.common.utils.JsonUtil; -import cc.iotkit.dao.ThirdUserSessionRepository; -import cc.iotkit.model.ThirdUserSession; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; -import okhttp3.*; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import java.io.IOException; -import java.io.UnsupportedEncodingException; -import java.net.URLEncoder; -import java.util.Base64; -import java.util.Enumeration; - -/** - * 第三方接入认证 - */ -@Slf4j -@RestController -@RequestMapping("/auth") -public class ThirdAuthController { - - private final OkHttpClient client = new OkHttpClient().newBuilder().build(); - - @Autowired - private ThirdUserSessionRepository thirdUserSessionRepository; - - @PostMapping("/token/{type}") - public void getToken( - @PathVariable("type") String type, - HttpServletRequest servletRequest, - HttpServletResponse servletResponse) - throws UnsupportedEncodingException { - - log.info("request:{}", JsonUtil.toJsonString(servletRequest.getParameterMap())); - Enumeration names = servletRequest.getParameterNames(); - StringBuilder sb = new StringBuilder(); - while (names.hasMoreElements()) { - String name = names.nextElement(); - sb.append(name).append("=") - .append(URLEncoder.encode(servletRequest.getParameter(name), "UTF-8")) - .append("&"); - } - - MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded"); - RequestBody body = RequestBody.create(mediaType, sb.toString()); - - Request.Builder builder = new Request.Builder(); - Request request = builder.url("https://auth.iotkit.cc/realms/iotkit/protocol/openid-connect/token") - .method("POST", body) - .build(); - log.info("send request body:{}", sb.toString()); - - Response response; - try { - response = client.newCall(request).execute(); - servletResponse.setStatus(response.code()); - Headers headers = response.headers(); - for (String name : headers.names()) { - log.info("response header,name:{},value:{}", name, headers.get(name)); - servletResponse.setHeader(name, headers.get(name)); - } - String bodyStr = response.body().string(); - log.info("response body:{}", bodyStr); - TokenInfo tokenInfo = JsonUtil.parse(bodyStr, TokenInfo.class); - String accessToken = tokenInfo.getAccess_token(); - String[] tokenParts = accessToken.split("\\."); - Base64.Decoder decoder = Base64.getUrlDecoder(); - String payloadStr = new String(decoder.decode(tokenParts[1])); - TokenPayload payload = JsonUtil.parse(payloadStr, TokenPayload.class); - log.info("token payload:{}", payloadStr); - - //保存用户授权token - String uid = payload.getSub(); - thirdUserSessionRepository.save(ThirdUserSession.builder() - .uid(uid) - .token(accessToken) - .type(type) - .authAt(System.currentTimeMillis()) - .build()); - - servletResponse.setContentType("application/json"); - servletResponse.getWriter().write(bodyStr); - } catch (IOException e) { - log.error("request error", e); - } - } - - @Data - public static class TokenInfo { - private String access_token; - } - - @Data - public static class TokenPayload { - private String sub; - } -} diff --git a/iot-standalone/src/main/java/cc/iotkit/manager/controller/UserInfoController.java b/iot-standalone/src/main/java/cc/iotkit/manager/controller/UserInfoController.java index be6c04c7..4025de79 100644 --- a/iot-standalone/src/main/java/cc/iotkit/manager/controller/UserInfoController.java +++ b/iot-standalone/src/main/java/cc/iotkit/manager/controller/UserInfoController.java @@ -12,10 +12,9 @@ package cc.iotkit.manager.controller; import cc.iotkit.common.Constants; import cc.iotkit.common.exception.BizException; import cc.iotkit.common.utils.ReflectUtil; -import cc.iotkit.dao.AligenieDeviceRepository; -import cc.iotkit.dao.HomeRepository; -import cc.iotkit.dao.SpaceRepository; -import cc.iotkit.dao.UserInfoRepository; +import cc.iotkit.data.IHomeData; +import cc.iotkit.data.ISpaceData; +import cc.iotkit.data.IUserInfoData; import cc.iotkit.manager.service.DataOwnerService; import cc.iotkit.model.UserInfo; import cc.iotkit.model.space.Home; @@ -27,7 +26,6 @@ import org.springframework.web.bind.annotation.*; import java.util.Collections; import java.util.List; -import java.util.Optional; import java.util.UUID; @RestController @@ -35,15 +33,13 @@ import java.util.UUID; public class UserInfoController { @Autowired - private UserInfoRepository userInfoRepository; - @Autowired - private AligenieDeviceRepository aligenieDeviceRepository; + private IUserInfoData userInfoData; @Autowired private DataOwnerService ownerService; @Autowired - private HomeRepository homeRepository; + private IHomeData homeData; @Autowired - private SpaceRepository spaceRepository; + private ISpaceData spaceData; /** @@ -52,7 +48,7 @@ public class UserInfoController { @SaCheckRole("iot_admin") @GetMapping("/platform/users") public List getPlatformUsers() { - return userInfoRepository.findByType(UserInfo.USER_TYPE_PLATFORM); + return userInfoData.findByType(UserInfo.USER_TYPE_PLATFORM); } /** @@ -68,7 +64,7 @@ public class UserInfoController { user.setPermissions(Collections.singletonList(Constants.PERMISSION_WRITE)); user.setCreateAt(System.currentTimeMillis()); user.setSecret(AuthUtil.enCryptPwd(Constants.PWD_SYSTEM_USER)); - userInfoRepository.save(user); + userInfoData.save(user); } catch (Throwable e) { throw new BizException("add platform user error", e); } @@ -79,7 +75,7 @@ public class UserInfoController { */ @GetMapping("/client/users") public List clientUsers() { - return userInfoRepository.findByTypeAndOwnerId(UserInfo.USER_TYPE_CLIENT, AuthUtil.getUserId()); + return userInfoData.findByTypeAndOwnerId(UserInfo.USER_TYPE_CLIENT, AuthUtil.getUserId()); } /** @@ -92,10 +88,10 @@ public class UserInfoController { user.setRoles(Collections.singletonList(Constants.ROLE_CLIENT)); user.setCreateAt(System.currentTimeMillis()); user.setSecret(AuthUtil.enCryptPwd(Constants.PWD_CLIENT_USER)); - user = userInfoRepository.save(user); + user = userInfoData.save(user); //添加默认家庭 - Home home = homeRepository.save(Home.builder() + Home home = homeData.save(Home.builder() .name("我的家庭") .address("") .deviceNum(0) @@ -106,7 +102,7 @@ public class UserInfoController { //添加默认房间 for (String name : new String[]{"客厅", "卧室", "厨房"}) { - spaceRepository.save(Space.builder() + spaceData.save(Space.builder() .homeId(home.getId()) .name(name) .uid(user.getId()) @@ -117,27 +113,23 @@ public class UserInfoController { @PostMapping("/client/user/{id}/delete") public void deleteClientUser(@PathVariable("id") String id) { - Optional optUser = userInfoRepository.findById(id); - if (optUser.isEmpty()) { + UserInfo user = userInfoData.findById(id); + if (user == null) { throw new BizException("user does not exist"); } - UserInfo user = optUser.get(); - ownerService.checkOwner(user); - userInfoRepository.deleteById(id); - aligenieDeviceRepository.deleteByUid(user.getId()); + userInfoData.deleteById(id); } @PostMapping("/client/user/save") public void saveClientUser(@RequestBody UserInfo user) { - Optional userOpt = userInfoRepository.findById(user.getId()); - if (userOpt.isEmpty()) { + UserInfo oldUser = userInfoData.findById(user.getId()); + if (oldUser == null) { return; } - UserInfo oldUser = userOpt.get(); if (!AuthUtil.getUserId().equals(oldUser.getOwnerId())) { throw new BizException("无权限操作"); } ReflectUtil.copyNoNulls(user, oldUser); - userInfoRepository.save(oldUser); + userInfoData.save(oldUser); } } diff --git a/iot-standalone/src/main/java/cc/iotkit/manager/controller/VirtualDeviceController.java b/iot-standalone/src/main/java/cc/iotkit/manager/controller/VirtualDeviceController.java index 6e51344b..35253121 100644 --- a/iot-standalone/src/main/java/cc/iotkit/manager/controller/VirtualDeviceController.java +++ b/iot-standalone/src/main/java/cc/iotkit/manager/controller/VirtualDeviceController.java @@ -11,25 +11,19 @@ package cc.iotkit.manager.controller; import cc.iotkit.common.exception.BizException; import cc.iotkit.common.utils.ReflectUtil; -import cc.iotkit.dao.VirtualDeviceLogRepository; -import cc.iotkit.dao.VirtualDeviceRepository; +import cc.iotkit.data.IVirtualDeviceData; import cc.iotkit.manager.service.DataOwnerService; import cc.iotkit.model.Paging; import cc.iotkit.model.device.VirtualDevice; import cc.iotkit.model.device.VirtualDeviceLog; -import cc.iotkit.model.rule.TaskLog; +import cc.iotkit.temporal.IVirtualDeviceLogData; import cc.iotkit.utils.AuthUtil; import cc.iotkit.virtualdevice.VirtualManager; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Page; -import org.springframework.data.domain.PageRequest; -import org.springframework.data.domain.Pageable; -import org.springframework.data.domain.Sort; import org.springframework.web.bind.annotation.*; import java.util.List; -import java.util.Optional; @Slf4j @RestController @@ -39,25 +33,23 @@ public class VirtualDeviceController { @Autowired private DataOwnerService dataOwnerService; @Autowired - private VirtualDeviceRepository virtualDeviceRepository; + private IVirtualDeviceData virtualDeviceData; @Autowired private VirtualManager virtualManager; @Autowired - private VirtualDeviceLogRepository virtualDeviceLogRepository; + private IVirtualDeviceLogData virtualDeviceLogData; @PostMapping("/list/{size}/{page}") public Paging getDevices( @PathVariable("size") int size, @PathVariable("page") int page) { String uid = AuthUtil.getUserId(); - Pageable pageable = PageRequest.of(page - 1, size, Sort.by(Sort.Order.desc("createAt"))); - Page virtualDevices; + page = page - 1; if (AuthUtil.isAdmin()) { - virtualDevices = virtualDeviceRepository.findAll(pageable); + return virtualDeviceData.findAll(page, size); } else { - virtualDevices = virtualDeviceRepository.findByUid(uid, pageable); + return virtualDeviceData.findByUid(uid, page, size); } - return new Paging<>(virtualDevices.getTotalElements(), virtualDevices.getContent()); } /** @@ -69,7 +61,7 @@ public class VirtualDeviceController { virtualDevice.setUid(AuthUtil.getUserId()); virtualDevice.setState(VirtualDevice.STATE_STOPPED); virtualDevice.setCreateAt(System.currentTimeMillis()); - virtualDeviceRepository.save(virtualDevice); + virtualDeviceData.save(virtualDevice); } /** @@ -81,7 +73,7 @@ public class VirtualDeviceController { ReflectUtil.copyNoNulls(virtualDevice, oldData, "name", "productKey", "type", "trigger", "triggerExpression"); virtualDevice.setState(VirtualDevice.STATE_STOPPED); - virtualDeviceRepository.save(virtualDevice); + virtualDeviceData.save(virtualDevice); } /** @@ -108,7 +100,7 @@ public class VirtualDeviceController { } else { virtualManager.remove(oldData); } - virtualDeviceRepository.save(oldData); + virtualDeviceData.save(oldData); } /** @@ -117,7 +109,7 @@ public class VirtualDeviceController { @DeleteMapping("/{id}/delete") public void delete(@PathVariable("id") String id) { checkOwner(id); - virtualDeviceRepository.deleteById(id); + virtualDeviceData.deleteById(id); } /** @@ -127,7 +119,7 @@ public class VirtualDeviceController { public void saveScript(@PathVariable("id") String id, String script) { VirtualDevice old = checkOwner(id); old.setScript(script); - virtualDeviceRepository.save(old); + virtualDeviceData.save(old); } /** @@ -137,7 +129,7 @@ public class VirtualDeviceController { public void saveDevices(@PathVariable("id") String id, @RequestBody List devices) { VirtualDevice old = checkOwner(id); old.setDevices(devices); - virtualDeviceRepository.save(old); + virtualDeviceData.save(old); } /** @@ -158,17 +150,14 @@ public class VirtualDeviceController { @PathVariable("size") int size, @PathVariable("page") int page ) { - Page logs = virtualDeviceLogRepository.findByVirtualDeviceId(id, - PageRequest.of(page - 1, size, Sort.by(Sort.Order.desc("logAt")))); - return new Paging<>(logs.getTotalElements(), logs.getContent()); + return virtualDeviceLogData.findByVirtualDeviceId(id, page - 1, size); } private VirtualDevice checkOwner(String id) { - Optional old = virtualDeviceRepository.findById(id); - if (old.isEmpty()) { + VirtualDevice oldData = virtualDeviceData.findById(id); + if (oldData == null) { throw new BizException("record does not exist"); } - VirtualDevice oldData = old.get(); dataOwnerService.checkOwner(oldData); return oldData; diff --git a/iot-standalone/src/main/java/cc/iotkit/manager/controller/aligenie/AligenieDeviceController.java b/iot-standalone/src/main/java/cc/iotkit/manager/controller/aligenie/AligenieDeviceController.java deleted file mode 100644 index d033da5e..00000000 --- a/iot-standalone/src/main/java/cc/iotkit/manager/controller/aligenie/AligenieDeviceController.java +++ /dev/null @@ -1,98 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.manager.controller.aligenie; - -import cc.iotkit.common.exception.BizException; -import cc.iotkit.dao.*; -import cc.iotkit.manager.service.DataOwnerService; -import cc.iotkit.manager.service.DeviceService; -import cc.iotkit.model.UserInfo; -import cc.iotkit.model.aligenie.AligenieDevice; -import cc.iotkit.model.aligenie.AligenieProduct; -import cc.iotkit.model.device.DeviceInfo; -import lombok.Data; -import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.*; - -import java.util.List; -import java.util.Optional; - -@Slf4j -@RestController -@RequestMapping("/aligenieDevice") -public class AligenieDeviceController { - - @Autowired - private AligenieDeviceRepository aligenieDeviceRepository; - @Autowired - private UserInfoRepository userInfoRepository; - @Autowired - private DataOwnerService ownerService; - @Autowired - private DeviceInfoRepository deviceInfoRepository; - @Autowired - private AligenieProductRepository aligenieProductRepository; - @Autowired - private DeviceService deviceService; - @Autowired - private DeviceDao deviceDao; - - @GetMapping("/list/{uid}") - public List getDevices(@PathVariable("uid") String uid) { - UserInfo user = userInfoRepository.findById(uid).get(); - ownerService.checkOwner(user); - return aligenieDeviceRepository.findByUid(uid); - } - - @PostMapping("/bind/{uid}") - public void bind(@PathVariable("uid") String uid, - @RequestBody List devices) { - Optional optUser = userInfoRepository.findById(uid); - if (optUser.isEmpty()) { - throw new BizException("user does not exist"); - } - UserInfo user = optUser.get(); - ownerService.checkOwner(user); - String token = ""; - List aligenieDevices = aligenieDeviceRepository.findByUid(uid); - //先清除待删除的标签 - for (AligenieDevice alDevice : aligenieDevices) { - deviceDao.setTagNull(alDevice.getDeviceId(), "aligenie"); - token = alDevice.getToken(); - } - //删除原有的设备 - aligenieDeviceRepository.deleteByUid(uid); - - for (Device device : devices) { - DeviceInfo deviceInfo = deviceInfoRepository.findById(device.getDeviceId()).get(); - AligenieProduct product = aligenieProductRepository.findByProductKey(deviceInfo.getProductKey()); - aligenieDeviceRepository.save(AligenieDevice.builder() - .uid(user.getId()) - .token(token) - .deviceId(device.getDeviceId()) - .productId(product.getProductId()) - .spaceName("客厅") - .name(device.getName()) - .build()); - - //设置天猫精灵接入标签 - deviceDao.updateTag(device.getDeviceId(), - new DeviceInfo.Tag("aligenie", "天猫精灵接入", "是")); - } - } - - @Data - public static class Device { - private String deviceId; - private String name; - } - -} diff --git a/iot-standalone/src/main/java/cc/iotkit/manager/controller/aligenie/AligenieProductController.java b/iot-standalone/src/main/java/cc/iotkit/manager/controller/aligenie/AligenieProductController.java deleted file mode 100644 index 7d10d3b5..00000000 --- a/iot-standalone/src/main/java/cc/iotkit/manager/controller/aligenie/AligenieProductController.java +++ /dev/null @@ -1,49 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.manager.controller.aligenie; - -import cc.iotkit.dao.AligenieProductRepository; -import cc.iotkit.manager.service.DataOwnerService; -import cc.iotkit.utils.AuthUtil; -import cc.iotkit.model.aligenie.AligenieProduct; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; - -@RestController -@RequestMapping("/aligenie/product") -public class AligenieProductController { - - @Autowired - private DataOwnerService dataOwnerService; - - @Autowired - private AligenieProductRepository aligenieProductRepository; - - - @GetMapping("/products") - public List products() { - return aligenieProductRepository.findByUid(AuthUtil.getUserId()); - } - - @PostMapping("/save") - public void save(AligenieProduct product) { - if (product.getCreateAt() == null) { - product.setCreateAt(System.currentTimeMillis()); - } - - dataOwnerService.checkOwnerSave(aligenieProductRepository, product); - aligenieProductRepository.save(product); - } -} diff --git a/iot-standalone/src/main/java/cc/iotkit/manager/controller/api/AccountController.java b/iot-standalone/src/main/java/cc/iotkit/manager/controller/api/AccountController.java deleted file mode 100644 index 78161f3f..00000000 --- a/iot-standalone/src/main/java/cc/iotkit/manager/controller/api/AccountController.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.manager.controller.api; - -import cc.iotkit.dao.AppInfoRepository; -import cc.iotkit.dao.HomeRepository; -import cc.iotkit.dao.UserInfoRepository; -import cc.iotkit.utils.AuthUtil; -import cc.iotkit.model.AppInfo; -import cc.iotkit.model.space.Home; -import cc.iotkit.model.UserInfo; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Example; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -@RestController("api-sys") -@RequestMapping("/api/account") -public class AccountController { - - @Autowired - private HomeRepository homeRepository; - @Autowired - private UserInfoRepository userInfoRepository; - @Autowired - private AppInfoRepository appInfoRepository; - - @PostMapping("/setHomeId") - public void setHomeId(String homeId) { - if (StringUtils.isBlank(homeId)) { - throw new RuntimeException("homeId is blank."); - } - Home home = homeRepository.findById(homeId).orElseThrow(() -> new RuntimeException("home is not found.")); - String uid = AuthUtil.getUserId(); - if (!uid.equals(home.getUid())) { - throw new RuntimeException("用户不属于该家庭"); - } - - UserInfo userInfo = userInfoRepository.findByUid(uid); - if (userInfo == null) { - throw new RuntimeException("用户信息不存在"); - } - userInfo.setCurrHomeId(homeId); - userInfoRepository.save(userInfo); - } - - @GetMapping("/getUserInfo") - public UserInfo getUserInfo() { - return userInfoRepository.findById(AuthUtil.getUserId()).orElseThrow(() -> - new RuntimeException("用户不存在") - ); - } - - @GetMapping("/getAppInfo") - public AppInfo getAppInfo() { - return appInfoRepository.findAll().iterator().next(); - } -} diff --git a/iot-standalone/src/main/java/cc/iotkit/manager/controller/api/DeviceController.java b/iot-standalone/src/main/java/cc/iotkit/manager/controller/api/DeviceController.java deleted file mode 100644 index a42648a0..00000000 --- a/iot-standalone/src/main/java/cc/iotkit/manager/controller/api/DeviceController.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.manager.controller.api; - -import cc.iotkit.dao.AppDesignRepository; -import cc.iotkit.dao.DeviceInfoRepository; -import cc.iotkit.dao.SpaceDeviceRepository; -import cc.iotkit.manager.model.vo.AppPageNode; -import cc.iotkit.manager.service.AppDesignService; -import cc.iotkit.manager.service.DeviceService; -import cc.iotkit.model.device.DeviceInfo; -import cc.iotkit.model.space.SpaceDevice; -import cc.iotkit.utils.AuthUtil; -import lombok.extern.slf4j.Slf4j; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.ArrayList; -import java.util.List; -import java.util.stream.Collectors; - -@Slf4j -@RestController("api-device") -@RequestMapping("/api/device") -public class DeviceController { - - @Autowired - private DeviceService deviceService; - @Autowired - private DeviceInfoRepository deviceInfoRepository; - @Autowired - private SpaceDeviceRepository spaceDeviceRepository; - @Autowired - private AppDesignRepository appDesignRepository; - @Autowired - private AppDesignService appDesignService; - - @GetMapping("/list") - public List list() { - List list = new ArrayList<>(); - deviceInfoRepository.findAll().forEach(list::add); - return list; - } - - @GetMapping("/{deviceId}") - public DeviceInfo detail(@PathVariable("deviceId") String deviceId) { - if (StringUtils.isBlank(deviceId)) { - throw new RuntimeException("deviceId is blank."); - } - return deviceInfoRepository.findById(deviceId).orElseThrow(() -> new RuntimeException("device not found.")); - } - - @GetMapping("/getAllDeviceIds") - public List getAllDeviceIds() { - List spaceDevices = spaceDeviceRepository.findByUid(AuthUtil.getUserId()); - return spaceDevices.stream() - .map(SpaceDevice::getDeviceId) - .collect(Collectors.toList()); - } - - @GetMapping("/detailPage/{deviceId}") - public List deviceDetailPage(@PathVariable("deviceId") String deviceId) { - DeviceInfo device = deviceInfoRepository.findById(deviceId).orElseThrow(() -> new RuntimeException("device not found")); - return appDesignService.getAppPageNodes(device.getProductKey()); - } - -} diff --git a/iot-standalone/src/main/java/cc/iotkit/manager/controller/api/HomeController.java b/iot-standalone/src/main/java/cc/iotkit/manager/controller/api/HomeController.java deleted file mode 100644 index c423fa99..00000000 --- a/iot-standalone/src/main/java/cc/iotkit/manager/controller/api/HomeController.java +++ /dev/null @@ -1,122 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.manager.controller.api; - -import cc.iotkit.dao.HomeRepository; -import cc.iotkit.dao.SpaceRepository; -import cc.iotkit.dao.UserActionLogRepository; -import cc.iotkit.dao.UserInfoRepository; -import cc.iotkit.model.UserActionLog; -import cc.iotkit.model.UserInfo; -import cc.iotkit.model.space.Home; -import cc.iotkit.model.space.Space; -import cc.iotkit.utils.AuthUtil; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Example; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; - -@RestController("api-home") -@RequestMapping("/api/home") -public class HomeController { - - @Autowired - private HomeRepository homeRepository; - @Autowired - private SpaceRepository spaceRepository; - @Autowired - private UserInfoRepository userInfoRepository; - @Autowired - private UserActionLogRepository userActionLogRepository; - - public HomeController() { - } - - @PostMapping("/add") - public void add(String name, String address) { - if (StringUtils.isBlank(name) || StringUtils.isBlank(address)) { - throw new RuntimeException("name/address is blank."); - } - Home home = homeRepository.save(Home.builder().name(name) - .address(address).uid(AuthUtil.getUserId()).build()); - - UserInfo userInfo = userInfoRepository.findById(AuthUtil.getUserId()) - .orElseThrow(() -> new RuntimeException("用户不存在")); - userInfo.setCurrHomeId(home.getId()); - userInfoRepository.save(userInfo); - } - - @GetMapping("/list") - public List list() { - return homeRepository.findByUid(AuthUtil.getUserId()); - } - - @PostMapping("/addSpace") - public void addSpace(String homeId, String name) { - if (StringUtils.isBlank(homeId) || StringUtils.isBlank(name)) { - throw new RuntimeException("name/homeId is blank."); - } - String uid = AuthUtil.getUserId(); - Home home = homeRepository.findByUidAndId(uid, homeId); - if (home == null) { - throw new RuntimeException("用户家庭不存在"); - } - - Space s = spaceRepository.save(Space.builder() - .name(name) - .homeId(home.getId()) - .uid(home.getUid()) - .build()); - - //记录用户操作日志 - userActionLogRepository.save(UserActionLog.builder() - .uid(uid) - .type(UserActionLog.Type.SPACE_ADD.getValue()) - .createAt(System.currentTimeMillis()) - .log(s) - .build()); - - } - - @PostMapping("/updateSpace") - public void updateSpace(String spaceId, String name) { - if (StringUtils.isBlank(name) || StringUtils.isBlank(spaceId)) { - throw new RuntimeException("name/spaceId is blank."); - } - Space space = spaceRepository.findById(spaceId).orElseThrow(() -> new RuntimeException("space not found")); - space.setName(name); - spaceRepository.save(space); - } - - @PostMapping("/spaces") - public List spaces(String homeId) { - if (StringUtils.isBlank(homeId)) { - throw new RuntimeException("homeId is blank."); - } - return spaceRepository.findByHomeId(homeId); - } - - @GetMapping("/getCurrentHome") - public Home getCurrentHome() { - UserInfo userInfo = userInfoRepository.findById(AuthUtil.getUserId()) - .orElseThrow(() -> new RuntimeException("用户不存在")); - if (StringUtils.isBlank(userInfo.getCurrHomeId())) { - throw new RuntimeException("还未创建家庭"); - } - return homeRepository.findById(userInfo.getCurrHomeId()) - .orElseThrow(() -> new RuntimeException("房间不存在")); - } - -} diff --git a/iot-standalone/src/main/java/cc/iotkit/manager/controller/api/ProductController.java b/iot-standalone/src/main/java/cc/iotkit/manager/controller/api/ProductController.java deleted file mode 100644 index fc5dbc5d..00000000 --- a/iot-standalone/src/main/java/cc/iotkit/manager/controller/api/ProductController.java +++ /dev/null @@ -1,51 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.manager.controller.api; - -import cc.iotkit.dao.ProductRepository; -import cc.iotkit.dao.ThingModelRepository; -import cc.iotkit.model.product.Product; -import cc.iotkit.model.product.ThingModel; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.ArrayList; -import java.util.List; - -@RestController("api-product") -@RequestMapping("/api/product") -public class ProductController { - - @Autowired - private ProductRepository productRepository; - @Autowired - private ThingModelRepository thingModelRepository; - - @GetMapping("/list") - public List list() { - List list = new ArrayList<>(); - productRepository.findAll().forEach(list::add); - return list; - } - - @GetMapping("/{pk}") - public Product detail(@PathVariable("pk") String pk) { - return productRepository.findById(pk).orElseThrow(() -> new RuntimeException("product not found.")); - } - - @GetMapping("/{pk}/thingModel") - public ThingModel thingModel(@PathVariable("pk") String pk) { - return thingModelRepository.findById(pk).orElseThrow(() -> new RuntimeException("thing model not found.")); - } - -} diff --git a/iot-standalone/src/main/java/cc/iotkit/manager/controller/api/SpaceController.java b/iot-standalone/src/main/java/cc/iotkit/manager/controller/api/SpaceController.java deleted file mode 100644 index e1af346b..00000000 --- a/iot-standalone/src/main/java/cc/iotkit/manager/controller/api/SpaceController.java +++ /dev/null @@ -1,206 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.manager.controller.api; - -import cc.iotkit.dao.*; -import cc.iotkit.manager.model.vo.SpaceDeviceVo; -import cc.iotkit.manager.service.SpaceDeviceService; -import cc.iotkit.model.device.DeviceInfo; -import cc.iotkit.model.product.Product; -import cc.iotkit.model.space.Space; -import cc.iotkit.model.space.SpaceDevice; -import cc.iotkit.utils.AuthUtil; -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.elasticsearch.core.query.Criteria; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RestController; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.stream.Collectors; - -@RestController("api-space") -@RequestMapping("/api/space") -public class SpaceController { - - @Autowired - private SpaceDeviceRepository spaceDeviceRepository; - @Autowired - private DeviceInfoRepository deviceInfoRepository; - @Autowired - private CategoryRepository categoryRepository; - @Autowired - private SpaceRepository spaceRepository; - @Autowired - private ProductRepository productRepository; - @Autowired - private ProductCache productCache; - @Autowired - private DeviceCache deviceCache; - @Autowired - private SpaceDeviceService spaceDeviceService; - @Autowired - private CommonDao commonDao; - - @PostMapping("/addGateway") - public void addGateway(String pk, String mac, String name, String spaceId) { - if (StringUtils.isBlank(name) || StringUtils.isBlank(mac) || StringUtils.isBlank(spaceId)) { - throw new RuntimeException("pk/name/mac/spaceId is blank."); - } - mac = mac.toUpperCase(); - DeviceInfo device = deviceInfoRepository.findByProductKeyAndDeviceName(pk, mac); - if (device == null) { - throw new RuntimeException("未找到该设备"); - } - Space space = spaceRepository.findById(spaceId).orElseThrow(() -> new RuntimeException("未找到空间")); - addSpaceDevice(name, device, space); - } - - @PostMapping("/add") - public void add(String deviceId, String name, String spaceId) { - if (StringUtils.isBlank(deviceId) || StringUtils.isBlank(name) || StringUtils.isBlank(spaceId)) { - throw new RuntimeException("deviceId/name/spaceId is blank."); - } - DeviceInfo device = deviceInfoRepository.findById(deviceId) - .orElseThrow(() -> new RuntimeException("device not found.")); - Space space = spaceRepository.findById(spaceId) - .orElseThrow(() -> new RuntimeException("space not found.")); - addSpaceDevice(name, device, space); - } - - @PostMapping("/scan") - public List scan() { - //找到网关产品id - List gateways = productRepository.findByCategory("gateway") - .stream().map(Product::getId).collect(Collectors.toList()); - //找到用户已添加的所有设备 - List spaceDeviceVos = spaceDeviceService.getUserDevices(AuthUtil.getUserId(), ""); - //找到已添加的网关 - List userGateways = spaceDeviceVos.stream().filter((sd) -> - gateways.contains(sd.getProductKey())).collect(Collectors.toList()); - - List foundDevices = new ArrayList<>(); - //找到网关下的所有设备 - userGateways.forEach((g) -> foundDevices.addAll( - deviceInfoRepository.findByParentId(g.getDeviceId()))); - - //过滤已添加的设备 - return foundDevices.stream().filter((d) -> { - boolean exits = false; - for (SpaceDeviceVo sd : spaceDeviceVos) { - if (d.getDeviceId().equals(sd.getDeviceId())) { - exits = true; - break; - } - } - return !exits; - }).collect(Collectors.toList()).stream().map((d) -> - //转成空间设备信息 - buildSpaceDeviceVo("", d.getDeviceId(), "", "", "")) - .collect(Collectors.toList()); - } - - @GetMapping("/devices") - public List devices(String homeId, String spaceId) { - Criteria criteria = new Criteria(); - - SpaceDevice device = new SpaceDevice(); - device.setUid(AuthUtil.getUserId()); - if (StringUtils.isNotBlank(spaceId)) { - criteria = criteria.and("spaceId").is(spaceId); - } else { - criteria = criteria.and("homeId").is(homeId); - } - List spaceDevices = commonDao.find(SpaceDevice.class, criteria); - List spaceDeviceVos = new ArrayList<>(); - spaceDevices.forEach(sd -> spaceDeviceVos.add(buildSpaceDeviceVo( - sd.getId(), sd.getDeviceId(), - sd.getUid(), sd.getName(), ""))); - return spaceDeviceVos; - } - - @GetMapping("/getSpaceDevice") - public SpaceDeviceVo getSpaceDevice(String id) { - SpaceDevice device = spaceDeviceRepository.findById(id) - .orElseThrow(() -> new RuntimeException("device not found")); - - return buildSpaceDeviceVo(device.getId(), device.getDeviceId(), - AuthUtil.getUserId(), device.getName(), - ""); - } - - @GetMapping("/getDeviceByMac") - public SpaceDeviceVo getDeviceByMac(String mac) { - List devices = deviceInfoRepository.findByDeviceName(mac); - if (devices.size() == 0) { - throw new RuntimeException("device not found by mac"); - } - - return buildSpaceDeviceVo("", devices.get(0).getDeviceId(), - AuthUtil.getUserId(), "", ""); - } - - @PostMapping("/delete") - public void delete(String id) { - SpaceDevice device = spaceDeviceRepository.findById(id) - .orElseThrow(() -> new RuntimeException("空间设备不存在")); - if (!AuthUtil.getUserId().equals(device.getUid())) { - throw new RuntimeException("设备不属于该用户"); - } - spaceDeviceRepository.deleteById(id); - } - - private SpaceDeviceVo buildSpaceDeviceVo(String id, String deviceId, String uid, String name, String spaceName) { - DeviceInfo deviceInfo = deviceCache.get(deviceId); - Product product = productCache.findById(deviceInfo.getProductKey()); - return SpaceDeviceVo.builder() - .id(id) - .uid(uid) - .deviceId(deviceId) - .name(StringUtils.isBlank(name) ? product.getName() : name) - .deviceName(deviceInfo.getDeviceName()) - .picUrl(product.getImg()) - .spaceName(spaceName) - .online(deviceInfo.getState().isOnline()) - .property(deviceInfo.getProperty() == null ? new HashMap<>() : deviceInfo.getProperty()) - .productKey(deviceInfo.getProductKey()) - .build(); - } - - private void addSpaceDevice(String name, DeviceInfo device, Space space) { - String uid = AuthUtil.getUserId(); - - SpaceDevice sd = spaceDeviceRepository.findByDeviceId(device.getDeviceId()); - String id = null; - - //重复添加,更新 - if (sd != null && uid.equals(sd.getUid())) { - id = sd.getId(); - } else if (sd != null && !uid.equals(sd.getUid())) { - //已经被别人添加了 - throw new RuntimeException("设备已被其它人添加"); - } - - Product product = productRepository.findById(device.getProductKey()).orElseThrow(() -> new RuntimeException("product not found.")); - spaceDeviceRepository.save(SpaceDevice.builder() - .id(id) - .uid(AuthUtil.getUserId()) - .deviceId(device.getDeviceId()) - .name(name == null ? product.getName() : name) - .homeId(space.getHomeId()) - .spaceId(space.getId()) - .build()); - } - -} diff --git a/iot-standalone/src/main/java/cc/iotkit/manager/model/aligenie/AligenieProductVo.java b/iot-standalone/src/main/java/cc/iotkit/manager/model/aligenie/AligenieProductVo.java deleted file mode 100644 index 95c45ceb..00000000 --- a/iot-standalone/src/main/java/cc/iotkit/manager/model/aligenie/AligenieProductVo.java +++ /dev/null @@ -1,39 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.manager.model.aligenie; - -import cc.iotkit.model.aligenie.AligenieProduct; -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.EqualsAndHashCode; -import lombok.NoArgsConstructor; - -@EqualsAndHashCode(callSuper = true) -@Data -@NoArgsConstructor -@AllArgsConstructor -public class AligenieProductVo extends AligenieProduct { - - private String productName; - - public AligenieProductVo(AligenieProduct p, String productName) { - this.setProductId(p.getProductId()); - this.setDeviceType(p.getDeviceType()); - this.setBrand(p.getBrand()); - this.setIcon(p.getIcon()); - this.setModel(p.getModel()); - this.setProductKey(p.getProductKey()); - this.setProperties(p.getProperties()); - this.setActions(p.getActions()); - this.setTransform(p.getTransform()); - this.setCreateAt(p.getCreateAt()); - this.productName = productName; - } -} diff --git a/iot-standalone/src/main/java/cc/iotkit/manager/service/AppDesignService.java b/iot-standalone/src/main/java/cc/iotkit/manager/service/AppDesignService.java deleted file mode 100644 index 8a534498..00000000 --- a/iot-standalone/src/main/java/cc/iotkit/manager/service/AppDesignService.java +++ /dev/null @@ -1,87 +0,0 @@ -/* - * +---------------------------------------------------------------------- - * | Copyright (c) 奇特物联 2021-2022 All rights reserved. - * +---------------------------------------------------------------------- - * | Licensed 未经许可不能去掉「奇特物联」相关版权 - * +---------------------------------------------------------------------- - * | Author: xw2sy@163.com - * +---------------------------------------------------------------------- - */ -package cc.iotkit.manager.service; - -import cc.iotkit.common.Constants; -import cc.iotkit.common.utils.JsonUtil; -import cc.iotkit.dao.AppDesignRepository; -import cc.iotkit.manager.model.vo.AppPageNode; -import cc.iotkit.model.product.AppDesign; -import com.fasterxml.jackson.databind.JsonNode; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.cache.annotation.Cacheable; -import org.springframework.data.domain.Example; -import org.springframework.stereotype.Service; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -@Service -public class AppDesignService { - - - @Autowired - private AppDesignRepository appDesignRepository; - - public AppDesign getDesignDetail(String pk) { - return appDesignRepository.findByProductKey(pk); - } - - @Cacheable(value = Constants.APP_DESIGN_CACHE, key = "#pk") - public List getAppPageNodes(String pk) { - AppDesign design = appDesignRepository.findByProductKey(pk); - if (design == null) { - return new ArrayList<>(); - } - - String template = design.getTemplate(); - JsonNode node = JsonUtil.parse(template); - List nodeTable = new ArrayList<>(); - - String id = node.get("id").asText(); - JsonNode children = node.get("children"); - if (children.isArray()) { - readSubNodes(id, children, nodeTable); - } - return nodeTable; - } - - private void readSubNodes(String parentId, JsonNode nodes, List nodeTable) { - nodes.forEach(node -> readNode(parentId, node, nodeTable)); - } - - private void readNode(String parentId, JsonNode node, List nodeTable) { - AppPageNode pageNode = AppPageNode.builder() - .id(node.get("id").asText()) - .name(node.get("name").asText()) - .parent(parentId) - .build(); - if (node.has("props")) { - pageNode.setProps(JsonUtil.parse(node.get("props").toString(), Map.class)); - } - if (node.has("appearance")) { - pageNode.setAppearance(JsonUtil.parse(node.get("appearance").toString(), Map.class)); - } - if (node.has("binds")) { - pageNode.setBinds(JsonUtil.parse(node.get("binds").toString(), Map.class)); - } - if (node.has("action")) { - pageNode.setAction(JsonUtil.parse(node.get("action").toString(), Map.class)); - } - nodeTable.add(pageNode); - - String id = node.get("id").asText(); - JsonNode children = node.get("children"); - if (children.isArray()) { - readSubNodes(id, children, nodeTable); - } - } -} diff --git a/iot-standalone/src/main/java/cc/iotkit/manager/service/DataOwnerService.java b/iot-standalone/src/main/java/cc/iotkit/manager/service/DataOwnerService.java index 7db39af1..7c116671 100644 --- a/iot-standalone/src/main/java/cc/iotkit/manager/service/DataOwnerService.java +++ b/iot-standalone/src/main/java/cc/iotkit/manager/service/DataOwnerService.java @@ -10,11 +10,11 @@ package cc.iotkit.manager.service; import cc.iotkit.common.exception.BizException; +import cc.iotkit.data.ICommonData; import cc.iotkit.utils.AuthUtil; import cc.iotkit.model.Owned; import cc.iotkit.model.device.DeviceInfo; import org.apache.commons.lang3.StringUtils; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.stereotype.Service; import java.util.List; @@ -22,7 +22,7 @@ import java.util.List; @Service public class DataOwnerService { - public T wrapExample(T data) { + public > T wrapExample(T data) { if (AuthUtil.isAdmin()) { return data; } @@ -66,18 +66,18 @@ public class DataOwnerService { /** * 从库中取对应数据Id的数据中的uid是否与当前登录用户一致 */ - public void checkOwner(ElasticsearchRepository repository, String id) { + public void checkOwner(ICommonData service, Object id) { //管理员不限制 if (AuthUtil.isAdmin()) { return; } //数据id为空的新数据 - if (StringUtils.isBlank(id)) { + if (StringUtils.isBlank(id.toString())) { return; } - T old = repository.findById(id).orElse(null); + Owned old = (Owned) service.findById(id); //新数据 if (old == null) { return; @@ -94,8 +94,8 @@ public class DataOwnerService { /** * 从库中取对应数据Id的数据中的uid是否与当前登录用户一致,并把当前用户id设置到数据中 */ - public void checkOwnerSave(ElasticsearchRepository repository, T data) { - checkOwner(repository, data.getId()); + public void checkOwnerSave(ICommonData service, Owned data) { + checkOwner(service, data.getId()); data.setUid(AuthUtil.getUserId()); } diff --git a/iot-standalone/src/main/java/cc/iotkit/manager/service/DeviceService.java b/iot-standalone/src/main/java/cc/iotkit/manager/service/DeviceService.java index 030b8ac8..1fb53eb2 100644 --- a/iot-standalone/src/main/java/cc/iotkit/manager/service/DeviceService.java +++ b/iot-standalone/src/main/java/cc/iotkit/manager/service/DeviceService.java @@ -15,12 +15,12 @@ import cc.iotkit.common.utils.JsonUtil; import cc.iotkit.common.utils.UniqueIdUtil; import cc.iotkit.comps.DeviceComponentManager; import cc.iotkit.common.thing.ThingService; -import cc.iotkit.dao.DeviceConfigRepository; -import cc.iotkit.dao.DeviceInfoRepository; -import cc.iotkit.dao.ThingModelMessageRepository; +import cc.iotkit.data.IDeviceConfigData; +import cc.iotkit.data.IDeviceInfoData; import cc.iotkit.model.device.DeviceConfig; import cc.iotkit.model.device.DeviceInfo; import cc.iotkit.model.device.message.ThingModelMessage; +import cc.iotkit.temporal.IThingModelMessageData; import cc.iotkit.virtualdevice.VirtualManager; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; @@ -33,7 +33,7 @@ import java.util.Map; public class DeviceService { @Autowired - private DeviceInfoRepository deviceInfoRepository; + private IDeviceInfoData deviceInfoData; @Autowired private DataOwnerService dataOwnerService; @Autowired @@ -41,11 +41,11 @@ public class DeviceService { @Autowired private ThingModelService thingModelService; @Autowired - private ThingModelMessageRepository thingModelMessageRepository; + private IThingModelMessageData thingModelMessageData; @Autowired private VirtualManager virtualManager; @Autowired - private DeviceConfigRepository deviceConfigRepository; + private IDeviceConfigData deviceConfigData; /** * 设备服务调用 @@ -90,7 +90,7 @@ public class DeviceService { public String sendConfig(String deviceId, boolean checkOwner) { DeviceInfo device = getAndCheckDevice(deviceId, checkOwner); - DeviceConfig config = deviceConfigRepository.findByDeviceId(deviceId); + DeviceConfig config = deviceConfigData.findByDeviceId(deviceId); Map data = JsonUtil.parse(config.getConfig(), Map.class); return send(deviceId, device.getProductKey(), device.getDeviceName(), data, @@ -108,8 +108,10 @@ public class DeviceService { * 检查设备操作权限和状态 */ private DeviceInfo getAndCheckDevice(String deviceId, boolean checkOwner) { - DeviceInfo device = deviceInfoRepository.findById(deviceId) - .orElseThrow(() -> new NotFoundException("device not found by deviceId")); + DeviceInfo device = deviceInfoData.findByDeviceId(deviceId); + if (device == null) { + throw new NotFoundException("device not found by deviceId"); + } if (checkOwner) { dataOwnerService.checkOwner(device); @@ -126,7 +128,7 @@ public class DeviceService { */ private String send(String deviceId, String pk, String dn, Object data, String type, String identifier) { - ThingService thingService = ThingService.builder() + ThingService thingService = ThingService.builder() .mid(UniqueIdUtil.newRequestId()) .productKey(pk) .deviceName(dn) @@ -160,7 +162,7 @@ public class DeviceService { .occurred(System.currentTimeMillis()) .time(System.currentTimeMillis()) .build(); - thingModelMessageRepository.save(thingModelMessage); + thingModelMessageData.add(thingModelMessage); return mid; } diff --git a/iot-standalone/src/main/java/cc/iotkit/manager/service/ExampleDataInit.java b/iot-standalone/src/main/java/cc/iotkit/manager/service/ExampleDataInit.java index b23cf8d0..49c32d90 100644 --- a/iot-standalone/src/main/java/cc/iotkit/manager/service/ExampleDataInit.java +++ b/iot-standalone/src/main/java/cc/iotkit/manager/service/ExampleDataInit.java @@ -11,13 +11,30 @@ package cc.iotkit.manager.service; import cc.iotkit.common.utils.JsonUtil; import cc.iotkit.dao.*; +import cc.iotkit.data.*; +import cc.iotkit.model.Id; +import cc.iotkit.model.OauthClient; +import cc.iotkit.model.UserInfo; +import cc.iotkit.model.device.DeviceGroup; +import cc.iotkit.model.device.DeviceInfo; +import cc.iotkit.model.device.VirtualDevice; +import cc.iotkit.model.product.Category; +import cc.iotkit.model.product.Product; +import cc.iotkit.model.product.ProductModel; +import cc.iotkit.model.product.ThingModel; +import cc.iotkit.model.protocol.ProtocolComponent; +import cc.iotkit.model.protocol.ProtocolConverter; +import cc.iotkit.model.rule.RuleInfo; +import cc.iotkit.model.rule.TaskInfo; +import cc.iotkit.model.space.Home; +import cc.iotkit.model.space.Space; +import cc.iotkit.model.space.SpaceDevice; import com.fasterxml.jackson.core.type.TypeReference; import com.google.common.base.Charsets; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; -import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; import org.springframework.stereotype.Service; import javax.annotation.PostConstruct; @@ -30,37 +47,37 @@ import java.util.List; public class ExampleDataInit { @Autowired - private OauthClientRepository oauthClientRepository; + private IOauthClientData oauthClientData; @Autowired - private CategoryRepository categoryRepository; + private ICategoryData categoryData; @Autowired - private DeviceGroupRepository deviceGroupRepository; + private IDeviceGroupData deviceGroupData; @Autowired - private DeviceInfoRepository deviceInfoRepository; + private IDeviceInfoData deviceInfoData; @Autowired - private HomeRepository homeRepository; + private IHomeData homeData; @Autowired - private ProductRepository productRepository; + private IProductData productData; @Autowired - private ProductModelRepository productModelRepository; + private IProductModelData productModelData; @Autowired - private ProtocolComponentRepository protocolComponentRepository; + private IProtocolComponentData protocolComponentData; @Autowired - private ProtocolConverterRepository protocolConverterRepository; + private IProtocolConverterData protocolConverterData; @Autowired - private RuleInfoRepository ruleInfoRepository; + private IRuleInfoData ruleInfoData; @Autowired - private SpaceRepository spaceRepository; + private ISpaceData spaceData; @Autowired - private SpaceDeviceRepository spaceDeviceRepository; + private ISpaceDeviceData spaceDeviceData; @Autowired - private TaskInfoRepository taskInfoRepository; + private ITaskInfoData taskInfoData; @Autowired - private ThingModelRepository thingModelRepository; + private IThingModelData thingModelData; @Autowired - private UserInfoRepository userInfoRepository; + private IUserInfoData userInfoData; @Autowired - private VirtualDeviceRepository virtualDeviceRepository; + private IVirtualDeviceData virtualDeviceData; @Autowired private DeviceDao deviceDao; @@ -76,22 +93,38 @@ public class ExampleDataInit { return; } - initData("category", categoryRepository); - initData("deviceGroup", deviceGroupRepository); - initData("deviceInfo", deviceInfoRepository); - initData("home", homeRepository); - initData("oauthClient", oauthClientRepository); - initData("product", productRepository); - initData("productModel", productModelRepository); - initData("protocolComponent", protocolComponentRepository); - initData("protocolConverter", protocolConverterRepository); - initData("ruleInfo", ruleInfoRepository); - initData("space", spaceRepository); - initData("spaceDevice", spaceDeviceRepository); - initData("taskInfo", taskInfoRepository); - initData("thingModel", thingModelRepository); - initData("userInfo", userInfoRepository); - initData("virtualDevice", virtualDeviceRepository); + initData("category", categoryData, new TypeReference>() { + }); + initData("deviceGroup", deviceGroupData, new TypeReference>() { + }); + initData("deviceInfo", deviceInfoData, new TypeReference>() { + }); + initData("home", homeData, new TypeReference>() { + }); + initData("oauthClient", oauthClientData, new TypeReference>() { + }); + initData("product", productData, new TypeReference>() { + }); + initData("productModel", productModelData, new TypeReference>() { + }); + initData("protocolComponent", protocolComponentData, new TypeReference>() { + }); + initData("protocolConverter", protocolConverterData, new TypeReference>() { + }); + initData("ruleInfo", ruleInfoData, new TypeReference>() { + }); + initData("space", spaceData, new TypeReference>() { + }); + initData("spaceDevice", spaceDeviceData, new TypeReference>() { + }); + initData("taskInfo", taskInfoData, new TypeReference>() { + }); + initData("thingModel", thingModelData, new TypeReference>() { + }); + initData("userInfo", userInfoData, new TypeReference>() { + }); + initData("virtualDevice", virtualDeviceData, new TypeReference>() { + }); log.info("init data finished."); @@ -101,14 +134,14 @@ public class ExampleDataInit { } } - private void initData(String name, ElasticsearchRepository repository) throws IOException { + private void initData(String name, ICommonData service, TypeReference type) throws IOException { log.info("init {} data...", name); String json = FileUtils.readFileToString(new File("./data/init/" + name + ".json"), Charsets.UTF_8); - List list = JsonUtil.parse(json, new TypeReference<>() { - }); + List list = (List) JsonUtil.parse(json, type); for (T obj : list) { - repository.save(obj); + service.add((Id) obj); } } + } diff --git a/iot-standalone/src/main/java/cc/iotkit/manager/service/SpaceDeviceService.java b/iot-standalone/src/main/java/cc/iotkit/manager/service/SpaceDeviceService.java index a7efe3d4..80e66b51 100644 --- a/iot-standalone/src/main/java/cc/iotkit/manager/service/SpaceDeviceService.java +++ b/iot-standalone/src/main/java/cc/iotkit/manager/service/SpaceDeviceService.java @@ -11,14 +11,13 @@ package cc.iotkit.manager.service; import cc.iotkit.dao.DeviceCache; import cc.iotkit.dao.ProductCache; -import cc.iotkit.dao.SpaceDeviceRepository; +import cc.iotkit.data.ISpaceDeviceData; import cc.iotkit.manager.model.vo.SpaceDeviceVo; import cc.iotkit.model.device.DeviceInfo; import cc.iotkit.model.product.Product; import cc.iotkit.model.space.SpaceDevice; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.data.domain.Example; import org.springframework.stereotype.Service; import java.util.ArrayList; @@ -27,7 +26,7 @@ import java.util.List; @Service public class SpaceDeviceService { @Autowired - private SpaceDeviceRepository spaceDeviceRepository; + private ISpaceDeviceData spaceDeviceData; @Autowired private DeviceCache deviceCache; @Autowired @@ -39,9 +38,9 @@ public class SpaceDeviceService { List spaceDevices; if (StringUtils.isNotBlank(spaceId)) { device.setSpaceId(spaceId); - spaceDevices = spaceDeviceRepository.findByUidAndSpaceIdOrderByAddAtDesc(uid, spaceId); + spaceDevices = spaceDeviceData.findByUidAndSpaceIdOrderByAddAtDesc(uid, spaceId); } else { - spaceDevices = spaceDeviceRepository.findBySpaceIdOrderByAddAtDesc(spaceId); + spaceDevices = spaceDeviceData.findBySpaceIdOrderByAddAtDesc(spaceId); } List spaceDeviceVos = new ArrayList<>(); diff --git a/iot-standalone/src/main/java/cc/iotkit/manager/service/ThingModelService.java b/iot-standalone/src/main/java/cc/iotkit/manager/service/ThingModelService.java index 1d4d78f4..fe47ca0d 100644 --- a/iot-standalone/src/main/java/cc/iotkit/manager/service/ThingModelService.java +++ b/iot-standalone/src/main/java/cc/iotkit/manager/service/ThingModelService.java @@ -10,7 +10,7 @@ package cc.iotkit.manager.service; import cc.iotkit.common.thing.ThingService; -import cc.iotkit.dao.ThingModelRepository; +import cc.iotkit.data.IThingModelData; import cc.iotkit.model.product.ThingModel; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; @@ -22,11 +22,10 @@ import java.util.Map; @Component public class ThingModelService { @Autowired - private ThingModelRepository thingModelRepository; + private IThingModelData thingModelData; - public void parseParams(ThingService service) { - ThingModel thingModel = thingModelRepository.findByProductKey(service.getProductKey()); - thingModel.getModel(); + public void parseParams(ThingService service) { + ThingModel thingModel = thingModelData.findByProductKey(service.getProductKey()); ThingModel.Model model = thingModel.getModel(); String type = service.getType(); diff --git a/iot-standalone/src/main/java/cc/iotkit/manager/service/WeChatService.java b/iot-standalone/src/main/java/cc/iotkit/manager/service/WeChatService.java index 80afd8aa..f17981eb 100644 --- a/iot-standalone/src/main/java/cc/iotkit/manager/service/WeChatService.java +++ b/iot-standalone/src/main/java/cc/iotkit/manager/service/WeChatService.java @@ -12,7 +12,7 @@ package cc.iotkit.manager.service; import cc.iotkit.common.Constants; import cc.iotkit.common.utils.CodecUtil; import cc.iotkit.common.utils.JsonUtil; -import cc.iotkit.dao.UserInfoRepository; +import cc.iotkit.data.IUserInfoData; import cc.iotkit.manager.utils.WeChatUtil; import cc.iotkit.model.UserInfo; import lombok.Data; @@ -26,7 +26,7 @@ import org.springframework.stereotype.Service; public class WeChatService { @Autowired - private UserInfoRepository userInfoRepository; + private IUserInfoData userInfoData; public String login(String encryptedData, String iv, String loginCode) { WxSession wxSession = authCode2Session(Constants.WECHAT_APP_ID, Constants.WECHAT_APP_SECRET, loginCode); @@ -40,7 +40,7 @@ public class WeChatService { throw new RuntimeException("微信授权认证失败:" + wxSession.getErrmsg()); } - UserInfo userInfo = userInfoRepository.findById(wxSession.getOpenid()).orElse(null); + UserInfo userInfo = userInfoData.findById(wxSession.getOpenid()); //判断用户表中是否存在该用户,不存在则进行解密得到用户信息,并进行新增用户 String strUserInfo = WeChatUtil.decryptData(encryptedData, wxSession.getSession_key(), iv); if (StringUtils.isEmpty(strUserInfo)) { @@ -52,7 +52,7 @@ public class WeChatService { decryptUser.setId(userInfo.getId()); } // decryptUser.setId(decryptUser.getOpenId()); - userInfoRepository.save(decryptUser); + userInfoData.save(decryptUser); try { return CodecUtil.aesEncrypt(System.currentTimeMillis() + "_" + wxSession.getOpenid(), Constants.ACCOUNT_SECRET); diff --git a/iot-standalone/src/main/resources/application-dev.yml b/iot-standalone/src/main/resources/application-dev.yml index df9db966..23886445 100644 --- a/iot-standalone/src/main/resources/application-dev.yml +++ b/iot-standalone/src/main/resources/application-dev.yml @@ -8,6 +8,50 @@ spring: max-file-size: 10MB max-request-size: 12MB + + # <<=======内置H2数据库连接设置开始========== + # jpa: + # show-sql: true + # hibernate: + # ddl-auto: update + # properties: + # hibernate: + # format_sql: true + # datasource: + # url: jdbc:h2:./data/iotkit;MODE=MySQL + # username: sa + # password: 123456 + # driverClassName: org.h2.Driver + # + # ## 内置h2 web console设置 + # platform: h2 + # h2: + # console: + # enabled: true + # path: /h2 + # settings: + # web-allow-others: true + # =======内置H2数据库连接设置结束==========>> + + # <<==========mysql配置开始============== + datasource: + url: jdbc:mysql://127.0.0.1:3306/iotkit?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false + driverClassName: com.mysql.cj.jdbc.Driver + username: root + password: 123456 + validationQuery: SELECT 1 + testOnBorrow: true + jpa: + database: MySQL + database-platform: org.hibernate.dialect.MySQL5Dialect + show-sql: true + hibernate: + ddl-auto: update + properties: + hibernate: + format_sql: true + # ============mysql配置结束============>> + elasticsearch: rest: #使用内置es的配置 @@ -53,5 +97,3 @@ sa-token: #认证中心地址 oauth2: auth-server-url: http://127.0.0.1:8086 - -a b: 123:4 5 diff --git a/iot-standalone/src/main/resources/application.yml b/iot-standalone/src/main/resources/application.yml index baf8c348..52de4d44 100644 --- a/iot-standalone/src/main/resources/application.yml +++ b/iot-standalone/src/main/resources/application.yml @@ -8,6 +8,50 @@ spring: max-file-size: 10MB max-request-size: 12MB + + # <<=======内置H2数据库连接设置开始========== +# jpa: +# show-sql: true +# hibernate: +# ddl-auto: update +# properties: +# hibernate: +# format_sql: true +# datasource: +# url: jdbc:h2:./data/iotkit;MODE=MySQL +# username: sa +# password: 123456 +# driverClassName: org.h2.Driver +# +# ## 内置h2 web console设置 +# platform: h2 +# h2: +# console: +# enabled: true +# path: /h2 +# settings: +# web-allow-others: true +# =======内置H2数据库连接设置结束==========>> + + # <<==========mysql配置开始============== + datasource: + url: jdbc:mysql://127.0.0.1:3306/iotkit?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&useSSL=false + driverClassName: com.mysql.cj.jdbc.Driver + username: root + password: 123456 + validationQuery: SELECT 1 + testOnBorrow: true + jpa: + database: MySQL + database-platform: org.hibernate.dialect.MySQL5Dialect + show-sql: true + hibernate: + ddl-auto: update + properties: + hibernate: + format_sql: true + # ============mysql配置结束============>> + elasticsearch: rest: #使用内置es的配置 diff --git a/iot-test-tool/iot-test-mqtt/pom.xml b/iot-test-tool/iot-test-mqtt/pom.xml index 89efd198..9267c45d 100644 --- a/iot-test-tool/iot-test-mqtt/pom.xml +++ b/iot-test-tool/iot-test-mqtt/pom.xml @@ -5,7 +5,7 @@ iot-test-tool cc.iotkit - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT 4.0.0 diff --git a/iot-test-tool/pom.xml b/iot-test-tool/pom.xml index 2cc09217..38146f3a 100644 --- a/iot-test-tool/pom.xml +++ b/iot-test-tool/pom.xml @@ -5,7 +5,7 @@ iotkit-parent cc.iotkit - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT 4.0.0 pom diff --git a/iot-virtual-device/pom.xml b/iot-virtual-device/pom.xml index 980fa58a..d74aeaf8 100644 --- a/iot-virtual-device/pom.xml +++ b/iot-virtual-device/pom.xml @@ -5,7 +5,7 @@ iotkit-parent cc.iotkit - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT 4.0.0 diff --git a/iot-virtual-device/src/main/java/cc/iotkit/virtualdevice/VirtualManager.java b/iot-virtual-device/src/main/java/cc/iotkit/virtualdevice/VirtualManager.java index 85498d46..a861de4b 100644 --- a/iot-virtual-device/src/main/java/cc/iotkit/virtualdevice/VirtualManager.java +++ b/iot-virtual-device/src/main/java/cc/iotkit/virtualdevice/VirtualManager.java @@ -13,12 +13,12 @@ import cc.iotkit.common.thing.ThingService; import cc.iotkit.common.utils.JsonUtil; import cc.iotkit.comps.service.DeviceBehaviourService; import cc.iotkit.dao.DeviceCache; -import cc.iotkit.dao.VirtualDeviceLogRepository; -import cc.iotkit.dao.VirtualDeviceRepository; +import cc.iotkit.data.IVirtualDeviceData; import cc.iotkit.model.device.DeviceInfo; import cc.iotkit.model.device.VirtualDevice; import cc.iotkit.model.device.VirtualDeviceLog; import cc.iotkit.model.device.message.ThingModelMessage; +import cc.iotkit.temporal.IVirtualDeviceLogData; import cc.iotkit.virtualdevice.trigger.RandomScheduleBuilder; import jdk.nashorn.api.scripting.NashornScriptEngine; import jdk.nashorn.api.scripting.ScriptObjectMirror; @@ -40,7 +40,7 @@ public class VirtualManager { private final Map> deviceIdToVirtualId = new HashMap<>(); @Autowired - private VirtualDeviceRepository virtualDeviceRepository; + private IVirtualDeviceData virtualDeviceData; @Autowired private DeviceCache deviceCache; @Autowired @@ -48,7 +48,7 @@ public class VirtualManager { @Autowired private DeviceBehaviourService deviceBehaviourService; @Autowired - private VirtualDeviceLogRepository virtualDeviceLogRepository; + private IVirtualDeviceLogData virtualDeviceLogData; @PostConstruct @@ -123,7 +123,7 @@ public class VirtualManager { virtualDeviceLog.setResult(e.getMessage()); log.error("run VirtualDevice error", e); } - virtualDeviceLogRepository.save(virtualDeviceLog); + virtualDeviceLogData.add(virtualDeviceLog); } /** @@ -138,9 +138,9 @@ public class VirtualManager { * 获取所有虚拟设备 */ private List getAllVirtualDevices() { - List randomVirtualDevices = virtualDeviceRepository + List randomVirtualDevices = virtualDeviceData .findByTriggerAndState(VirtualDevice.TRIGGER_RANDOM, VirtualDevice.STATE_RUNNING); - List cronVirtualDevices = virtualDeviceRepository + List cronVirtualDevices = virtualDeviceData .findByTriggerAndState(VirtualDevice.TRIGGER_CRON, VirtualDevice.STATE_RUNNING); cronVirtualDevices.addAll(randomVirtualDevices); return cronVirtualDevices; @@ -296,7 +296,7 @@ public class VirtualManager { * 保存虚拟设备日志 */ public void saveLog(VirtualDeviceLog log) { - virtualDeviceLogRepository.save(log); + virtualDeviceLogData.add(log); } } diff --git a/pom.xml b/pom.xml index 47879fe3..037409fd 100755 --- a/pom.xml +++ b/pom.xml @@ -13,7 +13,7 @@ iot-virtual-device iot-message-bus iot-test-tool - iot-data-service + iot-data org.springframework.boot @@ -24,7 +24,7 @@ cc.iotkit iotkit-parent - 0.3.2-SNAPSHOT + 0.3.3-SNAPSHOT iotkit-parent iotkit parent @@ -77,7 +77,7 @@ org.projectlombok lombok - 1.18.22 + 1.18.24 @@ -294,7 +294,31 @@ cc.iotkit - iot-device-dao + iot-data-service + ${project.version} + + + + cc.iotkit + iot-temporal-service + ${project.version} + + + + cc.iotkit + iot-es-temporal-service + ${project.version} + + + + cc.iotkit + iot-data-cache + ${project.version} + + + + cc.iotkit + iot-rdb-data-service ${project.version}