diff --git a/cn-universal-admin/pom.xml b/cn-universal-admin/pom.xml index 4e137091732b474e9e8ba8f7c2e4b3f15271a989..90e910d24e0804326de427a457c6aaa58aef6713 100644 --- a/cn-universal-admin/pom.xml +++ b/cn-universal-admin/pom.xml @@ -114,12 +114,30 @@ ${project.version} compile + + cn.universal.iot + cn-tcp-protocol + compile + ${project.version} + + + cn.universal.iot + cn-udp-protocol + compile + ${project.version} + cn.universal.iot cn-universal-notice ${project.version} compile + + cn.universal.iot + cn-universal-security + ${project.version} + compile + \ No newline at end of file diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/common/aspectj/DataScopeAspect.java b/cn-universal-admin/src/main/java/cn/universal/admin/common/aspectj/DataScopeAspect.java index c16de5f8447711b5c33dc70dda3a9a645b42af87..2acb01f78f5db1d581f098ee45fe0a14104ecf1d 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/common/aspectj/DataScopeAspect.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/common/aspectj/DataScopeAspect.java @@ -14,9 +14,9 @@ package cn.universal.admin.common.aspectj; import cn.hutool.core.lang.Validator; import cn.hutool.core.util.StrUtil; -import cn.universal.admin.common.annotation.DataScope; -import cn.universal.admin.common.utils.SecurityUtils; -import cn.universal.admin.system.service.IIotUserService; +import cn.universal.common.annotation.DataScope; +import cn.universal.security.utils.SecurityUtils; +import cn.universal.security.service.IoTUserService; import cn.universal.common.domain.BaseEntity; import cn.universal.common.utils.ReflectUtils; import cn.universal.persistence.entity.IoTUser; @@ -39,10 +39,10 @@ public class DataScopeAspect { /** 数据范围 */ public static final String SCOPE = "scope"; - @Resource private IIotUserService iIotUserService; + @Resource private IoTUserService ioTUserService; // 配置织入点 - @Pointcut("@annotation(cn.universal.admin.common.annotation.DataScope)") + @Pointcut("@annotation(cn.universal.common.annotation.DataScope)") public void dataScopePointCut() {} @Before("dataScopePointCut()") @@ -57,7 +57,7 @@ public class DataScopeAspect { if (controllerDataScope == null) { return; } - IoTUser iotUser = iIotUserService.selectUserByUnionId(SecurityUtils.getUnionId()); + IoTUser iotUser = ioTUserService.selectUserByUnionId(SecurityUtils.getUnionId()); if (!iotUser.isAdmin()) { dataScopeFilter(joinPoint, controllerDataScope, iotUser.getUnionId()); } diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/common/aspectj/LogAspect.java b/cn-universal-admin/src/main/java/cn/universal/admin/common/aspectj/LogAspect.java index 589d26b2d6e8e347e6b7d5450c61099cfdc93e5e..13ee9367158612233bebc242330ad79d7404e567 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/common/aspectj/LogAspect.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/common/aspectj/LogAspect.java @@ -15,16 +15,17 @@ package cn.universal.admin.common.aspectj; import cn.hutool.core.lang.Validator; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; -import cn.universal.admin.common.annotation.Log; -import cn.universal.admin.common.enums.BusinessStatus; -import cn.universal.admin.common.enums.HttpMethod; -import cn.universal.admin.common.utils.SecurityUtils; -import cn.universal.admin.system.service.AsyncService; -import cn.universal.admin.system.service.IIotUserService; +import cn.universal.common.annotation.Log; +import cn.universal.common.enums.BusinessStatus; +import cn.universal.common.enums.HttpMethod; +import cn.universal.common.utils.LocationUtils; import cn.universal.common.utils.ServletUtils; import cn.universal.common.utils.SpringUtils; import cn.universal.persistence.entity.IoTUser; import cn.universal.persistence.entity.SysOperLog; +import cn.universal.security.service.AdminLogService; +import cn.universal.security.service.IoTUserService; +import cn.universal.security.utils.SecurityUtils; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; @@ -50,11 +51,11 @@ import org.springframework.web.servlet.HandlerMapping; @Component public class LogAspect { - @Resource private IIotUserService iIotUserService; + @Resource private IoTUserService ioTUserService; private static final Logger log = LoggerFactory.getLogger(LogAspect.class); // 配置织入点 - @Pointcut("@annotation(cn.universal.admin.common.annotation.Log)") + @Pointcut("@annotation(cn.universal.common.annotation.Log)") public void logPointCut() {} /** @@ -87,7 +88,7 @@ public class LogAspect { } // 获取当前的用户 - IoTUser iotUser = iIotUserService.selectUserByUnionId(SecurityUtils.getUnionId()); + IoTUser iotUser = ioTUserService.selectUserByUnionId(SecurityUtils.getUnionId()); // *========数据库日志=========*// SysOperLog operLog = new SysOperLog(); @@ -95,6 +96,7 @@ public class LogAspect { // 请求的地址 String ip = ServletUtils.getClientIP(); operLog.setOperIp(ip); + operLog.setOperLocation(LocationUtils.getLocationByIp(ip)); // 返回参数 operLog.setJsonResult(JSONUtil.toJsonStr(jsonResult)); @@ -116,7 +118,7 @@ public class LogAspect { // 处理设置注解上的参数 getControllerMethodDescription(joinPoint, controllerLog, operLog); // 保存数据库 - SpringUtils.getBean(AsyncService.class).recordOper(operLog); + SpringUtils.getBean(AdminLogService.class).recordOper(operLog); } catch (Exception exp) { // 记录本地异常日志 log.error("==前置通知异常=="); diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/common/service/BaseServiceImpl.java b/cn-universal-admin/src/main/java/cn/universal/admin/common/service/BaseServiceImpl.java index c16ba72f70bcf900d7aaae6d21dda064ab229eb5..ece5604db80ba52e21b667fb17736c92d6ccde09 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/common/service/BaseServiceImpl.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/common/service/BaseServiceImpl.java @@ -12,21 +12,21 @@ package cn.universal.admin.common.service; -import cn.universal.admin.system.service.IIotUserService; import cn.universal.persistence.entity.IoTUser; +import cn.universal.security.service.IoTUserService; import jakarta.annotation.Resource; import org.springframework.cache.annotation.Cacheable; public class BaseServiceImpl implements BaseService { - @Resource private IIotUserService iIotUserService; + @Resource private IoTUserService ioTUserService; @Override @Cacheable(cacheNames = "user_parent_entity", key = "''+#unionId", unless = "#result == null") public IoTUser queryIotUser(String unionId) { - IoTUser iotUser = iIotUserService.selectUserByUnionId(unionId); + IoTUser iotUser = ioTUserService.selectUserByUnionId(unionId); if (iotUser.getParentUnionId() != null) { - iotUser = iIotUserService.selectUserByUnionId(iotUser.getParentUnionId()); + iotUser = ioTUserService.selectUserByUnionId(iotUser.getParentUnionId()); return iotUser; } return iotUser; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/config/SecurityConfig.java b/cn-universal-admin/src/main/java/cn/universal/admin/config/SecurityConfig.java deleted file mode 100644 index 80561347274e29ded2977f4313d2e1af75d263e9..0000000000000000000000000000000000000000 --- a/cn-universal-admin/src/main/java/cn/universal/admin/config/SecurityConfig.java +++ /dev/null @@ -1,27 +0,0 @@ -package cn.universal.admin.config; - -import lombok.Data; -import org.springframework.beans.factory.annotation.Value; -import org.springframework.stereotype.Component; - -/** - * 安全配置 - * 管理敏感字段的加密密钥 - */ -@Data -@Component -public class SecurityConfig { - - /** - * 产品密钥加密密钥 - * 建议在生产环境中使用环境变量或配置中心 - */ - @Value("${security.product-secret.key:cn-universal-product-secret-key-2024}") - private String productSecretKey; - - /** - * 是否启用敏感字段加密 - */ - @Value("${security.sensitive-field.enabled:true}") - private Boolean sensitiveFieldEnabled; -} diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/generator/service/GenTableServiceImpl.java b/cn-universal-admin/src/main/java/cn/universal/admin/generator/service/GenTableServiceImpl.java index 2e6a4f2595806ce491af2e02a33e3d3e8b2abb83..2ed10eaa9952426174a3790e7e8965901cb209c4 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/generator/service/GenTableServiceImpl.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/generator/service/GenTableServiceImpl.java @@ -14,7 +14,7 @@ package cn.universal.admin.generator.service; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; -import cn.universal.admin.common.utils.SecurityUtils; +import cn.universal.security.utils.SecurityUtils; import cn.universal.admin.generator.constant.GenConstants; import cn.universal.admin.generator.domain.GenTable; import cn.universal.admin.generator.domain.GenTableColumn; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/generator/web/GenController.java b/cn-universal-admin/src/main/java/cn/universal/admin/generator/web/GenController.java index 99a5c5f6f64a084c312e3fa948b8fccdb20ff2c8..29bf7873c2025e6fb64012e6c1ff68a32631ab00 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/generator/web/GenController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/generator/web/GenController.java @@ -17,7 +17,7 @@ import cn.universal.admin.generator.domain.GenTable; import cn.universal.admin.generator.domain.GenTableColumn; import cn.universal.admin.generator.service.IGenTableColumnService; import cn.universal.admin.generator.service.IGenTableService; -import cn.universal.admin.system.web.BaseController; +import cn.universal.security.BaseController; import cn.universal.persistence.page.TableDataInfo; import cn.universal.persistence.query.AjaxResult; import jakarta.servlet.http.HttpServletResponse; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/network/service/impl/NetworkServiceImpl.java b/cn-universal-admin/src/main/java/cn/universal/admin/network/service/impl/NetworkServiceImpl.java index 330049200562ddf7e4bf14f1e1b71c1103055338..b59347e2a4d82d8f5ade483ad6c1d15b48a8d870 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/network/service/impl/NetworkServiceImpl.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/network/service/impl/NetworkServiceImpl.java @@ -17,7 +17,7 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; -import cn.universal.admin.common.utils.SecurityUtils; +import cn.universal.security.utils.SecurityUtils; import cn.universal.admin.network.service.INetworkService; import cn.universal.admin.network.utils.NetworkTypeUtil; import cn.universal.common.constant.IoTConstant.DownCmd; @@ -68,14 +68,10 @@ import tk.mybatis.mapper.entity.Example; @Service public class NetworkServiceImpl implements INetworkService { - @Resource - private NetworkMapper networkMapper; - @Resource - private IoTDeviceMapper ioTDeviceMapper; - @Resource - private IoTProductMapper ioTProductMapper; - @Resource - private IoTDeviceFenceRelMapper ioTDeviceFenceRelMapper; + @Resource private NetworkMapper networkMapper; + @Resource private IoTDeviceMapper ioTDeviceMapper; + @Resource private IoTProductMapper ioTProductMapper; + @Resource private IoTDeviceFenceRelMapper ioTDeviceFenceRelMapper; // 直接注入 TCP 和 MQTT 服务 @Qualifier("tcpClusterService") @@ -165,8 +161,7 @@ public class NetworkServiceImpl implements INetworkService { IoTProduct ioTProduct = ioTProductMapper.getProductByProductKey(ioTDevice.getProductKey()); result = IoTDownlFactory.getIDown(ioTProduct.getThirdPlatform()).doAction(downRequest); if (!result.getCode().equals(0)) { - return R.error( - "设备名称: " + ioTDevice.getDeviceName() + " 删除失败,原因: " + result.getMsg()); + return R.error("设备名称: " + ioTDevice.getDeviceName() + " 删除失败,原因: " + result.getMsg()); } ioTDeviceFenceRelMapper.deleteFenceInstance(ioTDevice.getIotId()); } @@ -334,9 +329,7 @@ public class NetworkServiceImpl implements INetworkService { return vo; } - /** - * 检查端口是否被占用或为常用端口 - */ + /** 检查端口是否被占用或为常用端口 */ private void checkPortAvailable(Network network, boolean isUpdate) { if (StrUtil.isBlank(network.getConfiguration())) { return; @@ -349,7 +342,7 @@ public class NetworkServiceImpl implements INetworkService { // 常用端口 Set commonPorts = new HashSet<>(); int[] arr = { - 80, 443, 3306, 6379, 8080, 22, 21, 25, 53, 123, 1521, 5432, 8888, 9000, 5000, 7001, 27017 + 80, 443, 3306, 6379, 8080, 22, 21, 25, 53, 123, 1521, 5432, 8888, 9000, 5000, 7001, 27017 }; for (int p : arr) { commonPorts.add(p); @@ -525,7 +518,7 @@ public class NetworkServiceImpl implements INetworkService { log.info("启动网络组件成功: {}", network.getName()); return 1; } else { - throw new IoTException("系统协议类型模块不存在,请检查"); + throw new RuntimeException("启动失败: " + network.getName()); } } catch (Exception e) { log.error("启动网络组件失败: {}", network.getName(), e); @@ -656,7 +649,7 @@ public class NetworkServiceImpl implements INetworkService { /** * 检查网络组件配置的唯一性 * - * @param network 网络组件 + * @param network 网络组件 * @param excludeId 排除的网络组件ID(用于更新时排除自己) */ private void checkConfigurationUniqueness(Network network, Integer excludeId) { @@ -720,18 +713,24 @@ public class NetworkServiceImpl implements INetworkService { */ private boolean startNetworkByType(Network network) { String type = network.getType(); - switch (type) { - case NetworkTypeConstants.TCP_CLIENT: - case NetworkTypeConstants.TCP_SERVER: - return startTcpNetwork(network); - case NetworkTypeConstants.MQTT_CLIENT: - case NetworkTypeConstants.MQTT_SERVER: - return startMqttNetwork(network); - case NetworkTypeConstants.UDP: - return startUdpNetwork(network); - default: - log.warn("不支持的网络类型: {}", type); - return false; + + try { + switch (type) { + case NetworkTypeConstants.TCP_CLIENT: + case NetworkTypeConstants.TCP_SERVER: + return startTcpNetwork(network); + case NetworkTypeConstants.MQTT_CLIENT: + case NetworkTypeConstants.MQTT_SERVER: + return startMqttNetwork(network); + case NetworkTypeConstants.UDP: + return startUdpNetwork(network); + default: + log.warn("不支持的网络类型: {}", type); + return false; + } + } catch (Exception e) { + log.error("启动网络组件失败: type={}, name={}", type, network.getName(), e); + return false; } } @@ -804,6 +803,7 @@ public class NetworkServiceImpl implements INetworkService { throw new IoTException("TCP模块未注入,无法启动TCP网络组件"); } + String productKey = network.getProductKey(); if (StrUtil.isBlank(productKey)) { log.error("TCP网络组件缺少productKey: {}", network.getName()); @@ -837,6 +837,7 @@ public class NetworkServiceImpl implements INetworkService { throw new IoTException("TCP模块未注入,无法启动TCP网络组件"); } + String productKey = network.getProductKey(); if (StrUtil.isBlank(productKey)) { log.error("TCP网络组件缺少productKey: {}", network.getName()); @@ -869,6 +870,7 @@ public class NetworkServiceImpl implements INetworkService { throw new IoTException("TCP模块未注入,无法启动TCP网络组件"); } + String productKey = network.getProductKey(); if (StrUtil.isBlank(productKey)) { log.error("TCP网络组件缺少productKey: {}", network.getName()); diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/network/utils/UserContextUtil.java b/cn-universal-admin/src/main/java/cn/universal/admin/network/utils/UserContextUtil.java index cf03da6f0f77ed86c2cc53413a3f30a4f7a1bbb1..6278a5f774311a1033284c9b53fe53f330b92a93 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/network/utils/UserContextUtil.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/network/utils/UserContextUtil.java @@ -12,7 +12,7 @@ package cn.universal.admin.network.utils; -import cn.universal.admin.common.utils.SecurityUtils; +import cn.universal.security.utils.SecurityUtils; import cn.universal.persistence.entity.IoTUser; import org.slf4j.Logger; import org.slf4j.LoggerFactory; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/network/web/NetworkController.java b/cn-universal-admin/src/main/java/cn/universal/admin/network/web/NetworkController.java index 1cd031034edfbb96a3a9ace19c6d591cf889d6d2..479460282d4ebb2eb9e3eb8a00b12a004e15eb9d 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/network/web/NetworkController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/network/web/NetworkController.java @@ -14,11 +14,11 @@ package cn.universal.admin.network.web; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; -import cn.universal.admin.common.annotation.Log; -import cn.universal.admin.common.enums.BusinessType; -import cn.universal.admin.common.utils.SecurityUtils; +import cn.universal.common.annotation.Log; +import cn.universal.common.enums.BusinessType; +import cn.universal.security.utils.SecurityUtils; import cn.universal.admin.network.service.INetworkService; -import cn.universal.admin.system.web.BaseController; +import cn.universal.security.BaseController; import cn.universal.common.domain.R; import cn.universal.common.exception.IoTException; import cn.universal.persistence.entity.IoTDevice; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/platform/service/impl/IoTDeviceFunctionTaskServiceImpl.java b/cn-universal-admin/src/main/java/cn/universal/admin/platform/service/impl/IoTDeviceFunctionTaskServiceImpl.java index c4d9229ee7fd583a85a32d42184f45b3bef72ae8..7eeca9f67b39818c03153291c776f6bd051b7b31 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/platform/service/impl/IoTDeviceFunctionTaskServiceImpl.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/platform/service/impl/IoTDeviceFunctionTaskServiceImpl.java @@ -17,7 +17,7 @@ import cn.hutool.core.util.IdUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import cn.universal.admin.common.service.BaseServiceImpl; -import cn.universal.admin.common.utils.SecurityUtils; +import cn.universal.security.utils.SecurityUtils; import cn.universal.admin.platform.service.BatchFunctionTask; import cn.universal.admin.platform.service.IIoTDeviceFunctionTaskService; import cn.universal.common.exception.IoTException; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/platform/service/impl/IoTDeviceGroupServiceImpl.java b/cn-universal-admin/src/main/java/cn/universal/admin/platform/service/impl/IoTDeviceGroupServiceImpl.java index ad08cc725da1b3fbe66b1c5b442fa57587b9476d..a2f75435569e09f0c6283aebee61f9561a498993 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/platform/service/impl/IoTDeviceGroupServiceImpl.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/platform/service/impl/IoTDeviceGroupServiceImpl.java @@ -14,7 +14,7 @@ package cn.universal.admin.platform.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.universal.admin.common.service.BaseServiceImpl; -import cn.universal.admin.common.utils.SecurityUtils; +import cn.universal.security.utils.SecurityUtils; import cn.universal.admin.platform.service.IIoTDeviceGroupService; import cn.universal.persistence.dto.IoTDeviceDTO; import cn.universal.persistence.entity.IoTDevice; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/platform/service/impl/IoTDeviceServiceImpl.java b/cn-universal-admin/src/main/java/cn/universal/admin/platform/service/impl/IoTDeviceServiceImpl.java index a695f6738d90d3a550471ffa5534c18d9019d858..77493edc25096c3a4592f748665963f387390627 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/platform/service/impl/IoTDeviceServiceImpl.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/platform/service/impl/IoTDeviceServiceImpl.java @@ -19,7 +19,7 @@ import cn.hutool.json.JSONArray; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import cn.universal.admin.common.service.BaseServiceImpl; -import cn.universal.admin.common.utils.SecurityUtils; +import cn.universal.security.utils.SecurityUtils; import cn.universal.admin.platform.service.IIoTDeviceService; import cn.universal.common.constant.IoTConstant.DeviceNode; import cn.universal.common.constant.IoTConstant.DownCmd; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/platform/service/impl/IoTProductServiceImpl.java b/cn-universal-admin/src/main/java/cn/universal/admin/platform/service/impl/IoTProductServiceImpl.java index 72c2323b38112cb68f63d783821e233c5a227d1e..537dd5fdf78b56848c6f458f90045f56c3c1b9a0 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/platform/service/impl/IoTProductServiceImpl.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/platform/service/impl/IoTProductServiceImpl.java @@ -27,7 +27,7 @@ import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import cn.universal.dm.device.service.protocol.ProtocolClusterService; import cn.universal.admin.common.service.BaseServiceImpl; -import cn.universal.admin.common.utils.SecurityUtils; +import cn.universal.security.utils.SecurityUtils; import cn.universal.admin.platform.service.IIoTProductService; import cn.universal.admin.system.service.IoTDeviceProtocolService; import cn.universal.cache.annotation.MultiLevelCacheable; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/platform/service/impl/IoTProductSortServiceImpl.java b/cn-universal-admin/src/main/java/cn/universal/admin/platform/service/impl/IoTProductSortServiceImpl.java index 58381ad955b8901c0f15d7c6b002154f83f97cbb..3ca394f6bcee6640fcf0482c7ccba1c528af5a3f 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/platform/service/impl/IoTProductSortServiceImpl.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/platform/service/impl/IoTProductSortServiceImpl.java @@ -13,7 +13,7 @@ package cn.universal.admin.platform.service.impl; import cn.hutool.core.util.StrUtil; -import cn.universal.admin.common.utils.SecurityUtils; +import cn.universal.security.utils.SecurityUtils; import cn.universal.admin.platform.service.IIoTProductSortService; import cn.universal.persistence.entity.IoTProductSort; import cn.universal.persistence.entity.bo.RuleModelBO.IoTProductSortBO; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTBatchFunsController.java b/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTBatchFunsController.java index 35d3725ad64845c83625e0ce1b3f06c77ca9532f..b0a197eafe7afac2366966f21cec3902c426b0b0 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTBatchFunsController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTBatchFunsController.java @@ -13,11 +13,11 @@ package cn.universal.admin.platform.web; import cn.hutool.core.util.StrUtil; -import cn.universal.admin.common.utils.SecurityUtils; +import cn.universal.security.utils.SecurityUtils; import cn.universal.admin.platform.service.IIoTDeviceFunctionTaskService; import cn.universal.admin.platform.service.IIoTDeviceService; import cn.universal.admin.system.service.IIoTUserApplicationService; -import cn.universal.admin.system.web.BaseController; +import cn.universal.security.BaseController; import cn.universal.common.domain.R; import cn.universal.common.exception.IoTException; import cn.universal.persistence.entity.IoTDevice; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTCertificateController.java b/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTCertificateController.java index 6832fb8ca60cdb15e099bc6feff926407f531ce2..5a8e6c7259fb2aa9ad23fc0d665447750a5d83c5 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTCertificateController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTCertificateController.java @@ -5,9 +5,9 @@ import static cn.universal.common.constant.IoTConstant.CERT_DEFAULT_KEY; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.IdUtil; import cn.hutool.core.util.StrUtil; -import cn.universal.admin.common.utils.SecurityUtils; +import cn.universal.security.utils.SecurityUtils; import cn.universal.admin.platform.service.ICertificateService; -import cn.universal.admin.system.web.BaseController; +import cn.universal.security.BaseController; import cn.universal.persistence.dto.IoTCertificateQueryDTO; import cn.universal.persistence.entity.IoTCertificate; import cn.universal.persistence.page.TableDataInfo; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTDeviceController.java b/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTDeviceController.java index d9eb51276dea878245ee9283f8163a29f7ff57e2..ab2073e3ac956bc74c301ea992b6b1d515efa8ff 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTDeviceController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTDeviceController.java @@ -16,15 +16,14 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; -import cn.hutool.json.JSONUtil; -import cn.universal.admin.common.annotation.Log; -import cn.universal.admin.common.enums.BusinessType; +import cn.universal.common.annotation.Log; +import cn.universal.common.enums.BusinessType; import cn.universal.admin.common.utils.ExcelUtil; -import cn.universal.admin.common.utils.SecurityUtils; +import cn.universal.security.utils.SecurityUtils; import cn.universal.admin.platform.service.IIoTDeviceService; import cn.universal.admin.system.service.IIoTUserApplicationService; import cn.universal.admin.system.service.IoTDeviceProtocolService; -import cn.universal.admin.system.web.BaseController; +import cn.universal.security.BaseController; import cn.universal.common.domain.R; import cn.universal.common.exception.IoTException; import cn.universal.common.poi.ExcelTemplate; @@ -192,32 +191,15 @@ public class IoTDeviceController extends BaseController { @PostMapping @Log(title = "新增设备", businessType = BusinessType.INSERT) public R add(@RequestBody IoTDeviceBO devInstancebo) { - R result = iIotDeviceService.insertDevInstance(devInstancebo); - JSONObject jsonObject = JSONUtil.parseObj(result); - String code = jsonObject.getStr("code"); - String msg = jsonObject.getStr("msg"); - if ("0".equals(code)) { - return R.ok(); - } else { - return R.error(msg); - } + return iIotDeviceService.insertDevInstance(devInstancebo); } /** 修改设备 */ @PutMapping @Log(title = "修改设备", businessType = BusinessType.UPDATE) public R edit(@RequestBody IoTDeviceBO devInstancebo) { - IoTDevice ioTDevice = - iIotDeviceService.selectDevInstanceById(String.valueOf(devInstancebo.getId())); - R result = iIotDeviceService.updateDevInstance(devInstancebo); - JSONObject jsonObject = JSONUtil.parseObj(result); - String code = jsonObject.getStr("code"); - String msg = jsonObject.getStr("msg"); - if ("0".equals(code)) { - return R.ok(); - } else { - return R.error(msg); - } + iIotDeviceService.selectDevInstanceById(String.valueOf(devInstancebo.getId())); + return iIotDeviceService.updateDevInstance(devInstancebo); } /** 绑定设备平台 */ @@ -245,15 +227,7 @@ public class IoTDeviceController extends BaseController { @DeleteMapping("/{ids}") @Log(title = "删除设备", businessType = BusinessType.DELETE) public R remove(@PathVariable String[] ids) { - R result = iIotDeviceService.deleteDevInstanceByIds(ids); - JSONObject jsonObject = JSONUtil.parseObj(result); - String code = jsonObject.getStr("code"); - String msg = jsonObject.getStr("msg"); - if ("0".equals(code)) { - return R.ok(); - } else { - return R.error(msg); - } + return iIotDeviceService.deleteDevInstanceByIds(ids); } /** 获取所有设备型号 */ diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTDeviceGroupController.java b/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTDeviceGroupController.java index 5de5f661bc441ed541f3642194b16320de4ff45e..d8dcd1ec4ec47678d51d551a3f417d3a0d848831 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTDeviceGroupController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTDeviceGroupController.java @@ -12,10 +12,10 @@ package cn.universal.admin.platform.web; -import cn.universal.admin.common.annotation.Log; -import cn.universal.admin.common.enums.BusinessType; +import cn.universal.common.annotation.Log; +import cn.universal.common.enums.BusinessType; import cn.universal.admin.platform.service.IIoTDeviceGroupService; -import cn.universal.admin.system.web.BaseController; +import cn.universal.security.BaseController; import cn.universal.persistence.entity.IoTDevice; import cn.universal.persistence.entity.bo.IoTDeviceGroupBO; import cn.universal.persistence.entity.vo.IoTDeviceGroupVO; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTDeviceLogController.java b/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTDeviceLogController.java index 1614a640b37a31edb06a72eb2bfc721ac4abff2e..3bd1667adf3d50b0a2b6e77c5f9c7bd5af74cdda 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTDeviceLogController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTDeviceLogController.java @@ -12,7 +12,7 @@ package cn.universal.admin.platform.web; -import cn.universal.admin.system.web.BaseController; +import cn.universal.security.BaseController; import cn.universal.dm.device.service.log.IIoTDeviceDataService; import cn.universal.persistence.entity.IoTDeviceEvents; import cn.universal.persistence.entity.vo.IoTDeviceLogMetadataVO; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTDeviceLogV1Controller.java b/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTDeviceLogV1Controller.java index 1ae552f951aac8211d5ee10516df3f622f3d11b8..0dd919116affc7cc5a7b3ecef456d53456fd2904 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTDeviceLogV1Controller.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTDeviceLogV1Controller.java @@ -13,7 +13,7 @@ package cn.universal.admin.platform.web; import cn.universal.admin.platform.service.IIoTDevLogService; -import cn.universal.admin.system.web.BaseController; +import cn.universal.security.BaseController; import cn.universal.persistence.entity.IoTDeviceEvents; import cn.universal.persistence.entity.bo.IoTDeviceLogBO; import cn.universal.persistence.entity.vo.IoTDeviceLogVO; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTDeviceProtocolController.java b/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTDeviceProtocolController.java index 0413cce9923feb181c80dd9f666285e8b355e2c2..32620b673fe8070d8013413cf3b6395b0e27e4d7 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTDeviceProtocolController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTDeviceProtocolController.java @@ -17,13 +17,13 @@ import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; -import cn.universal.admin.common.annotation.Log; -import cn.universal.admin.common.enums.BusinessType; +import cn.universal.common.annotation.Log; +import cn.universal.common.enums.BusinessType; import cn.universal.admin.common.utils.ExcelUtil; -import cn.universal.admin.common.utils.SecurityUtils; +import cn.universal.security.utils.SecurityUtils; import cn.universal.admin.system.service.IoTDeviceProtocolService; import cn.universal.admin.system.service.impl.IoTDeviceMessageCodecService; -import cn.universal.admin.system.web.BaseController; +import cn.universal.security.BaseController; import cn.universal.common.exception.CodecException; import cn.universal.common.exception.IoTException; import cn.universal.ossm.service.ISysOssService; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTDeviceSubscribeController.java b/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTDeviceSubscribeController.java index 8569ae4dea686701e7483c0d3f311a92e5a98014..5bba9ff26358e1d76925ff064a2f2f669ec92504 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTDeviceSubscribeController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTDeviceSubscribeController.java @@ -13,10 +13,10 @@ package cn.universal.admin.platform.web; import cn.hutool.core.util.StrUtil; -import cn.universal.admin.common.annotation.Log; -import cn.universal.admin.common.enums.BusinessType; +import cn.universal.common.annotation.Log; +import cn.universal.common.enums.BusinessType; import cn.universal.admin.system.service.IoTDeviceSubscribeService; -import cn.universal.admin.system.web.BaseController; +import cn.universal.security.BaseController; import cn.universal.common.domain.R; import cn.universal.common.exception.IoTException; import cn.universal.persistence.entity.IoTDeviceSubscribe; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTProductCategoryController.java b/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTProductCategoryController.java index 297fb78895c242758dbdb7ae6af8722028c186c3..b3ade32e98ce1f3562f5e6637ebe9c71bb94f063 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTProductCategoryController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTProductCategoryController.java @@ -13,10 +13,10 @@ package cn.universal.admin.platform.web; import cn.hutool.core.util.StrUtil; -import cn.universal.admin.common.annotation.Log; -import cn.universal.admin.common.enums.BusinessType; +import cn.universal.common.annotation.Log; +import cn.universal.common.enums.BusinessType; import cn.universal.admin.platform.service.IIoTProductSortService; -import cn.universal.admin.system.web.BaseController; +import cn.universal.security.BaseController; import cn.universal.common.exception.IoTException; import cn.universal.persistence.entity.IoTProduct; import cn.universal.persistence.entity.IoTProductSort; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTProductController.java b/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTProductController.java index b13b752e6962ea41ba21e20e99df5923e06e1b44..6423700126c2f6f4917e5f02eb50bf80f0e91076 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTProductController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTProductController.java @@ -16,9 +16,9 @@ import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.lang.Validator; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; -import cn.universal.admin.common.annotation.Log; -import cn.universal.admin.common.enums.BusinessType; -import cn.universal.admin.common.utils.SecurityUtils; +import cn.universal.common.annotation.Log; +import cn.universal.common.enums.BusinessType; +import cn.universal.security.utils.SecurityUtils; import cn.universal.admin.network.service.INetworkService; import cn.universal.admin.platform.dto.ConnectionInfoDTO; import cn.universal.admin.platform.service.ConnectionInfoService; @@ -27,8 +27,9 @@ import cn.universal.admin.platform.service.IIoTProductService; import cn.universal.admin.platform.service.impl.IoTProductServiceImpl; import cn.universal.admin.system.service.ISysDictTypeService; import cn.universal.admin.system.service.IoTDeviceProtocolService; -import cn.universal.admin.system.web.BaseController; +import cn.universal.security.BaseController; import cn.universal.common.constant.IoTConstant; +import cn.universal.common.constant.IoTConstant.DownCmd; import cn.universal.common.constant.IoTConstant.ProtocolModule; import cn.universal.common.constant.IoTConstant.TcpFlushType; import cn.universal.common.event.EventTopics; @@ -319,9 +320,9 @@ public class IoTProductController extends BaseController { } /** 新增电信公共产品 */ - @PostMapping(value = "/ctwing/pubproadd") + @PostMapping(value = "/ctaiot/public/product") @Log(title = "新增电信公共产品", businessType = BusinessType.INSERT) - public AjaxResult addCtwingPubPro(@RequestBody String downRequest) { + public AjaxResult addCtAIotPublicProduct(@RequestBody String downRequest) { String creatorId = loginIoTUnionUser(SecurityUtils.getUnionId()).getUnionId(); JSONObject jsonObject = JSONUtil.parseObj(downRequest); JSONObject downProRequest = new JSONObject(); @@ -333,7 +334,7 @@ public class IoTProductController extends BaseController { downProRequest.set("classifiedId", jsonObject.getStr("classifiedId")); downProRequest.set("classifiedName", jsonObject.getStr("classifiedName")); downProRequest.set("companyNo", jsonObject.getStr("companyNo")); - downProRequest.set("cmd", "PUBPRO_ADD"); + downProRequest.set("cmd", DownCmd.PUBPRO_ADD.name()); downProRequest.set("data", data); return AjaxResult.success( IoTDownlFactory.safeInvokeDown( @@ -483,7 +484,7 @@ public class IoTProductController extends BaseController { } // 删除协议 ioTDeviceProtocolService.deleteDevProtocolById(ioTProduct.getProductKey()); - + // 发布产品删除事件 Map eventData = new HashMap<>(); eventData.put("type", "product"); @@ -738,7 +739,6 @@ public class IoTProductController extends BaseController { /** 查看连接信息 */ @PostMapping("/connect/info") - @Log(title = "查看连接信息", businessType = BusinessType.OTHER) public AjaxResult connectInfo(@RequestParam String productKey) { try { ConnectionInfoDTO connectionInfo = connectionInfoService.getConnectionInfo(productKey); diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTUserAppController.java b/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTUserAppController.java index 1cf010f1b081a0ff10be1dfd8c093a34c334457d..bcd7242264c7549fbcc041ab2e1ba5cd479efb0f 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTUserAppController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTUserAppController.java @@ -23,15 +23,15 @@ import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONUtil; -import cn.universal.admin.common.annotation.Log; -import cn.universal.admin.common.enums.BusinessType; +import cn.universal.common.annotation.Log; +import cn.universal.common.enums.BusinessType; import cn.universal.admin.common.utils.ExcelUtil; -import cn.universal.admin.common.utils.SecurityUtils; +import cn.universal.security.utils.SecurityUtils; import cn.universal.admin.platform.service.IIoTDeviceService; import cn.universal.admin.system.service.IIoTUserApplicationService; -import cn.universal.admin.system.service.IIotUserService; +import cn.universal.security.service.IoTUserService; import cn.universal.admin.system.service.IOAuthClientDetailsService; -import cn.universal.admin.system.web.BaseController; +import cn.universal.security.BaseController; import cn.universal.common.exception.IoTException; import cn.universal.persistence.base.BaseUPRequest; import cn.universal.persistence.entity.IoTUser; @@ -81,7 +81,7 @@ public class IoTUserAppController extends BaseController { @Resource private IoTUserApplicationMapper iotUserApplicationMapper; @Resource private IOAuthClientDetailsService oauthClientDetailsService; @Resource private IIoTDeviceService iIotDeviceService; - @Resource private IIotUserService iIotUserService; + @Resource private IoTUserService ioTUserService; /** 查询用户应用信息列表 */ @Operation(summary = "查询用户应用信息列表") @@ -116,7 +116,7 @@ public class IoTUserAppController extends BaseController { public void export(HttpServletResponse response, IoTUserApplication iotUserApplication) { IoTUser iotUser = loginIoTUnionUser(SecurityUtils.getUnionId()); iotUserApplication.setUnionId( - iIotUserService.selectUserByUnionId(SecurityUtils.getUnionId()).isAdmin() + ioTUserService.selectUserByUnionId(SecurityUtils.getUnionId()).isAdmin() ? null : SecurityUtils.getUnionId()); List list = @@ -248,7 +248,7 @@ public class IoTUserAppController extends BaseController { "修改用户应用信息,操作人={},参数={}", SecurityUtils.getUnionId(), JSONUtil.toJsonStr(iotUserApplication)); - IoTUser iotUser = iIotUserService.selectUserByUnionId(SecurityUtils.getUnionId()); + IoTUser iotUser = ioTUserService.selectUserByUnionId(SecurityUtils.getUnionId()); IoTUserApplication app = iotUserApplicationService.selectIotUserApplicationById(iotUserApplication.getAppUniqueId()); if (app != null @@ -332,7 +332,7 @@ public class IoTUserAppController extends BaseController { @Operation(summary = "HTTP推送启/停用") @PostMapping(value = "/enable") public AjaxResult HttpEnable(@RequestBody IoTUserApplication iotUserApplication) { - IoTUser iotUser = iIotUserService.selectUserByUnionId(SecurityUtils.getUnionId()); + IoTUser iotUser = ioTUserService.selectUserByUnionId(SecurityUtils.getUnionId()); IoTUserApplication app = iotUserApplicationService.selectIotUserApplicationById(iotUserApplication.getAppUniqueId()); if (app != null diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTUserController.java b/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTUserController.java index a6baa50c98fe55121e7abc00270e8ef6f857110a..c0a03e1076228c1b64d9801b644e6b7c717b7b7d 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTUserController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/platform/web/IoTUserController.java @@ -20,14 +20,14 @@ import cn.hutool.core.lang.Validator; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; -import cn.universal.admin.common.annotation.Log; -import cn.universal.admin.common.enums.BusinessType; +import cn.universal.common.annotation.Log; +import cn.universal.common.enums.BusinessType; import cn.universal.admin.common.utils.ExcelUtil; -import cn.universal.admin.common.utils.SecurityUtils; +import cn.universal.security.utils.SecurityUtils; import cn.universal.admin.system.service.IIoTUserApplicationService; -import cn.universal.admin.system.service.IIotUserService; +import cn.universal.security.service.IoTUserService; import cn.universal.admin.system.service.ISysRoleService; -import cn.universal.admin.system.web.BaseController; +import cn.universal.security.BaseController; import cn.universal.common.constant.IoTConstant; import cn.universal.common.constant.IoTUserConstants; import cn.universal.common.exception.IoTException; @@ -68,7 +68,7 @@ import org.springframework.web.bind.annotation.RestController; @Slf4j public class IoTUserController extends BaseController { - @Resource private IIotUserService iIotUserService; + @Resource private IoTUserService ioTUserService; @Resource private ISysRoleService iSysRoleService; @Resource private IIoTUserApplicationService iotUserApplicationService; @@ -77,13 +77,13 @@ public class IoTUserController extends BaseController { @GetMapping("/list") public TableDataInfo pageList(IoTUser user) { log.info("当前用户={}", SecurityUtils.getUnionId()); - if (iIotUserService.selectUserByUnionId(SecurityUtils.getUnionId()).isAdmin()) { + if (ioTUserService.selectUserByUnionId(SecurityUtils.getUnionId()).isAdmin()) { user.setCreateBy(null); } else { user.setCreateBy(SecurityUtils.getUnionId()); } startPage(); - List userList = iIotUserService.selectUserList(user); + List userList = ioTUserService.selectUserList(user); return getDataTable(userList); } @@ -92,12 +92,12 @@ public class IoTUserController extends BaseController { @Log(title = "导出用户应用信息列表", businessType = BusinessType.EXPORT) public void export(HttpServletResponse response, IoTUser iotUser) { log.info("导出用户,操作人={},参数={}", SecurityUtils.getUnionId(), JSONUtil.toJsonStr(iotUser)); - if (iIotUserService.selectUserByUnionId(SecurityUtils.getUnionId()).isAdmin()) { + if (ioTUserService.selectUserByUnionId(SecurityUtils.getUnionId()).isAdmin()) { iotUser.setCreateBy(null); } else { iotUser.setCreateBy(SecurityUtils.getUnionId()); } - List list = iIotUserService.selectUserList(iotUser); + List list = ioTUserService.selectUserList(iotUser); ExcelUtil util = new ExcelUtil(IoTUser.class); util.exportExcel(response, list, "用户信息数据"); } @@ -108,7 +108,7 @@ public class IoTUserController extends BaseController { JSONObject jsonObject = new JSONObject(); List roles = iSysRoleService.selectRoleAll(); - IoTUser currentUser = iIotUserService.selectUserByUnionId(SecurityUtils.getUnionId()); + IoTUser currentUser = ioTUserService.selectUserByUnionId(SecurityUtils.getUnionId()); jsonObject.set( "roles", currentUser.isAdmin() @@ -117,7 +117,7 @@ public class IoTUserController extends BaseController { .filter(r -> SecurityUtils.getUnionId().equals(r.getCreateBy())) .collect(Collectors.toList())); if (StringUtils.isNotNull(id)) { - IoTUser iotUser = iIotUserService.selectUserById(id); + IoTUser iotUser = ioTUserService.selectUserById(id); if (!SecurityUtils.getUnionId().equalsIgnoreCase(iotUser.getParentUnionId()) && !currentUser.isAdmin()) { throw new IoTException("你无权查询用户"); @@ -137,7 +137,7 @@ public class IoTUserController extends BaseController { public AjaxResult add(@Validated @RequestBody IoTUserBO userbo) { log.info("新增用户,操作人={},参数={}", SecurityUtils.getUnionId(), JSONUtil.toJsonStr(userbo)); String unionId = SecurityUtils.getUnionId(); - IoTUser parentUser = iIotUserService.selectUserByUnionId(unionId); + IoTUser parentUser = ioTUserService.selectUserByUnionId(unionId); if (!parentUser.isAdmin()) { throw new IoTException("你无权操作"); } @@ -145,10 +145,10 @@ public class IoTUserController extends BaseController { if (Objects.isNull(user.getMobile())) { return AjaxResult.error("新增用户'" + user.getUsername() + "'失败,手机号码不得为空"); } - if (IoTUserConstants.NOT_UNIQUE.equals(iIotUserService.checkUserNameUnique(user))) { + if (IoTUserConstants.NOT_UNIQUE.equals(ioTUserService.checkUserNameUnique(user))) { return AjaxResult.error("新增用户'" + user.getUsername() + "'失败,用户名已存在"); } else if (Validator.isNotEmpty(user.getMobile()) - && IoTUserConstants.NOT_UNIQUE.equals(iIotUserService.checkPhoneUnique(user))) { + && IoTUserConstants.NOT_UNIQUE.equals(ioTUserService.checkPhoneUnique(user))) { return AjaxResult.error("新增用户'" + user.getUsername() + "'失败,手机号码已存在"); } if (StrUtil.isNotEmpty(user.getPassword())) { @@ -173,7 +173,7 @@ public class IoTUserController extends BaseController { userbo.setLicense(5000); userbo.setLicenseTotalAmount(5000); } - return toAjax(iIotUserService.insertUser(userbo)); + return toAjax(ioTUserService.insertUser(userbo)); } /** 修改用户 */ @@ -183,9 +183,9 @@ public class IoTUserController extends BaseController { public AjaxResult edit(@Validated @RequestBody IoTUserBO userbo) { log.info("修改用户,操作人={},参数={}", SecurityUtils.getUnionId(), JSONUtil.toJsonStr(userbo)); IoTUser user = BeanUtil.toBean(userbo, IoTUser.class); - iIotUserService.checkUserAllowed(user); - IoTUser updateUser = iIotUserService.selectUserById(userbo.getId()); - IoTUser iotUser = iIotUserService.selectUserByUnionId(SecurityUtils.getUnionId()); + ioTUserService.checkUserAllowed(user); + IoTUser updateUser = ioTUserService.selectUserById(userbo.getId()); + IoTUser iotUser = ioTUserService.selectUserByUnionId(SecurityUtils.getUnionId()); // 非超管身份只能操作自己和子账户 if (!SecurityUtils.getUnionId().equalsIgnoreCase(updateUser.getParentUnionId()) && (iotUser == null || !user.getId().equals(iotUser.getId())) @@ -195,7 +195,7 @@ public class IoTUserController extends BaseController { if (Validator.isEmpty(user.getMobile())) { return error("修改用户'" + user.getUsername() + "'失败,手机号码不能为空"); } - if (IoTUserConstants.NOT_UNIQUE.equals(iIotUserService.checkPhoneUnique(user))) { + if (IoTUserConstants.NOT_UNIQUE.equals(ioTUserService.checkPhoneUnique(user))) { return error("修改用户'" + user.getUsername() + "'失败,手机号码已存在"); } @@ -212,7 +212,7 @@ public class IoTUserController extends BaseController { } userbo.setUpdateBy(SecurityUtils.getUnionId()); userbo.setUpdateDate(new Date()); - int count = iIotUserService.updateUser(userbo); + int count = ioTUserService.updateUser(userbo); if (count > 0) { iotUserApplicationService.EnDisableIoTUser( userbo.getUnionId(), IoTConstant.NORMAL.toString().equals(iotUser.getStatus())); @@ -228,12 +228,12 @@ public class IoTUserController extends BaseController { if (userIds != null && userIds.length > 1) { return error("不允许批量删除"); } - boolean isAdmin = iIotUserService.selectUserByUnionId(SecurityUtils.getUnionId()).isAdmin(); - IoTUser deleteUser = iIotUserService.selectUserById(userIds[0]); + boolean isAdmin = ioTUserService.selectUserByUnionId(SecurityUtils.getUnionId()).isAdmin(); + IoTUser deleteUser = ioTUserService.selectUserById(userIds[0]); if (!SecurityUtils.getUnionId().equalsIgnoreCase(deleteUser.getParentUnionId()) && !isAdmin) { return error("你无权删除用户"); } - return toAjax(iIotUserService.deleteUserByIds(userIds)); + return toAjax(ioTUserService.deleteUserByIds(userIds)); } /** 根据用户编号获取授权角色 */ @@ -242,8 +242,8 @@ public class IoTUserController extends BaseController { log.info("授权用户,操作人={},参数={}", SecurityUtils.getUnionId(), id); JSONObject object = new JSONObject(); - IoTUser currentUser = iIotUserService.selectUserByUnionId(SecurityUtils.getUnionId()); - IoTUser user = iIotUserService.selectUserById(id); + IoTUser currentUser = ioTUserService.selectUserByUnionId(SecurityUtils.getUnionId()); + IoTUser user = ioTUserService.selectUserById(id); if (!SecurityUtils.getUnionId().equalsIgnoreCase(user.getParentUnionId()) && !currentUser.isAdmin()) { return error("你无权操作用户"); @@ -261,13 +261,13 @@ public class IoTUserController extends BaseController { /** 用户授权角色 */ @PutMapping("/authRole") public AjaxResult insertAuthRole(String unionId, Long[] roleIds) { - IoTUser currentUser = iIotUserService.selectUserByUnionId(SecurityUtils.getUnionId()); - IoTUser user = iIotUserService.selectUserByUnionId(unionId); + IoTUser currentUser = ioTUserService.selectUserByUnionId(SecurityUtils.getUnionId()); + IoTUser user = ioTUserService.selectUserByUnionId(unionId); if (!SecurityUtils.getUnionId().equalsIgnoreCase(user.getParentUnionId()) && !currentUser.isAdmin()) { return error("你无权操作用户"); } - iIotUserService.insertUserAuth(unionId, roleIds); + ioTUserService.insertUserAuth(unionId, roleIds); return success(); } } diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/system/monitor/SysLoginLogController.java b/cn-universal-admin/src/main/java/cn/universal/admin/system/monitor/SysLoginLogController.java index 696154d931575c09ea71df7aeafe8bdd6b77618e..44005491c096f50398c6a62675449a7b1a1abbf8 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/system/monitor/SysLoginLogController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/system/monitor/SysLoginLogController.java @@ -12,12 +12,12 @@ package cn.universal.admin.system.monitor; -import cn.universal.admin.common.annotation.Log; -import cn.universal.admin.common.enums.BusinessType; +import cn.universal.common.annotation.Log; +import cn.universal.common.enums.BusinessType; import cn.universal.admin.common.utils.ExcelUtil; -import cn.universal.admin.common.utils.SecurityUtils; +import cn.universal.security.utils.SecurityUtils; import cn.universal.admin.system.service.ISysLogininforService; -import cn.universal.admin.system.web.BaseController; +import cn.universal.security.BaseController; import cn.universal.persistence.entity.IoTUser; import cn.universal.persistence.entity.SysLogininfor; import cn.universal.persistence.page.TableDataInfo; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/system/monitor/SysOperlogController.java b/cn-universal-admin/src/main/java/cn/universal/admin/system/monitor/SysOperlogController.java index 18f8f145fbdd6dc291a75dcb2e0d003d075e00e7..0fa523a22eb72fb923fa1b54ac39646600f75e8d 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/system/monitor/SysOperlogController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/system/monitor/SysOperlogController.java @@ -12,12 +12,12 @@ package cn.universal.admin.system.monitor; -import cn.universal.admin.common.annotation.Log; -import cn.universal.admin.common.enums.BusinessType; +import cn.universal.common.annotation.Log; +import cn.universal.common.enums.BusinessType; import cn.universal.admin.common.utils.ExcelUtil; -import cn.universal.admin.common.utils.SecurityUtils; +import cn.universal.security.utils.SecurityUtils; import cn.universal.admin.system.service.ISysOperLogService; -import cn.universal.admin.system.web.BaseController; +import cn.universal.security.BaseController; import cn.universal.persistence.entity.IoTUser; import cn.universal.persistence.entity.SysOperLog; import cn.universal.persistence.page.TableDataInfo; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/system/notice/NoticeChannelController.java b/cn-universal-admin/src/main/java/cn/universal/admin/system/notice/NoticeChannelController.java index e4c6ad166b3c827ec5316e5ed960d24f15cf964a..6f9587be01e42ffa7824801d337fdfebe0902204 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/system/notice/NoticeChannelController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/system/notice/NoticeChannelController.java @@ -1,8 +1,8 @@ package cn.universal.admin.system.notice; import cn.hutool.json.JSONObject; -import cn.universal.admin.common.utils.SecurityUtils; -import cn.universal.admin.system.web.BaseController; +import cn.universal.security.utils.SecurityUtils; +import cn.universal.security.BaseController; import cn.universal.manager.notice.dto.NoticeChannelDTO; import cn.universal.manager.notice.model.NoticeChannel; import cn.universal.manager.notice.service.NoticeChannelService; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/system/notice/NoticeRecordController.java b/cn-universal-admin/src/main/java/cn/universal/admin/system/notice/NoticeRecordController.java index c6cae8b2105fe8d217f9400eff84ca0ea9334bcc..814fa17cdabc69180bc7a0ec7a70a725e006fe84 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/system/notice/NoticeRecordController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/system/notice/NoticeRecordController.java @@ -1,6 +1,6 @@ package cn.universal.admin.system.notice; -import cn.universal.admin.system.web.BaseController; +import cn.universal.security.BaseController; import cn.universal.manager.notice.model.NoticeSendRecord; import cn.universal.manager.notice.service.NoticeRecordService; import cn.universal.persistence.page.TableDataInfo; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/system/notice/NoticeTemplateController.java b/cn-universal-admin/src/main/java/cn/universal/admin/system/notice/NoticeTemplateController.java index 78c1fc1899bc29e1ec95aff8af78a1b8cecf30bb..57eb4237d2e0275641fdef5b34713291017728d4 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/system/notice/NoticeTemplateController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/system/notice/NoticeTemplateController.java @@ -1,7 +1,7 @@ package cn.universal.admin.system.notice; -import cn.universal.admin.common.utils.SecurityUtils; -import cn.universal.admin.system.web.BaseController; +import cn.universal.security.utils.SecurityUtils; +import cn.universal.security.BaseController; import cn.universal.manager.notice.dto.NoticeTemplateDTO; import cn.universal.manager.notice.model.NoticeTemplate; import cn.universal.manager.notice.service.NoticeTemplateService; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/system/oss/SysOssController.java b/cn-universal-admin/src/main/java/cn/universal/admin/system/oss/SysOssController.java index 8b23dcd7a8dc88d503757169118ff1dd86f6e38d..245138f4979d251ce77e9cbfdc2d0999dd31a0dd 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/system/oss/SysOssController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/system/oss/SysOssController.java @@ -14,8 +14,8 @@ package cn.universal.admin.system.oss; import cn.hutool.core.convert.Convert; import cn.hutool.http.HttpUtil; -import cn.universal.admin.common.utils.SecurityUtils; -import cn.universal.admin.system.web.BaseController; +import cn.universal.security.utils.SecurityUtils; +import cn.universal.security.BaseController; import cn.universal.common.exception.IoTException; import cn.universal.common.utils.FileUtils; import cn.universal.ossm.entity.SysOss; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/system/quartz/SysJobController.java b/cn-universal-admin/src/main/java/cn/universal/admin/system/quartz/SysJobController.java index 7b318022a07d812ec8f956bd8c85c50fdffeaeef..bd428d2e671fbd8aa722414365df9013d1e80f4d 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/system/quartz/SysJobController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/system/quartz/SysJobController.java @@ -14,8 +14,8 @@ package cn.universal.admin.system.quartz; import cn.hutool.core.util.StrUtil; import cn.universal.admin.common.utils.ExcelUtil; -import cn.universal.admin.common.utils.SecurityUtils; -import cn.universal.admin.system.web.BaseController; +import cn.universal.security.utils.SecurityUtils; +import cn.universal.security.BaseController; import cn.universal.persistence.page.TableDataInfo; import cn.universal.persistence.query.AjaxResult; import cn.universal.quartz.constant.Constants; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/system/quartz/SysJobLogController.java b/cn-universal-admin/src/main/java/cn/universal/admin/system/quartz/SysJobLogController.java index 4fd9b7a3a036c103725dab49b341c7bd01fb43f2..2a30a1b3cfd1bd77eb2d8c555b4573f16492374c 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/system/quartz/SysJobLogController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/system/quartz/SysJobLogController.java @@ -13,7 +13,7 @@ package cn.universal.admin.system.quartz; import cn.universal.admin.common.utils.ExcelUtil; -import cn.universal.admin.system.web.BaseController; +import cn.universal.security.BaseController; import cn.universal.persistence.page.TableDataInfo; import cn.universal.persistence.query.AjaxResult; import cn.universal.quartz.domain.SysJobLog; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/system/service/impl/IoTDeviceSubscribeServiceImpl.java b/cn-universal-admin/src/main/java/cn/universal/admin/system/service/impl/IoTDeviceSubscribeServiceImpl.java index d65cca46ab7cbcf5c63dac02f9129db1f20bcd07..e6f91086bee737cc257c5c682f5828be25550c65 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/system/service/impl/IoTDeviceSubscribeServiceImpl.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/system/service/impl/IoTDeviceSubscribeServiceImpl.java @@ -14,7 +14,7 @@ package cn.universal.admin.system.service.impl; import cn.hutool.core.util.StrUtil; import cn.universal.admin.common.service.BaseServiceImpl; -import cn.universal.admin.common.utils.SecurityUtils; +import cn.universal.security.utils.SecurityUtils; import cn.universal.admin.system.service.IoTDeviceSubscribeService; import cn.universal.common.constant.IoTConstant; import cn.universal.common.constant.IoTConstant.DeviceSubscribe; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/system/service/impl/IoTUserApplicationServiceImpl.java b/cn-universal-admin/src/main/java/cn/universal/admin/system/service/impl/IoTUserApplicationServiceImpl.java index de64d02eab474e565fa90eef54d6c091d14c49c0..db30decf1a2dffbfebf1f821ec7b16987b0ff2e5 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/system/service/impl/IoTUserApplicationServiceImpl.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/system/service/impl/IoTUserApplicationServiceImpl.java @@ -17,9 +17,9 @@ import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; import cn.universal.admin.common.service.BaseServiceImpl; -import cn.universal.admin.common.utils.SecurityUtils; +import cn.universal.security.utils.SecurityUtils; import cn.universal.admin.system.service.IIoTUserApplicationService; -import cn.universal.admin.system.service.IIotUserService; +import cn.universal.security.service.IoTUserService; import cn.universal.common.constant.IoTConstant; import cn.universal.common.exception.IoTException; import cn.universal.persistence.entity.IoTUser; @@ -50,7 +50,7 @@ public class IoTUserApplicationServiceImpl extends BaseServiceImpl implements IIoTUserApplicationService { @Resource private IoTUserApplicationMapper iotUserApplicationMapper; - @Resource private IIotUserService iIotUserService; + @Resource private IoTUserService ioTUserService; @Resource private OauthClientDetailsMapper oauthClientDetailsMapper; @@ -117,7 +117,7 @@ public class IoTUserApplicationServiceImpl extends BaseServiceImpl public IoTUserApplication checkSelf(String appUniqueId) { IoTUserApplication a = IoTUserApplication.builder().appUniqueId(appUniqueId).build(); String unionId = queryIotUser(SecurityUtils.getUnionId()).getUnionId(); - if (!iIotUserService.selectUserByUnionId(unionId).isAdmin()) { + if (!ioTUserService.selectUserByUnionId(unionId).isAdmin()) { a.setUnionId(unionId); } IoTUserApplication iotUserApplication = iotUserApplicationMapper.selectOne(a); diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/system/service/impl/SysDictDataServiceImpl.java b/cn-universal-admin/src/main/java/cn/universal/admin/system/service/impl/SysDictDataServiceImpl.java index fff2dd4afc06ca6871f7c7562790509d7334546c..29d03a0027fe968960b51221e5707e78d398b804 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/system/service/impl/SysDictDataServiceImpl.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/system/service/impl/SysDictDataServiceImpl.java @@ -14,7 +14,7 @@ package cn.universal.admin.system.service.impl; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; -import cn.universal.admin.common.utils.SecurityUtils; +import cn.universal.security.utils.SecurityUtils; import cn.universal.admin.system.service.ISysDictDataService; import cn.universal.admin.system.service.ISysDictTypeService; import cn.universal.persistence.entity.admin.SysDictData; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/system/service/impl/SysMenuServiceImpl.java b/cn-universal-admin/src/main/java/cn/universal/admin/system/service/impl/SysMenuServiceImpl.java index 01fb76fc6ce9c1ddb3c9c4efd2cecac7bcc42f67..89e80ebced0c6a0751f07d36f36738e9560dd992 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/system/service/impl/SysMenuServiceImpl.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/system/service/impl/SysMenuServiceImpl.java @@ -14,7 +14,7 @@ package cn.universal.admin.system.service.impl; import cn.hutool.core.lang.Validator; import cn.hutool.core.util.StrUtil; -import cn.universal.admin.system.service.IIotUserService; +import cn.universal.security.service.IoTUserService; import cn.universal.admin.system.service.ISysMenuService; import cn.universal.common.constant.Constants; import cn.universal.common.constant.IoTUserConstants; @@ -51,7 +51,7 @@ public class SysMenuServiceImpl implements ISysMenuService { @Resource private SysRoleMenuMapper roleMenuMapper; @Resource private SysMenuMapper menuMapper; - @Resource private IIotUserService iIotUserService; + @Resource private IoTUserService ioTUserService; /** * 根据用户查询系统菜单列表 @@ -75,7 +75,7 @@ public class SysMenuServiceImpl implements ISysMenuService { public List selectMenuList(SysMenu menu, String unionId) { List menuList = null; // 管理员显示所有菜单信息 - IoTUser iotUser = iIotUserService.selectUserByUnionId(unionId); + IoTUser iotUser = ioTUserService.selectUserByUnionId(unionId); if (iotUser.isAdmin()) { menuList = menuMapper.selectMenuList(menu); } else { @@ -106,7 +106,7 @@ public class SysMenuServiceImpl implements ISysMenuService { @Override public List selectMenuTreeByUnionId(String unionId) { List menus = null; - IoTUser iotUser = iIotUserService.selectUserByUnionId(unionId); + IoTUser iotUser = ioTUserService.selectUserByUnionId(unionId); if (iotUser.isAdmin()) { menus = menuMapper.selectMenuTreeAll(); } else { diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/system/service/impl/SysRoleServiceImpl.java b/cn-universal-admin/src/main/java/cn/universal/admin/system/service/impl/SysRoleServiceImpl.java index 610005020f3e490a4f863a7c41ed2ead4ffb993f..3918aebcd17a70cb3fe204b004771b22fa311f68 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/system/service/impl/SysRoleServiceImpl.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/system/service/impl/SysRoleServiceImpl.java @@ -13,9 +13,8 @@ package cn.universal.admin.system.service.impl; import cn.hutool.core.lang.Validator; -import cn.universal.admin.common.annotation.DataScope; -import cn.universal.admin.common.utils.SecurityUtils; import cn.universal.admin.system.service.ISysRoleService; +import cn.universal.common.annotation.DataScope; import cn.universal.common.constant.IoTUserConstants; import cn.universal.common.exception.IoTException; import cn.universal.persistence.entity.admin.SysRole; @@ -24,6 +23,7 @@ import cn.universal.persistence.entity.admin.SysUserRole; import cn.universal.persistence.mapper.admin.SysRoleMapper; import cn.universal.persistence.mapper.admin.SysRoleMenuMapper; import cn.universal.persistence.mapper.admin.SysUserRoleMapper; +import cn.universal.security.utils.SecurityUtils; import jakarta.annotation.Resource; import java.util.ArrayList; import java.util.Arrays; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/system/web/IndexController.java b/cn-universal-admin/src/main/java/cn/universal/admin/system/web/IndexController.java index f331a6926a6150e20209f4926c16f0f06545d077..3b50edee0585edf15386dc780e16f2189259a545 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/system/web/IndexController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/system/web/IndexController.java @@ -12,10 +12,11 @@ package cn.universal.admin.system.web; -import cn.universal.admin.common.utils.SecurityUtils; +import cn.universal.security.utils.SecurityUtils; import cn.universal.admin.system.service.IndexQueryService; import cn.universal.persistence.dto.IndexQueryDTO; import cn.universal.persistence.query.AjaxResult; +import cn.universal.security.BaseController; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/system/web/RuleController.java b/cn-universal-admin/src/main/java/cn/universal/admin/system/web/RuleController.java index 5edf19921e715d8a185c9806c275bcd34b4450f5..4a8877bcbd6a61eaf465293b389c1b369b72fe39 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/system/web/RuleController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/system/web/RuleController.java @@ -13,10 +13,10 @@ package cn.universal.admin.system.web; import cn.hutool.json.JSONObject; -import cn.universal.admin.common.annotation.Log; -import cn.universal.admin.common.enums.BusinessType; -import cn.universal.admin.common.utils.SecurityUtils; -import cn.universal.admin.system.service.IIotUserService; +import cn.universal.common.annotation.Log; +import cn.universal.common.enums.BusinessType; +import cn.universal.security.utils.SecurityUtils; +import cn.universal.security.service.IoTUserService; import cn.universal.persistence.entity.bo.RuleModelBO; import cn.universal.persistence.entity.vo.RuleModelVO; import cn.universal.persistence.page.TableDataInfo; @@ -24,6 +24,7 @@ import cn.universal.persistence.query.AjaxResult; import cn.universal.rule.model.bo.RuleBo; import cn.universal.rule.model.bo.RuleTargetTestBO; import cn.universal.rule.service.RuleService; +import cn.universal.security.BaseController; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; @@ -50,7 +51,7 @@ import org.springframework.web.bind.annotation.RestController; public class RuleController extends BaseController { @Resource private RuleService ruleService; - @Resource private IIotUserService iIotUserService; + @Resource private IoTUserService ioTUserService; @Operation(summary = "查询规则列表") @GetMapping("rule/list") diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/system/web/RulegoChainController.java b/cn-universal-admin/src/main/java/cn/universal/admin/system/web/RulegoChainController.java index a0fefbb0059c4deedc168c54ecaf95e5fc69da2f..0d8c58306ab1799d099255eb88beb3eb4fbcf4c9 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/system/web/RulegoChainController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/system/web/RulegoChainController.java @@ -12,14 +12,15 @@ package cn.universal.admin.system.web; -import cn.universal.admin.common.annotation.Log; -import cn.universal.admin.common.enums.BusinessType; -import cn.universal.admin.common.utils.SecurityUtils; +import cn.universal.common.annotation.Log; +import cn.universal.common.enums.BusinessType; +import cn.universal.security.utils.SecurityUtils; import cn.universal.persistence.entity.bo.RulegoChainBO; import cn.universal.persistence.entity.vo.RulegoChainVO; import cn.universal.persistence.page.TableDataInfo; import cn.universal.persistence.query.AjaxResult; import cn.universal.rule.rulego.service.RulegoChainService; +import cn.universal.security.BaseController; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.tags.Tag; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SceneLinkageController.java b/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SceneLinkageController.java index b7a4089a2f3a27ef37fd4a142742c7f636814a84..cd6d4fdcbd6cbd5b5295c4f94d9bef01c9626fab 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SceneLinkageController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SceneLinkageController.java @@ -12,10 +12,10 @@ package cn.universal.admin.system.web; -import cn.universal.admin.common.annotation.Log; -import cn.universal.admin.common.enums.BusinessType; +import cn.universal.common.annotation.Log; +import cn.universal.common.enums.BusinessType; import cn.universal.admin.common.utils.ExcelUtil; -import cn.universal.admin.common.utils.SecurityUtils; +import cn.universal.security.utils.SecurityUtils; import cn.universal.common.exception.IoTException; import cn.universal.persistence.entity.IoTUser; import cn.universal.persistence.entity.SceneLinkage; @@ -24,6 +24,7 @@ import cn.universal.persistence.page.TableDataInfo; import cn.universal.persistence.query.AjaxResult; import cn.universal.rule.model.ExeRunContext; import cn.universal.rule.scene.service.SceneLinkageService; +import cn.universal.security.BaseController; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SysConfigController.java b/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SysConfigController.java index 22f7ee3f9570775cc0698340863371ea861aa501..9d7878aaf1cf0b9d98bc131b4fd6449e82439370 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SysConfigController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SysConfigController.java @@ -12,14 +12,15 @@ package cn.universal.admin.system.web; -import cn.universal.admin.common.annotation.Log; -import cn.universal.admin.common.enums.BusinessType; -import cn.universal.admin.common.utils.SecurityUtils; +import cn.universal.common.annotation.Log; +import cn.universal.common.enums.BusinessType; +import cn.universal.security.utils.SecurityUtils; import cn.universal.admin.system.service.ISysConfigService; import cn.universal.common.constant.IoTUserConstants; import cn.universal.persistence.entity.admin.SysConfig; import cn.universal.persistence.page.TableDataInfo; import cn.universal.persistence.query.AjaxResult; +import cn.universal.security.BaseController; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.validation.annotation.Validated; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SysDictDataController.java b/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SysDictDataController.java index 7d695a8840858cd4d19a4f44e0413bd29711c98b..b5a56f3fc23c395d5fb6a9ae200de83753817db4 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SysDictDataController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SysDictDataController.java @@ -13,13 +13,14 @@ package cn.universal.admin.system.web; import cn.hutool.core.lang.Validator; -import cn.universal.admin.common.utils.SecurityUtils; +import cn.universal.security.utils.SecurityUtils; import cn.universal.admin.system.service.ISysDictDataService; import cn.universal.admin.system.service.ISysDictTypeService; import cn.universal.persistence.entity.admin.SysDictData; import cn.universal.persistence.entity.admin.vo.SysDictDataVo; import cn.universal.persistence.page.TableDataInfo; import cn.universal.persistence.query.AjaxResult; +import cn.universal.security.BaseController; import java.util.ArrayList; import java.util.Date; import java.util.List; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SysDictTypeController.java b/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SysDictTypeController.java index 556b74104ef7ed9f34b4cc8c89f06ba3a04746f8..a60c155a46d8dc3387e666efb396aca433e04151 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SysDictTypeController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SysDictTypeController.java @@ -12,12 +12,13 @@ package cn.universal.admin.system.web; -import cn.universal.admin.common.utils.SecurityUtils; +import cn.universal.security.utils.SecurityUtils; import cn.universal.admin.system.service.ISysDictTypeService; import cn.universal.common.constant.IoTUserConstants; import cn.universal.persistence.entity.admin.SysDictType; import cn.universal.persistence.page.TableDataInfo; import cn.universal.persistence.query.AjaxResult; +import cn.universal.security.BaseController; import java.util.Date; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SysMenuController.java b/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SysMenuController.java index 656e2ad3b21c9b8f1766c04af02cb214434789b5..ff9ceb8a69368624cd91f1aa755adef3090a46fb 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SysMenuController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SysMenuController.java @@ -13,14 +13,15 @@ package cn.universal.admin.system.web; import cn.hutool.core.lang.Validator; -import cn.universal.admin.common.annotation.Log; -import cn.universal.admin.common.enums.BusinessType; -import cn.universal.admin.common.utils.SecurityUtils; +import cn.universal.common.annotation.Log; +import cn.universal.common.enums.BusinessType; import cn.universal.admin.system.service.ISysMenuService; import cn.universal.common.constant.IoTUserConstants; import cn.universal.common.exception.IoTException; import cn.universal.persistence.entity.admin.SysMenu; import cn.universal.persistence.query.AjaxResult; +import cn.universal.security.BaseController; +import cn.universal.security.utils.SecurityUtils; import java.util.HashMap; import java.util.List; import java.util.Map; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SysProfileController.java b/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SysProfileController.java index 71bce95677b071212ab811dd70c58145e32fe0dd..597ca3b896de324483d7ae5b5b91859936f299b6 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SysProfileController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SysProfileController.java @@ -18,8 +18,8 @@ import cn.hutool.core.util.PhoneUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import cn.hutool.json.JSONUtil; -import cn.universal.admin.common.utils.SecurityUtils; -import cn.universal.admin.system.service.IIotUserService; +import cn.universal.security.service.IoTUserService; +import cn.universal.security.utils.SecurityUtils; import cn.universal.admin.system.service.ISysRoleService; import cn.universal.common.constant.IoTConstant; import cn.universal.common.constant.IoTUserConstants; @@ -28,6 +28,7 @@ import cn.universal.persistence.entity.IoTUser; import cn.universal.persistence.entity.bo.IoTUserBO; import cn.universal.persistence.entity.bo.PasswordBO; import cn.universal.persistence.query.AjaxResult; +import cn.universal.security.BaseController; import jakarta.annotation.Resource; import java.util.Date; import java.util.Objects; @@ -44,7 +45,7 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping("/admin/system/user/profile") public class SysProfileController extends BaseController { - @Resource private IIotUserService iIotUserService; + @Resource private IoTUserService ioTUserService; @Resource private ISysRoleService iSysRoleService; /** 查询个人信息 */ @@ -53,7 +54,7 @@ public class SysProfileController extends BaseController { JSONObject jsonObject = new JSONObject(); String unionId = SecurityUtils.getUnionId(); - IoTUser iotUser = iIotUserService.selectUserByUnionId(unionId); + IoTUser iotUser = ioTUserService.selectUserByUnionId(unionId); // 手机号脱敏 if (StrUtil.isNotEmpty(iotUser.getMobile())) { iotUser.setMobile(PhoneUtil.hideBetween(iotUser.getMobile()).toString()); @@ -72,10 +73,10 @@ public class SysProfileController extends BaseController { return error("修改个人信息失败,手机号码不能为空"); } IoTUser user = BeanUtil.toBean(iotUserBo, IoTUser.class); - if (IoTUserConstants.NOT_UNIQUE.equals(iIotUserService.checkPhoneUnique(user))) { + if (IoTUserConstants.NOT_UNIQUE.equals(ioTUserService.checkPhoneUnique(user))) { return error("修改个人信息失败,手机号码已存在"); } - IoTUser iotUser = iIotUserService.selectUserByUnionId(unionId); + IoTUser iotUser = ioTUserService.selectUserByUnionId(unionId); iotUser.setAlias(iotUserBo.getAlias()); iotUser.setEmail(iotUserBo.getEmail()); iotUser.setMobile(iotUserBo.getMobile()); @@ -87,7 +88,7 @@ public class SysProfileController extends BaseController { origin.set(IoTConstant.EXCLUSIVE_FIRST_LOGIN, latest.get(IoTConstant.EXCLUSIVE_FIRST_LOGIN)); iotUser.setCfg(JSONUtil.toJsonStr(origin)); } - iIotUserService.updateUserById(iotUser); + ioTUserService.updateUserById(iotUser); return AjaxResult.success(); } @@ -95,7 +96,7 @@ public class SysProfileController extends BaseController { @PutMapping("/updatePwd") public AjaxResult updatePwd(@RequestBody PasswordBO bo) { String unionId = SecurityUtils.getUnionId(); - IoTUser iotUser = iIotUserService.selectUserByUnionId(unionId); + IoTUser iotUser = ioTUserService.selectUserByUnionId(unionId); Matcher matcher = IoTConstant.pattern.matcher(bo.getNewPassword()); if (!matcher.matches()) { throw new IoTException("密码中必须包含字母、数字、特殊字符,至少8个字符,最多30个字符"); @@ -106,7 +107,7 @@ public class SysProfileController extends BaseController { iotUser.setPassword(SecurityUtils.encryptPassword(bo.getNewPassword())); iotUser.setUpdateBy(unionId); iotUser.setUpdateDate(new Date()); - iIotUserService.updateUserById(iotUser); + ioTUserService.updateUserById(iotUser); return AjaxResult.success(); } @@ -114,13 +115,13 @@ public class SysProfileController extends BaseController { @RequestMapping("/updateMobile/{mobile}") public AjaxResult updatePwd(@PathVariable("mobile") String mobile) { String unionId = SecurityUtils.getUnionId(); - IoTUser iotUser = iIotUserService.selectUserByUnionId(unionId); - IoTUser user = iIotUserService.selectUserByMobile(mobile); + IoTUser iotUser = ioTUserService.selectUserByUnionId(unionId); + IoTUser user = ioTUserService.selectUserByMobile(mobile); if (Objects.nonNull(user)) { throw new IoTException("手机号码已存在,请勿重复添加"); } else { iotUser.setMobile(mobile); - iIotUserService.updateUserById(iotUser); + ioTUserService.updateUserById(iotUser); return AjaxResult.success(); } } diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SysRoleController.java b/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SysRoleController.java index 2cefbdef8365057bec71781a1c51f1383543b2b6..b3f5842f54960365a0acbb906d6a490e919fc512 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SysRoleController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SysRoleController.java @@ -13,11 +13,11 @@ package cn.universal.admin.system.web; import cn.hutool.core.util.ObjectUtil; -import cn.universal.admin.common.annotation.Log; -import cn.universal.admin.common.enums.BusinessType; +import cn.universal.common.annotation.Log; +import cn.universal.common.enums.BusinessType; import cn.universal.admin.common.utils.ExcelUtil; -import cn.universal.admin.common.utils.SecurityUtils; -import cn.universal.admin.system.service.IIotUserService; +import cn.universal.security.utils.SecurityUtils; +import cn.universal.security.service.IoTUserService; import cn.universal.admin.system.service.ISysRoleService; import cn.universal.common.constant.IoTUserConstants; import cn.universal.common.exception.IoTException; @@ -27,6 +27,7 @@ import cn.universal.persistence.entity.admin.SysUserRole; import cn.universal.persistence.entity.bo.IoTUserBO; import cn.universal.persistence.page.TableDataInfo; import cn.universal.persistence.query.AjaxResult; +import cn.universal.security.BaseController; import jakarta.servlet.http.HttpServletResponse; import java.util.Arrays; import java.util.Date; @@ -49,11 +50,11 @@ public class SysRoleController extends BaseController { @Autowired private ISysRoleService roleService; - @Autowired private IIotUserService userService; + @Autowired private IoTUserService ioTUserService; @GetMapping("/list") public TableDataInfo list(SysRole role) { - if (!userService.selectUserByUnionId(SecurityUtils.getUnionId()).isAdmin()) { + if (!ioTUserService.selectUserByUnionId(SecurityUtils.getUnionId()).isAdmin()) { role.setCreateBy(SecurityUtils.getUnionId()); } startPage(); @@ -62,7 +63,7 @@ public class SysRoleController extends BaseController { @PostMapping("/export") public void export(HttpServletResponse response, SysRole role) { - if (!userService.selectUserByUnionId(SecurityUtils.getUnionId()).isAdmin()) { + if (!ioTUserService.selectUserByUnionId(SecurityUtils.getUnionId()).isAdmin()) { role.setCreateBy(SecurityUtils.getUnionId()); } List list = roleService.selectRoleList(role); @@ -88,7 +89,7 @@ public class SysRoleController extends BaseController { @Log(title = "新增角色", businessType = BusinessType.INSERT) public AjaxResult add(@Validated @RequestBody SysRole role) { String unionId = SecurityUtils.getUnionId(); - IoTUser parentUser = userService.selectUserByUnionId(unionId); + IoTUser parentUser = ioTUserService.selectUserByUnionId(unionId); if (!parentUser.isAdmin()) { throw new IoTException("你无权操作"); } @@ -196,7 +197,7 @@ public class SysRoleController extends BaseController { throw new IoTException("你无权操作"); } startPage(); - return getDataTable(userService.selectAllocatedList(iotUserBo)); + return getDataTable(ioTUserService.selectAllocatedList(iotUserBo)); } /** 查询未分配用户角色列表 */ @@ -211,7 +212,7 @@ public class SysRoleController extends BaseController { } startPage(); user.setCreateBy(SecurityUtils.getUnionId()); - return getDataTable(userService.selectUnallocatedList(user)); + return getDataTable(ioTUserService.selectUnallocatedList(user)); } /** 取消授权用户 */ diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SysUserController.java b/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SysUserController.java index a38bd0c6ce6a3260998cb19ed0fca44bfa236ef3..ae0b3b947815c6f4a69f1cdd644a69945a54e3e3 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SysUserController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SysUserController.java @@ -13,9 +13,9 @@ package cn.universal.admin.system.web; import cn.hutool.core.util.StrUtil; -import cn.universal.admin.common.utils.SecurityUtils; +import cn.universal.security.utils.SecurityUtils; import cn.universal.admin.system.permission.SysPermissionService; -import cn.universal.admin.system.service.IIotUserService; +import cn.universal.security.service.IoTUserService; import cn.universal.admin.system.service.ISysMenuService; import cn.universal.common.constant.IoTConstant; import cn.universal.common.domain.R; @@ -40,7 +40,7 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping("admin") public class SysUserController { - @Resource private IIotUserService iIotUserService; + @Resource private IoTUserService ioTUserService; @Resource private ISysMenuService menuService; @@ -55,7 +55,7 @@ public class SysUserController { @GetMapping("getInfo") public R getInfo(HttpServletRequest request) { final String unionId = SecurityUtils.getUnionId(); - IoTUser iotUser = iIotUserService.selectUserByUnionId(unionId); + IoTUser iotUser = ioTUserService.selectUserByUnionId(unionId); // 更新登录时间 // 角色集合 Set roles = permissionService.getRolePermission(iotUser); diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SystemProtocolController.java b/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SystemProtocolController.java index 36514774a70f1adb094bbe608d281621a3fa4aa7..5463197df9d6a1953d539cb770d95110211b23ae 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SystemProtocolController.java +++ b/cn-universal-admin/src/main/java/cn/universal/admin/system/web/SystemProtocolController.java @@ -17,6 +17,7 @@ import cn.universal.core.protocol.ProtocolModuleRegistry; import cn.universal.core.protocol.ProtocolModuleRuntimeRegistry; import cn.universal.core.service.IoTDownlFactory; import cn.universal.persistence.query.AjaxResult; +import cn.universal.security.BaseController; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.annotation.Resource; diff --git a/cn-universal-admin/src/main/resources/vm/java/controller.java.vm b/cn-universal-admin/src/main/resources/vm/java/controller.java.vm index 0fadc1f45fce49325b0343f67110485b24f329d7..38580fa4f76a8d1b767a9a9bb061054293adf1e1 100644 --- a/cn-universal-admin/src/main/resources/vm/java/controller.java.vm +++ b/cn-universal-admin/src/main/resources/vm/java/controller.java.vm @@ -10,7 +10,7 @@ import org.springframework.web.bind.annotation.RequestMapping; import ${packageName}.domain.${ClassName}; import ${packageName}.service.I${ClassName}Service; -import cn.universal.admin.system.web.BaseController; +import cn.universal.security.BaseController; import cn.universal.persistence.query.AjaxResult; import com.zebra.common.utils.poi.ExcelUtil; #if($table.crud) diff --git a/cn-universal-admin/src/main/resources/vm/java/serviceImpl.java.vm b/cn-universal-admin/src/main/resources/vm/java/serviceImpl.java.vm index 11807e0f263795ad83b4d8aa3379d3547245ac3a..e61d0486afcdda3569c9e69ce83d7399924432de 100644 --- a/cn-universal-admin/src/main/resources/vm/java/serviceImpl.java.vm +++ b/cn-universal-admin/src/main/resources/vm/java/serviceImpl.java.vm @@ -1,6 +1,6 @@ package ${packageName}.service.impl; -import cn.universal.admin.common.utils.SecurityUtils; +import cn.universal.security.utils.SecurityUtils; import java.util.Date; import java.util.List; #if($table.tree) diff --git a/cn-universal-framework/cn-universal-common/pom.xml b/cn-universal-framework/cn-universal-common/pom.xml index 766e526d4b8285b7c9fa1ef624c98e9539c9a9f2..d9b53a492c961555993feaae66a7a0a34b176e67 100644 --- a/cn-universal-framework/cn-universal-common/pom.xml +++ b/cn-universal-framework/cn-universal-common/pom.xml @@ -51,5 +51,11 @@ commons-fileupload commons-fileupload + + + org.lionsoul + ip2region + 2.7.0 + \ No newline at end of file diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/common/annotation/DataScope.java b/cn-universal-framework/cn-universal-common/src/main/java/cn/universal/common/annotation/DataScope.java similarity index 93% rename from cn-universal-admin/src/main/java/cn/universal/admin/common/annotation/DataScope.java rename to cn-universal-framework/cn-universal-common/src/main/java/cn/universal/common/annotation/DataScope.java index 8b20e5cc89e324e16607cd628eb49b1f550d72da..bb6a72452d6f68325415dd46ef9e9d607d5c4b0c 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/common/annotation/DataScope.java +++ b/cn-universal-framework/cn-universal-common/src/main/java/cn/universal/common/annotation/DataScope.java @@ -10,7 +10,7 @@ * */ -package cn.universal.admin.common.annotation; +package cn.universal.common.annotation; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/common/annotation/Log.java b/cn-universal-framework/cn-universal-common/src/main/java/cn/universal/common/annotation/Log.java similarity index 86% rename from cn-universal-admin/src/main/java/cn/universal/admin/common/annotation/Log.java rename to cn-universal-framework/cn-universal-common/src/main/java/cn/universal/common/annotation/Log.java index 0f6aef91c4562ce8e1f5e72e9d66f13090ac71ae..75cd95111f56783a4875aa05df93bbec5aff5b07 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/common/annotation/Log.java +++ b/cn-universal-framework/cn-universal-common/src/main/java/cn/universal/common/annotation/Log.java @@ -10,10 +10,10 @@ * */ -package cn.universal.admin.common.annotation; +package cn.universal.common.annotation; -import cn.universal.admin.common.enums.BusinessType; -import cn.universal.admin.common.enums.OperatorType; +import cn.universal.common.enums.BusinessType; +import cn.universal.common.enums.OperatorType; import java.lang.annotation.Documented; import java.lang.annotation.ElementType; import java.lang.annotation.Retention; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/common/enums/BusinessStatus.java b/cn-universal-framework/cn-universal-common/src/main/java/cn/universal/common/enums/BusinessStatus.java similarity index 90% rename from cn-universal-admin/src/main/java/cn/universal/admin/common/enums/BusinessStatus.java rename to cn-universal-framework/cn-universal-common/src/main/java/cn/universal/common/enums/BusinessStatus.java index 47aab017a2af006644a34aab76cbd75dceb433d9..a457de28f4bb9c276dd58d4fe5ee5274b664f97f 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/common/enums/BusinessStatus.java +++ b/cn-universal-framework/cn-universal-common/src/main/java/cn/universal/common/enums/BusinessStatus.java @@ -10,7 +10,7 @@ * */ -package cn.universal.admin.common.enums; +package cn.universal.common.enums; /** 操作状态枚举 */ public enum BusinessStatus { diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/common/enums/BusinessType.java b/cn-universal-framework/cn-universal-common/src/main/java/cn/universal/common/enums/BusinessType.java similarity index 93% rename from cn-universal-admin/src/main/java/cn/universal/admin/common/enums/BusinessType.java rename to cn-universal-framework/cn-universal-common/src/main/java/cn/universal/common/enums/BusinessType.java index b96c709d9b3839779d9a4cb361264afcdf40e0bb..347e7257ac188ad03737dba6320a6d1d7a7c772e 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/common/enums/BusinessType.java +++ b/cn-universal-framework/cn-universal-common/src/main/java/cn/universal/common/enums/BusinessType.java @@ -10,7 +10,7 @@ * */ -package cn.universal.admin.common.enums; +package cn.universal.common.enums; /** 业务操作类型枚举 */ public enum BusinessType { diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/common/enums/HttpMethod.java b/cn-universal-framework/cn-universal-common/src/main/java/cn/universal/common/enums/HttpMethod.java similarity index 95% rename from cn-universal-admin/src/main/java/cn/universal/admin/common/enums/HttpMethod.java rename to cn-universal-framework/cn-universal-common/src/main/java/cn/universal/common/enums/HttpMethod.java index 63178f5b690e4ac94d3935ce56e4d53e124b3ff9..893cf4ca1609aaa3c482cedbc1204e87a73494f3 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/common/enums/HttpMethod.java +++ b/cn-universal-framework/cn-universal-common/src/main/java/cn/universal/common/enums/HttpMethod.java @@ -10,7 +10,7 @@ * */ -package cn.universal.admin.common.enums; +package cn.universal.common.enums; import java.util.HashMap; import java.util.Map; diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/common/enums/OperatorType.java b/cn-universal-framework/cn-universal-common/src/main/java/cn/universal/common/enums/OperatorType.java similarity index 90% rename from cn-universal-admin/src/main/java/cn/universal/admin/common/enums/OperatorType.java rename to cn-universal-framework/cn-universal-common/src/main/java/cn/universal/common/enums/OperatorType.java index 9b0adf6617c973790e7cd36c3be3c9244758d6ab..8dbb4c68f8b6dcc2844aad71062dc08735ab00b1 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/common/enums/OperatorType.java +++ b/cn-universal-framework/cn-universal-common/src/main/java/cn/universal/common/enums/OperatorType.java @@ -10,7 +10,7 @@ * */ -package cn.universal.admin.common.enums; +package cn.universal.common.enums; /** 操作人类别枚举 */ public enum OperatorType { diff --git a/cn-universal-framework/cn-universal-common/src/main/java/cn/universal/common/utils/LocationUtils.java b/cn-universal-framework/cn-universal-common/src/main/java/cn/universal/common/utils/LocationUtils.java new file mode 100644 index 0000000000000000000000000000000000000000..9cd5c45e6a151c3ca57efd5b17963aff13926f67 --- /dev/null +++ b/cn-universal-framework/cn-universal-common/src/main/java/cn/universal/common/utils/LocationUtils.java @@ -0,0 +1,290 @@ +package cn.universal.common.utils; + +import cn.hutool.core.util.StrUtil; +import java.io.*; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.Map; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.TimeUnit; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.Validate; +import org.lionsoul.ip2region.xdb.Searcher; + +/** + * IP地址地理位置解析工具类(基于IP2Region增强版) 优化点:解决文件损坏问题、增强容错性、完善缓存机制 + * + * @author Aleo + */ +@Slf4j +public class LocationUtils { + + // IP2Region 数据库文件名(建议使用官网最新版) + private static final String IP2REGION_FILE_NAME = "ip2region_v4.xdb"; + // 缓存默认过期时间(1小时) + private static final long CACHE_EXPIRE_MILLIS = TimeUnit.HOURS.toMillis(1); + // 最大缓存数量(防止内存溢出) + private static final int MAX_CACHE_SIZE = 10_000; + + // IP解析结果缓存(value为数组:[地理位置, 过期时间戳]) + private static final ConcurrentHashMap IP_LOCATION_CACHE = + new ConcurrentHashMap<>(); + // IP2Region搜索器(volatile保证多线程可见性) + private static volatile Searcher searcher; + // 初始化锁(防止并发初始化导致的资源竞争) + private static final Object INIT_LOCK = new Object(); + + static { + // 类加载时初始化一次 + initialize(); + } + + /** 初始化IP2Region(带双重检查锁,避免并发问题) */ + private static void initialize() { + // 已初始化则直接返回 + if (searcher != null) { + return; + } + + synchronized (INIT_LOCK) { + if (searcher != null) { + return; + } + + log.info("开始初始化IP2Region,加载数据库文件: {}", IP2REGION_FILE_NAME); + try { + // 1. 尝试从资源文件加载 + byte[] dbBuffer = loadDbFile(); + if (dbBuffer == null || dbBuffer.length == 0) { + log.error("IP2Region数据库文件为空或不存在,将使用简单解析模式"); + return; + } + + // 2. 验证文件有效性(简单校验:文件大小至少1MB,避免明显损坏) + if (dbBuffer.length < 1024 * 1024) { + log.error("IP2Region数据库文件过小({} bytes),疑似损坏", dbBuffer.length); + return; + } + + // 3. 初始化搜索器 + searcher = Searcher.newWithBuffer(dbBuffer); + log.info("IP2Region初始化成功,数据库文件大小: {} bytes", dbBuffer.length); + + } catch (Exception e) { + log.error("IP2Region初始化失败,将使用简单解析模式", e); + searcher = null; + } + } + } + + /** 加载IP2Region数据库文件(支持资源文件和外部路径) */ + private static byte[] loadDbFile() throws IOException { + // 优先从项目资源目录加载 + try (InputStream is = + LocationUtils.class.getClassLoader().getResourceAsStream(IP2REGION_FILE_NAME)) { + if (is != null) { + return readInputStreamToBytes(is); + } + } + + // 尝试从外部路径加载(方便容器部署时挂载文件) + String externalPath = System.getProperty("ip2region.path", IP2REGION_FILE_NAME); + if (Files.exists(Paths.get(externalPath))) { + log.info("从外部路径加载IP2Region数据库: {}", externalPath); + return Files.readAllBytes(Paths.get(externalPath)); + } + + log.warn("未找到IP2Region数据库文件: {}(资源目录和外部路径均不存在)", IP2REGION_FILE_NAME); + return null; + } + + /** 分块读取输入流(避免大文件一次性加载导致OOM) */ + private static byte[] readInputStreamToBytes(InputStream is) throws IOException { + try (ByteArrayOutputStream os = new ByteArrayOutputStream(); + BufferedInputStream bis = new BufferedInputStream(is)) { + + byte[] buffer = new byte[8192]; + int len; + while ((len = bis.read(buffer)) != -1) { + os.write(buffer, 0, len); + } + return os.toByteArray(); + } + } + + /** + * 根据IP地址获取地理位置信息 + * + * @param ip IP地址(如183.219.12.163) + * @return 地理位置(格式:国家 省份 城市,如"中国 广东省 广州市") + */ + public static String getLocationByIp(String ip) { + // 无效IP直接返回 + if (isInvalidIp(ip)) { + return "未知"; + } + + // 检查缓存(过期自动清理) + Object[] cacheValue = IP_LOCATION_CACHE.get(ip); + if (cacheValue != null && cacheValue.length == 2) { + String location = (String) cacheValue[0]; + long expireTime = (long) cacheValue[1]; + if (System.currentTimeMillis() < expireTime) { + return location; // 缓存未过期 + } else { + IP_LOCATION_CACHE.remove(ip); // 缓存过期,移除 + } + } + + // 尝试使用IP2Region查询(失败则降级) + String location; + try { + // 确保初始化完成(若之前失败,此处会重试) + initialize(); + location = searcher != null ? queryByIp2Region(ip) : queryBySimpleMode(ip); + } catch (Exception e) { + log.warn("IP[{}]解析失败,自动降级到简单模式", ip, e); + location = queryBySimpleMode(ip); + } + + // 缓存结果(控制缓存大小) + if (IP_LOCATION_CACHE.size() < MAX_CACHE_SIZE) { + IP_LOCATION_CACHE.put( + ip, new Object[] {location, System.currentTimeMillis() + CACHE_EXPIRE_MILLIS}); + } else { + log.debug("IP缓存已达最大值({}),暂不缓存新结果", MAX_CACHE_SIZE); + } + + return location; + } + + /** 使用IP2Region查询地理位置 */ + private static String queryByIp2Region(String ip) { + try { + Validate.notNull(searcher, "IP2Region未初始化"); + + String region = searcher.search(ip); + if (StrUtil.isBlank(region)) { + return "未知"; + } + + // 解析格式:国家|省份|城市|...(过滤无效值"0") + String[] parts = region.split("\\|"); + StringBuilder location = new StringBuilder(); + + for (int i = 0; i < Math.min(3, parts.length); i++) { // 只取前3段(国家、省份、城市) + String part = parts[i].trim(); + if (StrUtil.isNotBlank(part) && !"0".equals(part)) { + if (location.length() > 0) { + location.append(" "); + } + location.append(part); + } + } + + return location.length() > 0 ? location.toString() : "未知"; + + } catch (Exception e) { + // 若出现数组越界等文件损坏特征,主动触发重新初始化 + if (e.getMessage() != null && e.getMessage().contains("arraycopy")) { + log.error("IP2Region数据库文件可能损坏,将尝试重新加载", e); + reset(); // 重置搜索器,下次查询会重新初始化 + } + throw new RuntimeException("IP2Region查询异常", e); + } + } + + /** 简单解析模式(降级方案) */ + private static String queryBySimpleMode(String ip) { + if (isPrivateIp(ip)) { + return "内网IP"; + } + if (isChineseIp(ip)) { + return "中国"; + } + return "未知"; + } + + // -------------------- 辅助方法 -------------------- + + /** 判断IP是否无效 */ + private static boolean isInvalidIp(String ip) { + return StrUtil.isBlank(ip) + || "unknown".equalsIgnoreCase(ip) + || "127.0.0.1".equals(ip) + || "localhost".equalsIgnoreCase(ip); + } + + /** 判断是否为私有IP(内网) */ + private static boolean isPrivateIp(String ip) { + return ip.startsWith("192.168.") + || ip.startsWith("10.") + || ip.matches("^172\\.(1[6-9]|2[0-9]|3[0-1])\\.") + || "127.0.0.1".equals(ip); + } + + /** 判断是否为中国IP(基于IP段特征) */ + private static boolean isChineseIp(String ip) { + String[] prefixes = { + "1.", "14.", "27.", "36.", "39.", "42.", "49.", "58.", "59.", "60.", "61.", "101.", "103.", + "106.", "110.", "111.", "112.", "113.", "114.", "115.", "116.", "117.", "118.", "119.", + "120.", "121.", "122.", "123.", "124.", "125.", "126.", "171.", "175.", "180.", "182.", + "183.", "202.", "203.", "210.", "211.", "218.", "219.", "220.", "221.", "222.", "223." + }; + for (String prefix : prefixes) { + if (ip.startsWith(prefix)) { + return true; + } + } + return false; + } + + // -------------------- 管理方法 -------------------- + + /** 重置IP2Region(强制重新初始化) */ + public static void reset() { + synchronized (INIT_LOCK) { + if (searcher != null) { + try { + searcher.close(); + } catch (IOException e) { + log.warn("关闭IP2Region搜索器失败", e); + } + searcher = null; + } + log.info("IP2Region已重置,下次查询将重新初始化"); + } + } + + /** 清理过期缓存(可定时调用) */ + public static void cleanExpiredCache() { + long now = System.currentTimeMillis(); + int removed = 0; + for (Map.Entry entry : IP_LOCATION_CACHE.entrySet()) { + if ((long) entry.getValue()[1] < now) { + IP_LOCATION_CACHE.remove(entry.getKey()); + removed++; + } + } + if (removed > 0) { + log.debug("清理过期IP缓存,共移除{}条记录", removed); + } + } + + /** 检查IP2Region是否可用 */ + public static boolean isAvailable() { + return searcher != null; + } + + /** 获取当前缓存大小 */ + public static int getCacheSize() { + return IP_LOCATION_CACHE.size(); + } + + /** 关闭资源(程序退出时调用) */ + public static void shutdown() { + reset(); + IP_LOCATION_CACHE.clear(); + log.info("IP2Region工具已关闭,缓存已清理"); + } +} diff --git a/cn-universal-framework/cn-universal-common/src/main/resources/ip2region_v4.xdb b/cn-universal-framework/cn-universal-common/src/main/resources/ip2region_v4.xdb new file mode 100644 index 0000000000000000000000000000000000000000..6f86c7d9b5ea27ecbe808e2be198bac1aaee0b92 Binary files /dev/null and b/cn-universal-framework/cn-universal-common/src/main/resources/ip2region_v4.xdb differ diff --git a/cn-universal-infrastructure/cn-universal-security/pom.xml b/cn-universal-infrastructure/cn-universal-security/pom.xml index 8747a378c3798767f9bc303906f328be3ab4d06b..aba47f78d5019d034cd9fed312341b437265fd02 100644 --- a/cn-universal-infrastructure/cn-universal-security/pom.xml +++ b/cn-universal-infrastructure/cn-universal-security/pom.xml @@ -70,11 +70,5 @@ org.springframework.boot - - cn.universal.iot - cn-universal-admin - ${project.version} - compile - \ No newline at end of file diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/system/web/BaseController.java b/cn-universal-infrastructure/cn-universal-security/src/main/java/cn/universal/security/BaseController.java similarity index 83% rename from cn-universal-admin/src/main/java/cn/universal/admin/system/web/BaseController.java rename to cn-universal-infrastructure/cn-universal-security/src/main/java/cn/universal/security/BaseController.java index 0d4d6aa4c0c9ff3d0ae9a931586ba492e7122bed..b0c05612559e6b590c37ac93bb9c2943cc0fa3d0 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/system/web/BaseController.java +++ b/cn-universal-infrastructure/cn-universal-security/src/main/java/cn/universal/security/BaseController.java @@ -1,14 +1,14 @@ -package cn.universal.admin.system.web; +package cn.universal.security; -import cn.universal.admin.common.utils.PageUtils; -import cn.universal.admin.common.utils.SecurityUtils; -import cn.universal.admin.system.service.IIotUserService; import cn.universal.common.utils.StringUtils; import cn.universal.persistence.entity.IoTUser; import cn.universal.persistence.page.PageDomain; +import cn.universal.persistence.page.PageUtils; import cn.universal.persistence.page.TableDataInfo; import cn.universal.persistence.page.TableSupport; import cn.universal.persistence.query.AjaxResult; +import cn.universal.security.service.IoTUserService; +import cn.universal.security.utils.SecurityUtils; import com.github.pagehelper.PageHelper; import com.github.pagehelper.PageInfo; import jakarta.annotation.Resource; @@ -27,7 +27,7 @@ public class BaseController { protected final Logger logger = LoggerFactory.getLogger(this.getClass()); - @Resource private IIotUserService iIotUserService; + @Resource private IoTUserService ioTUserService; /** 日期格式字符串自动转换Date */ @InitBinder @@ -45,16 +45,16 @@ public class BaseController { @Cacheable(cacheNames = "user_parent_entity", key = "''+#unionId", unless = "#result == null") public IoTUser loginIoTUnionUser(String unionId) { - IoTUser iotUser = iIotUserService.selectUserByUnionId(unionId); + IoTUser iotUser = ioTUserService.selectUserByUnionId(unionId); if (iotUser.getParentUnionId() != null) { - iotUser = iIotUserService.selectUserByUnionId(iotUser.getParentUnionId()); + iotUser = ioTUserService.selectUserByUnionId(iotUser.getParentUnionId()); return iotUser; } return iotUser; } public boolean isAdmin() { - IoTUser iotUser = iIotUserService.selectUserByUnionId(SecurityUtils.getUnionId()); + IoTUser iotUser = ioTUserService.selectUserByUnionId(SecurityUtils.getUnionId()); return iotUser.isAdmin(); } @@ -73,9 +73,8 @@ public class BaseController { } /** 响应请求分页数据 */ - @SuppressWarnings({"rawtypes", "unchecked"}) protected TableDataInfo getDataTable(List list, Integer total) { - TableDataInfo rspData = new TableDataInfo(); + TableDataInfo rspData = new TableDataInfo<>(); // 请求成功返回0 rspData.setCode(0); rspData.setMsg("查询成功"); @@ -85,9 +84,8 @@ public class BaseController { } /** 响应请求分页数据 */ - @SuppressWarnings({"rawtypes", "unchecked"}) protected TableDataInfo getDataTable(List list) { - TableDataInfo rspData = new TableDataInfo(); + TableDataInfo rspData = new TableDataInfo<>(); // 请求成功返回0 rspData.setCode(0); rspData.setMsg("查询成功"); diff --git a/cn-universal-infrastructure/cn-universal-security/src/main/java/cn/universal/security/KiteUserDetailsService.java b/cn-universal-infrastructure/cn-universal-security/src/main/java/cn/universal/security/KiteUserDetailsService.java index 6d9a12059225841f026e35c20542a6f47bb2757a..578e231f22e55a82bd3ff888a63f426cd2c04f1a 100644 --- a/cn-universal-infrastructure/cn-universal-security/src/main/java/cn/universal/security/KiteUserDetailsService.java +++ b/cn-universal-infrastructure/cn-universal-security/src/main/java/cn/universal/security/KiteUserDetailsService.java @@ -12,12 +12,12 @@ package cn.universal.security; -import cn.universal.admin.system.service.AsyncService; import cn.universal.common.constant.Constants; import cn.universal.common.constant.IoTConstant; import cn.universal.common.utils.ServletUtils; import cn.universal.persistence.entity.IoTUser; import cn.universal.persistence.mapper.IoTUserMapper; +import cn.universal.security.service.AdminLogService; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletRequest; import java.util.ArrayList; @@ -36,7 +36,7 @@ public class KiteUserDetailsService implements UserDetailsService { @Resource private IoTUserMapper iotUserMapper; - @Resource private AsyncService asyncService; + @Resource private AdminLogService adminLogService; @Override public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { @@ -56,11 +56,11 @@ public class KiteUserDetailsService implements UserDetailsService { if (iotUser == null) { HttpServletRequest request = ServletUtils.getRequest(); - asyncService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户名或密码错误", request); + adminLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户名或密码错误", request); throw new UsernameNotFoundException("the user is not found"); } else if (IoTConstant.UN_NORMAL.toString().equals(iotUser.getStatus())) { HttpServletRequest request = ServletUtils.getRequest(); - asyncService.recordLogininfor( + adminLogService.recordLogininfor( iotUser.getUsername(), Constants.LOGIN_FAIL, "用户已冻结,请联系管理员解冻", request); throw new UsernameNotFoundException("the user is disabled"); } diff --git a/cn-universal-infrastructure/cn-universal-security/src/main/java/cn/universal/security/provider/OAuth2CaptchaAuthenticationProvider.java b/cn-universal-infrastructure/cn-universal-security/src/main/java/cn/universal/security/provider/OAuth2CaptchaAuthenticationProvider.java index ed14de4807d00abaf9aa1c5dea66ccec9f588cb1..ed8c21e48894200d6d572b817315c8912b48c108 100644 --- a/cn-universal-infrastructure/cn-universal-security/src/main/java/cn/universal/security/provider/OAuth2CaptchaAuthenticationProvider.java +++ b/cn-universal-infrastructure/cn-universal-security/src/main/java/cn/universal/security/provider/OAuth2CaptchaAuthenticationProvider.java @@ -15,12 +15,12 @@ package cn.universal.security.provider; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; -import cn.universal.admin.system.service.AsyncService; -import cn.universal.admin.system.service.IIotUserService; import cn.universal.common.constant.Constants; import cn.universal.common.constant.IoTConstant; import cn.universal.common.utils.RSAUtils; import cn.universal.persistence.entity.IoTUser; +import cn.universal.security.service.AdminLogService; +import cn.universal.security.service.IoTUserService; import cn.universal.security.token.OAuth2CaptchaAuthenticationToken; import java.security.Principal; import java.util.concurrent.TimeUnit; @@ -59,8 +59,8 @@ public class OAuth2CaptchaAuthenticationProvider implements AuthenticationProvid @Autowired private StringRedisTemplate stringRedisTemplate; @Autowired private UserDetailsService userDetailsService; - @Autowired private AsyncService asyncService; - @Autowired private IIotUserService iIotUserService; + @Autowired private AdminLogService adminLogService; + @Autowired private IoTUserService ioTUserService; @Autowired private OAuth2AuthorizationService authorizationService; @Autowired private OAuth2TokenGenerator tokenGenerator; @@ -144,7 +144,7 @@ public class OAuth2CaptchaAuthenticationProvider implements AuthenticationProvid } // 独占式登录判断 - IoTUser user = iIotUserService.selectUserByUserName(username); + IoTUser user = ioTUserService.selectUserByUserName(username); if (ObjectUtil.isEmpty(user)) { stringRedisTemplate .opsForValue() @@ -171,7 +171,7 @@ public class OAuth2CaptchaAuthenticationProvider implements AuthenticationProvid // 注释密码验证,专注解决类型转换问题 BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); if (!passwordEncoder.matches(password, userDetails.getPassword())) { - asyncService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户名或密码错误", null); + adminLogService.recordLogininfor(username, Constants.LOGIN_FAIL, "用户名或密码错误", null); stringRedisTemplate .opsForValue() .set(retryKey, String.valueOf(retryCount + 1), 10, TimeUnit.MINUTES); @@ -182,7 +182,7 @@ public class OAuth2CaptchaAuthenticationProvider implements AuthenticationProvid } // 登录成功 - asyncService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "验证码登录成功", null); + adminLogService.recordLogininfor(username, Constants.LOGIN_SUCCESS, "验证码登录成功", null); stringRedisTemplate.delete(retryKey); stringRedisTemplate.delete(ipKey); diff --git a/cn-universal-infrastructure/cn-universal-security/src/main/java/cn/universal/security/provider/SmsAuthenticationProvider.java b/cn-universal-infrastructure/cn-universal-security/src/main/java/cn/universal/security/provider/SmsAuthenticationProvider.java index 85e14313a384a2c9b9b8f5caff763a0b54990711..1149e3659df809e37a8fe8e0918000f981fba0db 100644 --- a/cn-universal-infrastructure/cn-universal-security/src/main/java/cn/universal/security/provider/SmsAuthenticationProvider.java +++ b/cn-universal-infrastructure/cn-universal-security/src/main/java/cn/universal/security/provider/SmsAuthenticationProvider.java @@ -15,11 +15,11 @@ package cn.universal.security.provider; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONUtil; -import cn.universal.admin.system.service.AsyncService; -import cn.universal.admin.system.service.IIotUserService; import cn.universal.common.constant.Constants; import cn.universal.common.constant.IoTConstant; import cn.universal.persistence.entity.IoTUser; +import cn.universal.security.service.AdminLogService; +import cn.universal.security.service.IoTUserService; import cn.universal.security.token.SmsAuthenticationToken; import java.util.concurrent.TimeUnit; import org.springframework.beans.factory.annotation.Autowired; @@ -38,13 +38,11 @@ import org.springframework.util.StringUtils; @Component public class SmsAuthenticationProvider implements AuthenticationProvider { - + @Autowired private AdminLogService adminLogService; + @Autowired private IoTUserService ioTUserService; @Autowired private StringRedisTemplate stringRedisTemplate; @Autowired private UserDetailsService userDetailsService; - @Autowired private AsyncService asyncService; - @Autowired private IIotUserService iIotUserService; - private static final Integer maxRetryCount = 5; private static final Integer maxIpRetryCount = 15; @@ -95,7 +93,7 @@ public class SmsAuthenticationProvider implements AuthenticationProvider { } // 根据手机号查找用户 - IoTUser user = iIotUserService.selectUserByMobile(phone); + IoTUser user = ioTUserService.selectUserByMobile(phone); if (ObjectUtil.isEmpty(user)) { stringRedisTemplate .opsForValue() @@ -124,7 +122,8 @@ public class SmsAuthenticationProvider implements AuthenticationProvider { UserDetails userDetails = userDetailsService.loadUserByUsername(user.getUsername()); // 登录成功 - asyncService.recordLogininfor(user.getUsername(), Constants.LOGIN_SUCCESS, "短信验证码登录成功", null); + adminLogService.recordLogininfor( + user.getUsername(), Constants.LOGIN_SUCCESS, "短信验证码登录成功", null); stringRedisTemplate.delete(retryKey); stringRedisTemplate.delete(ipKey); diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/system/service/AsyncService.java b/cn-universal-infrastructure/cn-universal-security/src/main/java/cn/universal/security/service/AdminLogService.java similarity index 57% rename from cn-universal-admin/src/main/java/cn/universal/admin/system/service/AsyncService.java rename to cn-universal-infrastructure/cn-universal-security/src/main/java/cn/universal/security/service/AdminLogService.java index 965ba4705e63f9e97773f6b297dddabfeff145fd..a9c822f791292f485615d959be303416b99440ce 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/system/service/AsyncService.java +++ b/cn-universal-infrastructure/cn-universal-security/src/main/java/cn/universal/security/service/AdminLogService.java @@ -10,30 +10,32 @@ * */ -package cn.universal.admin.system.service; +package cn.universal.security.service; import cn.hutool.http.useragent.UserAgent; import cn.hutool.http.useragent.UserAgentUtil; import cn.universal.common.constant.Constants; import cn.universal.common.utils.IPUtils; +import cn.universal.common.utils.LocationUtils; import cn.universal.common.utils.ServletUtils; import cn.universal.persistence.entity.SysLogininfor; import cn.universal.persistence.entity.SysOperLog; +import cn.universal.persistence.mapper.SysLogininforMapper; +import cn.universal.persistence.mapper.SysOperLogMapper; +import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletRequest; +import java.util.Date; import lombok.extern.slf4j.Slf4j; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.scheduling.annotation.Async; import org.springframework.stereotype.Component; -/** 异步工厂(产生任务用) @Author Lion Li */ +/** 日志记录 */ @Slf4j -@Async @Component -public class AsyncService { +public class AdminLogService { - @Autowired private ISysLogininforService iSysLogininforService; + @Resource private SysLogininforMapper sysLogininforMapper; - @Autowired private ISysOperLogService iSysOperLogService; + @Resource private SysOperLogMapper sysOperLogMapper; /** * 记录登录信息 @@ -56,21 +58,7 @@ public class AsyncService { } catch (Exception e) { log.warn("无法获取HttpServletRequest,使用默认值记录登录信息: {}", e.getMessage()); // 创建默认的登录信息记录 - SysLogininfor logininfor = new SysLogininfor(); - logininfor.setUserName(username); - logininfor.setIpaddr("unknown"); - logininfor.setLoginLocation("unknown"); - logininfor.setBrowser("unknown"); - logininfor.setOs("unknown"); - logininfor.setMsg(message); - // 日志状态 - if (Constants.LOGIN_SUCCESS.equals(status) || Constants.LOGOUT.equals(status)) { - logininfor.setStatus(Constants.SUCCESS); - } else if (Constants.LOGIN_FAIL.equals(status)) { - logininfor.setStatus(Constants.FAIL); - } - // 插入数据 - iSysLogininforService.insertLogininfor(logininfor); + recordLogininforWithDefaults(username, status, message); return; } } @@ -82,9 +70,13 @@ public class AsyncService { String os = userAgent.getOs().getName(); // 浏览器 String browser = userAgent.getBrowser().getName(); + // 根据IP地址获取地理位置 + String location = LocationUtils.getLocationByIp(ip); + SysLogininfor login = new SysLogininfor(); login.setUserName(username); login.setIpaddr(ip); + login.setLoginLocation(location); login.setBrowser(browser); login.setOs(os); login.setMsg(message); @@ -94,8 +86,39 @@ public class AsyncService { } else if (Constants.LOGIN_FAIL.equals(status)) { login.setStatus(Constants.FAIL); } + login.setLoginTime(new Date()); // 插入数据 - iSysLogininforService.insertLogininfor(login); + sysLogininforMapper.insert(login); + } + + /** + * 使用默认值记录登录信息(用于无法获取HttpServletRequest的情况) + * + * @param username 用户名 + * @param status 状态 + * @param message 消息 + */ + private void recordLogininforWithDefaults( + final String username, + final String status, + final String message) { + // 创建默认的登录信息记录 + SysLogininfor logininfor = new SysLogininfor(); + logininfor.setUserName(username); + logininfor.setIpaddr("unknown"); + logininfor.setLoginLocation("未知"); + logininfor.setBrowser("unknown"); + logininfor.setOs("unknown"); + logininfor.setMsg(message); + // 日志状态 + if (Constants.LOGIN_SUCCESS.equals(status) || Constants.LOGOUT.equals(status)) { + logininfor.setStatus(Constants.SUCCESS); + } else if (Constants.LOGIN_FAIL.equals(status)) { + logininfor.setStatus(Constants.FAIL); + } + // 插入数据 + logininfor.setLoginTime(new Date()); + sysLogininforMapper.insert(logininfor); } /** @@ -105,7 +128,7 @@ public class AsyncService { */ public void recordOper(final SysOperLog operLog) { // 远程查询操作地点 - operLog.setOperLocation(operLog.getOperIp()); - iSysOperLogService.insertOperlog(operLog); + operLog.setOperTime(new Date()); + sysOperLogMapper.insert(operLog); } } diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/system/service/IIotUserService.java b/cn-universal-infrastructure/cn-universal-security/src/main/java/cn/universal/security/service/IoTUserService.java similarity index 37% rename from cn-universal-admin/src/main/java/cn/universal/admin/system/service/IIotUserService.java rename to cn-universal-infrastructure/cn-universal-security/src/main/java/cn/universal/security/service/IoTUserService.java index 9fe6b67d4abc0b39131bf0b5e7c7feb060f23e91..84285bd601af66f2df1bec3c2d930ebe7aa8eab0 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/system/service/IIotUserService.java +++ b/cn-universal-infrastructure/cn-universal-security/src/main/java/cn/universal/security/service/IoTUserService.java @@ -10,40 +10,38 @@ * */ -package cn.universal.admin.system.service; +package cn.universal.security.service; import cn.universal.persistence.entity.IoTUser; import cn.universal.persistence.entity.bo.IoTUserBO; import java.util.List; /** 用户业务层接口 */ -public interface IIotUserService { - - // TableDataInfo selectPageUserList(IoTUserBO user); +public interface IoTUserService { /** - * 根据条件分页查询用户列表 + * 查询用户列表 * - * @param user 用户信息 + * @param ioTUser 用户信息 * @return 用户信息集合信息 */ - public List selectUserList(IoTUser user); + List selectUserList(IoTUser ioTUser); /** - * 根据条件分页查询已分配用户角色列表 + * 查询已分配用户角色列表 * - * @param user 用户信息 + * @param ioTUser 用户信息 * @return 用户信息集合信息 */ - public List selectAllocatedList(IoTUserBO user); + List selectAllocatedList(IoTUserBO ioTUser); /** * 根据条件分页查询未分配用户角色列表 * - * @param user 用户信息 + * @param ioTUserBO 用户信息BO * @return 用户信息集合信息 */ - public List selectUnallocatedList(IoTUserBO user); + List selectUnallocatedList(IoTUserBO ioTUserBO); /** * 通过用户名查询用户 @@ -51,7 +49,7 @@ public interface IIotUserService { * @param userName 用户名 * @return 用户对象信息 */ - public IoTUser selectUserByUserName(String userName); + IoTUser selectUserByUserName(String userName); /** * 通过用户ID查询用户 @@ -59,7 +57,7 @@ public interface IIotUserService { * @param userId 用户ID * @return 用户对象信息 */ - public IoTUser selectUserById(Long userId); + IoTUser selectUserById(Long userId); /** * 通过用户手机号查询用户 @@ -67,7 +65,7 @@ public interface IIotUserService { * @param mobile 用户手机号 * @return 用户对象信息 */ - public IoTUser selectUserByMobile(String mobile); + IoTUser selectUserByMobile(String mobile); /** * 通过用户unionId查询用户 @@ -75,78 +73,54 @@ public interface IIotUserService { * @param * @return 用户对象信息 */ - public IoTUser selectUserByUnionId(String unionId); + IoTUser selectUserByUnionId(String unionId); /** * 查询用户 * - * @param iotUser 查询条件 + * @param ioTUser 查询条件 * @return */ - IoTUser queryOne(IoTUser iotUser); - - /** - * 根据用户ID查询用户所属角色组 - * - * @param userName 用户名 - * @return 结果 - */ - // public String selectUserRoleGroup(String userName); - - /** - * 根据用户ID查询用户所属岗位组 - * - * @param userName 用户名 - * @return 结果 - */ - // public String selectUserPostGroup(String userName); + IoTUser queryOne(IoTUser ioTUser); /** * 校验用户名称是否唯一 * - * @param user 用户 + * @param ioTUser 用户 * @return 结果 */ - public String checkUserNameUnique(IoTUser user); + String checkUserNameUnique(IoTUser ioTUser); /** * 校验手机号码是否唯一 * - * @param user 用户 - * @return 结果 - */ - public String checkPhoneUnique(IoTUser user); - - /** - * 校验email是否唯一 - * - * @param user 用户信息 + * @param ioTUser 用户 * @return 结果 */ - // public String checkEmailUnique(IoTUser user); + String checkPhoneUnique(IoTUser ioTUser); /** * 校验用户是否允许操作 * - * @param user 用户信息 + * @param ioTUser 用户信息 */ - public void checkUserAllowed(IoTUser user); + void checkUserAllowed(IoTUser ioTUser); /** * 新增用户信息 * - * @param userbo 用户信息 + * @param ioTUserBO 用户信息 * @return 结果 */ - public int insertUser(IoTUserBO userbo); + int insertUser(IoTUserBO ioTUserBO); /** * 修改用户信息 * - * @param user 用户信息 + * @param ioTUserBO 用户信息 * @return 结果 */ - public int updateUser(IoTUserBO user); + int updateUser(IoTUserBO ioTUserBO); void updateUserById(IoTUser iotUser); @@ -158,63 +132,13 @@ public interface IIotUserService { */ public void insertUserAuth(String unionId, Long[] roleIds); - /** - * 授权子账户 - * - * @param id - * @param unionId - */ - public void addSubAccount(Long id, String unionId, int isSub); - - /** - * 修改用户状态 - * - * @param user 用户信息 - * @return 结果 - */ - // public int updateUserStatus(IoTUser user); - - /** - * 修改用户基本信息 - * - * @param user 用户信息 - * @return 结果 - */ - // public int updateUserProfile(IoTUser user); - - /** - * 修改用户头像 - * - * @param userName 用户名 - * @param avatar 头像地址 - * @return 结果 - */ - // public boolean updateUserAvatar(String userName, String avatar); - - /** - * 重置用户密码 - * - * @param user 用户信息 - * @return 结果 - */ - // public int resetPwd(IoTUser user); - - /** - * 重置用户密码 - * - * @param userName 用户名 - * @param password 密码 - * @return 结果 - */ - // public int resetUserPwd(String userName, String password); - /** * 通过用户ID删除用户 * * @param userId 用户ID * @return 结果 */ - public int deleteUserById(Long userId); + int deleteUserById(Long userId); /** * 批量删除用户信息 @@ -222,17 +146,5 @@ public interface IIotUserService { * @param userIds 需要删除的用户ID * @return 结果 */ - public int deleteUserByIds(Long[] userIds); - - /** - * 导入用户数据 - * - * @param userList 用户数据列表 - * @param isUpdateSupport 是否更新支持,如果已存在,则进行更新数据 - * @param operName 操作用户 - * @return 结果 - */ - // public String importUser(List userList, Boolean isUpdateSupport, String operName); - - /*public int addUser(IoTUserBO sysUserBo, IoTUser user);*/ + int deleteUserByIds(Long[] userIds); } diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/system/service/impl/IoTUserServiceImpl.java b/cn-universal-infrastructure/cn-universal-security/src/main/java/cn/universal/security/service/impl/IoTUserServiceImpl.java similarity index 89% rename from cn-universal-admin/src/main/java/cn/universal/admin/system/service/impl/IoTUserServiceImpl.java rename to cn-universal-infrastructure/cn-universal-security/src/main/java/cn/universal/security/service/impl/IoTUserServiceImpl.java index 72f215fd34a565a4352637c5712512c75a4c2b50..4878000be7c3cdac2ddda7cca7d630ca66434c33 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/system/service/impl/IoTUserServiceImpl.java +++ b/cn-universal-infrastructure/cn-universal-security/src/main/java/cn/universal/security/service/impl/IoTUserServiceImpl.java @@ -13,13 +13,11 @@ * */ -package cn.universal.admin.system.service.impl; +package cn.universal.security.service.impl; import cn.hutool.core.bean.BeanUtil; import cn.hutool.core.lang.Validator; import cn.hutool.core.util.IdUtil; -import cn.universal.admin.system.service.IIotUserService; -import cn.universal.admin.system.service.ISysRoleService; import cn.universal.common.constant.IoTUserConstants; import cn.universal.common.exception.IoTException; import cn.universal.common.utils.StringUtils; @@ -30,6 +28,7 @@ import cn.universal.persistence.entity.bo.IoTUserBO; import cn.universal.persistence.mapper.IoTDeviceMapper; import cn.universal.persistence.mapper.IoTUserMapper; import cn.universal.persistence.mapper.admin.SysUserRoleMapper; +import cn.universal.security.service.IoTUserService; import jakarta.annotation.Resource; import java.util.ArrayList; import java.util.Arrays; @@ -46,14 +45,13 @@ import tk.mybatis.mapper.entity.Example; /** 用户 业务层处理 @Author ruoyi */ @Slf4j @Service -public class IoTUserServiceImpl implements IIotUserService { +public class IoTUserServiceImpl implements IoTUserService { @Resource private IoTUserMapper iotUserMapper; @Resource private SysUserRoleMapper userRoleMapper; // @Resource // private OauthClientDetailsMapper oauthClientDetailsMapper; @Resource private IoTDeviceMapper ioTDeviceMapper; - @Resource private ISysRoleService iSysRoleService; @Override // @DataScope(alias = "", created = "u.create_by") @@ -76,7 +74,6 @@ public class IoTUserServiceImpl implements IIotUserService { public IoTUser selectUserByUnionId(String unionId) { Example ex = new Example(IoTUser.class); ex.createCriteria().andEqualTo("unionId", unionId).andEqualTo("deleted", 0); - ; return iotUserMapper.selectOneByExample(ex); } @@ -224,7 +221,7 @@ public class IoTUserServiceImpl implements IIotUserService { public void insertUserRole(IoTUserBO user) { Long[] roles = user.getRoleIds(); if (StringUtils.isNotNull(roles)) { - // 新增用户与角色管理 + // 增加用户与角色 List list = new ArrayList(); for (Long roleId : roles) { SysUserRole ur = new SysUserRole(); @@ -241,12 +238,12 @@ public class IoTUserServiceImpl implements IIotUserService { /** * 删除用户角色信息 * - * @param user 用户对象 + * @param ioTUserBO 用户对象 */ - public void deleteUserRoleByUnionId(IoTUserBO user) { - if (user.getRoleIds() != null) { + public void deleteUserRoleByUnionId(IoTUserBO ioTUserBO) { + if (ioTUserBO.getRoleIds() != null) { Example ex = new Example(SysUserRole.class); - ex.createCriteria().andEqualTo("unionId", user.getUnionId()); + ex.createCriteria().andEqualTo("unionId", ioTUserBO.getUnionId()); userRoleMapper.deleteByExample(ex); } } @@ -265,15 +262,4 @@ public class IoTUserServiceImpl implements IIotUserService { userRoleMapper.deleteByExample(ex); insertUserRole(IoTUserBO.builder().unionId(unionId).roleIds(roleIds).build()); } - - @Override - @Transactional - public void addSubAccount(Long id, String unionId, int isSub) { - // isSub为1时为授权绑定 否则为取消授权 - if (isSub == 1) { - updateUserById(IoTUser.builder().id(id).parentUnionId(unionId).build()); - } else { - updateUserById(IoTUser.builder().id(id).parentUnionId("").build()); - } - } } diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/common/utils/SecurityUtils.java b/cn-universal-infrastructure/cn-universal-security/src/main/java/cn/universal/security/utils/SecurityUtils.java similarity index 87% rename from cn-universal-admin/src/main/java/cn/universal/admin/common/utils/SecurityUtils.java rename to cn-universal-infrastructure/cn-universal-security/src/main/java/cn/universal/security/utils/SecurityUtils.java index 0754ea184f787031ac33e597300ccd7f7c8f57e0..f698169fa39697effb0dc4837f80a97838c36f35 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/common/utils/SecurityUtils.java +++ b/cn-universal-infrastructure/cn-universal-security/src/main/java/cn/universal/security/utils/SecurityUtils.java @@ -10,14 +10,14 @@ * */ -package cn.universal.admin.common.utils; +package cn.universal.security.utils; import cn.hutool.core.util.StrUtil; import cn.hutool.http.HttpStatus; -import cn.universal.admin.system.service.IIotUserService; import cn.universal.common.exception.BaseException; import cn.universal.common.exception.IoTException; import cn.universal.persistence.entity.IoTUser; +import cn.universal.security.service.IoTUserService; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; @@ -93,8 +93,8 @@ public class SecurityUtils { throw new BaseException("获取用户信息异常", HttpStatus.HTTP_UNAUTHORIZED + ""); } try { - IIotUserService iIotUserService = applicationContext.getBean(IIotUserService.class); - return iIotUserService.selectUserByUserName(username); + IoTUserService ioTUserService = applicationContext.getBean(IoTUserService.class); + return ioTUserService.selectUserByUserName(username); } catch (Exception e) { throw new BaseException("获取用户信息异常", HttpStatus.HTTP_UNAUTHORIZED + ""); } @@ -106,8 +106,8 @@ public class SecurityUtils { throw new BaseException("获取用户信息异常", HttpStatus.HTTP_UNAUTHORIZED + ""); } try { - IIotUserService iIotUserService = applicationContext.getBean(IIotUserService.class); - return iIotUserService.selectUserByUnionId(unionId); + IoTUserService ioTUserService = applicationContext.getBean(IoTUserService.class); + return ioTUserService.selectUserByUnionId(unionId); } catch (Exception e) { throw new BaseException("获取用户信息异常", HttpStatus.HTTP_UNAUTHORIZED + ""); } @@ -132,12 +132,11 @@ public class SecurityUtils { /** * 判断密码是否相同 * - * @param rawPassword 真实密码 - * @param encodedPassword 加密后字符 - * @return 结果 + * @param realPwd 真实密码 + * @param hexPwd 加密后字符 */ - public static boolean matchesPassword(String rawPassword, String encodedPassword) { + public static boolean matchesPassword(String realPwd, String hexPwd) { BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder(); - return passwordEncoder.matches(rawPassword, encodedPassword); + return passwordEncoder.matches(realPwd, hexPwd); } } diff --git a/cn-universal-admin/src/main/java/cn/universal/admin/common/utils/PageUtils.java b/cn-universal-persistence/src/main/java/cn/universal/persistence/page/PageUtils.java similarity index 79% rename from cn-universal-admin/src/main/java/cn/universal/admin/common/utils/PageUtils.java rename to cn-universal-persistence/src/main/java/cn/universal/persistence/page/PageUtils.java index 9f84c8f1ecf82ec411ec7b28d85add18b8374e89..58b5998ae413285249314dc57652f983f98f1660 100644 --- a/cn-universal-admin/src/main/java/cn/universal/admin/common/utils/PageUtils.java +++ b/cn-universal-persistence/src/main/java/cn/universal/persistence/page/PageUtils.java @@ -10,12 +10,9 @@ * */ -package cn.universal.admin.common.utils; +package cn.universal.persistence.page; import cn.universal.common.utils.StringUtils; -import cn.universal.persistence.page.PageDomain; -import cn.universal.persistence.page.TableDataInfo; -import cn.universal.persistence.page.TableSupport; import com.github.pagehelper.Page; import com.github.pagehelper.PageHelper; import java.util.List; @@ -35,8 +32,8 @@ public class PageUtils extends PageHelper { } /** 封装分页数据 */ - public static TableDataInfo getDataTable(List list) { - TableDataInfo rspData = new TableDataInfo(); + public static TableDataInfo getDataTable(List list) { + TableDataInfo rspData = new TableDataInfo<>(); rspData.setCode(0); rspData.setRows(list); rspData.setMsg("查询成功"); diff --git a/cn-universal-persistence/src/main/java/cn/universal/persistence/query/IoTAPIQuery.java b/cn-universal-persistence/src/main/java/cn/universal/persistence/query/IoTAPIQuery.java index 338cc8ecbea5404222214a77973a1b1d10f9b284..eead9a144652f9ba0638a23101e5167f1e725745 100644 --- a/cn-universal-persistence/src/main/java/cn/universal/persistence/query/IoTAPIQuery.java +++ b/cn-universal-persistence/src/main/java/cn/universal/persistence/query/IoTAPIQuery.java @@ -12,6 +12,7 @@ package cn.universal.persistence.query; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -29,14 +30,19 @@ import lombok.NoArgsConstructor; @EqualsAndHashCode(callSuper = false) public class IoTAPIQuery extends BasePage { - private String applicationId; + @Schema(name = "extDeviceId", description = "网关设备deviceId、第三方平台iotId") + private String extDeviceId; - private String application; + @Schema(name = "applicationId", description = "应用主键Id") + private String applicationId; + @Schema(name = "iotUnionId", description = "设备归属者,一般是createId") private String iotUnionId; + @Schema(name = "iotId", description = "productKey+deviceId") private String iotId; + @Schema(name = "productName", description = "产品名称") private String productName; private String productKey; diff --git a/cn-universal-persistence/src/main/resources/mybatis/IoTDeviceMapper.xml b/cn-universal-persistence/src/main/resources/mybatis/IoTDeviceMapper.xml index 32ba197690f064d817a7ff2e2a87d3a9db26813c..05cee2c991ddd83a8fe1dd2afab6a9ea685baf3b 100644 --- a/cn-universal-persistence/src/main/resources/mybatis/IoTDeviceMapper.xml +++ b/cn-universal-persistence/src/main/resources/mybatis/IoTDeviceMapper.xml @@ -325,6 +325,9 @@ AND a.device_id = #{deviceId} + + AND a.ext_device_id = #{extDeviceId} + AND a.iot_id = #{iotId} diff --git a/cn-universal-web/src/main/java/cn/universal/web/controller/DashboardController.java b/cn-universal-web/src/main/java/cn/universal/web/controller/DashboardController.java index cc5af563203ac068ac6dea462f6d9cd60be46df9..468c2759b32399734a5d09c720a09ad7bdef4cd9 100644 --- a/cn-universal-web/src/main/java/cn/universal/web/controller/DashboardController.java +++ b/cn-universal-web/src/main/java/cn/universal/web/controller/DashboardController.java @@ -1,9 +1,9 @@ package cn.universal.web.controller; -import cn.universal.admin.common.utils.SecurityUtils; -import cn.universal.admin.system.web.BaseController; import cn.universal.dm.device.service.DashboardService; import cn.universal.dm.device.service.DashboardStatisticsTask; +import cn.universal.security.BaseController; +import cn.universal.security.utils.SecurityUtils; import java.time.LocalDate; import java.util.Map; import lombok.extern.slf4j.Slf4j; @@ -27,9 +27,11 @@ import org.springframework.web.bind.annotation.RestController; @RequestMapping("/dashboard") public class DashboardController extends BaseController { - @Autowired private DashboardService dashboardService; + @Autowired + private DashboardService dashboardService; - @Autowired private DashboardStatisticsTask dashboardStatisticsTask; + @Autowired + private DashboardStatisticsTask dashboardStatisticsTask; /** * 获取仪表盘首页数据 包含:设备总数、在线设备、今日消息、成功率等概览数据 对应图片中的4个顶部概览卡片 @@ -167,7 +169,8 @@ public class DashboardController extends BaseController { log.info("[仪表盘] 清理重复统计数据,日期: {}", cleanupDate); dashboardStatisticsTask.cleanupDuplicateStatistics(cleanupDate); - return Map.of("success", true, "message", "重复统计数据清理完成", "date", cleanupDate.toString()); + return Map.of("success", true, "message", "重复统计数据清理完成", "date", + cleanupDate.toString()); } /** @@ -184,16 +187,15 @@ public class DashboardController extends BaseController { /** * 获取图表数据 支持多种图表类型 * - * @param date 统计日期 - * @param type 图表类型:device_trend(设备趋势)、message_trend(消息趋势)、 - * channel_distribution(渠道分布)、performance_metrics(性能指标) + * @param date 统计日期 + * @param type 图表类型:device_trend(设备趋势)、message_trend(消息趋势)、 + * channel_distribution(渠道分布)、performance_metrics(性能指标) * @param channel 渠道(可选) * @return 图表数据 */ @GetMapping("/chart-data") public Map getChartData( - @RequestParam(value = "date", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") - LocalDate date, + @RequestParam(value = "date", required = false) @DateTimeFormat(pattern = "yyyy-MM-dd") LocalDate date, @RequestParam("type") String type, @RequestParam(value = "channel", required = false) String channel) { diff --git a/cn-universal-web/src/main/java/cn/universal/web/controller/FenceController.java b/cn-universal-web/src/main/java/cn/universal/web/controller/FenceController.java index fb68be94fb0e18c4d68ed46f1d06fa2cfa042994..d0d486ed85fcde523f9e152f3d18d31f89f3fab5 100644 --- a/cn-universal-web/src/main/java/cn/universal/web/controller/FenceController.java +++ b/cn-universal-web/src/main/java/cn/universal/web/controller/FenceController.java @@ -15,7 +15,7 @@ package cn.universal.web.controller; import cn.hutool.core.util.StrUtil; import cn.hutool.json.JSONObject; import cn.universal.admin.platform.service.IIoTDeviceService; -import cn.universal.admin.system.web.BaseController; +import cn.universal.security.BaseController; import cn.universal.common.domain.R; import cn.universal.persistence.entity.IoTDevice; import cn.universal.persistence.entity.IoTDeviceFenceRel; diff --git a/cn-universal-web/src/main/java/cn/universal/web/controller/IoTApiController.java b/cn-universal-web/src/main/java/cn/universal/web/controller/IoTApiController.java index 6e16977cbf5a1d0ca8b981262903c31e19460c77..1a3e11c230ba76aad64caee54d37b7f9d840031a 100644 --- a/cn-universal-web/src/main/java/cn/universal/web/controller/IoTApiController.java +++ b/cn-universal-web/src/main/java/cn/universal/web/controller/IoTApiController.java @@ -14,7 +14,6 @@ package cn.universal.web.controller; import cn.hutool.json.JSONObject; import cn.universal.admin.platform.service.IIoTProductService; -import cn.universal.admin.system.web.BaseController; import cn.universal.common.domain.R; import cn.universal.core.service.IoTDownlFactory; import cn.universal.dm.device.entity.IoTDevicePropertiesBO; @@ -25,6 +24,7 @@ import cn.universal.persistence.entity.IoTProduct; import cn.universal.persistence.entity.vo.IoTDeviceLogMetadataVO; import cn.universal.persistence.query.LogQuery; import cn.universal.persistence.query.PageBean; +import cn.universal.security.BaseController; import cn.universal.web.context.IoTInnerAuthContext; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletRequest; @@ -53,35 +53,48 @@ import org.springframework.web.bind.annotation.RestController; @Slf4j(topic = "api_log") public class IoTApiController extends BaseController { - /** IoT产品设备服务 */ - @Resource private IoTProductDeviceService iotProductDeviceService; + /** + * IoT产品设备服务 + */ + @Resource + private IoTProductDeviceService iotProductDeviceService; - /** IoT设备影子服务 */ - @Resource private IoTDeviceShadowService iotDeviceShadowService; + /** + * IoT设备影子服务 + */ + @Resource + private IoTDeviceShadowService iotDeviceShadowService; - /** IoT内部认证上下文 */ - @Resource private IoTInnerAuthContext ioTInnerAuthContext; + /** + * IoT内部认证上下文 + */ + @Resource + private IoTInnerAuthContext ioTInnerAuthContext; - /** 设备产品服务 */ - @Resource private IIoTProductService devProductService; + /** + * 设备产品服务 + */ + @Resource + private IIoTProductService devProductService; - /** IoT设备数据服务 */ - @Autowired private IIoTDeviceDataService iIoTDeviceDataService; + /** + * IoT设备数据服务 + */ + @Autowired + private IIoTDeviceDataService iIoTDeviceDataService; /** * 设备下行指令发送(加密版本) * *

向指定产品的设备发送加密的下行指令,支持消息验证和解密 * - * @param productKey 产品标识 + * @param productKey 产品标识 * @param downRequest 加密的下行请求内容 - * @param request HTTP请求对象 + * @param request HTTP请求对象 * @return 处理结果 */ @RequestMapping("/v1/down/{productKey}") - public R iotDown( - @PathVariable("productKey") String productKey, - @RequestBody String downRequest, + public R iotDown(@PathVariable("productKey") String productKey, @RequestBody String downRequest, HttpServletRequest request) { JSONObject data = ioTInnerAuthContext.checkAndDecryptMsg(downRequest, request); IoTProduct ioTProduct = iotProductDeviceService.getProduct(productKey); @@ -126,8 +139,8 @@ public class IoTApiController extends BaseController { */ @PostMapping("/device/meta/list") public Object logMeta(@RequestBody LogQuery logQuery) { - PageBean devLogMetaVoPageBean = - iIoTDeviceDataService.queryLogMeta(logQuery); + PageBean devLogMetaVoPageBean = iIoTDeviceDataService.queryLogMeta( + logQuery); return devLogMetaVoPageBean; } diff --git a/cn-universal-web/src/main/java/cn/universal/web/controller/common/BaseApiController.java b/cn-universal-web/src/main/java/cn/universal/web/controller/common/BaseApiController.java index 6f81cdee9021bac1cdf7ca2c76f95b87ea86a5ab..0dfa3f502474da8a10715275c16e82078841c546 100644 --- a/cn-universal-web/src/main/java/cn/universal/web/controller/common/BaseApiController.java +++ b/cn-universal-web/src/main/java/cn/universal/web/controller/common/BaseApiController.java @@ -14,7 +14,6 @@ package cn.universal.web.controller.common; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.util.StrUtil; -import cn.universal.admin.system.service.IIotUserService; import cn.universal.admin.system.service.impl.UserApplicationService; import cn.universal.common.exception.IoTErrorCode; import cn.universal.common.exception.IoTException; @@ -32,13 +31,15 @@ import java.util.List; */ public class BaseApiController { - @Resource protected IoTDeviceService iotDeviceService; + @Resource + protected IoTDeviceService iotDeviceService; - @Resource private IoTProductDeviceService iotProductDeviceService; + @Resource + private IoTProductDeviceService iotProductDeviceService; - @Resource protected UserApplicationService userApplicationService; + @Resource + protected UserApplicationService userApplicationService; - @Resource private IIotUserService iIotUserService; /*** * 获取用户唯一标志