From 2784db09eb2d1f538fee0a0425f4949582861fb8 Mon Sep 17 00:00:00 2001 From: rqian <1206436827@qq.com> Date: Tue, 21 Apr 2026 09:20:55 +0800 Subject: [PATCH] #update --- .idea/workspace.xml | 138 +++++++- maibu-admin/pom.xml | 49 +++ .../com/maibu/MiddlePlatformApplication.java | 3 +- .../controller/common/CommonController.java | 45 ++- .../system/SysProfileController.java | 25 +- .../src/main/resources/application-dev.yml | 45 +-- .../src/main/resources/application-prod.yml | 54 +-- .../src/main/resources/application-sql.yml | 91 ----- .../src/main/resources/application.yml | 42 +-- maibu-admin/src/main/resources/banner.txt | 2 +- maibu-common/pom.xml | 86 ++--- .../com/maibu/core/domain/ImportExcelVO.java | 36 -- .../com/maibu/core/domain/OutputExcelVO.java | 25 -- .../maibu/core/domain/entity/UserClient.java | 1 + .../core/iot/response/DashDeviceTotalDto.java | 22 -- .../com/maibu/core/iot/response/DeCodeBo.java | 26 -- .../core/iot/response/IdentityAndName.java | 70 ---- .../java/com/maibu/core/mq/DeviceReplyBo.java | 17 - .../java/com/maibu/core/mq/DeviceReport.java | 78 ----- .../com/maibu/core/mq/DeviceReportBo.java | 77 ----- .../com/maibu/core/mq/DeviceStatusBo.java | 35 -- .../com/maibu/core/mq/DeviceTestReportBo.java | 32 -- .../java/com/maibu/core/mq/GwDeviceBo.java | 16 - .../java/com/maibu/core/mq/InvokeReqDto.java | 63 ---- .../com/maibu/core/mq/MQSendMessageBo.java | 61 ---- .../com/maibu/core/mq/MessageReplyBo.java | 51 --- .../java/com/maibu/core/mq/SubDeviceBo.java | 35 -- .../maibu/core/mq/message/ReportDataBo.java | 48 --- .../maibu/core/notify/AlertPushParams.java | 48 --- .../com/maibu/core/notify/AppGeTuiParams.java | 33 -- .../notify/EnterpriseWeChatAPPParams.java | 35 -- .../com/maibu/core/notify/NotifyConfigVO.java | 37 -- .../maibu/core/notify/NotifySendResponse.java | 33 -- .../maibu/core/notify/WeChatServerParams.java | 31 -- .../core/notify/alertPush/AlertPushItem.java | 28 -- .../maibu/core/notify/alertPush/PushMsg.java | 32 -- .../notify/config/DingTalkConfigParams.java | 21 -- .../core/notify/config/EmailConfigParams.java | 48 --- .../core/notify/config/VoiceConfigParams.java | 23 -- .../notify/config/WeChatConfigParams.java | 25 -- .../core/notify/msg/DingTalkMsgParams.java | 53 --- .../maibu/core/notify/msg/EmailMsgParams.java | 33 -- .../maibu/core/notify/msg/VoiceMsgParams.java | 49 --- .../maibu/core/notify/msg/WeComMsgParams.java | 43 --- .../core/notify/msg/WechatMsgParams.java | 43 --- .../maibu/core/thingsModel/NeuronModel.java | 44 --- .../thingsModel/SceneThingsModelItem.java | 38 --- .../core/thingsModel/ThingsModelRuleItem.java | 29 -- .../thingsModel/ThingsModelSimpleItem.java | 85 ----- .../thingsModel/ThingsModelValuesInput.java | 56 --- .../com/maibu/enums/NotifyChannelEnum.java | 46 --- .../enums/NotifyChannelProviderEnum.java | 318 ------------------ .../maibu/enums/NotifyServiceCodeEnum.java | 44 --- .../main/java/com/maibu/enums/OTAUpgrade.java | 41 --- .../java/com/maibu/enums/ThingsModelType.java | 50 --- .../java/com/maibu/enums/VerifyTypeEnum.java | 23 -- .../SceneModelTagOpreationEnum.java | 47 --- .../SceneModelVariableTypeEnum.java | 32 -- .../com/maibu/utils/BeanMapUtilByReflect.java | 74 ---- .../com/maibu/utils/file/QRCodeUtils.java | 68 ---- .../java/com/maibu/utils/modbus/BitUtils.java | 78 ----- .../com/maibu/utils/modbus/ModbusUtils.java | 76 ----- .../java/com/maibu/utils/modbus/Mparams.java | 16 - .../com/maibu/utils/wechat/AesException.java | 56 --- .../com/maibu/utils/wechat/ByteGroup.java | 26 -- .../com/maibu/utils/wechat/PKCS7Encoder.java | 59 ---- .../java/com/maibu/utils/wechat/SHA1.java | 57 ---- .../com/maibu/utils/wechat/WXBizMsgCrypt.java | 289 ---------------- .../com/maibu/utils/wechat/WechatUtils.java | 123 ------- .../java/com/maibu/utils/wechat/XMLParse.java | 103 ------ .../com/maibu/wechat/WeChatAppResult.java | 72 ---- .../com/maibu/wechat/WeChatLoginBody.java | 89 ----- .../com/maibu/wechat/WeChatLoginResult.java | 22 -- .../maibu/wechat/WeChatMiniProgramResult.java | 42 --- .../com/maibu/wechat/WeChatPhoneInfo.java | 41 --- .../java/com/maibu/wechat/WeChatUserInfo.java | 80 ----- .../com/maibu/wechat/WxCallBackXmlBO.java | 67 ---- maibu-external/pom.xml | 14 +- .../maibu/own/service/PathPlanService.java | 2 +- maibu-framework/pom.xml | 27 -- .../com/maibu/aspectj/DataSourceAspect.java | 74 ---- .../com/maibu/config/DataSourceConfig.java | 72 ---- .../java/com/maibu/config/DruidConfig.java | 74 ---- .../java/com/maibu/config/MyBatisConfig.java | 4 +- .../config/properties/DruidProperties.java | 75 ----- .../sharding/ShardingAlgorithmTool.java | 262 --------------- .../sharding/ShardingTablesLoadRunner.java | 21 -- .../sharding/TimeShardingAlgorithm.java | 191 ----------- .../enums/ShardingTableCacheEnum.java | 83 ----- .../maibu/datasource/DynamicDataSource.java | 30 -- .../DynamicDataSourceContextHolder.java | 45 --- .../com/maibu/mybatis/mapper/BaseMapperX.java | 19 ++ .../java/com/maibu/utils/IoTDAMqttClient.java | 2 +- .../main/java/com/maibu/init/InitThread.java | 2 +- .../java/com/maibu/memory/GlobalMemory.java | 2 +- .../netty/handler/CommandForwardHandler.java | 2 +- .../com/maibu/scheduled/ScheduledTask.java | 2 +- .../service/DevicePlanTaskMonitorService.java | 2 +- .../maibu/service/DeviceThreadService.java | 2 +- maibu-service/maibu-iot-service/pom.xml | 66 +--- .../java/com/maibu/mapper/DeviceMapper.java | 166 +-------- .../maibu/service/impl/DeviceServiceImpl.java | 9 +- .../com/maibu/mapper/SysRoleMenuMapper.java | 1 - .../service/impl/SysConfigServiceImpl.java | 1 - .../resources/system/AppLanguageMapper.xml | 6 +- .../resources/system/AppPreferencesMapper.xml | 6 +- .../resources/system/SysDictDataMapper.xml | 16 +- .../resources/system/SysDictTypeMapper.xml | 6 +- .../main/resources/system/SysMenuMapper.xml | 10 +- .../resources/system/SysRoleDeptMapper.xml | 4 +- .../resources/system/SysRoleMenuMapper.xml | 4 +- .../resources/system/SysTranslateMapper.xml | 6 +- .../resources/system/SysUserClientMapper.xml | 21 +- .../main/resources/system/SysUserMapper.xml | 4 +- .../resources/system/SysUserRoleMapper.xml | 4 +- pom.xml | 85 +++-- 116 files changed, 405 insertions(+), 5196 deletions(-) delete mode 100644 maibu-admin/src/main/resources/application-sql.yml delete mode 100644 maibu-common/src/main/java/com/maibu/core/domain/ImportExcelVO.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/domain/OutputExcelVO.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/iot/response/DashDeviceTotalDto.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/iot/response/DeCodeBo.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/iot/response/IdentityAndName.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/mq/DeviceReplyBo.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/mq/DeviceReport.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/mq/DeviceReportBo.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/mq/DeviceStatusBo.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/mq/DeviceTestReportBo.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/mq/GwDeviceBo.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/mq/InvokeReqDto.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/mq/MQSendMessageBo.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/mq/MessageReplyBo.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/mq/SubDeviceBo.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/mq/message/ReportDataBo.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/notify/AlertPushParams.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/notify/AppGeTuiParams.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/notify/EnterpriseWeChatAPPParams.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/notify/NotifyConfigVO.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/notify/NotifySendResponse.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/notify/WeChatServerParams.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/notify/alertPush/AlertPushItem.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/notify/alertPush/PushMsg.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/notify/config/DingTalkConfigParams.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/notify/config/EmailConfigParams.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/notify/config/VoiceConfigParams.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/notify/config/WeChatConfigParams.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/notify/msg/DingTalkMsgParams.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/notify/msg/EmailMsgParams.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/notify/msg/VoiceMsgParams.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/notify/msg/WeComMsgParams.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/notify/msg/WechatMsgParams.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/thingsModel/NeuronModel.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/thingsModel/SceneThingsModelItem.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/thingsModel/ThingsModelRuleItem.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/thingsModel/ThingsModelSimpleItem.java delete mode 100644 maibu-common/src/main/java/com/maibu/core/thingsModel/ThingsModelValuesInput.java delete mode 100644 maibu-common/src/main/java/com/maibu/enums/NotifyChannelEnum.java delete mode 100644 maibu-common/src/main/java/com/maibu/enums/NotifyChannelProviderEnum.java delete mode 100644 maibu-common/src/main/java/com/maibu/enums/NotifyServiceCodeEnum.java delete mode 100644 maibu-common/src/main/java/com/maibu/enums/OTAUpgrade.java delete mode 100644 maibu-common/src/main/java/com/maibu/enums/ThingsModelType.java delete mode 100644 maibu-common/src/main/java/com/maibu/enums/VerifyTypeEnum.java delete mode 100644 maibu-common/src/main/java/com/maibu/enums/scenemodel/SceneModelTagOpreationEnum.java delete mode 100644 maibu-common/src/main/java/com/maibu/enums/scenemodel/SceneModelVariableTypeEnum.java delete mode 100644 maibu-common/src/main/java/com/maibu/utils/BeanMapUtilByReflect.java delete mode 100644 maibu-common/src/main/java/com/maibu/utils/file/QRCodeUtils.java delete mode 100644 maibu-common/src/main/java/com/maibu/utils/modbus/BitUtils.java delete mode 100644 maibu-common/src/main/java/com/maibu/utils/modbus/ModbusUtils.java delete mode 100644 maibu-common/src/main/java/com/maibu/utils/modbus/Mparams.java delete mode 100644 maibu-common/src/main/java/com/maibu/utils/wechat/AesException.java delete mode 100644 maibu-common/src/main/java/com/maibu/utils/wechat/ByteGroup.java delete mode 100644 maibu-common/src/main/java/com/maibu/utils/wechat/PKCS7Encoder.java delete mode 100644 maibu-common/src/main/java/com/maibu/utils/wechat/SHA1.java delete mode 100644 maibu-common/src/main/java/com/maibu/utils/wechat/WXBizMsgCrypt.java delete mode 100644 maibu-common/src/main/java/com/maibu/utils/wechat/WechatUtils.java delete mode 100644 maibu-common/src/main/java/com/maibu/utils/wechat/XMLParse.java delete mode 100644 maibu-common/src/main/java/com/maibu/wechat/WeChatAppResult.java delete mode 100644 maibu-common/src/main/java/com/maibu/wechat/WeChatLoginBody.java delete mode 100644 maibu-common/src/main/java/com/maibu/wechat/WeChatLoginResult.java delete mode 100644 maibu-common/src/main/java/com/maibu/wechat/WeChatMiniProgramResult.java delete mode 100644 maibu-common/src/main/java/com/maibu/wechat/WeChatPhoneInfo.java delete mode 100644 maibu-common/src/main/java/com/maibu/wechat/WeChatUserInfo.java delete mode 100644 maibu-common/src/main/java/com/maibu/wechat/WxCallBackXmlBO.java delete mode 100644 maibu-framework/src/main/java/com/maibu/aspectj/DataSourceAspect.java delete mode 100644 maibu-framework/src/main/java/com/maibu/config/DataSourceConfig.java delete mode 100644 maibu-framework/src/main/java/com/maibu/config/DruidConfig.java delete mode 100644 maibu-framework/src/main/java/com/maibu/config/properties/DruidProperties.java delete mode 100644 maibu-framework/src/main/java/com/maibu/config/sharding/ShardingAlgorithmTool.java delete mode 100644 maibu-framework/src/main/java/com/maibu/config/sharding/ShardingTablesLoadRunner.java delete mode 100644 maibu-framework/src/main/java/com/maibu/config/sharding/TimeShardingAlgorithm.java delete mode 100644 maibu-framework/src/main/java/com/maibu/config/sharding/enums/ShardingTableCacheEnum.java delete mode 100644 maibu-framework/src/main/java/com/maibu/datasource/DynamicDataSource.java delete mode 100644 maibu-framework/src/main/java/com/maibu/datasource/DynamicDataSourceContextHolder.java diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 9bba8c1..6698edd 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -6,29 +6,121 @@ + + + + + + + - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + @@ -213,6 +324,11 @@ 13 diff --git a/maibu-admin/pom.xml b/maibu-admin/pom.xml index 3c496f6..1c24087 100644 --- a/maibu-admin/pom.xml +++ b/maibu-admin/pom.xml @@ -48,6 +48,18 @@ ${maibu.version} + + com.maibu + maibu-iot-service + ${maibu.version} + + + + com.maibu + maibu-system-service + ${maibu.version} + + io.springfox @@ -67,6 +79,13 @@ mysql-connector-java + + + com.alibaba + druid-spring-boot-starter + ${druid.version} + + com.maibu @@ -90,4 +109,34 @@ UTF-8 + + + + org.springframework.boot + spring-boot-maven-plugin + 2.1.1.RELEASE + + true + + + + + repackage + + + + + + org.apache.maven.plugins + maven-war-plugin + 3.1.0 + + false + ${project.artifactId} + + + + ${project.artifactId} + + \ No newline at end of file diff --git a/maibu-admin/src/main/java/com/maibu/MiddlePlatformApplication.java b/maibu-admin/src/main/java/com/maibu/MiddlePlatformApplication.java index 205b4ff..2898783 100644 --- a/maibu-admin/src/main/java/com/maibu/MiddlePlatformApplication.java +++ b/maibu-admin/src/main/java/com/maibu/MiddlePlatformApplication.java @@ -1,6 +1,5 @@ package com.maibu; -import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; import com.dtflys.forest.springboot.annotation.ForestScan; import com.maibu.netty.NettyServer; import com.maibu.websocket.WebsocketHandler; @@ -13,7 +12,7 @@ import org.springframework.context.ConfigurableApplicationContext; * * @author ruoyi */ -@SpringBootApplication(exclude = { DruidDataSourceAutoConfigure.class }) +@SpringBootApplication() @ForestScan(basePackages = "com.maibu") public class MiddlePlatformApplication { diff --git a/maibu-admin/src/main/java/com/maibu/web/controller/common/CommonController.java b/maibu-admin/src/main/java/com/maibu/web/controller/common/CommonController.java index 3038319..4029339 100644 --- a/maibu-admin/src/main/java/com/maibu/web/controller/common/CommonController.java +++ b/maibu-admin/src/main/java/com/maibu/web/controller/common/CommonController.java @@ -7,8 +7,6 @@ import java.util.List; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; -import com.google.zxing.client.j2se.MatrixToImageWriter; -import com.google.zxing.common.BitMatrix; import com.maibu.config.RuoYiConfig; import com.maibu.config.ServerConfig; import com.maibu.constant.Constants; @@ -17,7 +15,6 @@ import com.maibu.utils.MessageUtils; import com.maibu.utils.StringUtils; import com.maibu.utils.file.FileUploadUtils; import com.maibu.utils.file.FileUtils; -import com.maibu.utils.file.QRCodeUtils; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.slf4j.Logger; @@ -175,25 +172,25 @@ public class CommonController } } - /** - * 生成二维码 - * @param url url - - * */ - @GetMapping(value = "/createQrCode") - @ApiOperation("根据url生成二维码") - public void getCode(String url, HttpServletResponse response) throws IOException { - // 设置响应流信息 - response.setContentType("image/jpg"); - response.setHeader("Pragma", "no-cache"); - response.setHeader("Cache-Control", "no-cache"); - response.setDateHeader("Expires", 0); - - OutputStream stream = response.getOutputStream(); - - //获取一个二维码图片 - BitMatrix bitMatrix = QRCodeUtils.createCode(url); - //以流的形式输出到前端 - MatrixToImageWriter.writeToStream(bitMatrix , "jpg" , stream); - } +// /** +// * 生成二维码 +// * @param url url +// +// * */ +// @GetMapping(value = "/createQrCode") +// @ApiOperation("根据url生成二维码") +// public void getCode(String url, HttpServletResponse response) throws IOException { +// // 设置响应流信息 +// response.setContentType("image/jpg"); +// response.setHeader("Pragma", "no-cache"); +// response.setHeader("Cache-Control", "no-cache"); +// response.setDateHeader("Expires", 0); +// +// OutputStream stream = response.getOutputStream(); +// +// //获取一个二维码图片 +// BitMatrix bitMatrix = QRCodeUtils.createCode(url); +// //以流的形式输出到前端 +// MatrixToImageWriter.writeToStream(bitMatrix , "jpg" , stream); +// } } diff --git a/maibu-admin/src/main/java/com/maibu/web/controller/system/SysProfileController.java b/maibu-admin/src/main/java/com/maibu/web/controller/system/SysProfileController.java index 7a06471..a336592 100644 --- a/maibu-admin/src/main/java/com/maibu/web/controller/system/SysProfileController.java +++ b/maibu-admin/src/main/java/com/maibu/web/controller/system/SysProfileController.java @@ -8,10 +8,7 @@ import com.maibu.core.domain.AjaxResult; import com.maibu.core.domain.entity.SysUser; import com.maibu.core.domain.model.LoginUser; import com.maibu.enums.BusinessType; -import com.maibu.enums.SocialPlatformType; -import com.maibu.model.UserSocialProfile; import com.maibu.service.ISysUserService; -import com.maibu.service.IUserSocialProfileService; import com.maibu.utils.MessageUtils; import com.maibu.utils.SecurityUtils; import com.maibu.utils.StringUtils; @@ -22,17 +19,9 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.bind.annotation.PutMapping; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; -import org.springframework.web.bind.annotation.RequestParam; -import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; -import java.util.List; - /** * 个人信息 业务处理 * @@ -49,8 +38,8 @@ public class SysProfileController extends BaseController @Autowired private TokenService tokenService; - @Autowired - private IUserSocialProfileService iUserSocialProfileService; +// @Autowired +// private IUserSocialProfileService iUserSocialProfileService; /** * 个人信息 @@ -64,10 +53,10 @@ public class SysProfileController extends BaseController AjaxResult ajax = AjaxResult.success(user); ajax.put("roleGroup", userService.selectUserRoleGroup(loginUser.getUsername())); ajax.put("postGroup", userService.selectUserPostGroup(loginUser.getUsername())); - List socialProfileList = iUserSocialProfileService.selectUserSocialProfile(loginUser.getUserId()); - UserSocialProfile userSocialProfile = socialProfileList.stream().filter(s -> SocialPlatformType.listWechatPlatform.contains(s.getSourceClient()) && "1".equals(s.getStatus())).findFirst().orElse(null); - ajax.put("socialGroup", socialProfileList); - ajax.put("wxBind", userSocialProfile != null); +// List socialProfileList = iUserSocialProfileService.selectUserSocialProfile(loginUser.getUserId()); +// UserSocialProfile userSocialProfile = socialProfileList.stream().filter(s -> SocialPlatformType.listWechatPlatform.contains(s.getSourceClient()) && "1".equals(s.getStatus())).findFirst().orElse(null); +// ajax.put("socialGroup", socialProfileList); +// ajax.put("wxBind", userSocialProfile != null); return ajax; } diff --git a/maibu-admin/src/main/resources/application-dev.yml b/maibu-admin/src/main/resources/application-dev.yml index 12f90da..08bc936 100644 --- a/maibu-admin/src/main/resources/application-dev.yml +++ b/maibu-admin/src/main/resources/application-dev.yml @@ -1,33 +1,11 @@ # 数据源配置 spring: datasource: - dynamic: - primary: master - strict: false - datasource: - master: - type: com.alibaba.druid.pool.DruidDataSource - driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://localhost:3306/fastbee?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 - username: fastbee - password: maibu520 - # slave: - # type: com.alibaba.druid.pool.DruidDataSource - # driver-class-name: com.mysql.cj.jdbc.Driver - # url: jdbc:mysql://localhost:3306/fastbee1?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 - # username: root - # password: fastbee - sharding: - url: jdbc:shardingsphere:classpath:sharding-sphere-config.yaml - driver-class-name: org.apache.shardingsphere.driver.ShardingSphereDriver - taos: # 配置 taos 数据源 - enabled: false - type: com.alibaba.druid.pool.DruidDataSource - driver-class-name: com.taosdata.jdbc.TSDBDriver - url: jdbc:TAOS://fastbee:6030/fastbee_log?timezone=UTC-8&charset=utf-8 - username: root - password: taosdata - dbName: fastbee_log + type: com.alibaba.druid.pool.DruidDataSource + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://1.95.137.212:3306/fastbee?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + username: fastbee + password: maibu520 # redis 配置 redis: @@ -58,19 +36,6 @@ spring: max-file-size: 10MB max-request-size: 10MB -# sip 配置 -sip: - enabled: false # 是否启用视频监控SIP,true为启用 - ## 本地调试时,绑定网卡局域网IP,设备在同一局域网,设备接入IP填写绑定IP - ## 部署服务端时,默认绑定容器IP,设备接入IP填写服务器公网IP - ip: 177.7.0.13 - port: 5061 # SIP端口(保持默认) - domain: 3402000000 # 由省级、市级、区级、基层编号组成 - id: 34020000002000000001 # 同上,另外增加编号,(可保持默认) - password: 12345678 # 监控设备接入的密码 - log: true - zlmRecordPath: /opt/media/bin/www - # 日志配置 logging: level: diff --git a/maibu-admin/src/main/resources/application-prod.yml b/maibu-admin/src/main/resources/application-prod.yml index c61757c..ec315cd 100644 --- a/maibu-admin/src/main/resources/application-prod.yml +++ b/maibu-admin/src/main/resources/application-prod.yml @@ -1,44 +1,22 @@ # 数据源配置 spring: datasource: - dynamic: - primary: master - strict: false - datasource: - master: - type: com.alibaba.druid.pool.DruidDataSource - driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://localhost:3306/fastbee?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 - username: root - password: maibu520 - filters: stat,wall - filter: - stat: - enabled: true - # 慢SQL记录 - log-slow-sql: true - slow-sql-millis: 1000 - merge-sql: true - wall: - config: - multi-statement-allow: true -# slave: -# type: com.alibaba.druid.pool.DruidDataSource -# driver-class-name: com.mysql.cj.jdbc.Driver -# url: jdbc:mysql://localhost:3306/fastbee1?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 -# username: root -# password: fastbee - sharding: - url: jdbc:shardingsphere:classpath:sharding-sphere-config.yaml - driver-class-name: org.apache.shardingsphere.driver.ShardingSphereDriver - taos: # 配置 taos 数据源 - enabled: true - type: com.alibaba.druid.pool.DruidDataSource - driver-class-name: com.taosdata.jdbc.TSDBDriver - url: jdbc:TAOS://fastbee:6030/fastbee_log?timezone=UTC-8&charset=utf-8 - username: root - password: taosdata - dbName: fastbee_log + type: com.alibaba.druid.pool.DruidDataSource + driver-class-name: com.mysql.cj.jdbc.Driver + url: jdbc:mysql://localhost:3306/fastbee?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 + username: root + password: maibu520 + filters: stat,wall + filter: + stat: + enabled: true + # 慢SQL记录 + log-slow-sql: true + slow-sql-millis: 1000 + merge-sql: true + wall: + config: + multi-statement-allow: true # redis 配置 redis: host: 177.7.0.10 # 地址 diff --git a/maibu-admin/src/main/resources/application-sql.yml b/maibu-admin/src/main/resources/application-sql.yml deleted file mode 100644 index 98c80e1..0000000 --- a/maibu-admin/src/main/resources/application-sql.yml +++ /dev/null @@ -1,91 +0,0 @@ -# 数据源配置 -spring: - datasource: - dynamic: - primary: master - strict: false - datasource: - master: - type: com.alibaba.druid.pool.DruidDataSource - driver-class-name: com.mysql.cj.jdbc.Driver - url: jdbc:mysql://localhost:3306/fastbee?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 - username: root - password: maibu520 - filters: stat,wall - filter: - stat: - enabled: true - # 慢SQL记录 - log-slow-sql: true - slow-sql-millis: 1000 - merge-sql: true - wall: - config: - multi-statement-allow: true -# slave: -# type: com.alibaba.druid.pool.DruidDataSource -# driver-class-name: com.mysql.cj.jdbc.Driver -# url: jdbc:mysql://localhost:3306/fastbee1?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8 -# username: root -# password: fastbee - sharding: - url: jdbc:shardingsphere:classpath:sharding-sphere-config.yaml - driver-class-name: org.apache.shardingsphere.driver.ShardingSphereDriver - taos: # 配置 taos 数据源 - enabled: true - type: com.alibaba.druid.pool.DruidDataSource - driver-class-name: com.taosdata.jdbc.TSDBDriver - url: jdbc:TAOS://fastbee:6030/fastbee_log?timezone=UTC-8&charset=utf-8 - username: root - password: taosdata - dbName: fastbee_log - # redis 配置 - redis: - host: localhost # 地址 - port: 6379 # 端口,默认为6379 - database: 3 # 数据库索引 - password: # 密码 - timeout: 10s # 连接超时时间 - lettuce: - pool: - min-idle: 0 # 连接池中的最小空闲连接 - max-idle: 8 # 连接池中的最大空闲连接 - max-active: 8 # 连接池的最大数据库连接数 - max-wait: -1ms # 连接池最大阻塞等待时间(使用负值表示没有限制) - # mqtt 配置 - mqtt: - username: fastbee # 账号 - password: fastbee # 密码 - host-url: tcp://localhost:1883 # mqtt连接tcp地址 - client-id: ${random.int} # 客户端Id,不能相同,采用随机数 ${random.value} - default-topic: test # 默认主题 - timeout: 30 # 超时时间 - keepalive: 30 # 保持连接 - clearSession: true # 清除会话(设置为false,断开连接,重连后使用原来的会话 保留订阅的主题,能接收离线期间的消息) - -# sip 配置 -sip: - enabled: true # 是否启用视频监控SIP,true为启用 - ## 默认为容器IP,IDE启动可以写本地网卡内网IP或者127.0.0.1 - ## 本地调试需保持设备与服务器在同一局域网 - ip: 192.168.31.165 - port: 5061 # SIP端口(保持默认) - domain: 3402000000 # 由省级、市级、区级、基层编号组成 - id: 34020000002000000001 # 同上,另外增加编号,(可保持默认) - password: 12345678 # 监控设备接入的密码 - log: true - zlmRecordPath: /opt/media/bin/www - -# 日志配置 -logging: - level: - com.fastbee: debug - com.yomahub: debug - org.dromara: warn - org.springframework: warn - -# Swagger配置 -swagger: - enabled: true # 是否开启swagger - pathMapping: /dev-api # 请求前缀 - diff --git a/maibu-admin/src/main/resources/application.yml b/maibu-admin/src/main/resources/application.yml index a4fa367..9c2b9a0 100644 --- a/maibu-admin/src/main/resources/application.yml +++ b/maibu-admin/src/main/resources/application.yml @@ -107,16 +107,10 @@ token: secret: abcdefghijklfastbeesmartrstuvwxyz # 令牌密钥 expireTime: 1440 # 令牌有效期(默认30分钟)1440为一天 -# MyBatis配置 -#mybatis: -# typeAliasesPackage: com.fastbee.**.domain # 搜索指定包别名 -# mapperLocations: classpath*:mapper/**/*Mapper.xml # 配置mapper的扫描,找到所有的mapper.xml映射文件 -# configLocation: classpath:mybatis/mybatis-config.xml # 加载全局的配置文件 - # mybatis-plus配置 mybatis-plus: typeAliasesPackage: com.maibu.**.domain # 搜索指定包别名 - mapperLocations: classpath*:mapper/**/*Mapper.xml # 配置mapper的扫描,找到所有的mapper.xml映射文件 + mapperLocations: classpath*:mapper/**/*Mapper.xml,classpath*:system/**/*Mapper.xml # 配置mapper的扫描,找到所有的mapper.xml映射文件 configLocation: classpath:mybatis/mybatis-config.xml # 加载全局的配置文件 global-config: db-config: @@ -182,37 +176,3 @@ forest: # Forest配置 版本为1.5.36 log-response-status: true # 打开/关闭Forest响应状态日志(默认为 true) log-response-content: true # 打开/关闭Forest响应内容日志(默认为 false) async-mode: platform # [自v1.5.27版本起可用] 异步模式(默认为 platform) - -liteflow: - #FlowExecutor的execute2Future的线程数,默认为64 - main-executor-works: 64 - #FlowExecutor的execute2Future的自定义线程池Builder - main-executor-class: com.fastbee.ruleEngine.config.MainExecutorBuilder - #并行节点的线程池Builder - thread-executor-class: com.fastbee.ruleEngine.config.WhenExecutorBuilder - rule-source-ext-data-map: - # 应用名称,规则链和脚本组件名称需要一致,不要修改 - applicationName: fastbee - #是否开启SQL日志 - sqlLogEnabled: true - # 规则多时,启用快速加载模式 - fast-load: false - #是否开启SQL数据轮询自动刷新机制 默认不开启 - pollingEnabled: false - pollingIntervalSeconds: 60 - pollingStartSeconds: 60 - #以下是chain表的配置 - chainTableName: iot_scene - chainApplicationNameField: application_name - chainNameField: chain_name - elDataField: el_data - chainEnableField: enable - #以下是script表的配置 - scriptTableName: iot_script - scriptApplicationNameField: application_name - scriptIdField: script_id - scriptNameField: script_name - scriptDataField: script_data - scriptTypeField: script_type - scriptLanguageField: script_language - scriptEnableField: enable diff --git a/maibu-admin/src/main/resources/banner.txt b/maibu-admin/src/main/resources/banner.txt index b8ebf46..3674156 100644 --- a/maibu-admin/src/main/resources/banner.txt +++ b/maibu-admin/src/main/resources/banner.txt @@ -1,2 +1,2 @@ -Application Version: ${fastbee.version} +Application Version: ${maibu.version} Spring Boot Version: ${spring-boot.version} \ No newline at end of file diff --git a/maibu-common/pom.xml b/maibu-common/pom.xml index db2d0b6..4cdc24d 100644 --- a/maibu-common/pom.xml +++ b/maibu-common/pom.xml @@ -101,11 +101,11 @@ jjwt - - - javax.xml.bind - jaxb-api - + + + + + @@ -114,10 +114,10 @@ - - org.apache.commons - commons-pool2 - + + + + @@ -162,50 +162,50 @@ - - com.google.guava - guava - + + + + - - com.alibaba - easyexcel-core - + + + + - - org.dromara.sms4j - sms4j-spring-boot-starter - 3.0.4 - + + + + + - - org.mapstruct - mapstruct - - - org.mapstruct - mapstruct-jdk8 - - - org.mapstruct - mapstruct-processor - + + + + + + + + + + + + - - com.google.zxing - core - + + + + - - com.google.zxing - javase - + + + + io.minio minio - 7.1.4 + 8.5.7 diff --git a/maibu-common/src/main/java/com/maibu/core/domain/ImportExcelVO.java b/maibu-common/src/main/java/com/maibu/core/domain/ImportExcelVO.java deleted file mode 100644 index 4ba1be2..0000000 --- a/maibu-common/src/main/java/com/maibu/core/domain/ImportExcelVO.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.maibu.core.domain; - -import com.maibu.annotation.Excel; -import lombok.Data; - -/** - * @author admin - * @version 1.0 - * @description: TODO - * @date 2024-07-12 16:20 - */ -@Data -public class ImportExcelVO { - - @Excel(name = "ID") - private Long id; - - @Excel(name = "城市ID") - private String code; - - @Excel(name = "行政归属") - private String city; - - @Excel(name = "城市简称") - private String simCity; - - @Excel(name = "拼音") - private String cn; - - @Excel(name = "lat") - private String lat; - - @Excel(name = "lon") - private String lon; - -} diff --git a/maibu-common/src/main/java/com/maibu/core/domain/OutputExcelVO.java b/maibu-common/src/main/java/com/maibu/core/domain/OutputExcelVO.java deleted file mode 100644 index 83b9aaf..0000000 --- a/maibu-common/src/main/java/com/maibu/core/domain/OutputExcelVO.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.maibu.core.domain; - -import lombok.Data; - -import java.util.List; - -/** - * @author admin - * @version 1.0 - * @description: TODO - * @date 2024-07-12 16:25 - */ -@Data -public class OutputExcelVO { - - private String code; - - private String name; - - private String lat; - - private String lon; - - private List children; -} diff --git a/maibu-common/src/main/java/com/maibu/core/domain/entity/UserClient.java b/maibu-common/src/main/java/com/maibu/core/domain/entity/UserClient.java index 31d663c..fdd7b54 100644 --- a/maibu-common/src/main/java/com/maibu/core/domain/entity/UserClient.java +++ b/maibu-common/src/main/java/com/maibu/core/domain/entity/UserClient.java @@ -1,5 +1,6 @@ package com.maibu.core.domain.entity; +import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; diff --git a/maibu-common/src/main/java/com/maibu/core/iot/response/DashDeviceTotalDto.java b/maibu-common/src/main/java/com/maibu/core/iot/response/DashDeviceTotalDto.java deleted file mode 100644 index e7cb5fe..0000000 --- a/maibu-common/src/main/java/com/maibu/core/iot/response/DashDeviceTotalDto.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.maibu.core.iot.response; - -import lombok.Data; - -/** - * 大屏设备总览数据 - * @author bill - */ -@Data -public class DashDeviceTotalDto { - - /*设备总数*/ - private Integer total; - /*在线设备总数*/ - private Integer onlineCount; - /*离线设备总数*/ - private Integer OfflineCount; - /*未激活设备数*/ - private Integer unActiveCount; - - -} diff --git a/maibu-common/src/main/java/com/maibu/core/iot/response/DeCodeBo.java b/maibu-common/src/main/java/com/maibu/core/iot/response/DeCodeBo.java deleted file mode 100644 index ed10181..0000000 --- a/maibu-common/src/main/java/com/maibu/core/iot/response/DeCodeBo.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.maibu.core.iot.response; - -import lombok.Data; - -/** - * @author gsb - * @date 2023/4/8 15:43 - */ -@Data -public class DeCodeBo { - - /**原始报文*/ - private String payload; - /**从机编号*/ - private Integer slaveId; - /**寄存器地址*/ - private Integer address; - /**功能码*/ - private Integer code; - /**读取个数*/ - private Integer count; - /**写入值*/ - private Integer writeData; - /**读写类型 1-解析 2-读指令 3-写指令 */ - private Integer type; -} diff --git a/maibu-common/src/main/java/com/maibu/core/iot/response/IdentityAndName.java b/maibu-common/src/main/java/com/maibu/core/iot/response/IdentityAndName.java deleted file mode 100644 index 480bdcc..0000000 --- a/maibu-common/src/main/java/com/maibu/core/iot/response/IdentityAndName.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.maibu.core.iot.response; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * 物模型值的项 - * - * @author kerwincui - * @date 2021-12-16 - */ -@NoArgsConstructor -@AllArgsConstructor -@Data -public class IdentityAndName -{ - - public IdentityAndName(String id,String value){ - this.id=id; - this.value=value; - } - - public IdentityAndName(String id,Integer isHistory){ - this.id=id; - this.isHistory=isHistory; - } - - public IdentityAndName(String id, Integer isHistory, String specs, String name, Integer type){ - this.id = id; - this.isHistory = isHistory; - this.dataType = specs; - this.name = name; - this.type = type; - } - - /** 物模型唯一标识符 */ - private String id; - /** 物模型值 */ - private Object value; - - private Integer isChart; - - /**是否监控*/ - private Integer isHistory; - /** - * 数据定义 - */ - private String dataType; - /**物模型名称*/ - private String name; - /** - * 物模型类型 - */ - private Integer type; - /** - * 是否是参数 - */ - private Integer isParams; - - private String formula; - - private Integer slaveId; - - private Integer tempSlaveId; - - private Integer quantity; - - private String code; -} diff --git a/maibu-common/src/main/java/com/maibu/core/mq/DeviceReplyBo.java b/maibu-common/src/main/java/com/maibu/core/mq/DeviceReplyBo.java deleted file mode 100644 index 8c836df..0000000 --- a/maibu-common/src/main/java/com/maibu/core/mq/DeviceReplyBo.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.maibu.core.mq; - -import lombok.Data; - -/** - * @author bill - */ -@Data -public class DeviceReplyBo { - - /*设备下发消息id*/ - private String messageId; - /*标识符*/ - private String id; - /**下发值*/ - private String value; -} diff --git a/maibu-common/src/main/java/com/maibu/core/mq/DeviceReport.java b/maibu-common/src/main/java/com/maibu/core/mq/DeviceReport.java deleted file mode 100644 index 8e8b35d..0000000 --- a/maibu-common/src/main/java/com/maibu/core/mq/DeviceReport.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.maibu.core.mq; - -import com.maibu.core.protocol.Message; -import com.maibu.core.thingsModel.ThingsModelSimpleItem; -import com.maibu.enums.FunctionReplyStatus; -import com.maibu.enums.ServerType; -import lombok.Data; -import lombok.EqualsAndHashCode; - -import java.util.Date; -import java.util.List; - - -/** - * 设备上行数据model - * - * @author bill - */ -@EqualsAndHashCode(callSuper = true) -@Data -public class DeviceReport extends Message { - - /** - * 设备编号 - */ - private String serialNumber; - /** - * 产品ID - */ - private Long productId; - /** - * 平台时间 - */ - private Date platformDate; - /** - * 消息id - */ - private String messageId; - - /** 设备物模型值的集合 **/ - private List thingsModelSimpleItem; - - /** - * 是否设备回复数据 - */ - private Boolean isReply = false; - /** - * 原数据报文 - */ - private String sources; - - /** - * 设备回复消息 - */ - private String replyMessage; - /** - * 设备回复状态 - */ - private FunctionReplyStatus status; - /** - * 从机编号 - */ - private Integer slaveId; - /** - * 服务器类型 - */ - private ServerType serverType; - - private String protocolCode; - - private Long userId; - private String userName; - private String deviceName; - - private SubDeviceBo subDeviceBo; - - private GwDeviceBo gwDeviceBo; -} diff --git a/maibu-common/src/main/java/com/maibu/core/mq/DeviceReportBo.java b/maibu-common/src/main/java/com/maibu/core/mq/DeviceReportBo.java deleted file mode 100644 index ef6ffce..0000000 --- a/maibu-common/src/main/java/com/maibu/core/mq/DeviceReportBo.java +++ /dev/null @@ -1,77 +0,0 @@ -package com.maibu.core.mq; - -import com.maibu.core.mq.message.PropRead; -import com.maibu.core.thingsModel.ThingsModelSimpleItem; -import com.maibu.enums.FunctionReplyStatus; -import com.maibu.enums.ServerType; -import com.maibu.enums.ThingsModelType; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.Date; -import java.util.List; - -/** - * 设备上报 - * @author bill - */ -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class DeviceReportBo { - - /*设备编号或IMEI号*/ - private String serialNumber; - /*产品ID*/ - private Long productId; - /*4G物联网卡CCID*/ - private String ccId; - /*topic*/ - private String topicName; - /*mqtt消息中的packetId*/ - private Long packetId; - /*上报时间*/ - private Date platformDate; - /*物模型类型 1=-属性,2-功能,3-事件 */ - private ThingsModelType type; - /*上报数据*/ - private byte[] data; - /*1-设备数据上报 2- 下发指令给设备,设备应答数据*/ - private Integer reportType; - /*消息id*/ - private String messageId; - /* modbus协议消息回调,记录数据*/ - private PropRead prop; - - /** 设备物模型值的集合 **/ - private List thingsModelSimpleItem; - /*处理的消息服务类型*/ - private ServerType serverType; - private Integer slaveId; - - /** - * 是否设备回复数据 - */ - private Boolean isReply = false; - - /** - * 设备回复消息 - */ - private String replyMessage; - /** - * 设备回复状态 - */ - private FunctionReplyStatus status; - /** - * 寄存器地址 - */ - private int address; - - private String protocolCode; - - private String sources; - -} diff --git a/maibu-common/src/main/java/com/maibu/core/mq/DeviceStatusBo.java b/maibu-common/src/main/java/com/maibu/core/mq/DeviceStatusBo.java deleted file mode 100644 index 07f0f73..0000000 --- a/maibu-common/src/main/java/com/maibu/core/mq/DeviceStatusBo.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.maibu.core.mq; - -import com.maibu.enums.DeviceStatus; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.Date; - -/** - * 设备状态 - * @author bill - */ -@AllArgsConstructor -@NoArgsConstructor -@Data -@Builder -public class DeviceStatusBo { - /** - * 设备客户端id - */ - private String serialNumber; - /**是否活跃*/ - private DeviceStatus status; - /**消息时间*/ - private Date timestamp; - /*host*/ - private String hostName; - /*port*/ - private Integer port; - - private String ip; - -} diff --git a/maibu-common/src/main/java/com/maibu/core/mq/DeviceTestReportBo.java b/maibu-common/src/main/java/com/maibu/core/mq/DeviceTestReportBo.java deleted file mode 100644 index 5edc3fa..0000000 --- a/maibu-common/src/main/java/com/maibu/core/mq/DeviceTestReportBo.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.maibu.core.mq; - -import com.maibu.core.thingsModel.ThingsModelSimpleItem; -import lombok.Data; - -import java.util.List; - -/** - * @author bill - */ -@Data -public class DeviceTestReportBo { - - private Long productId; - /** - * 设备编号 - */ - private String serialNumber; - /** - * 是否是回复数据 - */ - private Boolean isReply; - - /** - * 设备物模型值的集合 - */ - private List thingsModelSimpleItem; - /** - * 原报文 - */ - private Object sources; -} diff --git a/maibu-common/src/main/java/com/maibu/core/mq/GwDeviceBo.java b/maibu-common/src/main/java/com/maibu/core/mq/GwDeviceBo.java deleted file mode 100644 index e7595fb..0000000 --- a/maibu-common/src/main/java/com/maibu/core/mq/GwDeviceBo.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.maibu.core.mq; - - -import lombok.Data; - -/** - * @author gsb - * @date 2024/9/4 10:49 - */ -@Data -public class GwDeviceBo { - - private Long productId; - - private String serialNumber; -} diff --git a/maibu-common/src/main/java/com/maibu/core/mq/InvokeReqDto.java b/maibu-common/src/main/java/com/maibu/core/mq/InvokeReqDto.java deleted file mode 100644 index 1963ea9..0000000 --- a/maibu-common/src/main/java/com/maibu/core/mq/InvokeReqDto.java +++ /dev/null @@ -1,63 +0,0 @@ -package com.maibu.core.mq; - -import com.alibaba.fastjson2.JSONObject; -import com.maibu.enums.ThingsModelType; -import com.maibu.utils.DateUtils; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import javax.validation.constraints.NotNull; -import java.util.Date; -import java.util.Map; - -/** - * @author gsb - * @date 2022/12/5 11:26 - */ -@Data -public class InvokeReqDto { - - @ApiModelProperty(value = "设备编号") - private String serialNumber; - - @NotNull(message = "标识符不能为空") - @ApiModelProperty(value = "标识符") - private String identifier; - /**消息体*/ - @ApiModelProperty(value = "消息体") - private JSONObject params; - /**远程消息体*/ - @ApiModelProperty(value = "远程调用消息体") - private Map remoteCommand; - /**设备超时时间*/ - @ApiModelProperty(value = "设备超时响应时间,默认10s") - private Integer timeOut = 10; - - @ApiModelProperty(value = "下发物模型类型") - private Integer type = ThingsModelType.SERVICE.getCode(); - - @ApiModelProperty(value = "是否是影子模式") - private String isShadow ; - - @ApiModelProperty(value = "产品id") - private Long productId; - - /** - * 物模型名称 - */ - private String modelName; - - private Date timestamp = DateUtils.getNowDate(); - - /** - * 场景id - */ - private Long sceneModelId; - - /** - * 场景变量类型 - */ - private Integer variableType; - - private Long userId; -} diff --git a/maibu-common/src/main/java/com/maibu/core/mq/MQSendMessageBo.java b/maibu-common/src/main/java/com/maibu/core/mq/MQSendMessageBo.java deleted file mode 100644 index e56d8ee..0000000 --- a/maibu-common/src/main/java/com/maibu/core/mq/MQSendMessageBo.java +++ /dev/null @@ -1,61 +0,0 @@ -package com.maibu.core.mq; - -import com.alibaba.fastjson2.JSONObject; -import com.maibu.core.device.DeviceAndProtocol; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * 服务(指令)下发对象 - * - * @author bill - */ -@Data -@NoArgsConstructor -public class MQSendMessageBo { - - /** - * 设备编号 - */ - private String serialNumber; - /** - * 下发属性标识符 - */ - private String identifier; - /** - * 下发参数 - */ - private JSONObject params; - - /** - * 下发的值 - */ - private String value; - /** - * messageId生成放到调用接口的时候生成 - */ - private String messageId; - /** - * 协议产品相关信息 - */ - private DeviceAndProtocol dp; - - /** - * 物模型 - */ - private String thingsModel; - /** - * 主题 - */ - private String topicName; - - - public Boolean isShadow; - - public Long userId; - - public Long delay; - - private String parentSerialNumber; - -} diff --git a/maibu-common/src/main/java/com/maibu/core/mq/MessageReplyBo.java b/maibu-common/src/main/java/com/maibu/core/mq/MessageReplyBo.java deleted file mode 100644 index 3bc881a..0000000 --- a/maibu-common/src/main/java/com/maibu/core/mq/MessageReplyBo.java +++ /dev/null @@ -1,51 +0,0 @@ -package com.maibu.core.mq; - -import com.fasterxml.jackson.annotation.JsonFormat; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; -import lombok.NoArgsConstructor; - -import java.util.Date; - -/** - * 设备消息回调或者下发指令值 - * - * @author gsb - * @date 2022/5/11 9:27 - */ -@Data -@Builder -@NoArgsConstructor -@AllArgsConstructor -public class MessageReplyBo { - - - private String id; - /** - * 消息回执的messageId,和下行消息呼应 - */ - private String messageId; - /** - * 设备处理消息的状态 - */ - private Integer status; - /** - * 抵达服务器时间 - */ - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date timestamp; - /** - * 设备上报的时间 - */ - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date deviceTimestamp; - /** - * 回执消息内容 - */ - private String body; - /*产品编号*/ - private Long productId; - /*设备编号*/ - private String serialNumber; -} diff --git a/maibu-common/src/main/java/com/maibu/core/mq/SubDeviceBo.java b/maibu-common/src/main/java/com/maibu/core/mq/SubDeviceBo.java deleted file mode 100644 index d7d2e6c..0000000 --- a/maibu-common/src/main/java/com/maibu/core/mq/SubDeviceBo.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.maibu.core.mq; - -import lombok.Data; - -/** - * @author bill - */ -@Data -public class SubDeviceBo { - /** - * 网关设备id - */ - - private Long gwDeviceId; - - /** - * 子设备id - */ - private Long subDeviceId; - - /** - * 从机地址 - */ - private Integer slaveId; - /** - * 子设备名称 - */ - private String subDeviceName; - /** - * 子设备编号 - */ - private String subDeviceNo; - - private Long subProductId; -} diff --git a/maibu-common/src/main/java/com/maibu/core/mq/message/ReportDataBo.java b/maibu-common/src/main/java/com/maibu/core/mq/message/ReportDataBo.java deleted file mode 100644 index d895d14..0000000 --- a/maibu-common/src/main/java/com/maibu/core/mq/message/ReportDataBo.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.maibu.core.mq.message; - -import com.maibu.core.mq.GwDeviceBo; -import com.maibu.core.thingsModel.ThingsModelSimpleItem; -import lombok.Data; -import lombok.experimental.Accessors; - -import java.util.List; - -/** - * 上报数据模型bo - * @author bill - */ -@Data -@Accessors(chain = true) -public class ReportDataBo { - - /**产品id*/ - private Long productId; - /**设备编号*/ - private String serialNumber; - /**上报消息*/ - private String message; - /**上报的数据*/ - private List dataList; - /**设备影子*/ - private boolean isShadow; - /** - * 物模型类型 - * 1=属性,2=功能,3=事件,4=设备升级,5=设备上线,6=设备下线 - */ - private int type; - /**是否执行规则引擎*/ - private boolean isRuleEngine; - /**从机编号*/ - private Integer slaveId; - /** - * 上报原数据包 - */ - private Object sources; - - private GwDeviceBo gwDeviceBo; - - private Long userId; - private String userName; - private String deviceName; - -} diff --git a/maibu-common/src/main/java/com/maibu/core/notify/AlertPushParams.java b/maibu-common/src/main/java/com/maibu/core/notify/AlertPushParams.java deleted file mode 100644 index 8ffca71..0000000 --- a/maibu-common/src/main/java/com/maibu/core/notify/AlertPushParams.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.maibu.core.notify; - -import lombok.Data; - -import java.util.Set; - -/** - * @author fastb - * @version 1.0 - * @description: TODO - * @date 2023-12-26 11:03 - */ -@Data -public class AlertPushParams { - - /** - * 通知模版id - */ - private Long notifyTemplateId; - /** - * 告警时间 - */ - private String alertTime; - /** - * 设备名称 - */ - private String deviceName; - /** - * 设备编号 - */ - private String serialNumber; - /** - * 告警发生地点 - */ - private String address; - /** - * 告警名称 - */ - private String alertName; - /** - * 告警推送手机号 - */ - private Set userPhoneSet; - /** - * 告警推送用户id - */ - private Set userIdSet; -} diff --git a/maibu-common/src/main/java/com/maibu/core/notify/AppGeTuiParams.java b/maibu-common/src/main/java/com/maibu/core/notify/AppGeTuiParams.java deleted file mode 100644 index 5d71aaa..0000000 --- a/maibu-common/src/main/java/com/maibu/core/notify/AppGeTuiParams.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.maibu.core.notify; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.experimental.Accessors; -import org.dromara.sms4j.provider.config.BaseConfig; - -/** - * 个推参数配置 - * @author gsb - * @date 2023/12/11 17:14 - */ -@Data -@Accessors(chain = true) -public class AppGeTuiParams extends BaseConfig { - - @ApiModelProperty("appId") - private String appId; - - @ApiModelProperty("appKey") - private String appKey; - - @ApiModelProperty("秘钥") - private String masterSecret; - - @ApiModelProperty("模板参数") - private String params; - - @Override - public String getSupplier() { - return null; - } -} diff --git a/maibu-common/src/main/java/com/maibu/core/notify/EnterpriseWeChatAPPParams.java b/maibu-common/src/main/java/com/maibu/core/notify/EnterpriseWeChatAPPParams.java deleted file mode 100644 index bf0b1e1..0000000 --- a/maibu-common/src/main/java/com/maibu/core/notify/EnterpriseWeChatAPPParams.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.maibu.core.notify; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.experimental.Accessors; -import org.dromara.sms4j.provider.config.BaseConfig; - -/** - * 企业微信(应用消息) - * @author gsb - * @date 2023/12/11 17:25 - */ -@Data -@Accessors(chain = true) -public class EnterpriseWeChatAPPParams extends BaseConfig { - - @ApiModelProperty("企业ID") - private String corpId; - @ApiModelProperty("企业应用私钥OA") - private String corpSecret; - @ApiModelProperty("企业应用的id") - private Integer agentId; - //@ApiModelProperty("token") - //private String token; - //@ApiModelProperty("aes秘钥") - //private String aesKey; - - @ApiModelProperty("模板参数") - private String params; - - @Override - public String getSupplier() { - return null; - } -} diff --git a/maibu-common/src/main/java/com/maibu/core/notify/NotifyConfigVO.java b/maibu-common/src/main/java/com/maibu/core/notify/NotifyConfigVO.java deleted file mode 100644 index 242bc82..0000000 --- a/maibu-common/src/main/java/com/maibu/core/notify/NotifyConfigVO.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.maibu.core.notify; - -import lombok.AllArgsConstructor; -import lombok.Data; -import lombok.NoArgsConstructor; - -/** - * @author fastb - * @version 1.0 - * @description: 通知配置参数属性VO类 - * @date 2024-01-09 14:01 - */ -@AllArgsConstructor -@NoArgsConstructor -@Data -public class NotifyConfigVO { - - /** - * 配置属性 - */ - private String attribute; - - /** - * 配置属性名称 - */ - private String name; - - /** - * 配置属性样式 string-字符串;text-富文本;file-文件;boolean-启用;int-整数 - */ - private String type; - - /** - * 值 - */ - private String value; -} diff --git a/maibu-common/src/main/java/com/maibu/core/notify/NotifySendResponse.java b/maibu-common/src/main/java/com/maibu/core/notify/NotifySendResponse.java deleted file mode 100644 index c8d9f8e..0000000 --- a/maibu-common/src/main/java/com/maibu/core/notify/NotifySendResponse.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.maibu.core.notify; - -import lombok.Data; - -/** - * @author fastb - * @version 1.0 - * @description: 通知发送响应类 - * @date 2024-01-11 16:06 - */ -@Data -public class NotifySendResponse { - - /** - * 发送结果 1-成功;0-失败 - */ - private Integer status = 0; - - /** - * 返回结果内容 - */ - private String resultContent = ""; - - /** - * 发送内容,变量替换后的 - */ - private String sendContent = ""; - - /** - * 不是使用sendAccount账号发送,而是像钉钉这种,发送所有人或部门,记录这个 - */ - private String otherSendAccount = ""; -} diff --git a/maibu-common/src/main/java/com/maibu/core/notify/WeChatServerParams.java b/maibu-common/src/main/java/com/maibu/core/notify/WeChatServerParams.java deleted file mode 100644 index 16aecbb..0000000 --- a/maibu-common/src/main/java/com/maibu/core/notify/WeChatServerParams.java +++ /dev/null @@ -1,31 +0,0 @@ -package com.maibu.core.notify; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; -import lombok.experimental.Accessors; - -/** - * 微信服务号推送参数 - * @author gsb - * @date 2023/12/11 17:11 - */ -@Data -@Accessors(chain = true) -public class WeChatServerParams { - - @ApiModelProperty("appId") - private String appId; - - @ApiModelProperty("app秘钥") - private String secret; - - @ApiModelProperty("模板ID") - private String templateId; - - @ApiModelProperty("跳转地址") - private String page; - - @ApiModelProperty("模板参数") - private String params; - -} diff --git a/maibu-common/src/main/java/com/maibu/core/notify/alertPush/AlertPushItem.java b/maibu-common/src/main/java/com/maibu/core/notify/alertPush/AlertPushItem.java deleted file mode 100644 index 6b43ec8..0000000 --- a/maibu-common/src/main/java/com/maibu/core/notify/alertPush/AlertPushItem.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.maibu.core.notify.alertPush; - -import lombok.Data; - -/** - * 推送项item - * @author bill - */ -@Data -public class AlertPushItem { - - /** - * 告警时间 - */ - private String alertTime; - /** - * 设备编号 - */ - private String serialNumber; - /** - * 告警发生地点 - */ - private String address; - /** - * 告警名称 - */ - private String alertName; -} diff --git a/maibu-common/src/main/java/com/maibu/core/notify/alertPush/PushMsg.java b/maibu-common/src/main/java/com/maibu/core/notify/alertPush/PushMsg.java deleted file mode 100644 index 033f944..0000000 --- a/maibu-common/src/main/java/com/maibu/core/notify/alertPush/PushMsg.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.maibu.core.notify.alertPush; - -import lombok.Data; - -import java.util.List; - -/** - * 推送配置信息 - * @author bill - */ -@Data -public class PushMsg { - - /** - * 用户Id - */ - private Long userId; - /** - * 设备id - */ - private Long deviceId; - /** - * 告警id - */ - private Long alertId; - /** - * 推送内容值 - */ - private AlertPushItem item; - - private List values; -} diff --git a/maibu-common/src/main/java/com/maibu/core/notify/config/DingTalkConfigParams.java b/maibu-common/src/main/java/com/maibu/core/notify/config/DingTalkConfigParams.java deleted file mode 100644 index 0282eb7..0000000 --- a/maibu-common/src/main/java/com/maibu/core/notify/config/DingTalkConfigParams.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.maibu.core.notify.config; - -import lombok.Data; - -/** - * @author fastb - * @version 1.0 - * @description: 钉钉渠道应用配置类 - * @date 2024-01-12 17:50 - */ -@Data -public class DingTalkConfigParams { - - private String appKey; - - private String appSecret; - - private String agentId; - - private String webHook; -} diff --git a/maibu-common/src/main/java/com/maibu/core/notify/config/EmailConfigParams.java b/maibu-common/src/main/java/com/maibu/core/notify/config/EmailConfigParams.java deleted file mode 100644 index d14addd..0000000 --- a/maibu-common/src/main/java/com/maibu/core/notify/config/EmailConfigParams.java +++ /dev/null @@ -1,48 +0,0 @@ -package com.maibu.core.notify.config; - -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - * 邮箱配置参数 - * @author gsb - * @date 2023/12/11 17:17 - */ -@Data -public class EmailConfigParams { - - @ApiModelProperty("服务器地址") - private String smtpServer; - - @ApiModelProperty("端口号") - private String port; - - @ApiModelProperty("账号(发件人地址)") - private String username; - - @ApiModelProperty("密码") - private String password; - - /** - * 是否开启ssl 默认开启 QQ之类的邮箱默认都需要ssl - */ - @ApiModelProperty("是否启动ssl") - private Boolean sslEnable; - - /** - * 是否开启验证 默认开启 - */ - @ApiModelProperty("启动ttl") - private Boolean authEnable; - - /** - * 重试间隔(单位:秒),默认为5秒 - */ - private Integer retryInterval = 5; - - /** - * 重试次数,默认为1次 - */ - private Integer maxRetries = 1; - -} diff --git a/maibu-common/src/main/java/com/maibu/core/notify/config/VoiceConfigParams.java b/maibu-common/src/main/java/com/maibu/core/notify/config/VoiceConfigParams.java deleted file mode 100644 index 54424ab..0000000 --- a/maibu-common/src/main/java/com/maibu/core/notify/config/VoiceConfigParams.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.maibu.core.notify.config; - -import lombok.Data; - -/** - * 语音配置 - * @author fastb - * @date 2023-12-09 17:32 - */ -@Data -public class VoiceConfigParams { - - /** - * 您的AccessKey ID - */ - private String accessKeyId; - - /** - * 您的AccessKey Secret - */ - private String accessKeySecret; - -} diff --git a/maibu-common/src/main/java/com/maibu/core/notify/config/WeChatConfigParams.java b/maibu-common/src/main/java/com/maibu/core/notify/config/WeChatConfigParams.java deleted file mode 100644 index 9e91c29..0000000 --- a/maibu-common/src/main/java/com/maibu/core/notify/config/WeChatConfigParams.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.maibu.core.notify.config; - -import lombok.Data; - -/** - * 微信推送配置参数 - * @author gsb - * @date 2023/12/11 17:11 - */ -@Data -public class WeChatConfigParams { - - private String appId; - - private String appSecret; - - private String corpId; - - private String corpSecret; - - private String agentId; - - private String webHook; - -} diff --git a/maibu-common/src/main/java/com/maibu/core/notify/msg/DingTalkMsgParams.java b/maibu-common/src/main/java/com/maibu/core/notify/msg/DingTalkMsgParams.java deleted file mode 100644 index a4d2582..0000000 --- a/maibu-common/src/main/java/com/maibu/core/notify/msg/DingTalkMsgParams.java +++ /dev/null @@ -1,53 +0,0 @@ -package com.maibu.core.notify.msg; - -import lombok.Data; - -/** - * @author fastb - * @version 1.0 - * @description: 钉钉模版配置参数类 - * @date 2024-01-12 17:51 - */ -@Data -public class DingTalkMsgParams { - - /** - * 发送账号 - */ - private String sendAccount; - - /** - * 是否发送所有人 - */ - private String sendAllEnable; - - /** - * 发送什么类型的文本 - */ - private String msgType; - - /** - * 消息内容 - */ - private String content; - - /** - * 消息标题 - */ - private String title; - - /** - * 消息链接 - */ - private String messageUrl; - - /** - * 图片链接 - */ - private String picUrl; - - /** - * 所属部门id - */ - private String deptId; -} diff --git a/maibu-common/src/main/java/com/maibu/core/notify/msg/EmailMsgParams.java b/maibu-common/src/main/java/com/maibu/core/notify/msg/EmailMsgParams.java deleted file mode 100644 index 7add3e6..0000000 --- a/maibu-common/src/main/java/com/maibu/core/notify/msg/EmailMsgParams.java +++ /dev/null @@ -1,33 +0,0 @@ -package com.maibu.core.notify.msg; - -import lombok.Data; - -/** - * @author fastb - * @version 1.0 - * @description: 邮箱模板消息参数 - * @date 2023-12-22 10:47 - */ -@Data -public class EmailMsgParams { - - /** - * 发送账号 - */ - private String sendAccount; - - /** - * 标题 - */ - private String title; - - /** - * 内容 - */ - private String content; - - /** - * 附件 - */ - private String attachment; -} diff --git a/maibu-common/src/main/java/com/maibu/core/notify/msg/VoiceMsgParams.java b/maibu-common/src/main/java/com/maibu/core/notify/msg/VoiceMsgParams.java deleted file mode 100644 index 6c2f0bf..0000000 --- a/maibu-common/src/main/java/com/maibu/core/notify/msg/VoiceMsgParams.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.maibu.core.notify.msg; - -import lombok.Data; - -/** - * @author fastb - * @version 1.0 - * @description: 语音消息模板参数 - * @date 2023-12-22 10:54 - */ -@Data -public class VoiceMsgParams { - - /** - * 发送账号 - */ - private String sendAccount; - - /** - * 模板ID - */ - private String templateId; - - /** - * 内容 - */ - private String content; - - /** - * 应用ID - */ - private String sdkAppId; - - /** - * 播放次数 1~3 - */ - private String playTimes = "1"; - - /** - * 播放音量 0-100 - */ - private String volume = "50"; - - /** - * 语速控制 -500-500 - */ - private String speed = "0"; - -} diff --git a/maibu-common/src/main/java/com/maibu/core/notify/msg/WeComMsgParams.java b/maibu-common/src/main/java/com/maibu/core/notify/msg/WeComMsgParams.java deleted file mode 100644 index 0dbd5b9..0000000 --- a/maibu-common/src/main/java/com/maibu/core/notify/msg/WeComMsgParams.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.maibu.core.notify.msg; - -import lombok.Data; - -/** - * @author fastb - * @version 1.0 - * @description: 企业微信消息模板参数 - * @date 2023-12-22 10:57 - */ -@Data -public class WeComMsgParams { - - /** - * 发送账号 - */ - private String sendAccount; - - /** - * 消息类型 - */ - private String msgType; - /** - * 消息内容 - */ - private String content; - /** - * 消息标题 - */ - private String title; - /** - * 消息描述 - */ - private String description; - /** - * 跳转链接 - */ - private String url; - /** - * 图片链接 - */ - private String picUrl; -} diff --git a/maibu-common/src/main/java/com/maibu/core/notify/msg/WechatMsgParams.java b/maibu-common/src/main/java/com/maibu/core/notify/msg/WechatMsgParams.java deleted file mode 100644 index 98e6e76..0000000 --- a/maibu-common/src/main/java/com/maibu/core/notify/msg/WechatMsgParams.java +++ /dev/null @@ -1,43 +0,0 @@ -package com.maibu.core.notify.msg; - -import lombok.Data; - -/** - * @author fastb - * @version 1.0 - * @description: 微信消息模板参数 - * @date 2023-12-22 10:57 - */ -@Data -public class WechatMsgParams { - - /** - * 发送账号 - */ - private String sendAccount; - - /** - * 模版id - */ - private String templateId; - - /** - * 内容 - */ - private String content; - - /** - * 跳转链接 - */ - private String redirectUrl; - - /** - * 跳转小程序appid - */ - private String appid; - - /** - * 小程序跳转路径 - */ - private String pagePath; -} diff --git a/maibu-common/src/main/java/com/maibu/core/thingsModel/NeuronModel.java b/maibu-common/src/main/java/com/maibu/core/thingsModel/NeuronModel.java deleted file mode 100644 index 8909860..0000000 --- a/maibu-common/src/main/java/com/maibu/core/thingsModel/NeuronModel.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.maibu.core.thingsModel; - -import com.alibaba.fastjson2.JSONObject; -import lombok.Data; - -import java.util.Date; -import java.util.List; - -/** - * Neuron-JSON格式协议 - * @author gsb - * @date 2023/5/31 16:36 - */ -@Data -public class NeuronModel { - - /** - * 产品节点 - */ - private String node; - - /** - * 网关编号 - */ - private String group; - /** - * 上报时间 - */ - private Date timestamp; - - /** - * 上报JSON - */ - private JSONObject values; - /** - * 错误集合 - */ - private JSONObject errors; - /** - * 上报属性值集合 - */ - private List items; - -} diff --git a/maibu-common/src/main/java/com/maibu/core/thingsModel/SceneThingsModelItem.java b/maibu-common/src/main/java/com/maibu/core/thingsModel/SceneThingsModelItem.java deleted file mode 100644 index ec7e354..0000000 --- a/maibu-common/src/main/java/com/maibu/core/thingsModel/SceneThingsModelItem.java +++ /dev/null @@ -1,38 +0,0 @@ -package com.maibu.core.thingsModel; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Data; - -/** - * 物模型值的项 - * - * @author kerwincui - * @date 2021-12-16 - */ -@AllArgsConstructor -@Builder -@Data -public class SceneThingsModelItem -{ - /** 物模型唯一标识符 */ - private String id; - - /** 物模型值 */ - private String value; - - /** 类型:1=属性, 2=功能,3=事件, 4=设备升级,5=设备上线,6=设备下线 ,*/ - private int type; - - /** 脚本ID */ - private String stripId; - - /** 场景ID*/ - private Long sceneId; - - /** 产品ID */ - private Long productId; - - /** 设备编号 */ - private String DeviceNumber; -} diff --git a/maibu-common/src/main/java/com/maibu/core/thingsModel/ThingsModelRuleItem.java b/maibu-common/src/main/java/com/maibu/core/thingsModel/ThingsModelRuleItem.java deleted file mode 100644 index 0a597ba..0000000 --- a/maibu-common/src/main/java/com/maibu/core/thingsModel/ThingsModelRuleItem.java +++ /dev/null @@ -1,29 +0,0 @@ -package com.maibu.core.thingsModel; - -import com.fasterxml.jackson.annotation.JsonFormat; -import lombok.Builder; -import lombok.Data; - -import java.util.Date; -@Data -@Builder -public class ThingsModelRuleItem { - /** 物模型唯一标识符 */ - private String id; - - /** 物模型值 */ - private String value; - private String operator; - private String triggerValue; - - /** - * 更新时间 - */ - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date ts; - - /** 备注 **/ - private String remark; - - private String timestamp; -} diff --git a/maibu-common/src/main/java/com/maibu/core/thingsModel/ThingsModelSimpleItem.java b/maibu-common/src/main/java/com/maibu/core/thingsModel/ThingsModelSimpleItem.java deleted file mode 100644 index 3979f6c..0000000 --- a/maibu-common/src/main/java/com/maibu/core/thingsModel/ThingsModelSimpleItem.java +++ /dev/null @@ -1,85 +0,0 @@ -package com.maibu.core.thingsModel; - -import com.fasterxml.jackson.annotation.JsonFormat; -import com.maibu.utils.DateUtils; -import lombok.AllArgsConstructor; -import lombok.Builder; - -import java.util.Date; - -/** - * 物模型值的项 - * - * @author kerwincui - * @date 2021-12-16 - */ -@AllArgsConstructor -@Builder -public class ThingsModelSimpleItem -{ - /** 物模型唯一标识符 */ - private String id; - - /** 物模型值 */ - private String value; - - private String name; - - /** - * 更新时间 - */ - @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") - private Date ts; - - /** 备注 **/ - private String remark; - - - public ThingsModelSimpleItem(String id, String value , String remark){ - this.id=id; - this.value=value; - this.remark=remark; - } - - public Date getTs() { - return ts; - } - - public void setTs(Date ts) { - this.ts = ts != null ? ts : DateUtils.getNowDate(); - } - - public ThingsModelSimpleItem(){} - - public String getRemark() { - return remark; - } - - public void setRemark(String remark) { - this.remark = remark; - } - - public String getValue() { - return value; - } - - public void setValue(String value) { - this.value = value; - } - - public String getId() { - return id; - } - - public void setId(String id) { - this.id = id; - } - - public String getName() { - return name; - } - - public void setName(String name) { - this.name = name; - } -} diff --git a/maibu-common/src/main/java/com/maibu/core/thingsModel/ThingsModelValuesInput.java b/maibu-common/src/main/java/com/maibu/core/thingsModel/ThingsModelValuesInput.java deleted file mode 100644 index 436549a..0000000 --- a/maibu-common/src/main/java/com/maibu/core/thingsModel/ThingsModelValuesInput.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.maibu.core.thingsModel; - -import java.util.List; - -/** - * 设备输入物模型值参数 - * - * @author kerwincui - * @date 2021-12-16 - */ -public class ThingsModelValuesInput -{ - /** 产品ID **/ - private Long productId; - - private Long deviceId; - /** 设备ID **/ - private String deviceNumber; - - private Integer deviceType; - - /** 设备物模型值的集合 **/ - private List thingsModelSimpleItem; - - public Long getDeviceId() { - return deviceId; - } - - public void setDeviceId(Long deviceId) { - this.deviceId = deviceId; - } - - public Long getProductId() { - return productId; - } - - public void setProductId(Long productId) { - this.productId = productId; - } - - public String getDeviceNumber() { - return deviceNumber; - } - - public void setDeviceNumber(String deviceNumber) { - this.deviceNumber = deviceNumber; - } - - public List getThingsModelValueRemarkItem() { - return thingsModelSimpleItem; - } - - public void setThingsModelValueRemarkItem(List thingsModelSimpleItem) { - this.thingsModelSimpleItem = thingsModelSimpleItem; - } -} diff --git a/maibu-common/src/main/java/com/maibu/enums/NotifyChannelEnum.java b/maibu-common/src/main/java/com/maibu/enums/NotifyChannelEnum.java deleted file mode 100644 index c36d2bc..0000000 --- a/maibu-common/src/main/java/com/maibu/enums/NotifyChannelEnum.java +++ /dev/null @@ -1,46 +0,0 @@ -package com.maibu.enums; - - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * @description: 通知渠道枚举 - * @author fastb - * @date 2023-12-16 17:00 - * @version 1.0 - */ -@Getter -@AllArgsConstructor -public enum NotifyChannelEnum { - - /** - * 确保唯一,不能重复 - */ - SMS("sms", "短信"), - VOICE("voice","语音"), - WECHAT("wechat","微信"), - DING_TALK("dingtalk","钉钉"), - EMAIL("email", "邮箱"); - - - /** - * 渠道类型 - */ - private String type; - - /** - * 描述 - */ - private String desc; - - public static NotifyChannelEnum getNotifyChannelEnum(String type) { - for (NotifyChannelEnum notifyChannelEnum : NotifyChannelEnum.values()) { - if (type.equals(notifyChannelEnum.type)) { - return notifyChannelEnum; - } - } - return null; - } - -} diff --git a/maibu-common/src/main/java/com/maibu/enums/NotifyChannelProviderEnum.java b/maibu-common/src/main/java/com/maibu/enums/NotifyChannelProviderEnum.java deleted file mode 100644 index 119431d..0000000 --- a/maibu-common/src/main/java/com/maibu/enums/NotifyChannelProviderEnum.java +++ /dev/null @@ -1,318 +0,0 @@ -package com.maibu.enums; - -import com.maibu.core.notify.NotifyConfigVO; -import com.maibu.core.notify.config.DingTalkConfigParams; -import com.maibu.core.notify.config.EmailConfigParams; -import com.maibu.core.notify.config.VoiceConfigParams; -import com.maibu.core.notify.config.WeChatConfigParams; -import com.maibu.core.notify.msg.DingTalkMsgParams; -import com.maibu.core.notify.msg.EmailMsgParams; -import com.maibu.core.notify.msg.VoiceMsgParams; -import com.maibu.core.notify.msg.WechatMsgParams; -import com.maibu.utils.StringUtils; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -import org.dromara.sms4j.aliyun.config.AlibabaConfig; -import org.dromara.sms4j.cloopen.config.CloopenConfig; -import org.dromara.sms4j.ctyun.config.CtyunConfig; -import org.dromara.sms4j.emay.config.EmayConfig; -import org.dromara.sms4j.huawei.config.HuaweiConfig; -import org.dromara.sms4j.jdcloud.config.JdCloudConfig; -import org.dromara.sms4j.netease.config.NeteaseConfig; -import org.dromara.sms4j.tencent.config.TencentConfig; -import org.dromara.sms4j.yunpian.config.YunpianConfig; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author fastb - * @version 1.0 - * @description: 通知渠道枚举 - * @date 2023-12-18 11:52 - */ -@Getter -@AllArgsConstructor -@NoArgsConstructor -public enum NotifyChannelProviderEnum { - - /**** 短信 ******/ - SMS_ALIBABA("sms", "alibaba", "阿里云短信", AlibabaConfig.class, AlibabaConfig.class), - SMS_TENCENT("sms", "tencent", "腾讯云短信", TencentConfig.class, TencentConfig.class), - SMS_CTYUN("sms", "ctyun","天翼云短信", CtyunConfig.class, CtyunConfig.class), - SMS_HUAWEI("sms", "huawei", "华为云短信", HuaweiConfig.class, HuaweiConfig.class), - SMS_YUNPIAN("sms", "yunpian", "云片短信", YunpianConfig.class, YunpianConfig.class), - SMS_EMAY("sms", "emay","亿美软通短信", EmayConfig.class, EmayConfig.class), - SMS_CLOOPEN("sms", "cloopen","容连云短信", CloopenConfig.class, CloopenConfig.class), - SMS_JDCLOUD("sms", "jdcloud", "京东云短信", JdCloudConfig.class, JdCloudConfig.class), - SMS_NETEASE("sms", "netease", "网易云短信", NeteaseConfig.class, NeteaseConfig.class), - - /****** 语音 ******/ - VOICE_ALIBABA("voice", "alibaba", "阿里云语音", VoiceConfigParams.class, VoiceMsgParams.class), - VOICE_TENCENT("voice", "tencent", "腾讯云语音", VoiceMsgParams.class, VoiceMsgParams.class), - - /****** 邮箱 ******/ - EMAIL_QQ("email", "qq", "QQ邮箱", EmailConfigParams.class, EmailMsgParams.class), - EMAIL_163("email", "163", "163邮箱", EmailConfigParams.class, EmailMsgParams.class), - - /****** 微信 *****/ - WECHAT_MINI_PROGRAM("wechat", "mini_program", "微信小程序(订阅消息)", WeChatConfigParams.class, WechatMsgParams.class), - WECHAT_WECOM_APPLY("wechat", "wecom_apply", "企业微信应用消息", WeChatConfigParams.class, WechatMsgParams.class), - WECHAT_WECOM_ROBOT("wechat", "wecom_robot", "企业微信群机器人", WeChatConfigParams.class, WechatMsgParams.class), - WECHAT_PUBLIC_ACCOUNT("wechat", "public_account", "微信公众号", WeChatConfigParams.class, WechatMsgParams.class), - - /****** 钉钉 *****/ - DING_TALK_WORK("dingtalk", "work", "钉钉工作消息", DingTalkConfigParams.class, DingTalkMsgParams.class), - DING_TALK_GROUP_ROBOT("dingtalk", "group_robot", "钉钉群机器人", DingTalkConfigParams.class, DingTalkMsgParams.class); - - /** - * 渠道编码 - */ - private String channelType; - - /** - * 渠道编码 - */ - private String provider; - - /** - * 描述 - */ - private String desc; - - /** - * 渠道配置类 - */ - private Class configContentClass; - - /** - * 模板配置类 - */ - private Class msgParamsClass; - - - public static NotifyChannelProviderEnum getNotifyChannelCodeEnum(String channelCode) { - for (NotifyChannelProviderEnum channelCodeEnum : NotifyChannelProviderEnum.values()) { - if (channelCode.equals(channelCodeEnum.channelType)) { - return channelCodeEnum; - } - } - return null; - } - - public static NotifyChannelProviderEnum getByChannelTypeAndProvider(String channelType, String provider) { - for (NotifyChannelProviderEnum channelCodeEnum : NotifyChannelProviderEnum.values()) { - if (channelType.equals(channelCodeEnum.channelType) && provider.equals(channelCodeEnum.getProvider())) { - return channelCodeEnum; - } - } - return null; - } - - /** - * @description: 获取通知渠道配置信息 - * @param: type - * @return: java.lang.Object - */ - public static List getConfigContent(NotifyChannelProviderEnum type) { - List configVOList = new ArrayList<>(); - // 务必保证属性(attribute)参数名和各渠道对应配置类configContentClass里的属性名一致 - switch (type) { - case SMS_ALIBABA: - configVOList.add(new NotifyConfigVO("accessKeyId", "accessKeyId", "string", "")); - configVOList.add(new NotifyConfigVO("accessKeySecret", "accessKeySecret", "string", "")); - break; -// return new SmsAliConfigParams(); - case SMS_TENCENT: - configVOList.add(new NotifyConfigVO("accessKeyId", "accessKeyId", "string", "")); - configVOList.add(new NotifyConfigVO("accessKeySecret", "accessKeySecret", "string", "")); - break; -// return new SmsAliConfigParams(); -// case SMS_CTYUN: -// return new SmsAliConfigParams(); -// case SMS_HUAWEI: -// return new SmsAliConfigParams(); -// case SMS_YUNPIAN: -// return new SmsAliConfigParams(); -// case SMS_EMAY: -// return new SmsAliConfigParams(); -// case SMS_CLOOPEN: -// return new SmsAliConfigParams(); -// case SMS_JDCLOUD: -// return new SmsAliConfigParams(); -// case SMS_NETEASE: -// return new SmsAliConfigParams(); - case VOICE_ALIBABA: - case VOICE_TENCENT: - configVOList.add(new NotifyConfigVO("accessKeyId", "accessKeyId", "string", "")); - configVOList.add(new NotifyConfigVO("accessKeySecret", "accessKeySecret", "string", "")); - break; - case EMAIL_QQ: - case EMAIL_163: - if (EMAIL_QQ.equals(type)) { - configVOList.add(new NotifyConfigVO("smtpServer", "服务器地址", "string","smtp.qq.com")); - } - if (EMAIL_163.equals(type)) { - configVOList.add(new NotifyConfigVO("smtpServer", "服务器地址", "string","smtp.163.com")); - } - configVOList.add(new NotifyConfigVO("port", "端口号", "string", "465")); - configVOList.add(new NotifyConfigVO("username", "发件人账号", "string", "")); - configVOList.add(new NotifyConfigVO("password", "发件秘钥", "string", "")); - configVOList.add(new NotifyConfigVO("sslEnable", "是否启动ssl", "boolean", "true")); - configVOList.add(new NotifyConfigVO("authEnable", "开启验证", "boolean", "true")); - configVOList.add(new NotifyConfigVO("retryInterval", "重试间隔(秒)", "int", "5")); - configVOList.add(new NotifyConfigVO("maxRetries", "重试次数", "int","1")); - break; - case WECHAT_MINI_PROGRAM: - case WECHAT_PUBLIC_ACCOUNT: - configVOList.add(new NotifyConfigVO("appId", "appId", "string","")); - configVOList.add(new NotifyConfigVO("appSecret", "appSecret", "string","")); - break; - case WECHAT_WECOM_APPLY: - configVOList.add(new NotifyConfigVO("corpId", "企业ID", "string","")); - configVOList.add(new NotifyConfigVO("corpSecret", "应用Secret", "string","")); - configVOList.add(new NotifyConfigVO("agentId", "应用agentId", "string","")); - break; - case WECHAT_WECOM_ROBOT: - configVOList.add(new NotifyConfigVO("webHook", "webHook", "string","")); - break; - case DING_TALK_WORK: - configVOList.add(new NotifyConfigVO("appKey", "appKey", "string","")); - configVOList.add(new NotifyConfigVO("appSecret", "appSecret", "string","")); - configVOList.add(new NotifyConfigVO("agentId", "agentId", "string","")); - break; - case DING_TALK_GROUP_ROBOT: - configVOList.add(new NotifyConfigVO("webHook", "webHook", "string","")); - break; - default: - return configVOList; - } - return configVOList; - } - - /** - * @description: 获取通知模板配置信息 - * @param: type - * @return: java.lang.Object - */ - public static List getMsgParams(NotifyChannelProviderEnum type, String msgType) { - List configVOList = new ArrayList<>(); - switch (type) { - // 短信:配置参数来源于sms4j,务必属性字段名和sms4j配置参数字段名一致 - case SMS_ALIBABA: - configVOList.add(new NotifyConfigVO("sendAccount", "发送电话号", "string","")); - configVOList.add(new NotifyConfigVO("templateId", "模板CODE", "string","")); - configVOList.add(new NotifyConfigVO("signature", "签名", "string","")); - configVOList.add(new NotifyConfigVO("content", "模板内容", "string","")); - break; - case SMS_TENCENT: - configVOList.add(new NotifyConfigVO("sendAccount", "发送电话号", "string","")); - configVOList.add(new NotifyConfigVO("templateId", "模板ID", "string","")); - configVOList.add(new NotifyConfigVO("signature", "签名", "string","")); - configVOList.add(new NotifyConfigVO("sdkAppId", "应用SDKAppID", "string","")); - configVOList.add(new NotifyConfigVO("content", "模板内容", "string","")); - break; - // 邮箱 - case EMAIL_QQ: - case EMAIL_163: - configVOList.add(new NotifyConfigVO("sendAccount", "发送邮箱号", "string","")); - configVOList.add(new NotifyConfigVO("title", "标题", "string","")); - configVOList.add(new NotifyConfigVO("attachment", "附件", "file","")); - configVOList.add(new NotifyConfigVO("content", "邮箱正文", "text","")); - break; - case WECHAT_MINI_PROGRAM: - configVOList.add(new NotifyConfigVO("sendAccount", "发送用户ID", "string","")); - configVOList.add(new NotifyConfigVO("templateId", "模板ID", "string","")); - configVOList.add(new NotifyConfigVO("redirectUrl", "跳转链接", "string","")); - configVOList.add(new NotifyConfigVO("content", "模板内容", "string","")); - break; - case WECHAT_PUBLIC_ACCOUNT: - configVOList.add(new NotifyConfigVO("templateId", "模板ID", "string","")); - configVOList.add(new NotifyConfigVO("redirectUrl", "跳转链接", "string","")); - configVOList.add(new NotifyConfigVO("appid", "跳转小程序appid", "string","")); - configVOList.add(new NotifyConfigVO("pagePath", "跳转小程序路径", "string","")); - configVOList.add(new NotifyConfigVO("content", "模板内容", "string","")); - case WECHAT_WECOM_APPLY: - case WECHAT_WECOM_ROBOT: - if (StringUtils.isEmpty(msgType)) { - return configVOList; - } - if (type.equals(WECHAT_WECOM_APPLY)) { - configVOList.add(new NotifyConfigVO("sendAccount", "发送成员账号", "string","")); - } - switch (msgType) { - case "text": - case "markdown": - configVOList.add(new NotifyConfigVO("content", "消息内容", "string","")); - break; - case "news": - configVOList.add(new NotifyConfigVO("title", "消息标题", "string","")); - configVOList.add(new NotifyConfigVO("content", "消息内容", "string","")); - configVOList.add(new NotifyConfigVO("url", "跳转链接", "string","")); - configVOList.add(new NotifyConfigVO("picUrl", "图片链接", "file","")); - break; - default: - break; - } - break; - // 语音 - case VOICE_ALIBABA: - configVOList.add(new NotifyConfigVO("sendAccount", "发送电话号", "string","")); - configVOList.add(new NotifyConfigVO("templateId", "模板ID", "string","")); - configVOList.add(new NotifyConfigVO("content", "模板内容", "string","")); - configVOList.add(new NotifyConfigVO("playTimes", "播放次数 (1~3)", "int","2")); - configVOList.add(new NotifyConfigVO("volume", "播放音量 (0-100)", "string","50")); - configVOList.add(new NotifyConfigVO("speed", "语速控制 (-500-500)", "string","0")); - break; - case VOICE_TENCENT: - configVOList.add(new NotifyConfigVO("sendAccount", "发送电话号", "string","")); - configVOList.add(new NotifyConfigVO("sdkAppId", "应用SDKAppID", "string","")); - configVOList.add(new NotifyConfigVO("templateId", "模板ID", "string","")); - configVOList.add(new NotifyConfigVO("content", "模板内容", "string","")); - break; - // 钉钉 - case DING_TALK_WORK: - case DING_TALK_GROUP_ROBOT: - if (StringUtils.isEmpty(msgType)) { - return configVOList; - } - switch (msgType) { - case "text": - if (NotifyChannelProviderEnum.DING_TALK_WORK.equals(type)) { - configVOList.add(new NotifyConfigVO("deptId", "部门id", "string","")); - configVOList.add(new NotifyConfigVO("sendAllEnable", "发送所有人", "boolean","false")); - configVOList.add(new NotifyConfigVO("sendAccount", "员工UserID", "string","")); - } - configVOList.add(new NotifyConfigVO("content", "消息内容", "string","")); - break; - case "link": - if (NotifyChannelProviderEnum.DING_TALK_WORK.equals(type)) { - configVOList.add(new NotifyConfigVO("deptId", "部门id", "string","")); - configVOList.add(new NotifyConfigVO("sendAllEnable", "发送所有人", "boolean","false")); - configVOList.add(new NotifyConfigVO("sendAccount", "员工UserID", "string","")); - } - configVOList.add(new NotifyConfigVO("title", "消息标题", "string","")); - configVOList.add(new NotifyConfigVO("content", "消息内容", "string","")); - configVOList.add(new NotifyConfigVO("messageUrl", "消息链接", "string","")); - configVOList.add(new NotifyConfigVO("picUrl", "图片链接", "file","")); - break; - case "markdown": - if (NotifyChannelProviderEnum.DING_TALK_WORK.equals(type)) { - configVOList.add(new NotifyConfigVO("deptId", "部门id", "string","")); - configVOList.add(new NotifyConfigVO("sendAllEnable", "发送所有人", "boolean","false")); - configVOList.add(new NotifyConfigVO("sendAccount", "员工UserID", "string","")); - } - configVOList.add(new NotifyConfigVO("title", "消息标题", "string","")); - configVOList.add(new NotifyConfigVO("content", "消息内容", "string","")); - break; - default: - break; - } - break; - default: - return configVOList; - } - return configVOList; - } -} diff --git a/maibu-common/src/main/java/com/maibu/enums/NotifyServiceCodeEnum.java b/maibu-common/src/main/java/com/maibu/enums/NotifyServiceCodeEnum.java deleted file mode 100644 index c1d0827..0000000 --- a/maibu-common/src/main/java/com/maibu/enums/NotifyServiceCodeEnum.java +++ /dev/null @@ -1,44 +0,0 @@ -package com.maibu.enums; - - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * @description: 通知业务编码枚举 - * @author fastb - * @date 2023-12-16 17:00 - * @version 1.0 - */ -@Getter -@AllArgsConstructor -public enum NotifyServiceCodeEnum { - - /** - * 确保唯一,不能重复 - */ - ALERT("alert", "设备告警"), - CAPTCHA("captcha","验证码"), - MARKETING("marketing", "营销通知"); - - - /** - * 业务编码 - */ - private String serviceCode; - - /** - * 描述 - */ - private String desc; - - public static NotifyServiceCodeEnum getNotifyServiceCodeEnum(String serviceCode) { - for (NotifyServiceCodeEnum notifyServiceCodeEnum : NotifyServiceCodeEnum.values()) { - if (serviceCode.equals(notifyServiceCodeEnum.serviceCode)) { - return notifyServiceCodeEnum; - } - } - return null; - } - -} diff --git a/maibu-common/src/main/java/com/maibu/enums/OTAUpgrade.java b/maibu-common/src/main/java/com/maibu/enums/OTAUpgrade.java deleted file mode 100644 index 969d2bf..0000000 --- a/maibu-common/src/main/java/com/maibu/enums/OTAUpgrade.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.maibu.enums; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * OTA升级状态 - * @author gsb - * @date 2022/10/24 17:29 - */ -@AllArgsConstructor -@Getter -public enum OTAUpgrade { - - - AWAIT(0, "等待升级","等待升级"), - SEND(1, "发送中","发送中"), - REPLY(2, "升级中","升级中"), - SUCCESS(3, "成功","升级成功"), - FAILED(4, "失败","升级失败"), - FAILED_PULL(4, "失败","拉取固件包失败"), - FAILED_PACKAGE_SIZE(4, "失败","获取固件包分包大小失败"), - FAILED_PUSH(4, "失败","推送固件包失败"), - STOP(5, "停止","设备重复升级停止推送"), - STOP_OFFLINE(5, "停止","设备离线停止推送"), - UNKNOWN(404, "未知","未知错误码"); - Integer status; - String subMsg; - String des; - - public static OTAUpgrade parse(Integer code){ - for (OTAUpgrade item: OTAUpgrade.values()){ - if(item.status.equals(code)){ - return item; - } - } - - return UNKNOWN; - } - -} diff --git a/maibu-common/src/main/java/com/maibu/enums/ThingsModelType.java b/maibu-common/src/main/java/com/maibu/enums/ThingsModelType.java deleted file mode 100644 index d0b96fd..0000000 --- a/maibu-common/src/main/java/com/maibu/enums/ThingsModelType.java +++ /dev/null @@ -1,50 +0,0 @@ -package com.maibu.enums; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * 物模型类型 - * - * @author bill - */ -@Getter -@AllArgsConstructor -public enum ThingsModelType { - - PROP(1, "PROPERTY", "属性","properties"), - SERVICE(2, "FUNCTION", "服务","functions"), - EVENT(3, "EVENT", "事件","events"),; - - int code; - String type; - String name; - String list; - - public static ThingsModelType getType(int code) { - for (ThingsModelType value : ThingsModelType.values()) { - if (value.code == code) { - return value; - } - } - return ThingsModelType.PROP; - } - - public static ThingsModelType getType(String type) { - for (ThingsModelType value : ThingsModelType.values()) { - if (value.type.equals(type)) { - return value; - } - } - return ThingsModelType.PROP; - } - - public static String getName(int code) { - for (ThingsModelType value : ThingsModelType.values()) { - if (value.code == code) { - return value.list; - } - } - return ThingsModelType.PROP.list; - } -} diff --git a/maibu-common/src/main/java/com/maibu/enums/VerifyTypeEnum.java b/maibu-common/src/main/java/com/maibu/enums/VerifyTypeEnum.java deleted file mode 100644 index 9ba80ae..0000000 --- a/maibu-common/src/main/java/com/maibu/enums/VerifyTypeEnum.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.maibu.enums; - -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; - -/** - * 验证类型枚举 - * @author fastb - * @date 2023-08-30 15:04 - */ -@Getter -@NoArgsConstructor -@AllArgsConstructor -public enum VerifyTypeEnum { - - PASSWORD(1, "账号密码验证"), - SMS(2, "短信验证"); - - private Integer verifyType; - - private String desc; -} diff --git a/maibu-common/src/main/java/com/maibu/enums/scenemodel/SceneModelTagOpreationEnum.java b/maibu-common/src/main/java/com/maibu/enums/scenemodel/SceneModelTagOpreationEnum.java deleted file mode 100644 index 72fcea5..0000000 --- a/maibu-common/src/main/java/com/maibu/enums/scenemodel/SceneModelTagOpreationEnum.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.maibu.enums.scenemodel; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -/** - * 场景变量统计方式 - * @author fastb - * @date 2024-06-05 10:42 - * @version 1.0 - */ -@AllArgsConstructor -@Getter -public enum SceneModelTagOpreationEnum { - /** - * 原值 - */ - ORIGINAL_VALUE(1, "原值"), - /** - * 累计值 - */ - CUMULATIVE(2, "累计值"), - /** - * 平均值 - */ - AVERAGE_VALUE(3, "平均值"), - /** - * 最大值 - */ - MAX_VALUE(4, "最大值"), - /** - * 最小值 - */ - MIN_VALUE(5,"最小值"); - - private final Integer code; - private final String desc; - - public static SceneModelTagOpreationEnum getByCode(Integer code) { - for (SceneModelTagOpreationEnum opreationEnum : SceneModelTagOpreationEnum.values()) { - if (opreationEnum.getCode().equals(code)) { - return opreationEnum; - } - } - return null; - } -} diff --git a/maibu-common/src/main/java/com/maibu/enums/scenemodel/SceneModelVariableTypeEnum.java b/maibu-common/src/main/java/com/maibu/enums/scenemodel/SceneModelVariableTypeEnum.java deleted file mode 100644 index 06090cb..0000000 --- a/maibu-common/src/main/java/com/maibu/enums/scenemodel/SceneModelVariableTypeEnum.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.maibu.enums.scenemodel; - -import lombok.AllArgsConstructor; -import lombok.Getter; - -import java.util.Arrays; -import java.util.List; - -/** - * 场景管理物模型、变量类型枚举 - * 注意:以下4张表下的variable_type相关字段统一用该枚举,保持一致 - * scene_model_tag表、scene_tag_points表、scene_model_device表、scene_model_data表 - * @author fastb - * @date 2024-05-22 10:01 - * @version 1.0 - */ -@Getter -@AllArgsConstructor -public enum SceneModelVariableTypeEnum { - //1==设备物模型(直采变量),2=录入型变量,3=运算型变量 - THINGS_MODEL(1, "设备配置"), - INPUT_VARIABLE(2, "录入型变量"), - OPERATION_VARIABLE(3, "运算型变量"); - - public final static List ADD_LIST = Arrays.asList(INPUT_VARIABLE, OPERATION_VARIABLE); - - - private final Integer type; - - private final String name; - -} diff --git a/maibu-common/src/main/java/com/maibu/utils/BeanMapUtilByReflect.java b/maibu-common/src/main/java/com/maibu/utils/BeanMapUtilByReflect.java deleted file mode 100644 index 6ac13ba..0000000 --- a/maibu-common/src/main/java/com/maibu/utils/BeanMapUtilByReflect.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.maibu.utils; - - -import com.maibu.core.thingsModel.ThingsModelSimpleItem; - -import java.lang.reflect.Field; -import java.lang.reflect.Modifier; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -public class BeanMapUtilByReflect { - - /** - * 对象转Map - * @param object - * @return - * @throws IllegalAccessException - */ - public static Map beanToMap(Object object) throws IllegalAccessException { - Map map = new HashMap(); - Field[] fields = object.getClass().getDeclaredFields(); - for (Field field : fields) { - field.setAccessible(true); - map.put(field.getName(), field.get(object)); - } - return map; - } - - /** - * bean转item对象 - * @param object - * @return - * @throws IllegalAccessException - */ - public static List beanToItem(Object object) throws IllegalAccessException { - List result = new ArrayList<>(); - Field[] fields = object.getClass().getDeclaredFields(); - for (Field field : fields) { - field.setAccessible(true); - ThingsModelSimpleItem item = new ThingsModelSimpleItem(); - item.setId(field.getName()); - item.setValue(field.get(object)+""); - item.setTs(DateUtils.getNowDate()); - result.add(item); - } - return result; - } - - /** - * map转对象 - * @param map - * @param beanClass - * @param - * @return - * @throws Exception - */ - public static T mapToBean(Map map, Class beanClass) throws Exception { - T object = beanClass.newInstance(); - Field[] fields = object.getClass().getDeclaredFields(); - for (Field field : fields) { - int mod = field.getModifiers(); - if (Modifier.isStatic(mod) || Modifier.isFinal(mod)) { - continue; - } - field.setAccessible(true); - if (map.containsKey(field.getName())) { - field.set(object, map.get(field.getName())); - } - } - return object; - } -} \ No newline at end of file diff --git a/maibu-common/src/main/java/com/maibu/utils/file/QRCodeUtils.java b/maibu-common/src/main/java/com/maibu/utils/file/QRCodeUtils.java deleted file mode 100644 index 27058bc..0000000 --- a/maibu-common/src/main/java/com/maibu/utils/file/QRCodeUtils.java +++ /dev/null @@ -1,68 +0,0 @@ -package com.maibu.utils.file; - -import com.google.zxing.BarcodeFormat; -import com.google.zxing.EncodeHintType; -import com.google.zxing.MultiFormatWriter; -import com.google.zxing.WriterException; -import com.google.zxing.common.BitMatrix; -import com.google.zxing.qrcode.decoder.ErrorCorrectionLevel; - -import java.io.IOException; -import java.util.HashMap; -import java.util.Map; - -public class QRCodeUtils { - - /** - * 生成二维码 - * @param content 二维码的内容 - * @return BitMatrix对象 - * */ - public static BitMatrix createCode(String content) throws IOException { - //二维码的宽高 - int width = 200; - int height = 200; - - //其他参数,如字符集编码 - Map hints = new HashMap(); - hints.put(EncodeHintType.CHARACTER_SET, "UTF-8"); - //容错级别为H - hints.put(EncodeHintType.ERROR_CORRECTION , ErrorCorrectionLevel.H); - //白边的宽度,可取0~4 - hints.put(EncodeHintType.MARGIN , 0); - - BitMatrix bitMatrix = null; - try { - //生成矩阵,因为我的业务场景传来的是编码之后的URL,所以先解码 - bitMatrix = new MultiFormatWriter().encode(content, - BarcodeFormat.QR_CODE, width, height, hints); - - //bitMatrix = deleteWhite(bitMatrix); - } catch (WriterException e) { - e.printStackTrace(); - } - - return bitMatrix; - } - - /** - * 删除生成的二维码周围的白边,根据审美决定是否删除 - * @param matrix BitMatrix对象 - * @return BitMatrix对象 - * */ - private static BitMatrix deleteWhite(BitMatrix matrix) { - int[] rec = matrix.getEnclosingRectangle(); - int resWidth = rec[2] + 1; - int resHeight = rec[3] + 1; - - BitMatrix resMatrix = new BitMatrix(resWidth, resHeight); - resMatrix.clear(); - for (int i = 0; i < resWidth; i++) { - for (int j = 0; j < resHeight; j++) { - if (matrix.get(i + rec[0], j + rec[1])) - resMatrix.set(i, j); - } - } - return resMatrix; - } -} diff --git a/maibu-common/src/main/java/com/maibu/utils/modbus/BitUtils.java b/maibu-common/src/main/java/com/maibu/utils/modbus/BitUtils.java deleted file mode 100644 index bfc0ebf..0000000 --- a/maibu-common/src/main/java/com/maibu/utils/modbus/BitUtils.java +++ /dev/null @@ -1,78 +0,0 @@ -package com.maibu.utils.modbus; - -/** - * - * @description 位运算工具 - * 用途:将二进制数中的每位数字1或0代表着某种开关标记,1为是,0为否,则一个数字可以代表N位的开关标记值,可有效减少过多的变量定义 或 过多的表字段 - */ -public class BitUtils { - - /** - * 获取二进制数字中指定位数的结果,如:1011,指定第2位,则结果是0,第3位,则结果是1 - * - * @param num 二进制数(可以十进制数传入,也可使用0b开头的二进制数表示形式) - * @param bit 位数(第几位,从右往左,从0开始) - * @return - */ - public static int getBitFlag(long num, int bit) { - return (int) num >> bit & 1; - } - - /** - * 更新二进制数字中指定位的值 - * - * @param num 二进制数(可以十进制数传入,也可使用0b开头的二进制数表示形式) - * @param bit 位数(第几位,从右往左,从0开始) - * @param flagValue 位标记值(true=1,false=0) - * @return - */ - public static long updateBitValue(long num, int bit, boolean flagValue) { - if (flagValue) { - //将某位由0改为1 - return num | (1 << bit); - } else { - //将某位由1改为0 - return num ^ (getBitFlag(num, bit) << bit); - } - } - - /** - * 将数字转换为二制值形式字符串 - * - * @param num - * @return - */ - public static String toBinaryString(long num) { - return Long.toBinaryString(num); - } - - /** - * 判断10进制数,某位是0还是1 - * @param num - * @param i - * @return - */ - public static int deter(int num, int i) { - // 先将数字右移指定第i位,然后再用&与1运算 - i += 1; - return num >> (i-1) & 1; - } - - /** - * 判断hex数据,某位的值 - * @param hex - * @param i - * @return - */ - public static int deterHex(String hex,int i){ - return deter(Integer.parseInt(hex,16),i); - } - - public static void main(String[] args) { - int deter = deter(7, 0); - int deterHex = deterHex("10", 4); - System.out.println(deter); - System.out.println(deterHex); - } - -} diff --git a/maibu-common/src/main/java/com/maibu/utils/modbus/ModbusUtils.java b/maibu-common/src/main/java/com/maibu/utils/modbus/ModbusUtils.java deleted file mode 100644 index e5c1832..0000000 --- a/maibu-common/src/main/java/com/maibu/utils/modbus/ModbusUtils.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.maibu.utils.modbus; - - -import com.maibu.core.protocol.modbus.ModbusCode; - -/** - * @author gsb - * @date 2024/6/15 11:21 - */ -public class ModbusUtils { - - /** - * 获取modbus功能码 - * isReadOnly: 0-读写 1-只读 - * type: 1-IO寄存器 2-数据寄存器 - * IO寄存器读写 05功能码 数据寄存器只读 06功能码 - * @param type modbus数据类型 - * @return modbus功能码 - */ - public static ModbusCode getModbusCode(int type){ - if (type == 1){ - return ModbusCode.Write05; - }else { - return ModbusCode.Write06; - } - } - - public static ModbusCode getReadModbusCode(int type,int isReadOnly){ - if (type == 1){ - return isReadOnly == 1 ? ModbusCode.Read01 : ModbusCode.Read02; - }else { - return isReadOnly == 1 ? ModbusCode.Read03 : ModbusCode.Read04; - } - } - - /** - * 获取modbus-hex字符串寄存器地址 - * @param hexString hex字符串 - * @return 寄存器地址-10进制 - */ - public static int getModbusAddress(String hexString){ - return Integer.parseInt(hexString.substring(4, 8),16); - } - - /** - * 获取从机地址 - * @param hexString - * @return - */ - public static int getModbusSlaveId(String hexString){ - return Integer.parseInt(hexString.substring(0,2),16); - } - - /** - * 获取功能码 - * @param hexString - * @return - */ - public static int getModbusCode(String hexString){ - return Integer.parseInt(hexString.substring(2,4),16); - } - - public static Mparams getModbusParams(String hexString){ - Mparams mparams = new Mparams(); - mparams.setSlaveId(Integer.parseInt(hexString.substring(0,2),16)); - mparams.setCode(Integer.parseInt(hexString.substring(2,4),16)); - mparams.setAddress(Integer.parseInt(hexString.substring(4, 8),16)); - return mparams; - } - - - public static void main(String[] args) { - int modbusAddress = getModbusAddress("0101000A0001FDCA"); - System.out.println(modbusAddress); - } -} diff --git a/maibu-common/src/main/java/com/maibu/utils/modbus/Mparams.java b/maibu-common/src/main/java/com/maibu/utils/modbus/Mparams.java deleted file mode 100644 index ebab520..0000000 --- a/maibu-common/src/main/java/com/maibu/utils/modbus/Mparams.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.maibu.utils.modbus; - -import lombok.Data; - -/** - * @author bill - */ -@Data -public class Mparams { - - private int slaveId; - - private int code; - - private int address; -} diff --git a/maibu-common/src/main/java/com/maibu/utils/wechat/AesException.java b/maibu-common/src/main/java/com/maibu/utils/wechat/AesException.java deleted file mode 100644 index d0fd1af..0000000 --- a/maibu-common/src/main/java/com/maibu/utils/wechat/AesException.java +++ /dev/null @@ -1,56 +0,0 @@ -package com.maibu.utils.wechat; - -/** - * 加解密异常类 - */ -public class AesException extends Exception { - public final static int OK = 0; - public final static int ValidateSignatureError = -40001; - public final static int ParseXmlError = -40002; - public final static int ComputeSignatureError = -40003; - public final static int IllegalAesKey = -40004; - public final static int ValidateCorpidError = -40005; - public final static int EncryptAESError = -40006; - public final static int DecryptAESError = -40007; - public final static int IllegalBuffer = -40008; - //public final static int EncodeBase64Error = -40009; -//public final static int DecodeBase64Error = -40010; -//public final static int GenReturnXmlError = -40011; - private int code; - - private static String getMessage(int code) { - switch (code) { - case ValidateSignatureError: - return "签名验证错误"; - case ParseXmlError: - return "xml解析失败"; - case ComputeSignatureError: - return "sha加密生成签名失败"; - case IllegalAesKey: - return "SymmetricKey非法"; - case ValidateCorpidError: - return "corpid校验失败"; - case EncryptAESError: - return "aes加密失败"; - case DecryptAESError: - return "aes解密失败"; - case IllegalBuffer: - return "解密后得到的buffer非法"; -// case EncodeBase64Error: -// return "base64加密错误"; -// case DecodeBase64Error: -// return "base64解密错误"; -// case GenReturnXmlError: -// return "xml生成失败"; - default: - return null; // cannot be - } - } - public int getCode() { - return code; - } - AesException(int code) { - super(getMessage(code)); - this.code = code; - } -} diff --git a/maibu-common/src/main/java/com/maibu/utils/wechat/ByteGroup.java b/maibu-common/src/main/java/com/maibu/utils/wechat/ByteGroup.java deleted file mode 100644 index 58a464d..0000000 --- a/maibu-common/src/main/java/com/maibu/utils/wechat/ByteGroup.java +++ /dev/null @@ -1,26 +0,0 @@ -package com.maibu.utils.wechat; - -import java.util.ArrayList; - -class ByteGroup { - ArrayList byteContainer = new ArrayList(); - - public byte[] toBytes() { - byte[] bytes = new byte[byteContainer.size()]; - for (int i = 0; i < byteContainer.size(); i++) { - bytes[i] = byteContainer.get(i); - } - return bytes; - } - - public ByteGroup addBytes(byte[] bytes) { - for (byte b : bytes) { - byteContainer.add(b); - } - return this; - } - - public int size() { - return byteContainer.size(); - } -} diff --git a/maibu-common/src/main/java/com/maibu/utils/wechat/PKCS7Encoder.java b/maibu-common/src/main/java/com/maibu/utils/wechat/PKCS7Encoder.java deleted file mode 100644 index ddb6fb6..0000000 --- a/maibu-common/src/main/java/com/maibu/utils/wechat/PKCS7Encoder.java +++ /dev/null @@ -1,59 +0,0 @@ -package com.maibu.utils.wechat; - -import java.nio.charset.Charset; -import java.util.Arrays; - -/** - * 提供基于PKCS7算法的加解密接口. - */ -class PKCS7Encoder { - static Charset CHARSET = Charset.forName("utf-8"); - static int BLOCK_SIZE = 32; - - /** - * 获得对明文进行补位填充的字节. - * - * @param count 需要进行填充补位操作的明文字节个数 - * @return 补齐用的字节数组 - */ - static byte[] encode(int count) { - // 计算需要填充的位数 - int amountToPad = BLOCK_SIZE - (count % BLOCK_SIZE); - if (amountToPad == 0) { - amountToPad = BLOCK_SIZE; - } - // 获得补位所用的字符 - char padChr = chr(amountToPad); - String tmp = new String(); - for (int index = 0; index < amountToPad; index++) { - tmp += padChr; - } - return tmp.getBytes(CHARSET); - } - - /** - * 删除解密后明文的补位字符 - * - * @param decrypted 解密后的明文 - * @return 删除补位字符后的明文 - */ - static byte[] decode(byte[] decrypted) { - int pad = (int) decrypted[decrypted.length - 1]; - if (pad < 1 || pad > 32) { - pad = 0; - } - return Arrays.copyOfRange(decrypted, 0, decrypted.length - pad); - } - - /** - * 将数字转化成ASCII码对应的字符,用于对明文进行补码 - * - * @param a 需要转化的数字 - * @return 转化得到的字符 - */ - static char chr(int a) { - byte target = (byte) (a & 0xFF); - return (char) target; - } - -} diff --git a/maibu-common/src/main/java/com/maibu/utils/wechat/SHA1.java b/maibu-common/src/main/java/com/maibu/utils/wechat/SHA1.java deleted file mode 100644 index 024ece7..0000000 --- a/maibu-common/src/main/java/com/maibu/utils/wechat/SHA1.java +++ /dev/null @@ -1,57 +0,0 @@ -package com.maibu.utils.wechat; - -import java.security.MessageDigest; -import java.util.Arrays; -/** - * 对企业微信发送给企业后台的消息加解密示例代码. - * - * @copyright Copyright (c) 1998-2014 Tencent Inc. - */ -/** - * SHA1 class - * - * 计算消息签名接口. - */ -public class SHA1 { - - /** - * 用SHA1算法生成安全签名 - * @param token 票据 - * @param timestamp 时间戳 - * @param nonce 随机字符串 - * @param encrypt 密文 - * @return 安全签名 - * @throws AesException - */ - public static String getSHA1(String token, String timestamp, String nonce, String encrypt) throws AesException - { - try { - String[] array = new String[] { token, timestamp, nonce, encrypt }; - StringBuffer sb = new StringBuffer(); - // 字符串排序 - Arrays.sort(array); - for (int i = 0; i < 4; i++) { - sb.append(array[i]); - } - String str = sb.toString(); - // SHA1签名生成 - MessageDigest md = MessageDigest.getInstance("SHA-1"); - md.update(str.getBytes()); - byte[] digest = md.digest(); - - StringBuffer hexstr = new StringBuffer(); - String shaHex = ""; - for (int i = 0; i < digest.length; i++) { - shaHex = Integer.toHexString(digest[i] & 0xFF); - if (shaHex.length() < 2) { - hexstr.append(0); - } - hexstr.append(shaHex); - } - return hexstr.toString(); - } catch (Exception e) { - e.printStackTrace(); - throw new AesException(AesException.ComputeSignatureError); - } - } -} diff --git a/maibu-common/src/main/java/com/maibu/utils/wechat/WXBizMsgCrypt.java b/maibu-common/src/main/java/com/maibu/utils/wechat/WXBizMsgCrypt.java deleted file mode 100644 index 2123842..0000000 --- a/maibu-common/src/main/java/com/maibu/utils/wechat/WXBizMsgCrypt.java +++ /dev/null @@ -1,289 +0,0 @@ -package com.maibu.utils.wechat; - -/** - * 对企业微信发送给企业后台的消息加解密示例代码. - * - * @copyright Copyright (c) 1998-2014 Tencent Inc. - */ - -// ------------------------------------------------------------------------ - -/** - * 针对org.apache.commons.codec.binary.Base64, - * 需要导入架包commons-codec-1.9(或commons-codec-1.8等其他版本) - * 官方下载地址:http://commons.apache.org/proper/commons-codec/download_codec.cgi - */ - -import org.apache.commons.codec.binary.Base64; - -import javax.crypto.Cipher; -import javax.crypto.spec.IvParameterSpec; -import javax.crypto.spec.SecretKeySpec; -import java.nio.charset.Charset; -import java.util.Arrays; -import java.util.Random; - -/** - * 提供接收和推送给企业微信消息的加解密接口(UTF8编码的字符串). - *
    - *
  1. 第三方回复加密消息给企业微信
  2. - *
  3. 第三方收到企业微信发送的消息,验证消息的安全性,并对消息进行解密。
  4. - *
