Browse Source

refactor:报错内容修改

xiwa 2 years ago
parent
commit
092c7f9cc3
32 changed files with 628 additions and 662 deletions
  1. 0 5
      iot-common/iot-common-core/pom.xml
  2. 5 0
      iot-common/iot-common-log/pom.xml
  3. 5 0
      iot-common/iot-common-satoken/pom.xml
  4. 1 1
      iot-common/iot-common-satoken/src/main/java/cc/iotkit/common/satoken/listener/UserActionListener.java
  5. 92 92
      iot-common/iot-common-tenant/src/main/java/cc/iotkit/common/tenant/config/TenantConfig.java
  6. 55 55
      iot-common/iot-common-tenant/src/main/java/cc/iotkit/common/tenant/handle/PlusTenantLineHandler.java
  7. 59 59
      iot-common/iot-common-tenant/src/main/java/cc/iotkit/common/tenant/handle/TenantKeyPrefixHandler.java
  8. 138 137
      iot-common/iot-common-tenant/src/main/java/cc/iotkit/common/tenant/helper/TenantHelper.java
  9. 32 32
      iot-common/iot-common-tenant/src/main/java/cc/iotkit/common/tenant/manager/TenantSpringCacheManager.java
  10. 10 11
      iot-common/iot-common-web/pom.xml
  11. 1 1
      iot-common/iot-common-web/src/main/java/cc/iotkit/common/web/config/FilterConfig.java
  12. 0 30
      iot-common/iot-common-web/src/main/java/cc/iotkit/common/web/config/UndertowConfig.java
  13. 2 2
      iot-common/iot-common-web/src/main/java/cc/iotkit/common/web/filter/RepeatableFilter.java
  14. 5 5
      iot-common/iot-common-web/src/main/java/cc/iotkit/common/web/filter/RepeatedlyRequestWrapper.java
  15. 5 6
      iot-common/iot-common-web/src/main/java/cc/iotkit/common/web/filter/XssFilter.java
  16. 4 4
      iot-common/iot-common-web/src/main/java/cc/iotkit/common/web/filter/XssHttpServletRequestWrapper.java
  17. 2 1
      iot-common/iot-common-web/src/main/java/cc/iotkit/common/web/handler/ResponseResultHandler.java
  18. 3 2
      iot-common/iot-common-web/src/main/java/cc/iotkit/common/web/interceptor/PlusWebInvokeTimeInterceptor.java
  19. 15 10
      iot-common/iot-common-web/src/main/java/cc/iotkit/common/web/utils/ServletUtils.java
  20. 5 0
      iot-components/iot-component-server/pom.xml
  21. 1 1
      iot-components/iot-component-server/src/main/java/cc/iotkit/comps/ApiTool.java
  22. 1 1
      iot-components/iot-component-server/src/main/java/cc/iotkit/comps/DeviceComponentManager.java
  23. 1 1
      iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/DeviceBehaviourService.java
  24. 1 1
      iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/DeviceConfigConsumer.java
  25. 1 1
      iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/DeviceMessageConsumer.java
  26. 1 1
      iot-components/iot-component-server/src/main/java/cc/iotkit/comps/service/DevicePropertyConsumer.java
  27. 1 4
      iot-module/iot-system/src/main/java/cc/iotkit/system/dto/vo/SysMenuVo.java
  28. 0 7
      iot-module/iot-system/src/main/java/cc/iotkit/system/mapper/SysMenuMapper.java
  29. 0 2
      iot-module/iot-system/src/main/java/cc/iotkit/system/mapper/SysPostMapper.java
  30. 0 8
      iot-module/iot-system/src/main/java/cc/iotkit/system/mapper/SysRoleMapper.java
  31. 2 2
      iot-module/iot-system/src/main/java/cc/iotkit/system/service/impl/SysLogininforServiceImpl.java
  32. 180 180
      iot-module/iot-system/src/main/java/cc/iotkit/system/service/impl/SysOssConfigServiceImpl.java

+ 0 - 5
iot-common/iot-common-core/pom.xml

@@ -80,11 +80,6 @@
             <artifactId>mapstruct-plus-spring-boot-starter</artifactId>
         </dependency>
 
-        <dependency>
-            <groupId>jakarta.servlet</groupId>
-            <artifactId>jakarta.servlet-api</artifactId>
-        </dependency>
-
         <dependency>
             <groupId>jakarta.validation</groupId>
             <artifactId>jakarta.validation-api</artifactId>

+ 5 - 0
iot-common/iot-common-log/pom.xml

@@ -38,6 +38,11 @@
             <artifactId>iot-common-core</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>cc.iotkit</groupId>
+            <artifactId>iot-common-web</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>cc.iotkit</groupId>
             <artifactId>iot-common-satoken</artifactId>

+ 5 - 0
iot-common/iot-common-satoken/pom.xml

@@ -35,6 +35,11 @@
             <artifactId>iot-common-redis</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>cc.iotkit</groupId>
+            <artifactId>iot-common-web</artifactId>
+        </dependency>
+
     </dependencies>
 
     <build>

+ 1 - 1
iot-common/iot-common-satoken/src/main/java/cc/iotkit/common/satoken/listener/UserActionListener.java

@@ -6,8 +6,8 @@ import cc.iotkit.common.redis.utils.RedisUtils;
 import cc.iotkit.common.satoken.utils.LoginHelper;
 import cc.iotkit.common.undefined.LoginUser;
 import cc.iotkit.common.undefined.UserOnlineDTO;
-import cc.iotkit.common.utils.ServletUtils;
 import cc.iotkit.common.utils.ip.AddressUtils;
+import cc.iotkit.common.web.utils.ServletUtils;
 import cn.dev33.satoken.config.SaTokenConfig;
 import cn.dev33.satoken.listener.SaTokenListener;
 import cn.dev33.satoken.stp.SaLoginModel;

+ 92 - 92
iot-common/iot-common-tenant/src/main/java/cc/iotkit/common/tenant/config/TenantConfig.java

@@ -1,92 +1,92 @@
-package cc.iotkit.common.tenant.config;
-
-import cc.iotkit.common.redis.config.RedisConfig;
-import cc.iotkit.common.tenant.core.TenantSaTokenDao;
-import cc.iotkit.common.tenant.manager.TenantSpringCacheManager;
-import cc.iotkit.common.tenant.properties.TenantProperties;
-import cc.iotkit.common.utils.ReflectUtils;
-import cn.dev33.satoken.dao.SaTokenDao;
-import cn.hutool.core.util.ObjectUtil;
-import org.redisson.config.ClusterServersConfig;
-import org.redisson.config.SingleServerConfig;
-import org.redisson.spring.starter.RedissonAutoConfigurationCustomizer;
-import org.springframework.boot.autoconfigure.AutoConfiguration;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.boot.context.properties.EnableConfigurationProperties;
-import org.springframework.cache.CacheManager;
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Primary;
-
-import java.util.ArrayList;
-
-/**
- * 租户配置类
- *
- * @author Lion Li
- */
-@EnableConfigurationProperties(TenantProperties.class)
-@AutoConfiguration(after = {RedisConfig.class})
-@ConditionalOnProperty(value = "tenant.enable", havingValue = "true")
-public class TenantConfig {
-
-    /**
-     * 初始化租户配置
-     */
-    @Bean
-    public boolean tenantInit(MybatisPlusInterceptor mybatisPlusInterceptor,
-                              TenantProperties tenantProperties) {
-        List<InnerInterceptor> interceptors = new ArrayList<>();
-        // 多租户插件 必须放到第一位
-        interceptors.add(tenantLineInnerInterceptor(tenantProperties));
-        interceptors.addAll(mybatisPlusInterceptor.getInterceptors());
-        mybatisPlusInterceptor.setInterceptors(interceptors);
-        return true;
-    }
-
-    /**
-     * 多租户插件
-     */
-    public TenantLineInnerInterceptor tenantLineInnerInterceptor(TenantProperties tenantProperties) {
-        return new TenantLineInnerInterceptor(new PlusTenantLineHandler(tenantProperties));
-    }
-
-    @Bean
-    public RedissonAutoConfigurationCustomizer tenantRedissonCustomizer(RedissonProperties redissonProperties) {
-        return config -> {
-            TenantKeyPrefixHandler nameMapper = new TenantKeyPrefixHandler(redissonProperties.getKeyPrefix());
-            SingleServerConfig singleServerConfig = ReflectUtils.invokeGetter(config, "singleServerConfig");
-            if (ObjectUtil.isNotNull(singleServerConfig)) {
-                // 使用单机模式
-                // 设置多租户 redis key前缀
-                singleServerConfig.setNameMapper(nameMapper);
-                ReflectUtils.invokeSetter(config, "singleServerConfig", singleServerConfig);
-            }
-            ClusterServersConfig clusterServersConfig = ReflectUtils.invokeGetter(config, "clusterServersConfig");
-            // 集群配置方式 参考下方注释
-            if (ObjectUtil.isNotNull(clusterServersConfig)) {
-                // 设置多租户 redis key前缀
-                clusterServersConfig.setNameMapper(nameMapper);
-                ReflectUtils.invokeSetter(config, "clusterServersConfig", clusterServersConfig);
-            }
-        };
-    }
-
-    /**
-     * 多租户缓存管理器
-     */
-    @Primary
-    @Bean
-    public CacheManager tenantCacheManager() {
-        return new TenantSpringCacheManager();
-    }
-
-    /**
-     * 多租户鉴权dao实现
-     */
-    @Primary
-    @Bean
-    public SaTokenDao tenantSaTokenDao() {
-        return new TenantSaTokenDao();
-    }
-
-}
+//package cc.iotkit.common.tenant.config;
+//
+//import cc.iotkit.common.redis.config.RedisConfig;
+//import cc.iotkit.common.tenant.core.TenantSaTokenDao;
+//import cc.iotkit.common.tenant.manager.TenantSpringCacheManager;
+//import cc.iotkit.common.tenant.properties.TenantProperties;
+//import cc.iotkit.common.utils.ReflectUtils;
+//import cn.dev33.satoken.dao.SaTokenDao;
+//import cn.hutool.core.util.ObjectUtil;
+//import org.redisson.config.ClusterServersConfig;
+//import org.redisson.config.SingleServerConfig;
+//import org.redisson.spring.starter.RedissonAutoConfigurationCustomizer;
+//import org.springframework.boot.autoconfigure.AutoConfiguration;
+//import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+//import org.springframework.boot.context.properties.EnableConfigurationProperties;
+//import org.springframework.cache.CacheManager;
+//import org.springframework.context.annotation.Bean;
+//import org.springframework.context.annotation.Primary;
+//
+//import java.util.ArrayList;
+//
+///**
+// * 租户配置类
+// *
+// * @author Lion Li
+// */
+//@EnableConfigurationProperties(TenantProperties.class)
+//@AutoConfiguration(after = {RedisConfig.class})
+//@ConditionalOnProperty(value = "tenant.enable", havingValue = "true")
+//public class TenantConfig {
+//
+//    /**
+//     * 初始化租户配置
+//     */
+//    @Bean
+//    public boolean tenantInit(MybatisPlusInterceptor mybatisPlusInterceptor,
+//                              TenantProperties tenantProperties) {
+//        List<InnerInterceptor> interceptors = new ArrayList<>();
+//        // 多租户插件 必须放到第一位
+//        interceptors.add(tenantLineInnerInterceptor(tenantProperties));
+//        interceptors.addAll(mybatisPlusInterceptor.getInterceptors());
+//        mybatisPlusInterceptor.setInterceptors(interceptors);
+//        return true;
+//    }
+//
+//    /**
+//     * 多租户插件
+//     */
+//    public TenantLineInnerInterceptor tenantLineInnerInterceptor(TenantProperties tenantProperties) {
+//        return new TenantLineInnerInterceptor(new PlusTenantLineHandler(tenantProperties));
+//    }
+//
+//    @Bean
+//    public RedissonAutoConfigurationCustomizer tenantRedissonCustomizer(RedissonProperties redissonProperties) {
+//        return config -> {
+//            TenantKeyPrefixHandler nameMapper = new TenantKeyPrefixHandler(redissonProperties.getKeyPrefix());
+//            SingleServerConfig singleServerConfig = ReflectUtils.invokeGetter(config, "singleServerConfig");
+//            if (ObjectUtil.isNotNull(singleServerConfig)) {
+//                // 使用单机模式
+//                // 设置多租户 redis key前缀
+//                singleServerConfig.setNameMapper(nameMapper);
+//                ReflectUtils.invokeSetter(config, "singleServerConfig", singleServerConfig);
+//            }
+//            ClusterServersConfig clusterServersConfig = ReflectUtils.invokeGetter(config, "clusterServersConfig");
+//            // 集群配置方式 参考下方注释
+//            if (ObjectUtil.isNotNull(clusterServersConfig)) {
+//                // 设置多租户 redis key前缀
+//                clusterServersConfig.setNameMapper(nameMapper);
+//                ReflectUtils.invokeSetter(config, "clusterServersConfig", clusterServersConfig);
+//            }
+//        };
+//    }
+//
+//    /**
+//     * 多租户缓存管理器
+//     */
+//    @Primary
+//    @Bean
+//    public CacheManager tenantCacheManager() {
+//        return new TenantSpringCacheManager();
+//    }
+//
+//    /**
+//     * 多租户鉴权dao实现
+//     */
+//    @Primary
+//    @Bean
+//    public SaTokenDao tenantSaTokenDao() {
+//        return new TenantSaTokenDao();
+//    }
+//
+//}

+ 55 - 55
iot-common/iot-common-tenant/src/main/java/cc/iotkit/common/tenant/handle/PlusTenantLineHandler.java

@@ -1,55 +1,55 @@
-package cc.iotkit.common.tenant.handle;
-
-import cc.iotkit.common.satoken.utils.LoginHelper;
-import cc.iotkit.common.tenant.helper.TenantHelper;
-import cc.iotkit.common.tenant.properties.TenantProperties;
-import cc.iotkit.common.utils.StringUtils;
-import cn.hutool.core.collection.ListUtil;
-import lombok.AllArgsConstructor;
-
-import java.util.List;
-
-/**
- * 自定义租户处理器
- *
- * @author Lion Li
- */
-@AllArgsConstructor
-public class PlusTenantLineHandler implements TenantLineHandler {
-
-    private final TenantProperties tenantProperties;
-
-    @Override
-    public Expression getTenantId() {
-        String tenantId = LoginHelper.getTenantId();
-        if (StringUtils.isBlank(tenantId)) {
-            return new NullValue();
-        }
-        String dynamicTenantId = TenantHelper.getDynamic();
-        if (StringUtils.isNotBlank(dynamicTenantId)) {
-            // 返回动态租户
-            return new StringValue(dynamicTenantId);
-        }
-        // 返回固定租户
-        return new StringValue(tenantId);
-    }
-
-    @Override
-    public boolean ignoreTable(String tableName) {
-        String tenantId = LoginHelper.getTenantId();
-        // 判断是否有租户
-        if (StringUtils.isNotBlank(tenantId)) {
-            // 不需要过滤租户的表
-            List<String> excludes = tenantProperties.getExcludes();
-            // 非业务表
-            List<String> tables = ListUtil.toList(
-                "gen_table",
-                "gen_table_column"
-            );
-            tables.addAll(excludes);
-            return tables.contains(tableName);
-        }
-        return true;
-    }
-
-}
+//package cc.iotkit.common.tenant.handle;
+//
+//import cc.iotkit.common.satoken.utils.LoginHelper;
+//import cc.iotkit.common.tenant.helper.TenantHelper;
+//import cc.iotkit.common.tenant.properties.TenantProperties;
+//import cc.iotkit.common.utils.StringUtils;
+//import cn.hutool.core.collection.ListUtil;
+//import lombok.AllArgsConstructor;
+//
+//import java.util.List;
+//
+///**
+// * 自定义租户处理器
+// *
+// * @author Lion Li
+// */
+//@AllArgsConstructor
+//public class PlusTenantLineHandler implements TenantLineHandler {
+//
+//    private final TenantProperties tenantProperties;
+//
+//    @Override
+//    public Expression getTenantId() {
+//        String tenantId = LoginHelper.getTenantId();
+//        if (StringUtils.isBlank(tenantId)) {
+//            return new NullValue();
+//        }
+//        String dynamicTenantId = TenantHelper.getDynamic();
+//        if (StringUtils.isNotBlank(dynamicTenantId)) {
+//            // 返回动态租户
+//            return new StringValue(dynamicTenantId);
+//        }
+//        // 返回固定租户
+//        return new StringValue(tenantId);
+//    }
+//
+//    @Override
+//    public boolean ignoreTable(String tableName) {
+//        String tenantId = LoginHelper.getTenantId();
+//        // 判断是否有租户
+//        if (StringUtils.isNotBlank(tenantId)) {
+//            // 不需要过滤租户的表
+//            List<String> excludes = tenantProperties.getExcludes();
+//            // 非业务表
+//            List<String> tables = ListUtil.toList(
+//                "gen_table",
+//                "gen_table_column"
+//            );
+//            tables.addAll(excludes);
+//            return tables.contains(tableName);
+//        }
+//        return true;
+//    }
+//
+//}