- * 说明:异常java.security.InvalidKeyException:illegal Key Size的解决方案 - *
    - *
  1. 在官方网站下载JCE无限制权限策略文件(JDK7的下载地址: - * http://www.oracle.com/technetwork/java/javase/downloads/jce-7-download-432124.html
  2. - *
  3. 下载后解压,可以看到local_policy.jar和US_export_policy.jar以及readme.txt
  4. - *
  5. 如果安装了JRE,将两个jar文件放到%JRE_HOME%\lib\security目录下覆盖原来的文件
  6. - *
  7. 如果安装了JDK,将两个jar文件放到%JDK_HOME%\jre\lib\security目录下覆盖原来文件
  8. - *
- */ -public class WXBizMsgCrypt { - static Charset CHARSET = Charset.forName("utf-8"); - Base64 base64 = new Base64(); - byte[] aesKey; - String token; - String receiveid; - - /** - * 构造函数 - * @param token 企业微信后台,开发者设置的token - * @param encodingAesKey 企业微信后台,开发者设置的EncodingAESKey - * @param receiveid, 不同场景含义不同,详见文档 - * - * @throws AesException 执行失败,请查看该异常的错误码和具体的错误信息 - */ - public WXBizMsgCrypt(String token, String encodingAesKey, String receiveid) throws AesException { - if (encodingAesKey.length() != 43) { - throw new AesException(AesException.IllegalAesKey); - } - - this.token = token; - this.receiveid = receiveid; - aesKey = Base64.decodeBase64(encodingAesKey + "="); - } - - // 生成4个字节的网络字节序 - byte[] getNetworkBytesOrder(int sourceNumber) { - byte[] orderBytes = new byte[4]; - orderBytes[3] = (byte) (sourceNumber & 0xFF); - orderBytes[2] = (byte) (sourceNumber >> 8 & 0xFF); - orderBytes[1] = (byte) (sourceNumber >> 16 & 0xFF); - orderBytes[0] = (byte) (sourceNumber >> 24 & 0xFF); - return orderBytes; - } - - // 还原4个字节的网络字节序 - int recoverNetworkBytesOrder(byte[] orderBytes) { - int sourceNumber = 0; - for (int i = 0; i < 4; i++) { - sourceNumber <<= 8; - sourceNumber |= orderBytes[i] & 0xff; - } - return sourceNumber; - } - - // 随机生成16位字符串 - String getRandomStr() { - String base = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; - Random random = new Random(); - StringBuffer sb = new StringBuffer(); - for (int i = 0; i < 16; i++) { - int number = random.nextInt(base.length()); - sb.append(base.charAt(number)); - } - return sb.toString(); - } - - /** - * 对明文进行加密. - * - * @param text 需要加密的明文 - * @return 加密后base64编码的字符串 - * @throws AesException aes加密失败 - */ - String encrypt(String randomStr, String text) throws AesException { - ByteGroup byteCollector = new ByteGroup(); - byte[] randomStrBytes = randomStr.getBytes(CHARSET); - byte[] textBytes = text.getBytes(CHARSET); - byte[] networkBytesOrder = getNetworkBytesOrder(textBytes.length); - byte[] receiveidBytes = receiveid.getBytes(CHARSET); - - // randomStr + networkBytesOrder + text + receiveid - byteCollector.addBytes(randomStrBytes); - byteCollector.addBytes(networkBytesOrder); - byteCollector.addBytes(textBytes); - byteCollector.addBytes(receiveidBytes); - - // ... + pad: 使用自定义的填充方式对明文进行补位填充 - byte[] padBytes = PKCS7Encoder.encode(byteCollector.size()); - byteCollector.addBytes(padBytes); - - // 获得最终的字节流, 未加密 - byte[] unencrypted = byteCollector.toBytes(); - - try { - // 设置加密模式为AES的CBC模式 - Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding"); - SecretKeySpec keySpec = new SecretKeySpec(aesKey, "AES"); - IvParameterSpec iv = new IvParameterSpec(aesKey, 0, 16); - cipher.init(Cipher.ENCRYPT_MODE, keySpec, iv); - - // 加密 - byte[] encrypted = cipher.doFinal(unencrypted); - - // 使用BASE64对加密后的字符串进行编码 - String base64Encrypted = base64.encodeToString(encrypted); - - return base64Encrypted; - } catch (Exception e) { - e.printStackTrace(); - throw new AesException(AesException.EncryptAESError); - } - } - - /** - * 对密文进行解密. - * - * @param text 需要解密的密文 - * @return 解密得到的明文 - * @throws AesException aes解密失败 - */ - String decrypt(String text) throws AesException { - byte[] original; - try { - // 设置解密模式为AES的CBC模式 - Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding"); - SecretKeySpec key_spec = new SecretKeySpec(aesKey, "AES"); - IvParameterSpec iv = new IvParameterSpec(Arrays.copyOfRange(aesKey, 0, 16)); - cipher.init(Cipher.DECRYPT_MODE, key_spec, iv); - - // 使用BASE64对密文进行解码 - byte[] encrypted = Base64.decodeBase64(text); - - // 解密 - original = cipher.doFinal(encrypted); - } catch (Exception e) { - e.printStackTrace(); - throw new AesException(AesException.DecryptAESError); - } - - String xmlContent, from_receiveid; - try { - // 去除补位字符 - byte[] bytes = PKCS7Encoder.decode(original); - - // 分离16位随机字符串,网络字节序和receiveid - byte[] networkOrder = Arrays.copyOfRange(bytes, 16, 20); - - int xmlLength = recoverNetworkBytesOrder(networkOrder); - - xmlContent = new String(Arrays.copyOfRange(bytes, 20, 20 + xmlLength), CHARSET); - from_receiveid = new String(Arrays.copyOfRange(bytes, 20 + xmlLength, bytes.length), - CHARSET); - } catch (Exception e) { - e.printStackTrace(); - throw new AesException(AesException.IllegalBuffer); - } - - // receiveid不相同的情况 - if (!from_receiveid.equals(receiveid)) { - throw new AesException(AesException.ValidateCorpidError); - } - return xmlContent; - - } - - /** - * 将企业微信回复用户的消息加密打包. - *
    - *
  1. 对要发送的消息进行AES-CBC加密
  2. - *
  3. 生成安全签名
  4. - *
  5. 将消息密文和安全签名打包成xml格式
  6. - *
- * - * @param replyMsg 企业微信待回复用户的消息,xml格式的字符串 - * @param timeStamp 时间戳,可以自己生成,也可以用URL参数的timestamp - * @param nonce 随机串,可以自己生成,也可以用URL参数的nonce - * - * @return 加密后的可以直接回复用户的密文,包括msg_signature, timestamp, nonce, encrypt的xml格式的字符串 - * @throws AesException 执行失败,请查看该异常的错误码和具体的错误信息 - */ - public String EncryptMsg(String replyMsg, String timeStamp, String nonce) throws AesException { - // 加密 - String encrypt = encrypt(getRandomStr(), replyMsg); - - // 生成安全签名 - if (timeStamp == "") { - timeStamp = Long.toString(System.currentTimeMillis()); - } - - String signature = SHA1.getSHA1(token, timeStamp, nonce, encrypt); - - // System.out.println("发送给平台的签名是: " + signature[1].toString()); - // 生成发送的xml - String result = XMLParse.generate(encrypt, signature, timeStamp, nonce); - return result; - } - - /** - * 检验消息的真实性,并且获取解密后的明文. - *
    - *
  1. 利用收到的密文生成安全签名,进行签名验证
  2. - *
  3. 若验证通过,则提取xml中的加密消息
  4. - *
  5. 对消息进行解密
  6. - *
- * - * @param msgSignature 签名串,对应URL参数的msg_signature - * @param timeStamp 时间戳,对应URL参数的timestamp - * @param nonce 随机串,对应URL参数的nonce - * @param postData 密文,对应POST请求的数据 - * - * @return 解密后的原文 - * @throws AesException 执行失败,请查看该异常的错误码和具体的错误信息 - */ - public String DecryptMsg(String msgSignature, String timeStamp, String nonce, String postData) - throws AesException { - - // 密钥,公众账号的app secret - // 提取密文 - Object[] encrypt = XMLParse.extract(postData); - - // 验证安全签名 - String signature = SHA1.getSHA1(token, timeStamp, nonce, encrypt[1].toString()); - - // 和URL中的签名比较是否相等 - // System.out.println("第三方收到URL中的签名:" + msg_sign); - // System.out.println("第三方校验签名:" + signature); - if (!signature.equals(msgSignature)) { - throw new AesException(AesException.ValidateSignatureError); - } - - // 解密 - String result = decrypt(encrypt[1].toString()); - return result; - } - - /** - * 验证URL - * @param msgSignature 签名串,对应URL参数的msg_signature - * @param timeStamp 时间戳,对应URL参数的timestamp - * @param nonce 随机串,对应URL参数的nonce - * @param echoStr 随机串,对应URL参数的echostr - * - * @return 解密之后的echostr - * @throws AesException 执行失败,请查看该异常的错误码和具体的错误信息 - */ - public String VerifyURL(String msgSignature, String timeStamp, String nonce, String echoStr) - throws AesException { - String signature = SHA1.getSHA1(token, timeStamp, nonce, echoStr); - - if (!signature.equals(msgSignature)) { - throw new AesException(AesException.ValidateSignatureError); - } - - String result = decrypt(echoStr); - return result; - } - -} diff --git a/maibu-common/src/main/java/com/maibu/utils/wechat/WechatUtils.java b/maibu-common/src/main/java/com/maibu/utils/wechat/WechatUtils.java deleted file mode 100644 index 498d4ea..0000000 --- a/maibu-common/src/main/java/com/maibu/utils/wechat/WechatUtils.java +++ /dev/null @@ -1,123 +0,0 @@ -package com.maibu.utils.wechat; - -import cn.hutool.core.util.ObjectUtil; -import com.alibaba.fastjson2.JSON; -import com.alibaba.fastjson2.JSONObject; -import com.maibu.constant.CacheConstants; -import com.maibu.constant.FastBeeConstant; -import com.maibu.core.redis.RedisCache; -import com.maibu.utils.StringUtils; -import com.maibu.utils.http.HttpUtils; -import com.maibu.utils.spring.SpringUtils; -import com.maibu.wechat.*; - -import java.time.LocalDateTime; -import java.time.ZoneOffset; -import java.util.HashMap; -import java.util.concurrent.TimeUnit; - -/** - * @author fastb - * @version 1.0 - * @description: 微信相关工具类 - * @date 2024-01-08 17:36 - */ -public class WechatUtils { - - /** - * 网站、移动应用获取微信用户accessToken - * @param code 用户登录code - * @param appId 微信平台appId - * @param secret 微信平台密钥 - * @return WeChatAppResult - */ - public static WeChatAppResult getAccessTokenOpenId(String code, String appId, String secret) { - String url = FastBeeConstant.URL.WX_GET_ACCESS_TOKEN_URL_PREFIX + "?appid=" + appId + "&secret=" + secret + "&code=" + code + "&grant_type=authorization_code"; - String s = HttpUtils.sendGet(url); - return JSON.parseObject(s, WeChatAppResult.class); - } - - /** - * 获取微信用户信息 - * @param accessToken 接口调用凭证 - * @param openId 用户唯一标识 - * @return WeChatUserInfo - */ - public static WeChatUserInfo getWeChatUserInfo(String accessToken, String openId) { - String url = FastBeeConstant.URL.WX_GET_USER_INFO_URL_PREFIX + "?access_token=" + accessToken + "&openid=" + openId; - String s = HttpUtils.sendGet(url); - return JSON.parseObject(s, WeChatUserInfo.class); - } - - /** - * 小程序获取微信用户登录信息 - * @param code 用户凭证 - * @param appId 微信平台appId - * @param secret 微信平台密钥 - * @return 结果 - */ - public static WeChatMiniProgramResult codeToSession(String code, String appId, String secret) { - String url = FastBeeConstant.URL.WX_MINI_PROGRAM_GET_USER_SESSION_URL_PREFIX + "?appid=" + appId + "&secret=" + secret + "&js_code=" + code + "&grant_type=authorization_code"; - String s = HttpUtils.sendGet(url); - return JSON.parseObject(s, WeChatMiniProgramResult.class); - } - - /** - * 小程序获取微信用户手机号 - * @param code 凭证 - * @param accessToken 微信用户token - * @return 手机号信息 - */ - public static WeChatPhoneInfo getWechatUserPhoneInfo(String code, String accessToken) { - String url = FastBeeConstant.URL.WX_GET_USER_PHONE_URL_PREFIX + accessToken; - HashMap map = new HashMap<>(); - map.put("code", code); - String s = HttpUtils.sendPost(url, JSONObject.toJSONString(map)); - return JSON.parseObject(s, WeChatPhoneInfo.class); - } - - /** - * 小程序获、公众号取微信accessToken - * @param appId 微信平台appId - * @param secret 微信平台密钥 - * @return WeChatAppResult - */ - public static WeChatAppResult getAccessToken(String appId, String secret) { - // 加个缓存 - WeChatAppResult wechatAppResultRedis = SpringUtils.getBean(RedisCache.class).getCacheObject(CacheConstants.WECHAT_GET_ACCESS_TOKEN_APPID + appId); - if (ObjectUtil.isNotNull(wechatAppResultRedis)) { - return wechatAppResultRedis; - } - String url = FastBeeConstant.URL.WX_MINI_PROGRAM_GET_ACCESS_TOKEN_URL_PREFIX + "&appid=" + appId + "&secret=" + secret; - String s = HttpUtils.sendGet(url); - WeChatAppResult weChatAppResult = JSON.parseObject(s, WeChatAppResult.class); - if (ObjectUtil.isNotNull(weChatAppResult) && StringUtils.isNotEmpty(weChatAppResult.getAccessToken())) { - SpringUtils.getBean(RedisCache.class).setCacheObject(CacheConstants.WECHAT_GET_ACCESS_TOKEN_APPID + appId, weChatAppResult, 1, TimeUnit.HOURS); - } - return weChatAppResult; - } - - /** - * 微信公众号获取微信用户信息 - * @param accessToken 接口调用凭证 - * @param openId 用户唯一标识 - * @return WeChatUserInfo - */ - public static WeChatUserInfo getWeChatPublicAccountUserInfo(String accessToken, String openId) { - String url = FastBeeConstant.URL.WX_PUBLIC_ACCOUNT_GET_USER_INFO_URL_PREFIX + "?access_token=" + accessToken + "&openid=" + openId + "&lang=zh_CN"; - String s = HttpUtils.sendGet(url); - return JSON.parseObject(s, WeChatUserInfo.class); - } - - public static String responseText(WxCallBackXmlBO wxCallBackXmlBO, String content) { - StringBuilder stringBuilder = new StringBuilder(); - stringBuilder.append(""); - stringBuilder.append(""); - stringBuilder.append(""); - stringBuilder.append("" + (LocalDateTime.now().toInstant(ZoneOffset.of("+8")).toEpochMilli() / 1000) + ""); - stringBuilder.append(""); - stringBuilder.append(""); //替换空格,文本信息内容不能包含有空格 .Replace(" ", string.Empty) - stringBuilder.append(""); - return stringBuilder.toString(); - } -} diff --git a/maibu-common/src/main/java/com/maibu/utils/wechat/XMLParse.java b/maibu-common/src/main/java/com/maibu/utils/wechat/XMLParse.java deleted file mode 100644 index 8d4f1c3..0000000 --- a/maibu-common/src/main/java/com/maibu/utils/wechat/XMLParse.java +++ /dev/null @@ -1,103 +0,0 @@ -package com.maibu.utils.wechat; - -/** - * 对企业微信发送给企业后台的消息加解密示例代码. - * - * @copyright Copyright (c) 1998-2014 Tencent Inc. - */ - -// ------------------------------------------------------------------------ - -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.NodeList; -import org.xml.sax.InputSource; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import java.io.StringReader; - -/** - * XMLParse class - * - * 提供提取消息格式中的密文及生成回复消息格式的接口. - */ -class XMLParse { - - /** - * 提取出xml数据包中的加密消息 - * @param xmltext 待提取的xml字符串 - * @return 提取出的加密消息字符串 - * @throws AesException - */ - public static Object[] extract(String xmltext) throws AesException { - Object[] result = new Object[3]; - try { - DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); - - String FEATURE = null; - // This is the PRIMARY defense. If DTDs (doctypes) are disallowed, almost all XML entity attacks are prevented - // Xerces 2 only - http://xerces.apache.org/xerces2-j/features.html#disallow-doctype-decl - FEATURE = "http://apache.org/xml/features/disallow-doctype-decl"; - dbf.setFeature(FEATURE, true); - - // If you can't completely disable DTDs, then at least do the following: - // Xerces 1 - http://xerces.apache.org/xerces-j/features.html#external-general-entities - // Xerces 2 - http://xerces.apache.org/xerces2-j/features.html#external-general-entities - // JDK7+ - http://xml.org/sax/features/external-general-entities - FEATURE = "http://xml.org/sax/features/external-general-entities"; - dbf.setFeature(FEATURE, false); - - // Xerces 1 - http://xerces.apache.org/xerces-j/features.html#external-parameter-entities - // Xerces 2 - http://xerces.apache.org/xerces2-j/features.html#external-parameter-entities - // JDK7+ - http://xml.org/sax/features/external-parameter-entities - FEATURE = "http://xml.org/sax/features/external-parameter-entities"; - dbf.setFeature(FEATURE, false); - - // Disable external DTDs as well - FEATURE = "http://apache.org/xml/features/nonvalidating/load-external-dtd"; - dbf.setFeature(FEATURE, false); - - // and these as well, per Timothy Morgan's 2014 paper: "XML Schema, DTD, and Entity Attacks" - dbf.setXIncludeAware(false); - dbf.setExpandEntityReferences(false); - - // And, per Timothy Morgan: "If for some reason support for inline DOCTYPEs are a requirement, then - // ensure the entity settings are disabled (as shown above) and beware that SSRF attacks - // (http://cwe.mitre.org/data/definitions/918.html) and denial - // of service attacks (such as billion laughs or decompression bombs via "jar:") are a risk." - - // remaining parser logic - DocumentBuilder db = dbf.newDocumentBuilder(); - StringReader sr = new StringReader(xmltext); - InputSource is = new InputSource(sr); - Document document = db.parse(is); - - Element root = document.getDocumentElement(); - NodeList nodelist1 = root.getElementsByTagName("Encrypt"); - result[0] = 0; - result[1] = nodelist1.item(0).getTextContent(); - return result; - } catch (Exception e) { - e.printStackTrace(); - throw new AesException(AesException.ParseXmlError); - } - } - - /** - * 生成xml消息 - * @param encrypt 加密后的消息密文 - * @param signature 安全签名 - * @param timestamp 时间戳 - * @param nonce 随机字符串 - * @return 生成的xml字符串 - */ - public static String generate(String encrypt, String signature, String timestamp, String nonce) { - - String format = "\n" + "\n" - + "\n" - + "%3$s\n" + "\n" + ""; - return String.format(format, encrypt, signature, timestamp, nonce); - - } -} diff --git a/maibu-common/src/main/java/com/maibu/wechat/WeChatAppResult.java b/maibu-common/src/main/java/com/maibu/wechat/WeChatAppResult.java deleted file mode 100644 index e51ac03..0000000 --- a/maibu-common/src/main/java/com/maibu/wechat/WeChatAppResult.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.maibu.wechat; - -import com.alibaba.fastjson2.annotation.JSONField; -import lombok.Data; - -/** - * WeChat 调用api接口获取openid登信息后的返回类 - * @author fastb - * @date 2023-07-31 11:43 - */ -@Data -public class WeChatAppResult { - - /** - * 接口调用凭证 - */ - @JSONField(name = "access_token") - private String accessToken; - - /** - * access_token 接口调用凭证超时时间,单位(秒) - */ - @JSONField(name = "expires_in") - private Long expiresIn; - - /** - * 用户刷新 access_token - */ - @JSONField(name = "refresh_token") - private String refreshToken; - - /** - * 授权用户唯一标识 - */ - @JSONField(name = "openid") - private String openId; - - /** - * 用户授权的作用域(snsapi_userinfo) - */ - @JSONField(name = "scope") - private String scope; - - /** - * 当且仅当该移动应用已获得该用户的 userinfo 授权时,才会出现该字段 - */ - @JSONField(name = "unionid") - private String unionId; - - /** - * 错误码 - */ - @JSONField(name = "errcode") - private Integer errCode; - - /** - * 错误信息 - */ - @JSONField(name = "errmsg") - private String errMsg; - - /** - * 是否绑定手机号 - */ - private Boolean isBind; - - /** - * token 自定义登录状态 - */ - private String token; - -} diff --git a/maibu-common/src/main/java/com/maibu/wechat/WeChatLoginBody.java b/maibu-common/src/main/java/com/maibu/wechat/WeChatLoginBody.java deleted file mode 100644 index a1d3dab..0000000 --- a/maibu-common/src/main/java/com/maibu/wechat/WeChatLoginBody.java +++ /dev/null @@ -1,89 +0,0 @@ -package com.maibu.wechat; - -import lombok.Data; -import lombok.experimental.Accessors; - -/** - * 微信端登录参数 - * @author fastb - * @date 2023-07-31 11:32 - */ -@Data -@Accessors(chain = true) -public class WeChatLoginBody { - - /** - * 传入参数:临时登录凭证 - */ - private String code; - - /** - * 临时获取用户手机号凭证 - */ - private String phoneCode; - - /** - * 传入参数 openid - */ - private String openId; - - /** - * 传入参数 session_key - */ - private String sessionKey; - - /** - * 传入参数 unionid - */ - private String unionId; - - /** - * 传入参数: 用户非敏感信息 - */ - private String rawData; - - /** - * 传入参数: 签名 - */ - private String signature; - - /** - * 传入参数: 用户敏感信息 - */ - private String encryptedData; - - /** - * 传入参数: 解密算法的向量 - */ - private String iv; - - /** - * 用户手机号 - */ - private String userPhone; - - /** - * 用户密码 - */ - private String userPwd; - - /** - * 接口调用凭证 - */ - private String accessToken; - - /** - * access_token 接口调用凭证超时时间,单位(秒) - */ - private Long expiresIn; - - /** - * 用户刷新 access_token - */ - private String refreshToken; - - /** - * 用户授权的作用域(snsapi_userinfo) - */ - private String scope; -} diff --git a/maibu-common/src/main/java/com/maibu/wechat/WeChatLoginResult.java b/maibu-common/src/main/java/com/maibu/wechat/WeChatLoginResult.java deleted file mode 100644 index 1c57ff1..0000000 --- a/maibu-common/src/main/java/com/maibu/wechat/WeChatLoginResult.java +++ /dev/null @@ -1,22 +0,0 @@ -package com.maibu.wechat; - -import lombok.Data; - -/** - * 微信登录返回结果 - * @author fastb - * @date 2023-08-15 16:43 - */ -@Data -public class WeChatLoginResult { - - /** - * 登录成功返回token - */ - private String token; - - /** - * 绑定账号跳转页面 - */ - private String bindId; -} diff --git a/maibu-common/src/main/java/com/maibu/wechat/WeChatMiniProgramResult.java b/maibu-common/src/main/java/com/maibu/wechat/WeChatMiniProgramResult.java deleted file mode 100644 index c4d7958..0000000 --- a/maibu-common/src/main/java/com/maibu/wechat/WeChatMiniProgramResult.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.maibu.wechat; - -import com.alibaba.fastjson2.annotation.JSONField; -import lombok.Data; - -/** - * @author fastb - * @date 2023-08-14 10:07 - */ -@Data -public class WeChatMiniProgramResult { - - /** - * 会话密钥 - */ - @JSONField(name = "session_key") - private String sessionKey; - - /** - * 用户在开放平台的唯一标识符,若当前小程序已绑定到微信开放平台账号下会返回,详见 UnionID 机制说明 - */ - @JSONField(name = "unionid") - private String unionId; - - /** - * 错误信息 - */ - @JSONField(name = "errmsg") - private String errMsg; - - /** - * 用户唯一标识 - */ - @JSONField(name = "openid") - private String openId; - - /** - * 错误码 - */ - @JSONField(name = "errcode") - private String errCode; -} diff --git a/maibu-common/src/main/java/com/maibu/wechat/WeChatPhoneInfo.java b/maibu-common/src/main/java/com/maibu/wechat/WeChatPhoneInfo.java deleted file mode 100644 index e643804..0000000 --- a/maibu-common/src/main/java/com/maibu/wechat/WeChatPhoneInfo.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.maibu.wechat; - -import com.alibaba.fastjson2.annotation.JSONField; -import lombok.Data; - -/** - * @author fastb - * @date 2023-08-16 17:48 - */ -@Data -public class WeChatPhoneInfo { - - @JSONField(name = "errcode") - private String errCode; - - @JSONField(name = "errmsg") - private String errmsg; - - @JSONField(name = "phone_info") - private PhoneInfo phoneInfo; - - @Data - public class PhoneInfo { - - private String phoneNumber; - - private String purePhoneNumber; - - private String countryCode; - - private WaterMark watermark; - } - - @Data - class WaterMark { - - private String timestamp; - - private String appid; - } -} diff --git a/maibu-common/src/main/java/com/maibu/wechat/WeChatUserInfo.java b/maibu-common/src/main/java/com/maibu/wechat/WeChatUserInfo.java deleted file mode 100644 index ea6dfe0..0000000 --- a/maibu-common/src/main/java/com/maibu/wechat/WeChatUserInfo.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.maibu.wechat; - -import com.alibaba.fastjson2.annotation.JSONField; -import lombok.Data; - -/** - * 微信用户信息 - * @author fastb - * @date 2023-07-31 14:56 - */ -@Data -public class WeChatUserInfo { - - /** - * 普通用户的标识,对当前开发者账号唯一 - */ - @JSONField(name = "openid") - private String openId; - - /** - * 普通用户昵称 - */ - @JSONField(name = "nickname") - private String nickname; - - /** - * 普通用户性别,1 为男性,2 为女性 - */ - @JSONField(name = "sex") - private Integer sex; - - /** - * 普通用户个人资料填写的省份 - */ - @JSONField(name = "province") - private String province; - - /** - * 普通用户个人资料填写的城市 - */ - @JSONField(name = "city") - private String city; - - /** - * 国家,如中国为 CN - */ - @JSONField(name = "country") - private String country; - - /** - * 用户头像,最后一个数值代表正方形头像大小(有 0、46、64、96、132 数值可选,0 代表 640*640 正方形头像),用户没有头像时该项为空 - */ - @JSONField(name = "headimgurl") - private String headImgUrl; - - /** - * 用户特权信息,json 数组,如微信沃卡用户为(chinaunicom) - */ - @JSONField(name = "privilege") - private String privilege; - - /** - * 用户统一标识。针对一个微信开放平台账号下的应用,同一用户的 unionid 是唯一的。 - */ - @JSONField(name = "unionid") - private String unionId; - - /** - * 错误码 - */ - @JSONField(name = "errcode") - private Integer errCode; - - /** - * 错误信息 - */ - @JSONField(name = "errmsg") - private String errMsg; - -} diff --git a/maibu-common/src/main/java/com/maibu/wechat/WxCallBackXmlBO.java b/maibu-common/src/main/java/com/maibu/wechat/WxCallBackXmlBO.java deleted file mode 100644 index 8ffabb5..0000000 --- a/maibu-common/src/main/java/com/maibu/wechat/WxCallBackXmlBO.java +++ /dev/null @@ -1,67 +0,0 @@ -package com.maibu.wechat; - -import com.alibaba.fastjson2.annotation.JSONField; -import lombok.Data; - -/** - * 微信回调的时候入参XML解析节点封装BO - * @author fastb - * @date 2024-03-12 15:24 - * @version 1.0 - */ -@Data -public class WxCallBackXmlBO { - - @JSONField(name = "MsgType") - private String msgType; - - @JSONField(name = "FromUserName") - private String fromUserName; - - @JSONField(name = "ToUserName") - private String toUserName; - - @JSONField(name = "CreateTime") - private String createTime; - - @JSONField(name = "Content") - private String content; - - @JSONField(name = "MsgId") - private String msgId; - - @JSONField(name = "Event") - private String event; - - @JSONField(name = "EventKey") - private String eventKey; - - @JSONField(name = "Ticket") - private String ticket; - - @JSONField(name = "UnionId") - private String unionId; - - @JSONField(name = "Recognition") - private String recognition; - - @JSONField(name = "PicUrl") - private String picUrl; - - @JSONField(name = "SuccessOrderId") - private String successOrderId; - - @JSONField(name = "CardId") - private String cardId; - - @JSONField(name = "UserCardCode") - private String userCardCode; - - @JSONField(name = "LocationX") - private String locationX; - - @JSONField(name = "LocationY") - private String locationY; - - -} diff --git a/maibu-external/pom.xml b/maibu-external/pom.xml index 6897311..ace7ebf 100644 --- a/maibu-external/pom.xml +++ b/maibu-external/pom.xml @@ -12,10 +12,6 @@ maibu-external - - org.springframework.boot - spring-boot-starter - org.apache.logging.log4j log4j-core @@ -74,11 +70,11 @@ com.maibu maibu-common - - io.minio - minio - 8.5.7 - + + + + + diff --git a/maibu-external/src/main/java/com/maibu/own/service/PathPlanService.java b/maibu-external/src/main/java/com/maibu/own/service/PathPlanService.java index 6138a26..344fb37 100644 --- a/maibu-external/src/main/java/com/maibu/own/service/PathPlanService.java +++ b/maibu-external/src/main/java/com/maibu/own/service/PathPlanService.java @@ -3,9 +3,9 @@ package com.maibu.own.service; import com.maibu.mybatis.LambdaQueryWrapperX; import com.maibu.own.entity.PathPlan; import com.maibu.own.mapper.PathPlanMapper; -import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import java.util.List; diff --git a/maibu-framework/pom.xml b/maibu-framework/pom.xml index 6e0ecea..4c0d1b2 100644 --- a/maibu-framework/pom.xml +++ b/maibu-framework/pom.xml @@ -32,33 +32,6 @@ ${maibu.version} - - - com.alibaba - druid-spring-boot-starter - ${druid.version} - - - - org.apache.shardingsphere - shardingsphere-jdbc-core-spring-boot-starter - ${shardingsphere.version} - - - - - org.apache.tomcat - tomcat-dbcp - 10.0.16 - - - - - com.baomidou - dynamic-datasource-spring-boot-starter - ${dynamic-datasource.version} - - pro.fessional diff --git a/maibu-framework/src/main/java/com/maibu/aspectj/DataSourceAspect.java b/maibu-framework/src/main/java/com/maibu/aspectj/DataSourceAspect.java deleted file mode 100644 index 79072eb..0000000 --- a/maibu-framework/src/main/java/com/maibu/aspectj/DataSourceAspect.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.maibu.aspectj; - - -import java.util.Objects; - -import com.maibu.annotation.DataSource; -import com.maibu.datasource.DynamicDataSourceContextHolder; -import com.maibu.utils.StringUtils; -import org.aspectj.lang.ProceedingJoinPoint; -import org.aspectj.lang.annotation.Around; -import org.aspectj.lang.annotation.Aspect; -import org.aspectj.lang.annotation.Pointcut; -import org.aspectj.lang.reflect.MethodSignature; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; -import org.springframework.core.annotation.AnnotationUtils; -import org.springframework.core.annotation.Order; -import org.springframework.stereotype.Component; - -/** - * 多数据源处理 - * - * @author ruoyi - */ -@Aspect -@Order(1) -@Component -public class DataSourceAspect -{ - protected Logger logger = LoggerFactory.getLogger(getClass()); - - @Pointcut("@annotation(com.maibu.annotation.DataSource)" - + "|| @within(com.maibu.annotation.DataSource)") - public void dsPointCut() - { - - } - - @Around("dsPointCut()") - public Object around(ProceedingJoinPoint point) throws Throwable - { - DataSource dataSource = getDataSource(point); - - if (StringUtils.isNotNull(dataSource)) - { - DynamicDataSourceContextHolder.setDataSourceType(dataSource.value().name()); - } - - try - { - return point.proceed(); - } - finally - { - // 销毁数据源 在执行方法之后 - DynamicDataSourceContextHolder.clearDataSourceType(); - } - } - - /** - * 获取需要切换的数据源 - */ - public DataSource getDataSource(ProceedingJoinPoint point) - { - MethodSignature signature = (MethodSignature) point.getSignature(); - DataSource dataSource = AnnotationUtils.findAnnotation(signature.getMethod(), DataSource.class); - if (Objects.nonNull(dataSource)) - { - return dataSource; - } - - return AnnotationUtils.findAnnotation(signature.getDeclaringType(), DataSource.class); - } -} diff --git a/maibu-framework/src/main/java/com/maibu/config/DataSourceConfig.java b/maibu-framework/src/main/java/com/maibu/config/DataSourceConfig.java deleted file mode 100644 index f6ba7a6..0000000 --- a/maibu-framework/src/main/java/com/maibu/config/DataSourceConfig.java +++ /dev/null @@ -1,72 +0,0 @@ -package com.maibu.config; - -import com.alibaba.druid.pool.DruidDataSource; -import com.baomidou.dynamic.datasource.spring.boot.autoconfigure.DynamicDataSourceAutoConfiguration; -import com.maibu.datasource.DynamicDataSource; -import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.boot.SpringBootConfiguration; -import org.springframework.boot.autoconfigure.AutoConfigureBefore; -import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Primary; -import org.springframework.jdbc.datasource.DataSourceTransactionManager; - -import javax.sql.DataSource; -import java.io.IOException; -import java.sql.SQLException; -import java.util.HashMap; -import java.util.Map; - - -@Configuration -@AutoConfigureBefore({DynamicDataSourceAutoConfiguration.class, SpringBootConfiguration.class}) -public class DataSourceConfig { - - @Bean(name = "masterDataSource") - @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.master") - public DruidDataSource masterDataSource() { - return new DruidDataSource(); - } - -// @Bean(name = "slaveDataSource") -// @ConfigurationProperties(prefix = "spring.datasource.dynamic.datasource.slave") -// public DruidDataSource slaveDataSource() { -// return new DruidDataSource(); -// } - - @Bean - @Primary - public DynamicDataSource dataSource(@Qualifier("masterDataSource") DataSource master) throws SQLException, IOException { - Map targetDataSources = new HashMap<>(); - targetDataSources.put("master", master); - //targetDataSources.put("slave", slave); - return new DynamicDataSource(master,targetDataSources); - } - - - @Bean - public DataSourceTransactionManager transactionManager(DataSource dataSource) { - return new DataSourceTransactionManager(dataSource); - } - -// /** -// * 将动态数据源设置为首选数据源 -// */ -// @Primary -// @Bean -// public DynamicDataSource dataSource(DynamicDataSourceProvider dynamicDataSourceProvider) { -//// DynamicRoutingDataSource dataSource = new DynamicRoutingDataSource(); -//// dataSource.setPrimary(properties.getPrimary()); -//// dataSource.setStrict(properties.getStrict()); -//// dataSource.setStrategy(properties.getStrategy()); -//// dataSource.setProvider(dynamicDataSourceProvider); -//// dataSource.setP6spy(properties.getP6spy()); -//// dataSource.setSeata(properties.getSeata()); -//// return dataSource; -// Map targetDataSources = dynamicDataSourceProvider.loadDataSources(); -// Map objectObjectMap = new HashMap<>(targetDataSources); -// DataSource masterDataSource = targetDataSources.get(properties.getPrimary()); -// return new DynamicDataSource(masterDataSource,objectObjectMap); -// } -} diff --git a/maibu-framework/src/main/java/com/maibu/config/DruidConfig.java b/maibu-framework/src/main/java/com/maibu/config/DruidConfig.java deleted file mode 100644 index 3522bf5..0000000 --- a/maibu-framework/src/main/java/com/maibu/config/DruidConfig.java +++ /dev/null @@ -1,74 +0,0 @@ -package com.maibu.config; - -import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure; -import com.alibaba.druid.spring.boot.autoconfigure.properties.DruidStatProperties; -import com.alibaba.druid.spring.boot.autoconfigure.stat.DruidFilterConfiguration; -import com.alibaba.druid.spring.boot.autoconfigure.stat.DruidSpringAopConfiguration; -import com.alibaba.druid.spring.boot.autoconfigure.stat.DruidStatViewServletConfiguration; -import com.alibaba.druid.spring.boot.autoconfigure.stat.DruidWebStatFilterConfiguration; -import com.alibaba.druid.util.Utils; -import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; -import org.springframework.boot.autoconfigure.jdbc.DataSourceProperties; -import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.boot.web.servlet.FilterRegistrationBean; -import org.springframework.context.annotation.Bean; -import org.springframework.context.annotation.Configuration; -import org.springframework.context.annotation.Import; - -import javax.servlet.*; -import java.io.IOException; - -@Configuration -@ConditionalOnClass(value = DruidDataSourceAutoConfigure.class) -@EnableConfigurationProperties({DruidStatProperties.class, DataSourceProperties.class}) -@Import({DruidSpringAopConfiguration.class, DruidStatViewServletConfiguration.class, DruidWebStatFilterConfiguration.class, DruidFilterConfiguration.class}) -public class DruidConfig { - public DruidConfig() { - } - /** - * 去除监控页面底部的广告 - */ - @SuppressWarnings({ "rawtypes", "unchecked" }) - @Bean - @ConditionalOnProperty(name = "spring.datasource.druid.stat-view-servlet.enabled", havingValue = "true") - public FilterRegistrationBean removeDruidFilterRegistrationBean(DruidStatProperties properties) - { - // 获取web监控页面的参数 - DruidStatProperties.StatViewServlet config = properties.getStatViewServlet(); - // 提取common.js的配置路径 - String pattern = config.getUrlPattern() != null ? config.getUrlPattern() : "/druid/*"; - String commonJsPattern = pattern.replaceAll("\\*", "js/common.js"); - final String filePath = "support/http/resources/js/common.js"; - // 创建filter进行过滤 - Filter filter = new Filter() - { - @Override - public void init(javax.servlet.FilterConfig filterConfig) throws ServletException - { - } - @Override - public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) - throws IOException, ServletException - { - chain.doFilter(request, response); - // 重置缓冲区,响应头不会被重置 - response.resetBuffer(); - // 获取common.js - String text = Utils.readFromResource(filePath); - // 正则替换banner, 除去底部的广告信息 - text = text.replaceAll("
", ""); - text = text.replaceAll("powered.*?shrek.wang", ""); - response.getWriter().write(text); - } - @Override - public void destroy() - { - } - }; - FilterRegistrationBean registrationBean = new FilterRegistrationBean(); - registrationBean.setFilter(filter); - registrationBean.addUrlPatterns(commonJsPattern); - return registrationBean; - } -} diff --git a/maibu-framework/src/main/java/com/maibu/config/MyBatisConfig.java b/maibu-framework/src/main/java/com/maibu/config/MyBatisConfig.java index 43139d8..3967b8b 100644 --- a/maibu-framework/src/main/java/com/maibu/config/MyBatisConfig.java +++ b/maibu-framework/src/main/java/com/maibu/config/MyBatisConfig.java @@ -6,7 +6,6 @@ import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor; import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor; import com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean; -import com.maibu.datasource.DynamicDataSource; import com.maibu.utils.StringUtils; import org.apache.ibatis.io.VFS; import org.apache.ibatis.session.SqlSessionFactory; @@ -26,6 +25,7 @@ import org.springframework.core.type.classreading.MetadataReader; import org.springframework.core.type.classreading.MetadataReaderFactory; import org.springframework.util.ClassUtils; +import javax.sql.DataSource; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; @@ -128,7 +128,7 @@ public class MyBatisConfig */ @Bean(name = "mysqlSessionFactory") @Primary - public SqlSessionFactory sqlSessionFactory(DynamicDataSource dataSource) throws Exception + public SqlSessionFactory sqlSessionFactory(DataSource dataSource) throws Exception { String typeAliasesPackage = env.getProperty("mybatis-plus.typeAliasesPackage"); String mapperLocations = env.getProperty("mybatis-plus.mapperLocations"); diff --git a/maibu-framework/src/main/java/com/maibu/config/properties/DruidProperties.java b/maibu-framework/src/main/java/com/maibu/config/properties/DruidProperties.java deleted file mode 100644 index ee9e961..0000000 --- a/maibu-framework/src/main/java/com/maibu/config/properties/DruidProperties.java +++ /dev/null @@ -1,75 +0,0 @@ -package com.maibu.config.properties; - -import org.springframework.context.annotation.Configuration; - -/** - * druid 配置属性 - * - * @author ruoyi - */ -@Configuration -public class DruidProperties -{ -// @Value("${spring.datasource.druid.initialSize}") -// private int initialSize; -// -// @Value("${spring.datasource.druid.minIdle}") -// private int minIdle; -// -// @Value("${spring.datasource.druid.maxActive}") -// private int maxActive; -// -// @Value("${spring.datasource.druid.maxWait}") -// private int maxWait; -// -// @Value("${spring.datasource.druid.timeBetweenEvictionRunsMillis}") -// private int timeBetweenEvictionRunsMillis; -// -// @Value("${spring.datasource.druid.minEvictableIdleTimeMillis}") -// private int minEvictableIdleTimeMillis; -// -// @Value("${spring.datasource.druid.maxEvictableIdleTimeMillis}") -// private int maxEvictableIdleTimeMillis; -// -// @Value("${spring.datasource.druid.validationQuery}") -// private String validationQuery; -// -// @Value("${spring.datasource.druid.testWhileIdle}") -// private boolean testWhileIdle; -// -// @Value("${spring.datasource.druid.testOnBorrow}") -// private boolean testOnBorrow; -// -// @Value("${spring.datasource.druid.testOnReturn}") -// private boolean testOnReturn; - -// public DruidDataSource dataSource(DruidDataSource datasource) -// { -// /** 配置初始化大小、最小、最大 */ -// datasource.setInitialSize(initialSize); -// datasource.setMaxActive(maxActive); -// datasource.setMinIdle(minIdle); -// -// /** 配置获取连接等待超时的时间 */ -// datasource.setMaxWait(maxWait); -// -// /** 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒 */ -// datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis); -// -// /** 配置一个连接在池中最小、最大生存的时间,单位是毫秒 */ -// datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis); -// datasource.setMaxEvictableIdleTimeMillis(maxEvictableIdleTimeMillis); -// -// /** -// * 用来检测连接是否有效的sql,要求是一个查询语句,常用select 'x'。如果validationQuery为null,testOnBorrow、testOnReturn、testWhileIdle都不会起作用。 -// */ -// datasource.setValidationQuery(validationQuery); -// /** 建议配置为true,不影响性能,并且保证安全性。申请连接的时候检测,如果空闲时间大于timeBetweenEvictionRunsMillis,执行validationQuery检测连接是否有效。 */ -// datasource.setTestWhileIdle(testWhileIdle); -// /** 申请连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。 */ -// datasource.setTestOnBorrow(testOnBorrow); -// /** 归还连接时执行validationQuery检测连接是否有效,做了这个配置会降低性能。 */ -// datasource.setTestOnReturn(testOnReturn); -// return datasource; -// } -} diff --git a/maibu-framework/src/main/java/com/maibu/config/sharding/ShardingAlgorithmTool.java b/maibu-framework/src/main/java/com/maibu/config/sharding/ShardingAlgorithmTool.java deleted file mode 100644 index 522f137..0000000 --- a/maibu-framework/src/main/java/com/maibu/config/sharding/ShardingAlgorithmTool.java +++ /dev/null @@ -1,262 +0,0 @@ -package com.maibu.config.sharding; - -import cn.hutool.extra.spring.SpringUtil; -import com.alibaba.druid.util.StringUtils; -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import com.maibu.config.sharding.enums.ShardingTableCacheEnum; -import lombok.extern.slf4j.Slf4j; -import org.apache.shardingsphere.driver.jdbc.core.datasource.ShardingSphereDataSource; -import org.apache.shardingsphere.infra.config.RuleConfiguration; -import org.apache.shardingsphere.mode.manager.ContextManager; -import org.apache.shardingsphere.sharding.algorithm.config.AlgorithmProvidedShardingRuleConfiguration; -import org.apache.shardingsphere.sharding.api.config.rule.ShardingTableRuleConfiguration; -import org.springframework.core.env.Environment; - -import java.sql.*; -import java.time.YearMonth; -import java.time.format.DateTimeFormatter; -import java.util.*; -import java.util.stream.Collectors; - -/** - *

@Title ShardingAlgorithmTool - *

@Description 按月分片算法工具 - * - */ -@Slf4j -public class ShardingAlgorithmTool { - - /** 表分片符号,例:siot_device_log_202201 中,分片符号为 "_" */ - private static final String TABLE_SPLIT_SYMBOL = "_"; - - /** 数据库配置 */ - private static final Environment ENV = SpringUtil.getApplicationContext().getEnvironment(); - private static final String DATASOURCE_URL = ENV.getProperty("spring.shardingsphere.datasource.ds0.url"); - private static final String DATASOURCE_USERNAME = ENV.getProperty("spring.shardingsphere.datasource.ds0.username"); - private static final String DATASOURCE_PASSWORD = ENV.getProperty("spring.shardingsphere.datasource.ds0.password"); - - - /** - * 检查分表获取的表名是否存在,不存在则自动建表 - * @param logicTable 逻辑表 - * @param resultTableNames 真实表名,例:iot_device_log_202201 - * @return 存在于数据库中的真实表名集合 - */ - public static Set getShardingTablesAndCreate(ShardingTableCacheEnum logicTable, Collection resultTableNames) { - return resultTableNames.stream().map(o -> getShardingTableAndCreate(logicTable, o)).collect(Collectors.toSet()); - } - - /** - * 检查分表获取的表名是否存在,不存在则自动建表 - * @param logicTable 逻辑表 - * @param resultTableName 真实表名,例:iot_device_log_202201 - * @return 确认存在于数据库中的真实表名 - */ - public static String getShardingTableAndCreate(ShardingTableCacheEnum logicTable, String resultTableName) { - // 缓存中有此表则返回,没有则判断创建 - if (logicTable.resultTableNamesCache().contains(resultTableName)) { - return resultTableName; - } else { - // 未创建的表返回逻辑空表 - boolean isSuccess = createShardingTable(logicTable, resultTableName); - return isSuccess ? resultTableName : logicTable.logicTableName(); - } - } - - /** - * 重载全部缓存 - */ - public static void tableNameCacheReloadAll() { - Arrays.stream(ShardingTableCacheEnum.values()).forEach(ShardingAlgorithmTool::tableNameCacheReload); - } - - /** - * 重载指定分表缓存 - * @param logicTable 逻辑表 - */ - public static void tableNameCacheReload(ShardingTableCacheEnum logicTable) { - // 读取数据库中所有表名 - List tableNameList = getAllTableNameBySchema(logicTable); - // 更新缓存、配置(原子操作) - logicTable.atomicUpdateCacheAndActualDataNodes(tableNameList); - // 删除旧的缓存(如果存在) - logicTable.resultTableNamesCache().clear(); - // 写入新的缓存 - logicTable.resultTableNamesCache().addAll(tableNameList); - // 动态更新配置 actualDataNodes - actualDataNodesRefresh(logicTable.logicTableName(), tableNameList); - } - - /** - * 获取所有表名 - * @return 表名集合 - * @param logicTable 逻辑表 - */ - public static List getAllTableNameBySchema(ShardingTableCacheEnum logicTable) { - List tableNames = new ArrayList<>(); - if (StringUtils.isEmpty(DATASOURCE_URL) || StringUtils.isEmpty(DATASOURCE_USERNAME) || StringUtils.isEmpty(DATASOURCE_PASSWORD)) { - log.error(">>>>>>>>>> 【ERROR】数据库连接配置有误,请稍后重试,URL:{}, username:{}, password:{}", DATASOURCE_URL, DATASOURCE_USERNAME, DATASOURCE_PASSWORD); - throw new IllegalArgumentException("数据库连接配置有误,请稍后重试"); - } - try (Connection conn = DriverManager.getConnection(DATASOURCE_URL, DATASOURCE_USERNAME, DATASOURCE_PASSWORD); - Statement st = conn.createStatement()) { - String logicTableName = logicTable.logicTableName(); - try (ResultSet rs = st.executeQuery("show TABLES like '" + logicTableName + TABLE_SPLIT_SYMBOL + "%'")) { - log.info("查询数据库所有表:{}","show TABLES like '" + logicTableName + TABLE_SPLIT_SYMBOL + "%'"); - while (rs.next()) { - String tableName = rs.getString(1); - log.info("分表格式:{}",String.format("^(%s\\d{6})$", logicTableName + TABLE_SPLIT_SYMBOL)); - // 匹配分表格式 例:^(t\_contract_\d{6})$ - if (org.apache.commons.lang3.StringUtils.isNotBlank(tableName) && tableName.matches(String.format("^(%s\\d{6})$", logicTableName + TABLE_SPLIT_SYMBOL))) { - tableNames.add(rs.getString(1)); - } - } - } - } catch (SQLException e) { - log.error(">>>>>>>>>> 【ERROR】数据库连接失败,请稍后重试,原因:{}", e.getMessage(), e); - throw new IllegalArgumentException("数据库连接失败,请稍后重试"); - } - return tableNames; - } - - /** - * 动态更新配置 actualDataNodes - * - * @param logicTableName 逻辑表名 - * @param tableNamesCache 真实表名集合 - */ - public static void actualDataNodesRefresh(String logicTableName, List tableNamesCache) { - try { - if (CollectionUtils.isEmpty(tableNamesCache)) { - return; - } - // 获取数据分片节点 - String dbName = "ds0"; - log.info(">>>>>>>>>> 【INFO】更新分表配置,logicTableName:{},tableNamesCache:{}", logicTableName, tableNamesCache); - - // generate actualDataNodes - String newActualDataNodes = tableNamesCache.stream().map(o -> String.format("%s.%s", dbName, o)).collect(Collectors.joining(",")); - ShardingSphereDataSource shardingSphereDataSource = SpringUtil.getBean(ShardingSphereDataSource.class); - updateShardRuleActualDataNodes(shardingSphereDataSource, logicTableName, newActualDataNodes); - }catch (Exception e){ - log.error("初始化 动态表单失败,原因:{}", e.getMessage(), e); - } - } - - - // -------------------------------------------------------------------------------------------------------------- - // 私有方法 - // -------------------------------------------------------------------------------------------------------------- - - - /** - * 刷新ActualDataNodes - */ - private static void updateShardRuleActualDataNodes(ShardingSphereDataSource dataSource, String logicTableName, String newActualDataNodes) { - // Context manager. - ContextManager contextManager = dataSource.getContextManager(); - - // Rule configuration. - String schemaName = "logic_db"; - Collection newRuleConfigList = new LinkedList<>(); - Collection oldRuleConfigList = dataSource.getContextManager() - .getMetaDataContexts() - .getMetaData(schemaName) - .getRuleMetaData() - .getConfigurations(); - - for (RuleConfiguration oldRuleConfig : oldRuleConfigList) { - if (oldRuleConfig instanceof AlgorithmProvidedShardingRuleConfiguration) { - - // Algorithm provided sharding rule configuration - AlgorithmProvidedShardingRuleConfiguration oldAlgorithmConfig = (AlgorithmProvidedShardingRuleConfiguration) oldRuleConfig; - AlgorithmProvidedShardingRuleConfiguration newAlgorithmConfig = new AlgorithmProvidedShardingRuleConfiguration(); - - // Sharding table rule configuration Collection - Collection newTableRuleConfigList = new LinkedList<>(); - Collection oldTableRuleConfigList = oldAlgorithmConfig.getTables(); - - oldTableRuleConfigList.forEach(oldTableRuleConfig -> { - if (logicTableName.equals(oldTableRuleConfig.getLogicTable())) { - ShardingTableRuleConfiguration newTableRuleConfig = new ShardingTableRuleConfiguration(oldTableRuleConfig.getLogicTable(), newActualDataNodes); - newTableRuleConfig.setTableShardingStrategy(oldTableRuleConfig.getTableShardingStrategy()); - newTableRuleConfig.setDatabaseShardingStrategy(oldTableRuleConfig.getDatabaseShardingStrategy()); - newTableRuleConfig.setKeyGenerateStrategy(oldTableRuleConfig.getKeyGenerateStrategy()); - - newTableRuleConfigList.add(newTableRuleConfig); - } else { - newTableRuleConfigList.add(oldTableRuleConfig); - } - }); - - newAlgorithmConfig.setTables(newTableRuleConfigList); - newAlgorithmConfig.setAutoTables(oldAlgorithmConfig.getAutoTables()); - newAlgorithmConfig.setBindingTableGroups(oldAlgorithmConfig.getBindingTableGroups()); - newAlgorithmConfig.setBroadcastTables(oldAlgorithmConfig.getBroadcastTables()); - newAlgorithmConfig.setDefaultDatabaseShardingStrategy(oldAlgorithmConfig.getDefaultDatabaseShardingStrategy()); - newAlgorithmConfig.setDefaultTableShardingStrategy(oldAlgorithmConfig.getDefaultTableShardingStrategy()); - newAlgorithmConfig.setDefaultKeyGenerateStrategy(oldAlgorithmConfig.getDefaultKeyGenerateStrategy()); - newAlgorithmConfig.setDefaultShardingColumn(oldAlgorithmConfig.getDefaultShardingColumn()); - newAlgorithmConfig.setShardingAlgorithms(oldAlgorithmConfig.getShardingAlgorithms()); - newAlgorithmConfig.setKeyGenerators(oldAlgorithmConfig.getKeyGenerators()); - newRuleConfigList.add(newAlgorithmConfig); - } - } - - // update context - contextManager.alterRuleConfiguration(schemaName, newRuleConfigList); - } - - /** - * 创建分表 - * @param logicTable 逻辑表 - * @param resultTableName 真实表名,例:sys_user_behavior_202201 - * @return 创建结果(true创建成功,false未创建) - */ - private static boolean createShardingTable(ShardingTableCacheEnum logicTable, String resultTableName) { - // 根据日期判断,当前月份之后分表不提前创建 - String month = resultTableName.replace(logicTable.logicTableName() + TABLE_SPLIT_SYMBOL,""); - YearMonth shardingMonth = YearMonth.parse(month, DateTimeFormatter.ofPattern("yyyyMM")); - if (shardingMonth.isAfter(YearMonth.now())) { - return false; - } - - synchronized (logicTable.logicTableName().intern()) { - // 缓存中有此表 返回 - if (logicTable.resultTableNamesCache().contains(resultTableName)) { - return false; - } - // 缓存中无此表,则建表并添加缓存 - executeSql(Collections.singletonList("CREATE TABLE IF NOT EXISTS `" + resultTableName + "` LIKE `" + logicTable.logicTableName() + "`;")); - // 缓存重载 - tableNameCacheReload(logicTable); - } - return true; - } - - /** - * 执行SQL - * @param sqlList SQL集合 - */ - private static void executeSql(List sqlList) { - if (StringUtils.isEmpty(DATASOURCE_URL) || StringUtils.isEmpty(DATASOURCE_USERNAME) || StringUtils.isEmpty(DATASOURCE_PASSWORD)) { - log.error(">>>>>>>>>> 【ERROR】数据库连接配置有误,请稍后重试,URL:{}, username:{}, password:{}", DATASOURCE_URL, DATASOURCE_USERNAME, DATASOURCE_PASSWORD); - throw new IllegalArgumentException("数据库连接配置有误,请稍后重试"); - } - try (Connection conn = DriverManager.getConnection(DATASOURCE_URL, DATASOURCE_USERNAME, DATASOURCE_PASSWORD)) { - try (Statement st = conn.createStatement()) { - conn.setAutoCommit(false); - for (String sql : sqlList) { - st.execute(sql); - } - } catch (Exception e) { - conn.rollback(); - log.error(">>>>>>>>>> 【ERROR】数据表创建执行失败,请稍后重试,原因:{}", e.getMessage(), e); - throw new IllegalArgumentException("数据表创建执行失败,请稍后重试"); - } - } catch (SQLException e) { - log.error(">>>>>>>>>> 【ERROR】数据库连接失败,请稍后重试,原因:{}", e.getMessage(), e); - throw new IllegalArgumentException("数据库连接失败,请稍后重试"); - } - } -} diff --git a/maibu-framework/src/main/java/com/maibu/config/sharding/ShardingTablesLoadRunner.java b/maibu-framework/src/main/java/com/maibu/config/sharding/ShardingTablesLoadRunner.java deleted file mode 100644 index 6c65231..0000000 --- a/maibu-framework/src/main/java/com/maibu/config/sharding/ShardingTablesLoadRunner.java +++ /dev/null @@ -1,21 +0,0 @@ -package com.maibu.config.sharding; - -import org.springframework.boot.CommandLineRunner; -import org.springframework.core.annotation.Order; -import org.springframework.stereotype.Component; - -/** - *

@Title ShardingTablesLoadRunner - *

@Description 项目启动后,读取已有分表,进行缓存 - * - */ -@Order(value = 1) // 数字越小,越先执行 -@Component -public class ShardingTablesLoadRunner implements CommandLineRunner { - - @Override - public void run(String... args) { - // 读取已有分表,进行缓存 - //ShardingAlgorithmTool.tableNameCacheReloadAll(); - } -} diff --git a/maibu-framework/src/main/java/com/maibu/config/sharding/TimeShardingAlgorithm.java b/maibu-framework/src/main/java/com/maibu/config/sharding/TimeShardingAlgorithm.java deleted file mode 100644 index 243fab8..0000000 --- a/maibu-framework/src/main/java/com/maibu/config/sharding/TimeShardingAlgorithm.java +++ /dev/null @@ -1,191 +0,0 @@ -package com.maibu.config.sharding; - -import com.google.common.collect.Range; -import com.maibu.config.sharding.enums.ShardingTableCacheEnum; -import lombok.extern.slf4j.Slf4j; -import org.apache.shardingsphere.sharding.api.sharding.standard.PreciseShardingValue; -import org.apache.shardingsphere.sharding.api.sharding.standard.RangeShardingValue; -import org.apache.shardingsphere.sharding.api.sharding.standard.StandardShardingAlgorithm; -import org.springframework.util.CollectionUtils; - -import java.text.SimpleDateFormat; -import java.time.Instant; -import java.time.LocalDateTime; -import java.time.ZoneId; -import java.time.ZonedDateTime; -import java.time.format.DateTimeFormatter; -import java.util.*; -import java.util.function.Function; - -/** - *

@Title TimeShardingAlgorithm - *

@Description 分片算法,按月分片 - * - */ -@Slf4j -public class TimeShardingAlgorithm implements StandardShardingAlgorithm { - /** - * Date类型的分片时间格式 - */ - private static final SimpleDateFormat TABLE_SHARD_Date_FORMATTER = new SimpleDateFormat("yyyyMM"); - - /** - * 分片时间格式 - */ - private static final DateTimeFormatter TABLE_SHARD_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyyMM"); - - /** - * 完整时间格式 - */ - private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyyMMdd HH:mm:ss"); - /** - * 完整时间格式 - */ - private static final SimpleDateFormat DATE_TIME_FORMATTER_SPILE = new SimpleDateFormat("yyyy-MM-dd"); - - /** - * 表分片符号,例:t_user_202201 中,分片符号为 "_" - */ - private final String TABLE_SPLIT_SYMBOL = "_"; - - - /** - * 精准分片 - * @param tableNames 对应分片库中所有分片表的集合 - * @param preciseShardingValue 分片键值,其中 logicTableName 为逻辑表,columnName 分片键,value 为从 SQL 中解析出来的分片键的值 - * @return 表名 - */ - @Override - public String doSharding(Collection tableNames, PreciseShardingValue preciseShardingValue) { - String logicTableName = preciseShardingValue.getLogicTableName(); - ShardingTableCacheEnum logicTable = ShardingTableCacheEnum.of(logicTableName); - createAllTable(logicTable, tableNames); - - /// 打印分片信息 - log.info(">>>>>>>>>> 【INFO】精确分片,节点配置表名:{},数据库缓存表名:{}", tableNames, logicTable.resultTableNamesCache()); - - Date date = preciseShardingValue.getValue(); - Instant instant = date.toInstant(); - LocalDateTime localDateTime = instant.atZone(ZoneId.systemDefault()).toLocalDateTime(); - String resultTableName = logicTableName + "_" + TABLE_SHARD_TIME_FORMATTER.format(localDateTime); - // 检查分表获取的表名是否存在,不存在则自动建表 - if (!tableNames.contains(resultTableName)){ - tableNames.add(resultTableName); - } - return ShardingAlgorithmTool.getShardingTableAndCreate(logicTable, resultTableName); - } - - /** - * 范围分片 - * @param tableNames 对应分片库中所有分片表的集合 - * @param rangeShardingValue 分片范围 - * @return 表名集合 - */ - @Override - public Collection doSharding(Collection tableNames, RangeShardingValue rangeShardingValue) { - log.info("开始分表查询开始:{}",System.currentTimeMillis()); - String logicTableName = rangeShardingValue.getLogicTableName(); - ShardingTableCacheEnum logicTable = ShardingTableCacheEnum.of(logicTableName); - createAllTable(logicTable, tableNames); - - /// 打印分片信息 - log.info(">>>>>>>>>> 【INFO】范围分片,节点配置表名:{},数据库缓存表名:{}", tableNames, logicTable.resultTableNamesCache()); - - // between and 的起始值 - Range valueRange = rangeShardingValue.getValueRange(); - boolean hasLowerBound = valueRange.hasLowerBound(); - boolean hasUpperBound = valueRange.hasUpperBound(); - - // 获取最大值和最小值 - Set tableNameCache = logicTable.resultTableNamesCache(); - String min = hasLowerBound ? String.valueOf(valueRange.lowerEndpoint()) : getLowerEndpoint(tableNameCache); - String max = hasUpperBound ? String.valueOf(valueRange.upperEndpoint()) : getUpperEndpoint(tableNameCache); - // 循环计算分表范围 - Set resultTableNames = new LinkedHashSet<>(); - try { - Date minDate = DATE_TIME_FORMATTER_SPILE.parse(min); - Date maxDate = DATE_TIME_FORMATTER_SPILE.parse(max); - Calendar calendar = Calendar.getInstance(); - while (minDate.before(maxDate) || minDate.equals(maxDate)) { - String tableName = logicTableName + TABLE_SPLIT_SYMBOL + TABLE_SHARD_Date_FORMATTER.format(minDate); - resultTableNames.add(tableName); - calendar.setTime(minDate); // 设置Calendar的时间为Date对象的时间 - calendar.add(Calendar.DAY_OF_MONTH, 1); // 给日期加一天 - minDate = calendar.getTime(); - } - log.info("开始分表查询结束:{}",System.currentTimeMillis()); - return ShardingAlgorithmTool.getShardingTablesAndCreate(logicTable, resultTableNames); - } catch (Exception e) { - return ShardingAlgorithmTool.getShardingTablesAndCreate(logicTable, logicTable.resultTableNamesCache()); - } - } - - - @Override - public void init() { - - } - - @Override - public String getType() { - return null; - } - - // -------------------------------------------------------------------------------------------------------------- - // 私有方法 - // -------------------------------------------------------------------------------------------------------------- - - /** - * 获取 最小分片值 - * @param tableNames 表名集合 - * @return 最小分片值 - */ - private String getLowerEndpoint(Collection tableNames) { - Optional optional = tableNames.stream() - .map(o -> LocalDateTime.parse(o.replace(TABLE_SPLIT_SYMBOL, "") + "01 00:00:00", DATE_TIME_FORMATTER)) - .min(Comparator.comparing(Function.identity())); - if (optional.isPresent()) { - ZonedDateTime zonedDateTime = optional.get().atZone(ZoneId.systemDefault()); - Instant instant = zonedDateTime.toInstant(); - return String.valueOf(Date.from(instant)); - } else { - log.error(">>>>>>>>>> 【ERROR】获取数据最小分表失败,请稍后重试,tableName:{}", tableNames); - throw new IllegalArgumentException("获取数据最小分表失败,请稍后重试"); - } - } - - /** - * 获取 最大分片值 - * @param tableNames 表名集合 - * @return 最大分片值 - */ - private String getUpperEndpoint(Collection tableNames) { - Optional optional = tableNames.stream() - .map(o -> LocalDateTime.parse(o.replace(TABLE_SPLIT_SYMBOL, "") + "01 00:00:00", DATE_TIME_FORMATTER)) - .max(Comparator.comparing(Function.identity())); - if (optional.isPresent()) { - ZonedDateTime zonedDateTime = optional.get().atZone(ZoneId.systemDefault()); - Instant instant = zonedDateTime.toInstant(); - return String.valueOf(Date.from(instant)); - } else { - log.error(">>>>>>>>>> 【ERROR】获取数据最大分表失败,请稍后重试,tableName:{}", tableNames); - throw new IllegalArgumentException("获取数据最大分表失败,请稍后重试"); - } - } - - /** - * 根据分片规则获取的表,创建所有的表 - * @param logicTable - * @param tableNames - */ - private void createAllTable(ShardingTableCacheEnum logicTable, Collection tableNames) { - if (!CollectionUtils.isEmpty(logicTable.resultTableNamesCache())) { - //如果缓存中有表了,则证明已经创建了表,无需再创建 - return; - } - //根据分片规则创建表 - ShardingAlgorithmTool.getShardingTablesAndCreate(logicTable,tableNames); - //刷新缓存 - ShardingAlgorithmTool.tableNameCacheReload(logicTable); - } -} diff --git a/maibu-framework/src/main/java/com/maibu/config/sharding/enums/ShardingTableCacheEnum.java b/maibu-framework/src/main/java/com/maibu/config/sharding/enums/ShardingTableCacheEnum.java deleted file mode 100644 index 70e7683..0000000 --- a/maibu-framework/src/main/java/com/maibu/config/sharding/enums/ShardingTableCacheEnum.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.maibu.config.sharding.enums; - -import com.baomidou.mybatisplus.core.toolkit.CollectionUtils; -import java.util.*; - -import static com.maibu.config.sharding.ShardingAlgorithmTool.actualDataNodesRefresh; - - -/** - *

@Title ShardingTableCacheEnum - *

@Description 分片表缓存枚举 - * - */ -public enum ShardingTableCacheEnum { - - /** - * 用户埋点表 - */ - DEVICE_LOG("iot_device_log", new HashSet<>()); - - /** - * 逻辑表名 - */ - private final String logicTableName; - /** - * 实际表名 - */ - private final Set resultTableNamesCache; - - private static Map valueMap = new HashMap<>(); - - static { - Arrays.stream(ShardingTableCacheEnum.values()).forEach(o -> valueMap.put(o.logicTableName, o)); - } - - ShardingTableCacheEnum(String logicTableName, Set resultTableNamesCache) { - this.logicTableName = logicTableName; - this.resultTableNamesCache = resultTableNamesCache; - } - - public static ShardingTableCacheEnum of(String value) { - return valueMap.get(value); - } - - public String logicTableName() { - return logicTableName; - } - - public Set resultTableNamesCache() { - return resultTableNamesCache; - } - - /** - * 更新缓存、配置(原子操作) - * - * @param tableNameList - */ - public void atomicUpdateCacheAndActualDataNodes(List tableNameList) { - if (CollectionUtils.isEmpty(tableNameList)) { - return; - } - synchronized (resultTableNamesCache) { - // 删除缓存 - resultTableNamesCache.clear(); - // 写入新的缓存 - resultTableNamesCache.addAll(tableNameList); - // 动态更新配置 actualDataNodes - actualDataNodesRefresh(logicTableName, tableNameList); - } - } - - public static Set logicTableNames() { - return valueMap.keySet(); - } - - @Override - public String toString() { - return "ShardingTableCacheEnum{" + - "logicTableName='" + logicTableName + '\'' + - ", resultTableNamesCache=" + resultTableNamesCache + - '}'; - } -} diff --git a/maibu-framework/src/main/java/com/maibu/datasource/DynamicDataSource.java b/maibu-framework/src/main/java/com/maibu/datasource/DynamicDataSource.java deleted file mode 100644 index ae408f3..0000000 --- a/maibu-framework/src/main/java/com/maibu/datasource/DynamicDataSource.java +++ /dev/null @@ -1,30 +0,0 @@ -package com.maibu.datasource; - -import java.util.Map; -import javax.sql.DataSource; - -import lombok.extern.slf4j.Slf4j; -import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; - -/** - * 动态数据源 - * - * @author ruoyi - */ -@Slf4j -public class DynamicDataSource extends AbstractRoutingDataSource -{ - public DynamicDataSource(DataSource defaultTargetDataSource, Map targetDataSources) - { - super.setDefaultTargetDataSource(defaultTargetDataSource); - super.setTargetDataSources(targetDataSources); - super.afterPropertiesSet(); - } - - @Override - protected Object determineCurrentLookupKey() - { - //log.debug("数据源:" + DynamicDataSourceContextHolder.getDataSourceType()); - return DynamicDataSourceContextHolder.getDataSourceType(); - } -} diff --git a/maibu-framework/src/main/java/com/maibu/datasource/DynamicDataSourceContextHolder.java b/maibu-framework/src/main/java/com/maibu/datasource/DynamicDataSourceContextHolder.java deleted file mode 100644 index d546ae1..0000000 --- a/maibu-framework/src/main/java/com/maibu/datasource/DynamicDataSourceContextHolder.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.maibu.datasource; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * 数据源切换处理 - * - * @author ruoyi - */ -public class DynamicDataSourceContextHolder -{ - public static final Logger log = LoggerFactory.getLogger(DynamicDataSourceContextHolder.class); - - /** - * 使用ThreadLocal维护变量,ThreadLocal为每个使用该变量的线程提供独立的变量副本, - * 所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。 - */ - private static final ThreadLocal CONTEXT_HOLDER = new ThreadLocal<>(); - - /** - * 设置数据源的变量 - */ - public static void setDataSourceType(String dsType) - { - log.info("切换到{}数据源", dsType); - CONTEXT_HOLDER.set(dsType); - } - - /** - * 获得数据源的变量 - */ - public static String getDataSourceType() - { - return CONTEXT_HOLDER.get(); - } - - /** - * 清空数据源变量 - */ - public static void clearDataSourceType() - { - CONTEXT_HOLDER.remove(); - } -} diff --git a/maibu-framework/src/main/java/com/maibu/mybatis/mapper/BaseMapperX.java b/maibu-framework/src/main/java/com/maibu/mybatis/mapper/BaseMapperX.java index c8293ad..bded7b0 100644 --- a/maibu-framework/src/main/java/com/maibu/mybatis/mapper/BaseMapperX.java +++ b/maibu-framework/src/main/java/com/maibu/mybatis/mapper/BaseMapperX.java @@ -109,4 +109,23 @@ public interface BaseMapperX extends BaseMapper { Db.updateBatchById(entities, size); } + /** + * 保存或更新 + * @param entity 实体 + * @return 是否成功 + */ + default boolean saveOrUpdate(T entity) { + return Db.saveOrUpdate(entity); + } + + /** + * 批量保存或更新 + * @param entities 实体集合 + * @return 是否成功 + */ + default boolean saveOrUpdateBatch(Collection entities) { + return Db.saveOrUpdateBatch(entities); + } + + } diff --git a/maibu-iotDA/src/main/java/com/maibu/utils/IoTDAMqttClient.java b/maibu-iotDA/src/main/java/com/maibu/utils/IoTDAMqttClient.java index 69323b1..2badedb 100644 --- a/maibu-iotDA/src/main/java/com/maibu/utils/IoTDAMqttClient.java +++ b/maibu-iotDA/src/main/java/com/maibu/utils/IoTDAMqttClient.java @@ -13,10 +13,10 @@ import com.maibu.domain.DeviceStatusRecordDTO; import com.maibu.dto.NettyDevice; import com.maibu.manager.DeviceSessionManager; import com.maibu.utils.spring.SpringUtils; -import org.apache.commons.collections.CollectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; import java.io.File; import java.io.FileNotFoundException; diff --git a/maibu-netty-server/src/main/java/com/maibu/init/InitThread.java b/maibu-netty-server/src/main/java/com/maibu/init/InitThread.java index 83630f1..608f8ac 100644 --- a/maibu-netty-server/src/main/java/com/maibu/init/InitThread.java +++ b/maibu-netty-server/src/main/java/com/maibu/init/InitThread.java @@ -10,12 +10,12 @@ import com.maibu.mybatis.LambdaQueryWrapperX; import com.maibu.service.DevicePlanTaskMonitorService; import com.maibu.service.DeviceThreadService; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; import javax.annotation.Resource; import java.io.IOException; diff --git a/maibu-netty-server/src/main/java/com/maibu/memory/GlobalMemory.java b/maibu-netty-server/src/main/java/com/maibu/memory/GlobalMemory.java index 1772da0..ff9d5f2 100644 --- a/maibu-netty-server/src/main/java/com/maibu/memory/GlobalMemory.java +++ b/maibu-netty-server/src/main/java/com/maibu/memory/GlobalMemory.java @@ -4,9 +4,9 @@ import com.maibu.domain.DevicePlan; import com.maibu.domain.DevicePlanTask; import com.maibu.entity.ErrorIdentificationStandard; import lombok.Data; -import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; import java.util.ArrayList; import java.util.List; diff --git a/maibu-netty-server/src/main/java/com/maibu/netty/handler/CommandForwardHandler.java b/maibu-netty-server/src/main/java/com/maibu/netty/handler/CommandForwardHandler.java index f9776a4..5dbcb05 100644 --- a/maibu-netty-server/src/main/java/com/maibu/netty/handler/CommandForwardHandler.java +++ b/maibu-netty-server/src/main/java/com/maibu/netty/handler/CommandForwardHandler.java @@ -11,11 +11,11 @@ import io.netty.channel.ChannelHandler; import io.netty.channel.ChannelHandlerContext; import io.netty.channel.SimpleChannelInboundHandler; import org.apache.commons.codec.binary.Hex; -import org.apache.commons.collections.CollectionUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; import java.util.List; import java.util.Set; diff --git a/maibu-netty-server/src/main/java/com/maibu/scheduled/ScheduledTask.java b/maibu-netty-server/src/main/java/com/maibu/scheduled/ScheduledTask.java index 6487dee..7beb599 100644 --- a/maibu-netty-server/src/main/java/com/maibu/scheduled/ScheduledTask.java +++ b/maibu-netty-server/src/main/java/com/maibu/scheduled/ScheduledTask.java @@ -6,10 +6,10 @@ import com.maibu.domain.DevicePlan; import com.maibu.domain.DeviceStatusRecordDTO; import com.maibu.mapper.DeviceStatusHistoryMapper; import com.maibu.memory.GlobalMemory; -import org.apache.commons.collections.CollectionUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; +import org.springframework.util.CollectionUtils; import java.text.SimpleDateFormat; import java.util.Collection; diff --git a/maibu-netty-server/src/main/java/com/maibu/service/DevicePlanTaskMonitorService.java b/maibu-netty-server/src/main/java/com/maibu/service/DevicePlanTaskMonitorService.java index 689c26e..3711c96 100644 --- a/maibu-netty-server/src/main/java/com/maibu/service/DevicePlanTaskMonitorService.java +++ b/maibu-netty-server/src/main/java/com/maibu/service/DevicePlanTaskMonitorService.java @@ -14,10 +14,10 @@ import com.maibu.mapper.WorkRecordMapper; import com.maibu.memory.GlobalMemory; import com.maibu.model.WorkRecord; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import java.time.DayOfWeek; import java.time.LocalDate; diff --git a/maibu-netty-server/src/main/java/com/maibu/service/DeviceThreadService.java b/maibu-netty-server/src/main/java/com/maibu/service/DeviceThreadService.java index b564dfd..424aa14 100644 --- a/maibu-netty-server/src/main/java/com/maibu/service/DeviceThreadService.java +++ b/maibu-netty-server/src/main/java/com/maibu/service/DeviceThreadService.java @@ -22,12 +22,12 @@ import com.maibu.utils.CompareUtils; import io.netty.buffer.ByteBuf; import io.netty.buffer.Unpooled; import lombok.extern.slf4j.Slf4j; -import org.apache.commons.collections.CollectionUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.io.Resource; import org.springframework.core.io.ResourceLoader; import org.springframework.stereotype.Service; +import org.springframework.util.CollectionUtils; import java.io.IOException; import java.lang.reflect.Field; diff --git a/maibu-service/maibu-iot-service/pom.xml b/maibu-service/maibu-iot-service/pom.xml index bb06dc0..02118b6 100644 --- a/maibu-service/maibu-iot-service/pom.xml +++ b/maibu-service/maibu-iot-service/pom.xml @@ -71,64 +71,16 @@ forest-spring-boot-starter ${forest.version} - - - - - com.taosdata.jdbc - taos-jdbcdriver - 3.3.2 - - - + cn.hutool hutool-all - - com.yomahub - liteflow-spring-boot-starter - ${liteflow.version} - - - - com.yomahub - liteflow-rule-sql - ${liteflow.version} - - - - com.yomahub - liteflow-script-groovy - ${liteflow.version} - - com.fasterxml.jackson.core jackson-databind - - com.microsoft.sqlserver - mssql-jdbc - 8.4.1.jre8 - - - org.postgresql - postgresql - 42.5.0 - - - com.oracle.database.jdbc - ojdbc8 - 19.3.0.0 - - - com.h2database - h2 - 1.4.200 - - com.dtflys.forest forest-spring-boot-starter @@ -136,11 +88,17 @@ - - com.hikvision.ga - artemis-http-client - 1.1.3 - + + + + + + + + + + + diff --git a/maibu-service/maibu-iot-service/src/main/java/com/maibu/mapper/DeviceMapper.java b/maibu-service/maibu-iot-service/src/main/java/com/maibu/mapper/DeviceMapper.java index 98428ac..1609e3b 100644 --- a/maibu-service/maibu-iot-service/src/main/java/com/maibu/mapper/DeviceMapper.java +++ b/maibu-service/maibu-iot-service/src/main/java/com/maibu/mapper/DeviceMapper.java @@ -15,47 +15,9 @@ import java.util.List; * @date 2021-12-16 */ @Repository -public interface DeviceMapper -{ - /** - * 查询设备 - * - * @param deviceId 设备主键 - * @return 设备 - */ - public Device selectDeviceByDeviceId(Long deviceId); +public interface DeviceMapper { - /** - * 获取割草机运行信息 - * - * @param deviceId 设备主键 - * @return 设备 - */ - public DeviceRunningStatus selectDeviceStatusByDeviceId(@Param("deviceId") String deviceId); - - - /** - * 添加割草机运行信息 - * - * @return 设备 - */ - public int addDeviceRunningStatusInfo(DeviceRunningStatus deviceRunningStatus); - - /** - * 修改割草机运行信息 - * - * @return 设备 - */ - public int updateDeviceRunningStatusInfo(DeviceRunningStatus deviceRunningStatus); - - /** - * 查询设备和产品总数 - * - * @return 设备 - */ - public DeviceStatistic selectDeviceProductAlertCount(Long deptId); - /** * 根据设备编号查询设备 * @@ -65,39 +27,6 @@ public interface DeviceMapper public Device selectDeviceBySerialNumber(String serialNumber); - /** - * 根据设备编号查询设备数量 - * - * @param serialNumber 设备主键 - * @return 设备 - */ - public int selectDeviceCountBySerialNumber(String serialNumber); - - /** - * 根据设备编号查询简介设备 - * - * @param serialNumber 设备主键 - * @return 设备 - */ - public Device selectShortDeviceBySerialNumber(String serialNumber); - - - /** - * 根据设备编号查询协议编号 - * @param serialNumber 设备编号 - * @return 协议编号 - */ - public ProductCode getProtocolBySerialNumber(String serialNumber); - - /** - * 根据设备编号查询设备认证信息 - * - * @param model 设备编号和产品ID - * @return 设备 - */ - public ProductAuthenticateModel selectProductAuthenticate(AuthenticateInputModel model); - - /** * 查询设备列表 * @@ -138,113 +67,26 @@ public interface DeviceMapper */ public int updateDevice(Device device); - /** - * 更新设备状态 - * - * @param device 设备 - * @return 结果 - */ - public int updateDeviceStatus(Device device); - - /** - * 更新固件版本 - * @param device - * @return - */ - public int updateDeviceFirmwareVersion(Device device); - - /** - * 通过设备编号修改设备 - * - * @param device 设备 - * @return 结果 - */ - public int updateDeviceBySerialNumber(Device device); - - - /** - * 批量删除设备 - * - * @param deviceIds 需要删除的数据主键集合 - * @return 结果 - */ - public int deleteDeviceByDeviceIds(Long[] deviceIds); - - /** - * 查询设备序列号的数量 - * @param deviceNum - * @return - */ - public int getDeviceNumCount(String deviceNum); - - /** - * 根据设备IDS删除设备分组 - * @param userDeviceGroupIdModel - * @return - */ - public int deleteDeviceGroupByDeviceId(UserIdDeviceIdModel userDeviceGroupIdModel); /** * 重置设备状态 + * * @return 结果 */ public int resetDeviceStatus(String deviceNum); - /** - * 根据设备编号查询协议编码 - * @param serialNumber 设备编号 - * @return - */ - public DeviceAndProtocol selectProtocolBySerialNumber(String serialNumber); - - /** - * 查询产品下所有设备,返回设备编号 - * @param productId 产品id - * @return - */ - public List selectDevicesByProductId(@Param("productId") Long productId,@Param("hasSub") Integer hasSub); - - /** * 根据产品ID获取产品下所有编号 + * * @param productId * @return */ public String[] getDeviceNumsByProductId(Long productId); - - /** - * 批量添加设备 - * @param deviceList 设备集合 - * @return void - */ - int insertBatchDevice(@Param("deviceList") List deviceList); - - /** - * 批量校验设备 - * @param serialNumberList - * @return java.util.List - */ - List checkExistBySerialNumbers(@Param("serialNumberList") List serialNumberList); - - /** - * 更新设备绑定机构 - * @param tenantId 机构管理员id - * @param: userName 管理员名称 - * @param: deviceIdList 设备id集合 - * @return int - */ - int updateTenantIdByDeptIds(@Param("tenantId") Long tenantId, @Param("tenantName") String tenantName, @Param("deviceIdList") List deviceIdList); - - /** - * @description: - * @param: deviceIdList 设备id集合 - * @return: java.util.List - */ - List selectDeviceListByDeviceIds(@Param("deviceIdList") List deviceIdList); /** * 查询产品下所有设备,返回设备编号 + * * @param productId 产品id * @return */ diff --git a/maibu-service/maibu-iot-service/src/main/java/com/maibu/service/impl/DeviceServiceImpl.java b/maibu-service/maibu-iot-service/src/main/java/com/maibu/service/impl/DeviceServiceImpl.java index e93eaef..7cc429f 100644 --- a/maibu-service/maibu-iot-service/src/main/java/com/maibu/service/impl/DeviceServiceImpl.java +++ b/maibu-service/maibu-iot-service/src/main/java/com/maibu/service/impl/DeviceServiceImpl.java @@ -8,12 +8,13 @@ import com.maibu.domain.DevicePlan; import com.maibu.domain.DeviceRunningStatusHistory; import com.maibu.domain.DeviceStatusRecordDTO; import com.maibu.enums.DeviceTaskStaus; -import com.maibu.mapper.*; +import com.maibu.mapper.DeviceMapper; +import com.maibu.mapper.DevicePlanMapper; +import com.maibu.mapper.DeviceStatusHistoryMapper; import com.maibu.service.IDeviceService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.beans.factory.annotation.Value; import org.springframework.cache.annotation.Cacheable; import org.springframework.stereotype.Service; import org.springframework.util.CollectionUtils; @@ -41,10 +42,6 @@ public class DeviceServiceImpl implements IDeviceService { @Autowired private DeviceMapper deviceMapper; - - @Value("${server.tcp.port}") - private Long tcpPort; - @Resource private DevicePlanMapper devicePlanMapper; diff --git a/maibu-service/maibu-system-service/src/main/java/com/maibu/mapper/SysRoleMenuMapper.java b/maibu-service/maibu-system-service/src/main/java/com/maibu/mapper/SysRoleMenuMapper.java index 0fcee32..ee956c2 100644 --- a/maibu-service/maibu-system-service/src/main/java/com/maibu/mapper/SysRoleMenuMapper.java +++ b/maibu-service/maibu-system-service/src/main/java/com/maibu/mapper/SysRoleMenuMapper.java @@ -47,7 +47,6 @@ public interface SysRoleMenuMapper /** * 查询角色权限 * @param roleId 角色id - * @return java.util.List */ List selectRoleMenuList(Long roleId); } diff --git a/maibu-service/maibu-system-service/src/main/java/com/maibu/service/impl/SysConfigServiceImpl.java b/maibu-service/maibu-system-service/src/main/java/com/maibu/service/impl/SysConfigServiceImpl.java index f9b8d2e..7f9161d 100644 --- a/maibu-service/maibu-system-service/src/main/java/com/maibu/service/impl/SysConfigServiceImpl.java +++ b/maibu-service/maibu-system-service/src/main/java/com/maibu/service/impl/SysConfigServiceImpl.java @@ -48,7 +48,6 @@ public class SysConfigServiceImpl implements ISysConfigService * @return 参数配置信息 */ @Override - @DataSource(DataSourceType.master) public SysConfig selectConfigById(Long configId) { SysConfig config = new SysConfig(); diff --git a/maibu-service/maibu-system-service/src/main/resources/system/AppLanguageMapper.xml b/maibu-service/maibu-system-service/src/main/resources/system/AppLanguageMapper.xml index 053bc89..e48a5fa 100644 --- a/maibu-service/maibu-system-service/src/main/resources/system/AppLanguageMapper.xml +++ b/maibu-service/maibu-system-service/src/main/resources/system/AppLanguageMapper.xml @@ -18,7 +18,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select id, language, country, time_zone, create_by, create_time, lang_name from app_language - and language = #{language} @@ -33,7 +33,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where id = #{id} - + insert into app_language id, @@ -55,7 +55,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + update app_language language = #{language}, diff --git a/maibu-service/maibu-system-service/src/main/resources/system/AppPreferencesMapper.xml b/maibu-service/maibu-system-service/src/main/resources/system/AppPreferencesMapper.xml index effffcb..cc1df0d 100644 --- a/maibu-service/maibu-system-service/src/main/resources/system/AppPreferencesMapper.xml +++ b/maibu-service/maibu-system-service/src/main/resources/system/AppPreferencesMapper.xml @@ -20,7 +20,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select id, user_id, language, time_zone, create_by, create_time, update_by, update_time, remark from app_preferences - and user_id = #{userId} @@ -39,7 +39,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" where user_id = #{userId} - + insert into app_preferences id, @@ -65,7 +65,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - + update app_preferences user_id = #{userId}, diff --git a/maibu-service/maibu-system-service/src/main/resources/system/SysDictDataMapper.xml b/maibu-service/maibu-system-service/src/main/resources/system/SysDictDataMapper.xml index 8de2ff4..88066ac 100644 --- a/maibu-service/maibu-system-service/src/main/resources/system/SysDictDataMapper.xml +++ b/maibu-service/maibu-system-service/src/main/resources/system/SysDictDataMapper.xml @@ -38,7 +38,7 @@ from sys_dict_data - - - - select d.dict_code, d.dict_sort, case when #{language} = 'zh-CN' then d.dict_label @@ -174,7 +174,7 @@ - + update sys_dict_data dict_sort = #{dictSort}, @@ -198,7 +198,7 @@ where dict_type = #{oldDictType} - + insert into sys_dict_data( dict_sort, dict_label, @@ -226,7 +226,7 @@ ) - select d.dict_code, d.dict_sort, case @@ -249,7 +249,7 @@ and d.dict_value = #{dictValue} - select d.dict_code, d.dict_sort, case when #{language} = 'zh-CN' then d.dict_label diff --git a/maibu-service/maibu-system-service/src/main/resources/system/SysDictTypeMapper.xml b/maibu-service/maibu-system-service/src/main/resources/system/SysDictTypeMapper.xml index 8c117ec..040cd43 100644 --- a/maibu-service/maibu-system-service/src/main/resources/system/SysDictTypeMapper.xml +++ b/maibu-service/maibu-system-service/src/main/resources/system/SysDictTypeMapper.xml @@ -20,7 +20,7 @@ from sys_dict_type - select d.dict_id, case when #{language} = 'zh-CN' then d.dict_name @@ -111,7 +111,7 @@ - + update sys_dict_type dict_name = #{dictName}, @@ -124,7 +124,7 @@ where dict_id = #{dictId} - + insert into sys_dict_type( dict_name, dict_type, diff --git a/maibu-service/maibu-system-service/src/main/resources/system/SysMenuMapper.xml b/maibu-service/maibu-system-service/src/main/resources/system/SysMenuMapper.xml index 5a45f49..10f91a1 100644 --- a/maibu-service/maibu-system-service/src/main/resources/system/SysMenuMapper.xml +++ b/maibu-service/maibu-system-service/src/main/resources/system/SysMenuMapper.xml @@ -32,7 +32,7 @@ from sys_menu - select distinct m.menu_id, case when #{language} = 'zh-CN' then m.menu_name @@ -70,7 +70,7 @@ order by m.parent_id, m.order_num - select distinct m.menu_id, m.parent_id, case when #{language} = 'zh-CN' then m.menu_name @@ -165,13 +165,13 @@ select count(1) from sys_menu where parent_id = #{menuId} - select distinct menu_id, menu_name, parent_id, order_num, path, component, query, is_frame, is_cache, menu_type, visible, status, ifnull(perms,'') as perms, icon, create_time from sys_menu where menu_name=#{menuName} and parent_id = #{parentId} limit 1 - + update sys_menu menu_name = #{menuName}, @@ -194,7 +194,7 @@ where menu_id = #{menuId} - + insert into sys_menu( menu_id, parent_id, diff --git a/maibu-service/maibu-system-service/src/main/resources/system/SysRoleDeptMapper.xml b/maibu-service/maibu-system-service/src/main/resources/system/SysRoleDeptMapper.xml index 5870ea1..accceb0 100644 --- a/maibu-service/maibu-system-service/src/main/resources/system/SysRoleDeptMapper.xml +++ b/maibu-service/maibu-system-service/src/main/resources/system/SysRoleDeptMapper.xml @@ -17,7 +17,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select count(1) from sys_role_dept where dept_id=#{deptId} - select dept_id, role_id from sys_role_dept where dept_id in @@ -26,7 +26,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" - select dept_id, role_id from sys_role_dept where role_id = #{roleId} diff --git a/maibu-service/maibu-system-service/src/main/resources/system/SysRoleMenuMapper.xml b/maibu-service/maibu-system-service/src/main/resources/system/SysRoleMenuMapper.xml index bf00f95..f0d05b5 100644 --- a/maibu-service/maibu-system-service/src/main/resources/system/SysRoleMenuMapper.xml +++ b/maibu-service/maibu-system-service/src/main/resources/system/SysRoleMenuMapper.xml @@ -2,7 +2,7 @@ - + @@ -13,7 +13,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select count(1) from sys_role_menu where menu_id = #{menuId} - select * from sys_role_menu where role_id = #{roleId} diff --git a/maibu-service/maibu-system-service/src/main/resources/system/SysTranslateMapper.xml b/maibu-service/maibu-system-service/src/main/resources/system/SysTranslateMapper.xml index 03395bc..ac67523 100644 --- a/maibu-service/maibu-system-service/src/main/resources/system/SysTranslateMapper.xml +++ b/maibu-service/maibu-system-service/src/main/resources/system/SysTranslateMapper.xml @@ -10,7 +10,7 @@ - + insert into ${tableName} id, @@ -30,7 +30,7 @@ en_us = #{en_US} - select id, zh_cn, en_us from ${tableName} and zh_cn = #{zh_CN} @@ -39,7 +39,7 @@ - select ${idColumn} as id, ${nameColumn} as zh_cn from ${tableName} product_id = #{productId} diff --git a/maibu-service/maibu-system-service/src/main/resources/system/SysUserClientMapper.xml b/maibu-service/maibu-system-service/src/main/resources/system/SysUserClientMapper.xml index 507b100..e7d92b3 100644 --- a/maibu-service/maibu-system-service/src/main/resources/system/SysUserClientMapper.xml +++ b/maibu-service/maibu-system-service/src/main/resources/system/SysUserClientMapper.xml @@ -4,17 +4,6 @@ "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> - - update sys_user_client - set - user_id = #{userId}, - user_name = #{userName}, - client_name = #{clientName}, - device_name = #{deviceName}, - is_alive = #{isAlive} - where client_id = #{clientId} - - insert into sys_user_client(user_id,user_name,client_name,device_name,is_alive) values(#{userId},#{userName},#{clientName},#{deviceName},#{isAlive}) @@ -42,24 +31,24 @@ delete from sys_user_client where client_name= #{clientName} - select user_id,user_name,client_id,client_name,is_alive from sys_user_client where user_id=#{userId} - select user_id,user_name,client_id,client_name,is_alive from sys_user_client where user_name= #{userName} - select user_id,user_name,client_id,client_name,is_alive from sys_user_client - select user_id,user_name,client_id,client_name,device_name,is_alive from sys_user_client where client_name= #{clientName} - select user_id,user_name,nick_name,sex,avatar,email,phonenumber,status,del_flag,login_ip,login_date from sys_user where user_name= #{userName} and del_flag = 0 diff --git a/maibu-service/maibu-system-service/src/main/resources/system/SysUserMapper.xml b/maibu-service/maibu-system-service/src/main/resources/system/SysUserMapper.xml index 5d0bf77..4a86f6f 100644 --- a/maibu-service/maibu-system-service/src/main/resources/system/SysUserMapper.xml +++ b/maibu-service/maibu-system-service/src/main/resources/system/SysUserMapper.xml @@ -2,7 +2,7 @@ - + @@ -342,7 +342,7 @@ su.user_id = #{userId,jdbcType=BIGINT}) - select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader, d.dept_user_id, r.role_id, r.role_key diff --git a/maibu-service/maibu-system-service/src/main/resources/system/SysUserRoleMapper.xml b/maibu-service/maibu-system-service/src/main/resources/system/SysUserRoleMapper.xml index 3d3b65b..a7a031c 100644 --- a/maibu-service/maibu-system-service/src/main/resources/system/SysUserRoleMapper.xml +++ b/maibu-service/maibu-system-service/src/main/resources/system/SysUserRoleMapper.xml @@ -2,7 +2,7 @@ - + @@ -17,7 +17,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" select count(1) from sys_user_role where role_id=#{roleId} - select user_id, role_id from sys_user_role where user_id = #{userId} diff --git a/pom.xml b/pom.xml index cdc1dfe..b47b2fc 100644 --- a/pom.xml +++ b/pom.xml @@ -34,20 +34,19 @@ 1.16.5 1.5.36 1.18.22 - 2.2.1 + 5.8.20 - 1.5.5.Final + 3.5.3.1 3.5.3.1 - 32.0.1-jre - 3.3.1 - 2.12.2 + + 3.23.1 2.2.7 - 3.3.3 + 1.2.23 5.1.1 - 3.3.2 + 4.10.0 @@ -218,27 +217,27 @@ ${maibu.version} - - org.mapstruct - mapstruct - ${mapstruct.version} - - - org.mapstruct - mapstruct-jdk8 - ${mapstruct.version} - - - org.mapstruct - mapstruct-processor - ${mapstruct.version} - + + + + + + + + + + + + + + + - - com.google.guava - guava - ${guava.version} - + + + + + org.redisson @@ -258,23 +257,23 @@ - - com.alibaba - easyexcel-core - ${easyexcel.version} - + + + + + + + + + + + - - com.google.zxing - core - ${zxing.version} - - - - com.google.zxing - javase - ${zxing.version} - + + + + + com.squareup.okhttp3