+ 59 - 59
iot-common/iot-common-tenant/src/main/java/cc/iotkit/common/tenant/handle/TenantKeyPrefixHandler.java

@@ -1,59 +1,59 @@
-package cc.iotkit.common.tenant.handle;
-
-
-import cc.iotkit.common.constant.GlobalConstants;
-import cc.iotkit.common.redis.handler.KeyPrefixHandler;
-import cc.iotkit.common.tenant.helper.TenantHelper;
-import cc.iotkit.common.utils.StringUtils;
-
-/**
- * 多租户redis缓存key前缀处理
- *
- * @author Lion Li
- */
-public class TenantKeyPrefixHandler extends KeyPrefixHandler {
-
-    public TenantKeyPrefixHandler(String keyPrefix) {
-        super(keyPrefix);
-    }
-
-    /**
-     * 增加前缀
-     */
-    @Override
-    public String map(String name) {
-        if (StringUtils.isBlank(name)) {
-            return null;
-        }
-        if (StringUtils.contains(name, GlobalConstants.GLOBAL_REDIS_KEY)) {
-            return super.map(name);
-        }
-        String tenantId = TenantHelper.getTenantId();
-        if (StringUtils.startsWith(name, tenantId)) {
-            // 如果存在则直接返回
-            return super.map(name);
-        }
-        return super.map(tenantId + ":" + name);
-    }
-
-    /**
-     * 去除前缀
-     */
-    @Override
-    public String unmap(String name) {
-        String unmap = super.unmap(name);
-        if (StringUtils.isBlank(unmap)) {
-            return null;
-        }
-        if (StringUtils.contains(name, GlobalConstants.GLOBAL_REDIS_KEY)) {
-            return super.unmap(name);
-        }
-        String tenantId = TenantHelper.getTenantId();
-        if (StringUtils.startsWith(unmap, tenantId)) {
-            // 如果存在则删除
-            return unmap.substring((tenantId + ":").length());
-        }
-        return unmap;
-    }
-
-}
+//package cc.iotkit.common.tenant.handle;
+//
+//
+//import cc.iotkit.common.constant.GlobalConstants;
+//import cc.iotkit.common.redis.handler.KeyPrefixHandler;
+//import cc.iotkit.common.tenant.helper.TenantHelper;
+//import cc.iotkit.common.utils.StringUtils;
+//
+///**
+// * 多租户redis缓存key前缀处理
+// *
+// * @author Lion Li
+// */
+//public class TenantKeyPrefixHandler extends KeyPrefixHandler {
+//
+//    public TenantKeyPrefixHandler(String keyPrefix) {
+//        super(keyPrefix);
+//    }
+//
+//    /**
+//     * 增加前缀
+//     */
+//    @Override
+//    public String map(String name) {
+//        if (StringUtils.isBlank(name)) {
+//            return null;
+//        }
+//        if (StringUtils.contains(name, GlobalConstants.GLOBAL_REDIS_KEY)) {
+//            return super.map(name);
+//        }
+//        String tenantId = TenantHelper.getTenantId();
+//        if (StringUtils.startsWith(name, tenantId)) {
+//            // 如果存在则直接返回
+//            return super.map(name);
+//        }
+//        return super.map(tenantId + ":" + name);
+//    }
+//
+//    /**
+//     * 去除前缀
+//     */
+//    @Override
+//    public String unmap(String name) {
+//        String unmap = super.unmap(name);
+//        if (StringUtils.isBlank(unmap)) {
+//            return null;
+//        }
+//        if (StringUtils.contains(name, GlobalConstants.GLOBAL_REDIS_KEY)) {
+//            return super.unmap(name);
+//        }
+//        String tenantId = TenantHelper.getTenantId();
+//        if (StringUtils.startsWith(unmap, tenantId)) {
+//            // 如果存在则删除
+//            return unmap.substring((tenantId + ":").length());
+//        }
+//        return unmap;
+//    }
+//
+//}

+ 138 - 137
iot-common/iot-common-tenant/src/main/java/cc/iotkit/common/tenant/helper/TenantHelper.java

@@ -1,137 +1,138 @@
-package cc.iotkit.common.tenant.helper;
-
-import cc.iotkit.common.constant.GlobalConstants;
-import cc.iotkit.common.redis.utils.RedisUtils;
-import cc.iotkit.common.satoken.utils.LoginHelper;
-import cc.iotkit.common.utils.SpringUtils;
-import cc.iotkit.common.utils.StringUtils;
-import cn.dev33.satoken.context.SaHolder;
-import cn.dev33.satoken.spring.SpringMVCUtil;
-import cn.hutool.core.convert.Convert;
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-
-import java.util.function.Supplier;
-
-/**
- * 租户助手
- *
- * @author Lion Li
- */
-@Slf4j
-@NoArgsConstructor(access = AccessLevel.PRIVATE)
-public class TenantHelper {
-
-    private static final String DYNAMIC_TENANT_KEY = GlobalConstants.GLOBAL_REDIS_KEY + "dynamicTenant";
-
-    private static final ThreadLocal<String> TEMP_DYNAMIC_TENANT = new TransmittableThreadLocal<>();
-
-    /**
-     * 租户功能是否启用
-     */
-    public static boolean isEnable() {
-        return Convert.toBool(SpringUtils.getProperty("tenant.enable"), false);
-    }
-
-    /**
-     * 开启忽略租户(开启后需手动调用 {@link #disableIgnore()} 关闭)
-     */
-    public static void enableIgnore() {
-        InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().tenantLine(true).build());
-    }
-
-    /**
-     * 关闭忽略租户
-     */
-    public static void disableIgnore() {
-        InterceptorIgnoreHelper.clearIgnoreStrategy();
-    }
-
-    /**
-     * 在忽略租户中执行
-     *
-     * @param handle 处理执行方法
-     */
-    public static void ignore(Runnable handle) {
-        enableIgnore();
-        try {
-            handle.run();
-        } finally {
-            disableIgnore();
-        }
-    }
-
-    /**
-     * 在忽略租户中执行
-     *
-     * @param handle 处理执行方法
-     */
-    public static <T> T ignore(Supplier<T> handle) {
-        enableIgnore();
-        try {
-            return handle.get();
-        } finally {
-            disableIgnore();
-        }
-    }
-
-    /**
-     * 设置动态租户(一直有效 需要手动清理)
-     * <p>
-     * 如果为非web环境 那么只在当前线程内生效
-     */
-    public static void setDynamic(String tenantId) {
-        if (!SpringMVCUtil.isWeb()) {
-            TEMP_DYNAMIC_TENANT.set(tenantId);
-            return;
-        }
-        String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId();
-        RedisUtils.setCacheObject(cacheKey, tenantId);
-        SaHolder.getStorage().set(cacheKey, tenantId);
-    }
-
-    /**
-     * 获取动态租户(一直有效 需要手动清理)
-     * <p>
-     * 如果为非web环境 那么只在当前线程内生效
-     */
-    public static String getDynamic() {
-        if (!SpringMVCUtil.isWeb()) {
-            return TEMP_DYNAMIC_TENANT.get();
-        }
-        String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId();
-        String tenantId = (String) SaHolder.getStorage().get(cacheKey);
-        if (StringUtils.isNotBlank(tenantId)) {
-            return tenantId;
-        }
-        tenantId = RedisUtils.getCacheObject(cacheKey);
-        SaHolder.getStorage().set(cacheKey, tenantId);
-        return tenantId;
-    }
-
-    /**
-     * 清除动态租户
-     */
-    public static void clearDynamic() {
-        if (!SpringMVCUtil.isWeb()) {
-            TEMP_DYNAMIC_TENANT.remove();
-            return;
-        }
-        String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId();
-        RedisUtils.deleteObject(cacheKey);
-        SaHolder.getStorage().delete(cacheKey);
-    }
-
-    /**
-     * 获取当前租户id(动态租户优先)
-     */
-    public static String getTenantId() {
-        String tenantId = TenantHelper.getDynamic();
-        if (StringUtils.isBlank(tenantId)) {
-            tenantId = LoginHelper.getTenantId();
-        }
-        return tenantId;
-    }
-
-}
+//package cc.iotkit.common.tenant.helper;
+//
+//import cc.iotkit.common.constant.GlobalConstants;
+//import cc.iotkit.common.redis.utils.RedisUtils;
+//import cc.iotkit.common.satoken.utils.LoginHelper;
+//import cc.iotkit.common.utils.SpringUtils;
+//import cc.iotkit.common.utils.StringUtils;
+//import cn.dev33.satoken.context.SaHolder;
+//import cn.dev33.satoken.spring.SpringMVCUtil;
+//import cn.hutool.core.convert.Convert;
+//import com.alibaba.ttl.TransmittableThreadLocal;
+//import lombok.AccessLevel;
+//import lombok.NoArgsConstructor;
+//import lombok.extern.slf4j.Slf4j;
+//
+//import java.util.function.Supplier;
+//
+///**
+// * 租户助手
+// *
+// * @author Lion Li
+// */
+//@Slf4j
+//@NoArgsConstructor(access = AccessLevel.PRIVATE)
+//public class TenantHelper {
+//
+//    private static final String DYNAMIC_TENANT_KEY = GlobalConstants.GLOBAL_REDIS_KEY + "dynamicTenant";
+//
+//    private static final ThreadLocal<String> TEMP_DYNAMIC_TENANT = new TransmittableThreadLocal<>();
+//
+//    /**
+//     * 租户功能是否启用
+//     */
+//    public static boolean isEnable() {
+//        return Convert.toBool(SpringUtils.getProperty("tenant.enable"), false);
+//    }
+//
+//    /**
+//     * 开启忽略租户(开启后需手动调用 {@link #disableIgnore()} 关闭)
+//     */
+//    public static void enableIgnore() {
+//        InterceptorIgnoreHelper.handle(IgnoreStrategy.builder().tenantLine(true).build());
+//    }
+//
+//    /**
+//     * 关闭忽略租户
+//     */
+//    public static void disableIgnore() {
+//        InterceptorIgnoreHelper.clearIgnoreStrategy();
+//    }
+//
+//    /**
+//     * 在忽略租户中执行
+//     *
+//     * @param handle 处理执行方法
+//     */
+//    public static void ignore(Runnable handle) {
+//        enableIgnore();
+//        try {
+//            handle.run();
+//        } finally {
+//            disableIgnore();
+//        }
+//    }
+//
+//    /**
+//     * 在忽略租户中执行
+//     *
+//     * @param handle 处理执行方法
+//     */
+//    public static <T> T ignore(Supplier<T> handle) {
+//        enableIgnore();
+//        try {
+//            return handle.get();
+//        } finally {
+//            disableIgnore();
+//        }
+//    }
+//
+//    /**
+//     * 设置动态租户(一直有效 需要手动清理)
+//     * <p>
+//     * 如果为非web环境 那么只在当前线程内生效
+//     */
+//    public static void setDynamic(String tenantId) {
+//        if (!SpringMVCUtil.isWeb()) {
+//            TEMP_DYNAMIC_TENANT.set(tenantId);
+//            return;
+//        }
+//        String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId();
+//        RedisUtils.setCacheObject(cacheKey, tenantId);
+//        SaHolder.getStorage().set(cacheKey, tenantId);
+//    }
+//
+//    /**
+//     * 获取动态租户(一直有效 需要手动清理)
+//     * <p>
+//     * 如果为非web环境 那么只在当前线程内生效
+//     */
+//    public static String getDynamic() {
+//        if (!SpringMVCUtil.isWeb()) {
+//            return TEMP_DYNAMIC_TENANT.get();
+//        }
+//        String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId();
+//        String tenantId = (String) SaHolder.getStorage().get(cacheKey);
+//        if (StringUtils.isNotBlank(tenantId)) {
+//            return tenantId;
+//        }
+//        tenantId = RedisUtils.getCacheObject(cacheKey);
+//        SaHolder.getStorage().set(cacheKey, tenantId);
+//        return tenantId;
+//    }
+//
+//    /**
+//     * 清除动态租户
+//     */
+//    public static void clearDynamic() {
+//        if (!SpringMVCUtil.isWeb()) {
+//            TEMP_DYNAMIC_TENANT.remove();
+//            return;
+//        }
+//        String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId();
+//        RedisUtils.deleteObject(cacheKey);
+//        SaHolder.getStorage().delete(cacheKey);
+//    }
+//
+//    /**
+//     * 获取当前租户id(动态租户优先)
+//     */
+//    public static String getTenantId() {
+//        String tenantId = TenantHelper.getDynamic();
+//        if (StringUtils.isBlank(tenantId)) {
+//            tenantId = LoginHelper.getTenantId();
+//        }
+//        return tenantId;
+//    }
+//
+//}

+ 32 - 32
iot-common/iot-common-tenant/src/main/java/cc/iotkit/common/tenant/manager/TenantSpringCacheManager.java

@@ -1,32 +1,32 @@
-package cc.iotkit.common.tenant.manager;
-
-import cc.iotkit.common.constant.GlobalConstants;
-import cc.iotkit.common.redis.manager.PlusSpringCacheManager;
-import cc.iotkit.common.tenant.helper.TenantHelper;
-import cc.iotkit.common.utils.StringUtils;
-import org.springframework.cache.Cache;
-
-/**
- * 重写 cacheName 处理方法 支持多租户
- *
- * @author Lion Li
- */
-public class TenantSpringCacheManager extends PlusSpringCacheManager {
-
-    public TenantSpringCacheManager() {
-    }
-
-    @Override
-    public Cache getCache(String name) {
-        if (StringUtils.contains(name, GlobalConstants.GLOBAL_REDIS_KEY)) {
-            return super.getCache(name);
-        }
-        String tenantId = TenantHelper.getTenantId();
-        if (StringUtils.startsWith(name, tenantId)) {
-            // 如果存在则直接返回
-            return super.getCache(name);
-        }
-        return super.getCache(tenantId + ":" + name);
-    }
-
-}
+//package cc.iotkit.common.tenant.manager;
+//
+//import cc.iotkit.common.constant.GlobalConstants;
+//import cc.iotkit.common.redis.manager.PlusSpringCacheManager;
+//import cc.iotkit.common.tenant.helper.TenantHelper;
+//import cc.iotkit.common.utils.StringUtils;
+//import org.springframework.cache.Cache;
+//
+///**
+// * 重写 cacheName 处理方法 支持多租户
+// *
+// * @author Lion Li
+// */
+//public class TenantSpringCacheManager extends PlusSpringCacheManager {
+//
+//    public TenantSpringCacheManager() {
+//    }
+//
+//    @Override
+//    public Cache getCache(String name) {
+//        if (StringUtils.contains(name, GlobalConstants.GLOBAL_REDIS_KEY)) {
+//            return super.getCache(name);
+//        }
+//        String tenantId = TenantHelper.getTenantId();
+//        if (StringUtils.startsWith(name, tenantId)) {
+//            // 如果存在则直接返回
+//            return super.getCache(name);
+//        }
+//        return super.getCache(tenantId + ":" + name);
+//    }
+//
+//}

+ 10 - 11
iot-common/iot-common-web/pom.xml

@@ -17,17 +17,6 @@
         <dependency>
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-web</artifactId>
-            <exclusions>
-                <exclusion>
-                    <artifactId>spring-boot-starter-tomcat</artifactId>
-                    <groupId>org.springframework.boot</groupId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <!-- web 容器使用 undertow 性能更强 -->
-        <dependency>
-            <groupId>org.springframework.boot</groupId>
-            <artifactId>spring-boot-starter-undertow</artifactId>
         </dependency>
 
         <dependency>
@@ -35,6 +24,16 @@
             <artifactId>hutool-captcha</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>transmittable-thread-local</artifactId>
+        </dependency>
+
+        <dependency>
+            <groupId>cn.dev33</groupId>
+            <artifactId>sa-token-core</artifactId>
+        </dependency>
+
         <dependency>
             <groupId>org.projectlombok</groupId>
             <artifactId>lombok</artifactId>

+ 1 - 1
iot-common/iot-common-web/src/main/java/cc/iotkit/common/web/config/FilterConfig.java

@@ -4,13 +4,13 @@ import cc.iotkit.common.utils.StringUtils;
 import cc.iotkit.common.web.config.properties.XssProperties;
 import cc.iotkit.common.web.filter.RepeatableFilter;
 import cc.iotkit.common.web.filter.XssFilter;
-import jakarta.servlet.DispatcherType;
 import org.springframework.boot.autoconfigure.AutoConfiguration;
 import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
 import org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.boot.web.servlet.FilterRegistrationBean;
 import org.springframework.context.annotation.Bean;
 
+import javax.servlet.DispatcherType;
 import java.util.HashMap;
 import java.util.Map;
 

+ 0 - 30
iot-common/iot-common-web/src/main/java/cc/iotkit/common/web/config/UndertowConfig.java

@@ -1,30 +0,0 @@
-package cc.iotkit.common.web.config;
-
-import io.undertow.server.DefaultByteBufferPool;
-import io.undertow.websockets.jsr.WebSocketDeploymentInfo;
-import org.springframework.boot.autoconfigure.AutoConfiguration;
-import org.springframework.boot.web.embedded.undertow.UndertowServletWebServerFactory;
-import org.springframework.boot.web.server.WebServerFactoryCustomizer;
-
-/**
- * Undertow 自定义配置
- *
- * @author Lion Li
- */
-@AutoConfiguration
-public class UndertowConfig implements WebServerFactoryCustomizer<UndertowServletWebServerFactory> {
-
-    /**
-     * 设置 Undertow 的 websocket 缓冲池
-     */
-    @Override
-    public void customize(UndertowServletWebServerFactory factory) {
-        // 默认不直接分配内存 如果项目中使用了 websocket 建议直接分配
-        factory.addDeploymentInfoCustomizers(deploymentInfo -> {
-            WebSocketDeploymentInfo webSocketDeploymentInfo = new WebSocketDeploymentInfo();
-            webSocketDeploymentInfo.setBuffers(new DefaultByteBufferPool(false, 512));
-            deploymentInfo.addServletContextAttribute("io.undertow.websockets.jsr.WebSocketDeploymentInfo", webSocketDeploymentInfo);
-        });
-    }
-
-}

+ 2 - 2
iot-common/iot-common-web/src/main/java/cc/iotkit/common/web/filter/RepeatableFilter.java

@@ -1,10 +1,10 @@
 package cc.iotkit.common.web.filter;
 
 import cc.iotkit.common.utils.StringUtils;
-import jakarta.servlet.*;
-import jakarta.servlet.http.HttpServletRequest;
 import org.springframework.http.MediaType;
 
+import javax.servlet.*;
+import javax.servlet.http.HttpServletRequest;
 import java.io.IOException;
 
 /**

+ 5 - 5
iot-common/iot-common-web/src/main/java/cc/iotkit/common/web/filter/RepeatedlyRequestWrapper.java

@@ -2,12 +2,12 @@ package cc.iotkit.common.web.filter;
 
 import cc.iotkit.common.constant.Constants;
 import cn.hutool.core.io.IoUtil;
-import jakarta.servlet.ReadListener;
-import jakarta.servlet.ServletInputStream;
-import jakarta.servlet.ServletResponse;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletRequestWrapper;
 
+import javax.servlet.ReadListener;
+import javax.servlet.ServletInputStream;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
 import java.io.BufferedReader;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;

+ 5 - 6
iot-common/iot-common-web/src/main/java/cc/iotkit/common/web/filter/XssFilter.java

@@ -1,13 +1,14 @@
 package cc.iotkit.common.web.filter;
 
 import cc.iotkit.common.utils.StringUtils;
-import jakarta.servlet.*;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
 import org.springframework.http.HttpMethod;
 
+import javax.servlet.*;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -26,9 +27,7 @@ public class XssFilter implements Filter {
         String tempExcludes = filterConfig.getInitParameter("excludes");
         if (StringUtils.isNotEmpty(tempExcludes)) {
             String[] url = tempExcludes.split(StringUtils.SEPARATOR);
-            for (int i = 0; url != null && i < url.length; i++) {
-                excludes.add(url[i]);
-            }
+            excludes.addAll(Arrays.asList(url));
         }
     }
 

+ 4 - 4
iot-common/iot-common-web/src/main/java/cc/iotkit/common/web/filter/XssHttpServletRequestWrapper.java

@@ -4,13 +4,13 @@ import cc.iotkit.common.utils.StringUtils;
 import cn.hutool.core.io.IoUtil;
 import cn.hutool.core.util.StrUtil;
 import cn.hutool.http.HtmlUtil;
-import jakarta.servlet.ReadListener;
-import jakarta.servlet.ServletInputStream;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletRequestWrapper;
 import org.springframework.http.HttpHeaders;
 import org.springframework.http.MediaType;
 
+import javax.servlet.ReadListener;
+import javax.servlet.ServletInputStream;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletRequestWrapper;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.nio.charset.StandardCharsets;

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

@@ -11,7 +11,7 @@ package cc.iotkit.common.web.handler;
 
 import cc.iotkit.common.api.Response;
 
-import jakarta.servlet.http.HttpServletRequest;
+import cn.dev33.satoken.util.SaResult;
 import org.springframework.core.MethodParameter;
 import org.springframework.http.MediaType;
 import org.springframework.http.converter.HttpMessageConverter;
@@ -22,6 +22,7 @@ import org.springframework.web.context.request.RequestContextHolder;
 import org.springframework.web.context.request.ServletRequestAttributes;
 import org.springframework.web.servlet.mvc.method.annotation.ResponseBodyAdvice;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.Map;
 
 @ControllerAdvice

+ 3 - 2
iot-common/iot-common-web/src/main/java/cc/iotkit/common/web/interceptor/PlusWebInvokeTimeInterceptor.java

@@ -6,14 +6,15 @@ import cc.iotkit.common.utils.StringUtils;
 import cc.iotkit.common.web.filter.RepeatedlyRequestWrapper;
 import cn.hutool.core.io.IoUtil;
 import cn.hutool.core.map.MapUtil;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
+import com.alibaba.ttl.TransmittableThreadLocal;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang3.time.StopWatch;
 import org.springframework.http.MediaType;
 import org.springframework.web.servlet.HandlerInterceptor;
 import org.springframework.web.servlet.ModelAndView;
 
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
 import java.io.BufferedReader;
 import java.util.Map;
 

+ 15 - 10
iot-common/iot-common-core/src/main/java/cc/iotkit/common/utils/ServletUtils.java → iot-common/iot-common-web/src/main/java/cc/iotkit/common/web/utils/ServletUtils.java

@@ -1,12 +1,19 @@
-package cc.iotkit.common.utils;
+package cc.iotkit.common.web.utils;
 
+import cc.iotkit.common.utils.StringUtils;
 import cn.hutool.core.convert.Convert;
-import cn.hutool.extra.servlet.JakartaServletUtil;
 import cn.hutool.http.HttpStatus;
-import jakarta.servlet.ServletRequest;
-import jakarta.servlet.http.HttpServletRequest;
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.servlet.http.HttpSession;
+import lombok.AccessLevel;
+import lombok.NoArgsConstructor;
+import org.springframework.http.MediaType;
+import org.springframework.web.context.request.RequestAttributes;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.servlet.ServletRequest;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import javax.servlet.http.HttpSession;
 import java.io.IOException;
 import java.net.URLDecoder;
 import java.net.URLEncoder;
@@ -14,8 +21,6 @@ import java.nio.charset.StandardCharsets;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
 
 
 /**
@@ -24,7 +29,7 @@ import lombok.NoArgsConstructor;
  * @author ruoyi
  */
 @NoArgsConstructor(access = AccessLevel.PRIVATE)
-public class ServletUtils extends JakartaServletUtil {
+public class ServletUtils {
 
     /**
      * 获取String参数
@@ -163,7 +168,7 @@ public class ServletUtils extends JakartaServletUtil {
     }
 
     public static String getClientIP() {
-        return getClientIP(getRequest());
+        return getRequest().getRemoteAddr();
     }
 
     /**

+ 5 - 0
iot-components/iot-component-server/pom.xml

@@ -102,6 +102,11 @@
             <artifactId>iot-script-engine</artifactId>
         </dependency>
 
+        <dependency>
+            <groupId>cc.iotkit</groupId>
+            <artifactId>iot-message-core</artifactId>
+        </dependency>
+
     </dependencies>
 
     <build>

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

@@ -9,7 +9,7 @@
  */
 package cc.iotkit.comps;
 
-import cc.iotkit.common.Constants;
+import cc.iotkit.common.constant.Constants;
 import io.vertx.core.MultiMap;
 import io.vertx.core.Vertx;
 import io.vertx.core.buffer.Buffer;

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

@@ -112,7 +112,7 @@ public class DeviceComponentManager {
         componentInstance.create(new CompConfig(300, component.getConfig()));
 
         try {
-            if(component.CONVER_TYPE_STATIC.equals(component.getConverType())){
+            if(ProtocolComponent.CONVER_TYPE_STATIC.equals(component.getConverType())){
                 IConverter converterInstance;
                 try {
                     converterInstance=ComponentClassLoader.getConverter(component.getId());

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

@@ -9,7 +9,7 @@
  */
 package cc.iotkit.comps.service;
 
-import cc.iotkit.common.Constants;
+import cc.iotkit.common.constant.Constants;
 import cc.iotkit.common.enums.ErrCode;
 import cc.iotkit.common.exception.BizException;
 import cc.iotkit.common.utils.DeviceUtil;

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

@@ -9,7 +9,7 @@
  */
 package cc.iotkit.comps.service;
 
-import cc.iotkit.common.Constants;
+import cc.iotkit.common.constant.Constants;
 import cc.iotkit.common.thing.ThingService;
 import cc.iotkit.common.utils.JsonUtils;
 import cc.iotkit.comps.DeviceComponentManager;

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

@@ -9,7 +9,7 @@
  */
 package cc.iotkit.comps.service;
 
-import cc.iotkit.common.Constants;
+import cc.iotkit.common.constant.Constants;
 import cc.iotkit.data.manager.IDeviceInfoData;
 import cc.iotkit.model.device.DeviceInfo;
 import cc.iotkit.model.device.message.ThingModelMessage;

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

@@ -9,7 +9,7 @@
  */
 package cc.iotkit.comps.service;
 
-import cc.iotkit.common.Constants;
+import cc.iotkit.common.constant.Constants;
 import cc.iotkit.common.utils.JsonUtils;
 import cc.iotkit.data.manager.IDeviceInfoData;
 import cc.iotkit.data.manager.IThingModelData;

+ 1 - 4
iot-module/iot-system/src/main/java/cc/iotkit/system/dto/vo/SysMenuVo.java

@@ -1,10 +1,9 @@
 package cc.iotkit.system.dto.vo;
 
-import cc.iotkit.system.dto.SysMenu;
+import cc.iotkit.model.system.SysMenu;
 import io.github.linpeilie.annotations.AutoMapper;
 import lombok.Data;
 
-import java.io.Serial;
 import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.Date;
@@ -19,8 +18,6 @@ import java.util.List;
 @Data
 @AutoMapper(target = SysMenu.class)
 public class SysMenuVo implements Serializable {
-
-    @Serial
     private static final long serialVersionUID = 1L;
 
     /**

+ 0 - 7
iot-module/iot-system/src/main/java/cc/iotkit/system/mapper/SysMenuMapper.java

@@ -1,13 +1,6 @@
 package cc.iotkit.system.mapper;
 
 import cc.iotkit.system.dto.vo.SysMenuVo;
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Constants;
-import org.dromara.common.core.constant.UserConstants;
-import cc.iotkit.system.dto.SysMenu;
-import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
-import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 

+ 0 - 2
iot-module/iot-system/src/main/java/cc/iotkit/system/mapper/SysPostMapper.java

@@ -1,8 +1,6 @@
 package cc.iotkit.system.mapper;
 
 import cc.iotkit.system.dto.vo.SysPostVo;
-import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
-import cc.iotkit.system.dto.SysPost;
 
 import java.util.List;
 

+ 0 - 8
iot-module/iot-system/src/main/java/cc/iotkit/system/mapper/SysRoleMapper.java

@@ -1,14 +1,6 @@
 package cc.iotkit.system.mapper;
 
 import cc.iotkit.system.dto.vo.SysRoleVo;
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.toolkit.Constants;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import org.dromara.common.mybatis.annotation.DataColumn;
-import org.dromara.common.mybatis.annotation.DataPermission;
-import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
-import cc.iotkit.system.dto.SysRole;
-import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 

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

@@ -5,9 +5,9 @@ import cc.iotkit.common.constant.Constants;
 import cc.iotkit.common.undefined.PagedDataVo;
 import cc.iotkit.common.log.event.LogininforEvent;
 import cc.iotkit.common.utils.MapstructUtils;
-import cc.iotkit.common.utils.ServletUtils;
 import cc.iotkit.common.utils.StringUtils;
 import cc.iotkit.common.utils.ip.AddressUtils;
+import cc.iotkit.common.web.utils.UnsignedMathGenerator;
 import cc.iotkit.model.system.SysLogininfor;
 import cc.iotkit.system.dto.bo.SysLogininforBo;
 import cc.iotkit.system.dto.vo.SysLogininforVo;
@@ -48,7 +48,7 @@ public class SysLogininforServiceImpl implements ISysLogininforService {
     public void recordLogininfor(LogininforEvent logininforEvent) {
         HttpServletRequest request = logininforEvent.getRequest();
         final UserAgent userAgent = UserAgentUtil.parse(request.getHeader("User-Agent"));
-        final String ip = ServletUtils.getClientIP(request);
+        final String ip = UnsignedMathGenerator.ServletUtils.getClientIP(request);
 
         String address = AddressUtils.getRealAddressByIP(ip);
         StringBuilder s = new StringBuilder();

+ 180 - 180
iot-module/iot-system/src/main/java/cc/iotkit/system/service/impl/SysOssConfigServiceImpl.java

@@ -1,180 +1,180 @@
-package cc.iotkit.system.service.impl;
-
-import cc.iotkit.common.api.PageRequest;
-import cc.iotkit.common.constant.CacheNames;
-import cc.iotkit.common.undefined.PagedDataVo;
-import cc.iotkit.common.exception.BizException;
-import cc.iotkit.common.redis.utils.CacheUtils;
-import cc.iotkit.common.redis.utils.RedisUtils;
-import cc.iotkit.common.tenant.core.TenantDto;
-import cc.iotkit.common.tenant.helper.TenantHelper;
-import cc.iotkit.common.utils.JsonUtils;
-import cc.iotkit.common.utils.MapstructUtils;
-import cc.iotkit.common.utils.StreamUtils;
-import cc.iotkit.common.utils.StringUtils;
-import cc.iotkit.model.system.SysOssConfig;
-import cc.iotkit.system.dto.bo.SysOssConfigBo;
-import cc.iotkit.system.dto.vo.SysOssConfigVo;
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.ObjectUtil;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import cc.iotkit.system.service.ISysOssConfigService;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 对象存储配置Service业务层处理
- *
- * @author Lion Li
- * @author 孤舟烟雨
- * @date 2021-08-13
- */
-@Slf4j
-@RequiredArgsConstructor
-@Service
-public class SysOssConfigServiceImpl implements ISysOssConfigService {
-
-    private final SysOssConfigMapper baseMapper;
-
-    /**
-     * 项目启动时,初始化参数到缓存,加载配置类
-     */
-    @Override
-    public void init() {
-        List<SysOssConfig> list = TenantHelper.ignore(() ->
-            baseMapper.selectList(
-                new LambdaQueryWrapper<SysOssConfig>().orderByAsc(TenantDto::getTenantId))
-        );
-        Map<String, List<SysOssConfig>> map = StreamUtils.groupByKey(list, SysOssConfig::getTenantId);
-        try {
-            for (String tenantId : map.keySet()) {
-                TenantHelper.setDynamic(tenantId);
-                // 加载OSS初始化配置
-                for (SysOssConfig config : map.get(tenantId)) {
-                    String configKey = config.getConfigKey();
-                    if ("0".equals(config.getStatus())) {
-                        RedisUtils.setCacheObject(OssConstant.DEFAULT_CONFIG_KEY, configKey);
-                    }
-                    CacheUtils.put(CacheNames.SYS_OSS_CONFIG, config.getConfigKey(), JsonUtils.toJsonString(config));
-                }
-            }
-        } finally {
-            TenantHelper.clearDynamic();
-        }
-    }
-
-    @Override
-    public SysOssConfigVo queryById(Long ossConfigId) {
-        return baseMapper.selectVoById(ossConfigId);
-    }
-
-    @Override
-    public PagedDataVo<SysOssConfigVo> queryPageList(SysOssConfigBo bo, PageRequest<?> query) {
-        LambdaQueryWrapper<SysOssConfig> lqw = buildQueryWrapper(bo);
-        Page<SysOssConfigVo> result = baseMapper.selectVoPage(query.build(), lqw);
-        return TableDataInfo.build(result);
-    }
-
-
-    private LambdaQueryWrapper<SysOssConfig> buildQueryWrapper(SysOssConfigBo bo) {
-        LambdaQueryWrapper<SysOssConfig> lqw = Wrappers.lambdaQuery();
-        lqw.eq(StringUtils.isNotBlank(bo.getConfigKey()), SysOssConfig::getConfigKey, bo.getConfigKey());
-        lqw.like(StringUtils.isNotBlank(bo.getBucketName()), SysOssConfig::getBucketName, bo.getBucketName());
-        lqw.eq(StringUtils.isNotBlank(bo.getStatus()), SysOssConfig::getStatus, bo.getStatus());
-        return lqw;
-    }
-
-    @Override
-    public Boolean insertByBo(SysOssConfigBo bo) {
-        SysOssConfig config = MapstructUtils.convert(bo, SysOssConfig.class);
-        validEntityBeforeSave(config);
-        boolean flag = baseMapper.insert(config) > 0;
-        if (flag) {
-            CacheUtils.put(CacheNames.SYS_OSS_CONFIG, config.getConfigKey(), JsonUtils.toJsonString(config));
-        }
-        return flag;
-    }
-
-    @Override
-    public Boolean updateByBo(SysOssConfigBo bo) {
-        SysOssConfig config = MapstructUtils.convert(bo, SysOssConfig.class);
-        validEntityBeforeSave(config);
-        LambdaUpdateWrapper<SysOssConfig> luw = new LambdaUpdateWrapper<>();
-        luw.set(ObjectUtil.isNull(config.getPrefix()), SysOssConfig::getPrefix, "");
-        luw.set(ObjectUtil.isNull(config.getRegion()), SysOssConfig::getRegion, "");
-        luw.set(ObjectUtil.isNull(config.getExt1()), SysOssConfig::getExt1, "");
-        luw.set(ObjectUtil.isNull(config.getRemark()), SysOssConfig::getRemark, "");
-        luw.eq(SysOssConfig::getOssConfigId, config.getOssConfigId());
-        boolean flag = baseMapper.update(config, luw) > 0;
-        if (flag) {
-            CacheUtils.put(CacheNames.SYS_OSS_CONFIG, config.getConfigKey(), JsonUtils.toJsonString(config));
-        }
-        return flag;
-    }
-
-    /**
-     * 保存前的数据校验
-     */
-    private void validEntityBeforeSave(SysOssConfig entity) {
-        if (StringUtils.isNotEmpty(entity.getConfigKey())
-            && !checkConfigKeyUnique(entity)) {
-            throw new BizException("操作配置'" + entity.getConfigKey() + "'失败, 配置key已存在!");
-        }
-    }
-
-    @Override
-    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
-        if (isValid) {
-            if (CollUtil.containsAny(ids, OssConstant.SYSTEM_DATA_IDS)) {
-                throw new BizException("系统内置, 不可删除!");
-            }
-        }
-        List<SysOssConfig> list = CollUtil.newArrayList();
-        for (Long configId : ids) {
-            SysOssConfig config = baseMapper.selectById(configId);
-            list.add(config);
-        }
-        boolean flag = baseMapper.deleteBatchIds(ids) > 0;
-        if (flag) {
-            list.forEach(sysOssConfig ->
-                CacheUtils.evict(CacheNames.SYS_OSS_CONFIG, sysOssConfig.getConfigKey()));
-        }
-        return flag;
-    }
-
-    /**
-     * 判断configKey是否唯一
-     */
-    private boolean checkConfigKeyUnique(SysOssConfig sysOssConfig) {
-        long ossConfigId = ObjectUtil.isNull(sysOssConfig.getOssConfigId()) ? -1L : sysOssConfig.getOssConfigId();
-        SysOssConfig info = baseMapper.selectOne(new LambdaQueryWrapper<SysOssConfig>()
-            .select(SysOssConfig::getOssConfigId, SysOssConfig::getConfigKey)
-            .eq(SysOssConfig::getConfigKey, sysOssConfig.getConfigKey()));
-        if (ObjectUtil.isNotNull(info) && info.getOssConfigId() != ossConfigId) {
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * 启用禁用状态
-     */
-    @Override
-    @Transactional(rollbackFor = Exception.class)
-    public int updateOssConfigStatus(SysOssConfigBo bo) {
-        SysOssConfig sysOssConfig = MapstructUtils.convert(bo, SysOssConfig.class);
-        int row = baseMapper.update(null, new LambdaUpdateWrapper<SysOssConfig>()
-            .set(SysOssConfig::getStatus, "1"));
-        row += baseMapper.updateById(sysOssConfig);
-        if (row > 0) {
-            RedisUtils.setCacheObject(OssConstant.DEFAULT_CONFIG_KEY, sysOssConfig.getConfigKey());
-        }
-        return row;
-    }
-
-}
+//package cc.iotkit.system.service.impl;
+//
+//import cc.iotkit.common.api.PageRequest;
+//import cc.iotkit.common.constant.CacheNames;
+//import cc.iotkit.common.undefined.PagedDataVo;
+//import cc.iotkit.common.exception.BizException;
+//import cc.iotkit.common.redis.utils.CacheUtils;
+//import cc.iotkit.common.redis.utils.RedisUtils;
+//import cc.iotkit.common.tenant.core.TenantDto;
+//import cc.iotkit.common.tenant.helper.TenantHelper;
+//import cc.iotkit.common.utils.JsonUtils;
+//import cc.iotkit.common.utils.MapstructUtils;
+//import cc.iotkit.common.utils.StreamUtils;
+//import cc.iotkit.common.utils.StringUtils;
+//import cc.iotkit.model.system.SysOssConfig;
+//import cc.iotkit.system.dto.bo.SysOssConfigBo;
+//import cc.iotkit.system.dto.vo.SysOssConfigVo;
+//import cn.hutool.core.collection.CollUtil;
+//import cn.hutool.core.util.ObjectUtil;
+//import lombok.RequiredArgsConstructor;
+//import lombok.extern.slf4j.Slf4j;
+//import cc.iotkit.system.service.ISysOssConfigService;
+//import org.springframework.stereotype.Service;
+//import org.springframework.transaction.annotation.Transactional;
+//
+//import java.util.Collection;
+//import java.util.List;
+//import java.util.Map;
+//
+///**
+// * 对象存储配置Service业务层处理
+// *
+// * @author Lion Li
+// * @author 孤舟烟雨
+// * @date 2021-08-13
+// */
+//@Slf4j
+//@RequiredArgsConstructor
+//@Service
+//public class SysOssConfigServiceImpl implements ISysOssConfigService {
+//
+//    private final SysOssConfigMapper baseMapper;
+//
+//    /**
+//     * 项目启动时,初始化参数到缓存,加载配置类
+//     */
+//    @Override
+//    public void init() {
+//        List<SysOssConfig> list = TenantHelper.ignore(() ->
+//            baseMapper.selectList(
+//                new LambdaQueryWrapper<SysOssConfig>().orderByAsc(TenantDto::getTenantId))
+//        );
+//        Map<String, List<SysOssConfig>> map = StreamUtils.groupByKey(list, SysOssConfig::getTenantId);
+//        try {
+//            for (String tenantId : map.keySet()) {
+//                TenantHelper.setDynamic(tenantId);
+//                // 加载OSS初始化配置
+//                for (SysOssConfig config : map.get(tenantId)) {
+//                    String configKey = config.getConfigKey();
+//                    if ("0".equals(config.getStatus())) {
+//                        RedisUtils.setCacheObject(OssConstant.DEFAULT_CONFIG_KEY, configKey);
+//                    }
+//                    CacheUtils.put(CacheNames.SYS_OSS_CONFIG, config.getConfigKey(), JsonUtils.toJsonString(config));
+//                }
+//            }
+//        } finally {
+//            TenantHelper.clearDynamic();
+//        }
+//    }
+//
+//    @Override
+//    public SysOssConfigVo queryById(Long ossConfigId) {
+//        return baseMapper.selectVoById(ossConfigId);
+//    }
+//
+//    @Override
+//    public PagedDataVo<SysOssConfigVo> queryPageList(SysOssConfigBo bo, PageRequest<?> query) {
+//        LambdaQueryWrapper<SysOssConfig> lqw = buildQueryWrapper(bo);
+//        Page<SysOssConfigVo> result = baseMapper.selectVoPage(query.build(), lqw);
+//        return TableDataInfo.build(result);
+//    }
+//
+//
+//    private LambdaQueryWrapper<SysOssConfig> buildQueryWrapper(SysOssConfigBo bo) {
+//        LambdaQueryWrapper<SysOssConfig> lqw = Wrappers.lambdaQuery();
+//        lqw.eq(StringUtils.isNotBlank(bo.getConfigKey()), SysOssConfig::getConfigKey, bo.getConfigKey());
+//        lqw.like(StringUtils.isNotBlank(bo.getBucketName()), SysOssConfig::getBucketName, bo.getBucketName());
+//        lqw.eq(StringUtils.isNotBlank(bo.getStatus()), SysOssConfig::getStatus, bo.getStatus());
+//        return lqw;
+//    }
+//
+//    @Override
+//    public Boolean insertByBo(SysOssConfigBo bo) {
+//        SysOssConfig config = MapstructUtils.convert(bo, SysOssConfig.class);
+//        validEntityBeforeSave(config);
+//        boolean flag = baseMapper.insert(config) > 0;
+//        if (flag) {
+//            CacheUtils.put(CacheNames.SYS_OSS_CONFIG, config.getConfigKey(), JsonUtils.toJsonString(config));
+//        }
+//        return flag;
+//    }
+//
+//    @Override
+//    public Boolean updateByBo(SysOssConfigBo bo) {
+//        SysOssConfig config = MapstructUtils.convert(bo, SysOssConfig.class);
+//        validEntityBeforeSave(config);
+//        LambdaUpdateWrapper<SysOssConfig> luw = new LambdaUpdateWrapper<>();
+//        luw.set(ObjectUtil.isNull(config.getPrefix()), SysOssConfig::getPrefix, "");
+//        luw.set(ObjectUtil.isNull(config.getRegion()), SysOssConfig::getRegion, "");
+//        luw.set(ObjectUtil.isNull(config.getExt1()), SysOssConfig::getExt1, "");
+//        luw.set(ObjectUtil.isNull(config.getRemark()), SysOssConfig::getRemark, "");
+//        luw.eq(SysOssConfig::getOssConfigId, config.getOssConfigId());
+//        boolean flag = baseMapper.update(config, luw) > 0;
+//        if (flag) {
+//            CacheUtils.put(CacheNames.SYS_OSS_CONFIG, config.getConfigKey(), JsonUtils.toJsonString(config));
+//        }
+//        return flag;
+//    }
+//
+//    /**
+//     * 保存前的数据校验
+//     */
+//    private void validEntityBeforeSave(SysOssConfig entity) {
+//        if (StringUtils.isNotEmpty(entity.getConfigKey())
+//            && !checkConfigKeyUnique(entity)) {
+//            throw new BizException("操作配置'" + entity.getConfigKey() + "'失败, 配置key已存在!");
+//        }
+//    }
+//
+//    @Override
+//    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
+//        if (isValid) {
+//            if (CollUtil.containsAny(ids, OssConstant.SYSTEM_DATA_IDS)) {
+//                throw new BizException("系统内置, 不可删除!");
+//            }
+//        }
+//        List<SysOssConfig> list = CollUtil.newArrayList();
+//        for (Long configId : ids) {
+//            SysOssConfig config = baseMapper.selectById(configId);
+//            list.add(config);
+//        }
+//        boolean flag = baseMapper.deleteBatchIds(ids) > 0;
+//        if (flag) {
+//            list.forEach(sysOssConfig ->
+//                CacheUtils.evict(CacheNames.SYS_OSS_CONFIG, sysOssConfig.getConfigKey()));
+//        }
+//        return flag;
+//    }
+//
+//    /**
+//     * 判断configKey是否唯一
+//     */
+//    private boolean checkConfigKeyUnique(SysOssConfig sysOssConfig) {
+//        long ossConfigId = ObjectUtil.isNull(sysOssConfig.getOssConfigId()) ? -1L : sysOssConfig.getOssConfigId();
+//        SysOssConfig info = baseMapper.selectOne(new LambdaQueryWrapper<SysOssConfig>()
+//            .select(SysOssConfig::getOssConfigId, SysOssConfig::getConfigKey)
+//            .eq(SysOssConfig::getConfigKey, sysOssConfig.getConfigKey()));
+//        if (ObjectUtil.isNotNull(info) && info.getOssConfigId() != ossConfigId) {
+//            return false;
+//        }
+//        return true;
+//    }
+//
+//    /**
+//     * 启用禁用状态
+//     */
+//    @Override
+//    @Transactional(rollbackFor = Exception.class)
+//    public int updateOssConfigStatus(SysOssConfigBo bo) {
+//        SysOssConfig sysOssConfig = MapstructUtils.convert(bo, SysOssConfig.class);
+//        int row = baseMapper.update(null, new LambdaUpdateWrapper<SysOssConfig>()
+//            .set(SysOssConfig::getStatus, "1"));
+//        row += baseMapper.updateById(sysOssConfig);
+//        if (row > 0) {
+//            RedisUtils.setCacheObject(OssConstant.DEFAULT_CONFIG_KEY, sysOssConfig.getConfigKey());
+//        }
+//        return row;
+//    }
+//
+//}