Browse Source

项目提交

luogang 10 months ago
parent
commit
41cb377e33
100 changed files with 97 additions and 7044 deletions
  1. 8 8
      ruoyi-admin/pom.xml
  2. 0 514
      ruoyi-admin/src/main/java/liquibase/database/core/OracleDatabase.java
  3. 0 129
      ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java
  4. 0 25
      ruoyi-admin/src/main/java/org/dromara/web/domain/vo/LoginTenantVo.java
  5. 0 31
      ruoyi-admin/src/main/java/org/dromara/web/domain/vo/TenantListVo.java
  6. 1 6
      ruoyi-admin/src/main/java/org/dromara/web/listener/UserActionListener.java
  7. 13 100
      ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java
  8. 8 14
      ruoyi-admin/src/main/java/org/dromara/web/service/SysRegisterService.java
  9. 5 10
      ruoyi-admin/src/main/java/org/dromara/web/service/impl/EmailAuthStrategy.java
  10. 7 11
      ruoyi-admin/src/main/java/org/dromara/web/service/impl/PasswordAuthStrategy.java
  11. 5 10
      ruoyi-admin/src/main/java/org/dromara/web/service/impl/SmsAuthStrategy.java
  12. 0 133
      ruoyi-admin/src/main/java/org/dromara/web/service/impl/SocialAuthStrategy.java
  13. 0 1
      ruoyi-admin/src/main/java/org/dromara/web/service/impl/XcxAuthStrategy.java
  14. 0 1946
      ruoyi-admin/src/main/java/org/flowable/common/engine/impl/AbstractEngineConfiguration.java
  15. 1 1
      ruoyi-admin/src/main/resources/application-dev.yml
  16. 0 1
      ruoyi-common/pom.xml
  17. 2 2
      ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheNames.java
  18. 0 26
      ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/TenantConstants.java
  19. 4 12
      ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/model/LoginUser.java
  20. 18 0
      ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/AreaService.java
  21. 0 18
      ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/DeptService.java
  22. 1 2
      ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/aspect/LogAspect.java
  23. 0 4
      ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/event/LogininforEvent.java
  24. 0 6
      ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/domain/BaseEntity.java
  25. 0 2
      ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/InjectionMetaObjectHandler.java
  26. 1 1
      ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/PlusDataPermissionHandler.java
  27. 11 50
      ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java
  28. 0 32
      ruoyi-common/ruoyi-common-tenant/pom.xml
  29. 0 89
      ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/config/TenantConfig.java
  30. 0 21
      ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/core/TenantEntity.java
  31. 0 148
      ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/core/TenantSaTokenDao.java
  32. 0 20
      ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/exception/TenantException.java
  33. 0 56
      ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/handle/PlusTenantLineHandler.java
  34. 0 73
      ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/handle/TenantKeyPrefixHandler.java
  35. 0 194
      ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java
  36. 0 32
      ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/manager/TenantSpringCacheManager.java
  37. 0 27
      ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/properties/TenantProperties.java
  38. 0 1
      ruoyi-common/ruoyi-common-tenant/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  39. 2 2
      ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/constant/TransConstant.java
  40. 7 7
      ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/AreaNameTranslationImpl.java
  41. 1 1
      ruoyi-common/ruoyi-common-translation/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports
  42. 1 1
      ruoyi-extend/pom.xml
  43. 0 21
      ruoyi-extend/ruoyi-snailjob-server/Dockerfile
  44. 0 46
      ruoyi-extend/ruoyi-snailjob-server/pom.xml
  45. 0 19
      ruoyi-extend/ruoyi-snailjob-server/src/main/java/org/dromara/snailjob/SnailJobServerApplication.java
  46. 0 47
      ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-dev.yml
  47. 0 47
      ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-prod.yml
  48. 0 39
      ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application.yml
  49. 0 11
      ruoyi-extend/ruoyi-snailjob-server/src/main/resources/banner.txt
  50. 0 92
      ruoyi-extend/ruoyi-snailjob-server/src/main/resources/logback-plus.xml
  51. 1 3
      ruoyi-modules/pom.xml
  52. 0 108
      ruoyi-modules/ruoyi-demo/pom.xml
  53. 0 52
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/MailController.java
  54. 0 95
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/RedisCacheController.java
  55. 0 71
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/RedisLockController.java
  56. 0 47
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/RedisPubSubController.java
  57. 0 64
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/RedisRateLimiterController.java
  58. 0 82
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/SmsController.java
  59. 0 31
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/Swagger3DemoController.java
  60. 0 90
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestBatchController.java
  61. 0 147
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestDemoController.java
  62. 0 55
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestEncryptController.java
  63. 0 160
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestExcelController.java
  64. 0 71
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestI18nController.java
  65. 0 76
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestSensitiveController.java
  66. 0 107
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestTreeController.java
  67. 0 33
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/WeSocketController.java
  68. 0 1
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/package-info.java
  69. 0 92
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/queue/BoundedQueueController.java
  70. 0 97
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/queue/DelayedQueueController.java
  71. 0 22
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/queue/PriorityDemo.java
  72. 0 89
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/queue/PriorityQueueController.java
  73. 0 68
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/TestDemo.java
  74. 0 29
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/TestDemoEncrypt.java
  75. 0 65
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/TestTree.java
  76. 0 62
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/TestDemoBo.java
  77. 0 53
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/TestDemoImportVo.java
  78. 0 54
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/TestTreeBo.java
  79. 0 1
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/package-info.java
  80. 0 118
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/ExportDemoVo.java
  81. 0 104
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/TestDemoVo.java
  82. 0 64
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/TestTreeVo.java
  83. 0 68
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/listener/ExportDemoListener.java
  84. 0 13
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/mapper/TestDemoEncryptMapper.java
  85. 0 59
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/mapper/TestDemoMapper.java
  86. 0 21
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/mapper/TestTreeMapper.java
  87. 0 1
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/mapper/package-info.java
  88. 0 18
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/IExportExcelService.java
  89. 0 71
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/ITestDemoService.java
  90. 0 52
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/ITestTreeService.java
  91. 0 222
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/ExportExcelServiceImpl.java
  92. 0 111
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/TestDemoServiceImpl.java
  93. 0 88
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/TestTreeServiceImpl.java
  94. 0 1
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/package-info.java
  95. 0 1
      ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/package-info.java
  96. BIN
      ruoyi-modules/ruoyi-demo/src/main/resources/excel/单列表.xlsx
  97. BIN
      ruoyi-modules/ruoyi-demo/src/main/resources/excel/多sheet列表.xlsx
  98. BIN
      ruoyi-modules/ruoyi-demo/src/main/resources/excel/多列表.xlsx
  99. 0 11
      ruoyi-modules/ruoyi-demo/src/main/resources/mapper/demo/TestDemoMapper.xml
  100. 0 7
      ruoyi-modules/ruoyi-demo/src/main/resources/mapper/demo/TestTreeMapper.xml

+ 8 - 8
ruoyi-admin/pom.xml

@@ -69,10 +69,10 @@
             <artifactId>ruoyi-system</artifactId>
         </dependency>
 
-        <dependency>
-            <groupId>org.dromara</groupId>
-            <artifactId>ruoyi-job</artifactId>
-        </dependency>
+<!--        <dependency>-->
+<!--            <groupId>org.dromara</groupId>-->
+<!--            <artifactId>ruoyi-job</artifactId>-->
+<!--        </dependency>-->
 
         <!-- 代码生成-->
         <dependency>
@@ -94,10 +94,10 @@
 
 
         <!--  工作流模块  -->
-        <dependency>
-            <groupId>org.dromara</groupId>
-            <artifactId>ruoyi-workflow</artifactId>
-        </dependency>
+<!--        <dependency>-->
+<!--            <groupId>org.dromara</groupId>-->
+<!--            <artifactId>ruoyi-workflow</artifactId>-->
+<!--        </dependency>-->
 
         <dependency>
             <groupId>de.codecentric</groupId>

+ 0 - 514
ruoyi-admin/src/main/java/liquibase/database/core/OracleDatabase.java

@@ -1,514 +0,0 @@
-//
-// Source code recreated from a .class file by IntelliJ IDEA
-// (powered by FernFlower decompiler)
-//
-
-package liquibase.database.core;
-
-import dm.jdbc.driver.DmdbConnection;
-import liquibase.CatalogAndSchema;
-import liquibase.Scope;
-import liquibase.database.AbstractJdbcDatabase;
-import liquibase.database.DatabaseConnection;
-import liquibase.database.OfflineConnection;
-import liquibase.database.jvm.JdbcConnection;
-import liquibase.exception.DatabaseException;
-import liquibase.exception.UnexpectedLiquibaseException;
-import liquibase.exception.ValidationErrors;
-import liquibase.executor.ExecutorService;
-import liquibase.statement.DatabaseFunction;
-import liquibase.statement.SequenceCurrentValueFunction;
-import liquibase.statement.SequenceNextValueFunction;
-import liquibase.statement.UniqueConstraint;
-import liquibase.statement.core.RawCallStatement;
-import liquibase.statement.core.RawSqlStatement;
-import liquibase.structure.DatabaseObject;
-import liquibase.structure.core.Catalog;
-import liquibase.structure.core.Index;
-import liquibase.structure.core.PrimaryKey;
-import liquibase.structure.core.Schema;
-import liquibase.util.JdbcUtils;
-import liquibase.util.StringUtil;
-
-import java.lang.reflect.Method;
-import java.sql.*;
-import java.util.*;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-public class OracleDatabase extends AbstractJdbcDatabase {
-    public static final Pattern PROXY_USER = Pattern.compile(".*(?:thin|oci)\\:(.+)/@.*");
-    public static final String PRODUCT_NAME = "oracle";
-    private static final ResourceBundle coreBundle = ResourceBundle.getBundle("liquibase/i18n/liquibase-core");
-    protected final int SHORT_IDENTIFIERS_LENGTH = 30;
-    protected final int LONG_IDENTIFIERS_LEGNTH = 128;
-    public static final int ORACLE_12C_MAJOR_VERSION = 12;
-    private final Set<String> reservedWords = new HashSet();
-    private Set<String> userDefinedTypes;
-    private Map<String, String> savedSessionNlsSettings;
-    private Boolean canAccessDbaRecycleBin;
-    private Integer databaseMajorVersion;
-    private Integer databaseMinorVersion;
-
-    public OracleDatabase() {
-        super.unquotedObjectsAreUppercased = true;
-        super.setCurrentDateTimeFunction("SYSTIMESTAMP");
-        this.dateFunctions.add(new DatabaseFunction("SYSDATE"));
-        this.dateFunctions.add(new DatabaseFunction("SYSTIMESTAMP"));
-        this.dateFunctions.add(new DatabaseFunction("CURRENT_TIMESTAMP"));
-        super.sequenceNextValueFunction = "%s.nextval";
-        super.sequenceCurrentValueFunction = "%s.currval";
-    }
-
-    public int getPriority() {
-        return 1;
-    }
-
-    private void tryProxySession(String url, Connection con) {
-        Matcher m = PROXY_USER.matcher(url);
-        if (m.matches()) {
-            Properties props = new Properties();
-            props.put("PROXY_USER_NAME", m.group(1));
-            Method method;
-            try {
-                method = con.getClass().getMethod("openProxySession", Integer.TYPE, Properties.class);
-                method.setAccessible(true);
-                method.invoke(con, 1, props);
-            } catch (Exception var8) {
-                Scope.getCurrentScope().getLog(this.getClass()).info("Could not open proxy session on OracleDatabase: " + var8.getCause().getMessage());
-                return;
-            }
-
-            try {
-                method = con.getClass().getMethod("isProxySession");
-                method.setAccessible(true);
-                boolean b = (Boolean) method.invoke(con);
-                if (!b) {
-                    Scope.getCurrentScope().getLog(this.getClass()).info("Proxy session not established on OracleDatabase: ");
-                }
-            } catch (Exception var7) {
-                Scope.getCurrentScope().getLog(this.getClass()).info("Could not open proxy session on OracleDatabase: " + var7.getCause().getMessage());
-            }
-        }
-
-    }
-
-    public void setConnection(DatabaseConnection conn) {
-        this.reservedWords.addAll(Arrays.asList("GROUP", "USER", "SESSION", "PASSWORD", "RESOURCE", "START", "SIZE", "UID", "DESC", "ORDER"));
-        Connection sqlConn = null;
-        if (!(conn instanceof OfflineConnection)) {
-            try {
-                if (conn instanceof JdbcConnection) {
-                    sqlConn = ((JdbcConnection) conn).getWrappedConnection();
-                }
-            } catch (Exception var16) {
-                throw new UnexpectedLiquibaseException(var16);
-            }
-
-            if (sqlConn != null) {
-                this.tryProxySession(conn.getURL(), sqlConn);
-
-                try {
-                    this.reservedWords.addAll(Arrays.asList(sqlConn.getMetaData().getSQLKeywords().toUpperCase().split(",\\s*")));
-                } catch (SQLException var15) {
-                    Scope.getCurrentScope().getLog(this.getClass()).info("Could get sql keywords on OracleDatabase: " + var15.getMessage());
-                }
-
-                try {
-                    Method method = sqlConn.getClass().getMethod("setRemarksReporting", Boolean.TYPE);
-                    method.setAccessible(true);
-                    method.invoke(sqlConn, true);
-                } catch (Exception var14) {
-                    Scope.getCurrentScope().getLog(this.getClass()).info("Could not set remarks reporting on OracleDatabase: " + var14.getMessage());
-                }
-
-                CallableStatement statement = null;
-
-                try {
-                    DatabaseMetaData metaData = sqlConn.getMetaData();
-                    Connection connection = metaData.getConnection();
-                    if (connection instanceof DmdbConnection) {
-                        String compatibleVersion = "11.2.0.4.0";
-                        Matcher majorVersionMatcher = Pattern.compile("(\\d+)\\.(\\d+)\\..*").matcher(compatibleVersion);
-                        if (majorVersionMatcher.matches()) {
-                            this.databaseMajorVersion = Integer.valueOf(majorVersionMatcher.group(1));
-                            this.databaseMinorVersion = Integer.valueOf(majorVersionMatcher.group(2));
-                        }
-                    } else {
-                        statement = sqlConn.prepareCall("{call DBMS_UTILITY.DB_VERSION(?,?)}");
-                        statement.registerOutParameter(1, 12);
-                        statement.registerOutParameter(2, 12);
-                        statement.execute();
-                        String compatibleVersion = statement.getString(2);
-                        if (compatibleVersion != null) {
-                            Matcher majorVersionMatcher = Pattern.compile("(\\d+)\\.(\\d+)\\..*").matcher(compatibleVersion);
-                            if (majorVersionMatcher.matches()) {
-                                this.databaseMajorVersion = Integer.valueOf(majorVersionMatcher.group(1));
-                                this.databaseMinorVersion = Integer.valueOf(majorVersionMatcher.group(2));
-                            }
-                        }
-                    }
-                } catch (SQLException var12) {
-                    String message = "Cannot read from DBMS_UTILITY.DB_VERSION: " + var12.getMessage();
-                    Scope.getCurrentScope().getLog(this.getClass()).info("Could not set check compatibility mode on OracleDatabase, assuming not running in any sort of compatibility mode: " + message);
-                } finally {
-                    JdbcUtils.closeStatement(statement);
-                }
-            }
-        }
-
-        super.setConnection(conn);
-    }
-
-    public String getShortName() {
-        return "oracle";
-    }
-
-    protected String getDefaultDatabaseProductName() {
-        return "Oracle";
-    }
-
-    public int getDatabaseMajorVersion() throws DatabaseException {
-        return this.databaseMajorVersion == null ? super.getDatabaseMajorVersion() : this.databaseMajorVersion;
-    }
-
-    public int getDatabaseMinorVersion() throws DatabaseException {
-        return this.databaseMinorVersion == null ? super.getDatabaseMinorVersion() : this.databaseMinorVersion;
-    }
-
-    public Integer getDefaultPort() {
-        return 1521;
-    }
-
-    public String getJdbcCatalogName(CatalogAndSchema schema) {
-        return null;
-    }
-
-    public String getJdbcSchemaName(CatalogAndSchema schema) {
-        return this.correctObjectName(schema.getCatalogName() == null ? schema.getSchemaName() : schema.getCatalogName(), Schema.class);
-    }
-
-    protected String getAutoIncrementClause(String generationType, Boolean defaultOnNull) {
-        if (StringUtil.isEmpty(generationType)) {
-            return super.getAutoIncrementClause();
-        } else {
-            String autoIncrementClause = "GENERATED %s AS IDENTITY";
-            String generationStrategy = generationType;
-            if (Boolean.TRUE.equals(defaultOnNull) && generationType.equalsIgnoreCase("BY DEFAULT")) {
-                generationStrategy = generationType + " ON NULL";
-            }
-
-            return String.format(autoIncrementClause, generationStrategy);
-        }
-    }
-
-    public String generatePrimaryKeyName(String tableName) {
-        return tableName.length() > 27 ? "PK_" + tableName.toUpperCase(Locale.US).substring(0, 27) : "PK_" + tableName.toUpperCase(Locale.US);
-    }
-
-    public boolean supportsInitiallyDeferrableColumns() {
-        return true;
-    }
-
-    public boolean isReservedWord(String objectName) {
-        return this.reservedWords.contains(objectName.toUpperCase());
-    }
-
-    public boolean supportsSequences() {
-        return true;
-    }
-
-    public boolean supportsSchemas() {
-        return false;
-    }
-
-    protected String getConnectionCatalogName() throws DatabaseException {
-        if (this.getConnection() instanceof OfflineConnection) {
-            return this.getConnection().getCatalog();
-        } else if (!(this.getConnection() instanceof JdbcConnection)) {
-            return this.defaultCatalogName;
-        } else {
-            try {
-                return Scope.getCurrentScope().getSingleton(ExecutorService.class).getExecutor("jdbc", this).queryForObject(new RawCallStatement("select sys_context( 'userenv', 'current_schema' ) from dual"), String.class);
-            } catch (Exception var2) {
-                Scope.getCurrentScope().getLog(this.getClass()).info("Error getting default schema", var2);
-                return null;
-            }
-        }
-    }
-
-    public boolean isCorrectDatabaseImplementation(DatabaseConnection conn) throws DatabaseException {
-        return "oracle".equalsIgnoreCase(conn.getDatabaseProductName());
-    }
-
-    public String getDefaultDriver(String url) {
-        return url.startsWith("jdbc:oracle") ? "oracle.jdbc.OracleDriver" : null;
-    }
-
-    public String getDefaultCatalogName() {
-        return super.getDefaultCatalogName() == null ? null : super.getDefaultCatalogName().toUpperCase(Locale.US);
-    }
-
-    public String getDateLiteral(String isoDate) {
-        String normalLiteral = super.getDateLiteral(isoDate);
-        if (this.isDateOnly(isoDate)) {
-            return "TO_DATE(" + normalLiteral + ", 'YYYY-MM-DD')";
-        } else if (this.isTimeOnly(isoDate)) {
-            return "TO_DATE(" + normalLiteral + ", 'HH24:MI:SS')";
-        } else if (this.isTimestamp(isoDate)) {
-            return "TO_TIMESTAMP(" + normalLiteral + ", 'YYYY-MM-DD HH24:MI:SS.FF')";
-        } else if (this.isDateTime(isoDate)) {
-            int seppos = normalLiteral.lastIndexOf(46);
-            if (seppos != -1) {
-                normalLiteral = normalLiteral.substring(0, seppos) + "'";
-            }
-
-            return "TO_DATE(" + normalLiteral + ", 'YYYY-MM-DD HH24:MI:SS')";
-        } else {
-            return "UNSUPPORTED:" + isoDate;
-        }
-    }
-
-    public boolean isSystemObject(DatabaseObject example) {
-        if (example == null) {
-            return false;
-        } else if (this.isLiquibaseObject(example)) {
-            return false;
-        } else {
-            if (example instanceof Schema) {
-                label131:
-                {
-                    if (!"SYSTEM".equals(example.getName()) && !"SYS".equals(example.getName()) && !"CTXSYS".equals(example.getName()) && !"XDB".equals(example.getName())) {
-                        if (!"SYSTEM".equals(example.getSchema().getCatalogName()) && !"SYS".equals(example.getSchema().getCatalogName()) && !"CTXSYS".equals(example.getSchema().getCatalogName()) && !"XDB".equals(example.getSchema().getCatalogName())) {
-                            break label131;
-                        }
-
-                        return true;
-                    }
-
-                    return true;
-                }
-            } else if (this.isSystemObject(example.getSchema())) {
-                return true;
-            }
-
-            if (example instanceof Catalog) {
-                if ("SYSTEM".equals(example.getName()) || "SYS".equals(example.getName()) || "CTXSYS".equals(example.getName()) || "XDB".equals(example.getName())) {
-                    return true;
-                }
-            } else if (example.getName() != null) {
-                if (example.getName().startsWith("BIN$")) {
-                    boolean filteredInOriginalQuery = this.canAccessDbaRecycleBin();
-                    if (!filteredInOriginalQuery) {
-                        filteredInOriginalQuery = StringUtil.trimToEmpty(example.getSchema().getName()).equalsIgnoreCase(this.getConnection().getConnectionUserName());
-                    }
-
-                    if (!filteredInOriginalQuery) {
-                        return true;
-                    }
-
-                    return !(example instanceof PrimaryKey) && !(example instanceof Index) && !(example instanceof UniqueConstraint);
-                }
-
-                if (example.getName().startsWith("AQ$")) {
-                    return true;
-                }
-
-                if (example.getName().startsWith("DR$")) {
-                    return true;
-                }
-
-                if (example.getName().startsWith("SYS_IOT_OVER")) {
-                    return true;
-                }
-
-                if ((example.getName().startsWith("MDRT_") || example.getName().startsWith("MDRS_")) && example.getName().endsWith("$")) {
-                    return true;
-                }
-
-                if (example.getName().startsWith("MLOG$_")) {
-                    return true;
-                }
-
-                if (example.getName().startsWith("RUPD$_")) {
-                    return true;
-                }
-
-                if (example.getName().startsWith("WM$_")) {
-                    return true;
-                }
-
-                if ("CREATE$JAVA$LOB$TABLE".equals(example.getName())) {
-                    return true;
-                }
-
-                if ("JAVA$CLASS$MD5$TABLE".equals(example.getName())) {
-                    return true;
-                }
-
-                if (example.getName().startsWith("ISEQ$$_")) {
-                    return true;
-                }
-
-                if (example.getName().startsWith("USLOG$")) {
-                    return true;
-                }
-
-                if (example.getName().startsWith("SYS_FBA")) {
-                    return true;
-                }
-            }
-
-            return super.isSystemObject(example);
-        }
-    }
-
-    public boolean supportsTablespaces() {
-        return true;
-    }
-
-    public boolean supportsAutoIncrement() {
-        boolean isAutoIncrementSupported = false;
-
-        try {
-            if (this.getDatabaseMajorVersion() >= 12) {
-                isAutoIncrementSupported = true;
-            }
-        } catch (DatabaseException var3) {
-            isAutoIncrementSupported = false;
-        }
-
-        return isAutoIncrementSupported;
-    }
-
-    public boolean supportsRestrictForeignKeys() {
-        return false;
-    }
-
-    public int getDataTypeMaxParameters(String dataTypeName) {
-        if ("BINARY_FLOAT".equalsIgnoreCase(dataTypeName)) {
-            return 0;
-        } else {
-            return "BINARY_DOUBLE".equalsIgnoreCase(dataTypeName) ? 0 : super.getDataTypeMaxParameters(dataTypeName);
-        }
-    }
-
-    public String getSystemTableWhereClause(String tableNameColumn) {
-        List<String> clauses = new ArrayList(Arrays.asList("BIN$", "AQ$", "DR$", "SYS_IOT_OVER", "MLOG$_", "RUPD$_", "WM$_", "ISEQ$$_", "USLOG$", "SYS_FBA"));
-
-        for (int i = 0; i < clauses.size(); ++i) {
-            clauses.set(i, tableNameColumn + " NOT LIKE '" + clauses.get(i) + "%'");
-        }
-
-        return "(" + StringUtil.join(clauses, " AND ") + ")";
-    }
-
-    public boolean jdbcCallsCatalogsSchemas() {
-        return true;
-    }
-
-    public Set<String> getUserDefinedTypes() {
-        if (this.userDefinedTypes == null) {
-            this.userDefinedTypes = new HashSet();
-            if (this.getConnection() != null && !(this.getConnection() instanceof OfflineConnection)) {
-                try {
-                    try {
-                        this.userDefinedTypes.addAll(Scope.getCurrentScope().getSingleton(ExecutorService.class).getExecutor("jdbc", this).queryForList(new RawSqlStatement("SELECT DISTINCT TYPE_NAME FROM ALL_TYPES"), String.class));
-                    } catch (DatabaseException var2) {
-                        this.userDefinedTypes.addAll(Scope.getCurrentScope().getSingleton(ExecutorService.class).getExecutor("jdbc", this).queryForList(new RawSqlStatement("SELECT TYPE_NAME FROM USER_TYPES"), String.class));
-                    }
-                } catch (DatabaseException var3) {
-                }
-            }
-        }
-
-        return this.userDefinedTypes;
-    }
-
-    public String generateDatabaseFunctionValue(DatabaseFunction databaseFunction) {
-        if (databaseFunction != null && "current_timestamp".equalsIgnoreCase(databaseFunction.toString())) {
-            return databaseFunction.toString();
-        } else if (!(databaseFunction instanceof SequenceNextValueFunction) && !(databaseFunction instanceof SequenceCurrentValueFunction)) {
-            return super.generateDatabaseFunctionValue(databaseFunction);
-        } else {
-            String quotedSeq = super.generateDatabaseFunctionValue(databaseFunction);
-            return quotedSeq.replaceFirst("\"([^\\.\"]+)\\.([^\\.\"]+)\"", "\"$1\".\"$2\"");
-        }
-    }
-
-    public ValidationErrors validate() {
-        ValidationErrors errors = super.validate();
-        DatabaseConnection connection = this.getConnection();
-        if (connection != null && !(connection instanceof OfflineConnection)) {
-            if (!this.canAccessDbaRecycleBin()) {
-                errors.addWarning(this.getDbaRecycleBinWarning());
-            }
-
-            return errors;
-        } else {
-            Scope.getCurrentScope().getLog(this.getClass()).info("Cannot validate offline database");
-            return errors;
-        }
-    }
-
-    public String getDbaRecycleBinWarning() {
-        return "Liquibase needs to access the DBA_RECYCLEBIN table so we can automatically handle the case where constraints are deleted and restored. Since Oracle doesn't properly restore the original table names referenced in the constraint, we use the information from the DBA_RECYCLEBIN to automatically correct this issue.\n\nThe user you used to connect to the database (" + this.getConnection().getConnectionUserName() + ") needs to have \"SELECT ON SYS.DBA_RECYCLEBIN\" permissions set before we can perform this operation. Please run the following SQL to set the appropriate permissions, and try running the command again.\n\n     GRANT SELECT ON SYS.DBA_RECYCLEBIN TO " + this.getConnection().getConnectionUserName() + ";";
-    }
-
-    public boolean canAccessDbaRecycleBin() {
-        if (this.canAccessDbaRecycleBin == null) {
-            DatabaseConnection connection = this.getConnection();
-            if (connection == null || connection instanceof OfflineConnection) {
-                return false;
-            }
-
-            Statement statement = null;
-
-            try {
-                statement = ((JdbcConnection) connection).createStatement();
-                ResultSet resultSet = statement.executeQuery("select 1 from dba_recyclebin where 0=1");
-                resultSet.close();
-                this.canAccessDbaRecycleBin = true;
-            } catch (Exception var7) {
-                if (var7 instanceof SQLException && var7.getMessage().startsWith("ORA-00942")) {
-                    this.canAccessDbaRecycleBin = false;
-                } else {
-                    Scope.getCurrentScope().getLog(this.getClass()).warning("Cannot check dba_recyclebin access", var7);
-                    this.canAccessDbaRecycleBin = false;
-                }
-            } finally {
-                JdbcUtils.close(null, statement);
-            }
-        }
-
-        return this.canAccessDbaRecycleBin;
-    }
-
-    public boolean supportsNotNullConstraintNames() {
-        return true;
-    }
-
-    public boolean isValidOracleIdentifier(String identifier, Class<? extends DatabaseObject> type) {
-        if (identifier != null && identifier.length() >= 1) {
-            if (!identifier.matches("^(i?)[A-Z][A-Z0-9\\$\\_\\#]*$")) {
-                return false;
-            } else {
-                return identifier.length() <= 128;
-            }
-        } else {
-            return false;
-        }
-    }
-
-    public int getIdentifierMaximumLength() {
-        try {
-            if (this.getDatabaseMajorVersion() < 12) {
-                return 30;
-            } else {
-                return this.getDatabaseMajorVersion() == 12 && this.getDatabaseMinorVersion() <= 1 ? 30 : 128;
-            }
-        } catch (DatabaseException var2) {
-            throw new UnexpectedLiquibaseException("Cannot determine the Oracle database version number", var2);
-        }
-    }
-}

+ 0 - 129
ruoyi-admin/src/main/java/org/dromara/web/controller/AuthController.java

@@ -1,53 +1,30 @@
 package org.dromara.web.controller;
 
 import cn.dev33.satoken.annotation.SaIgnore;
-import cn.dev33.satoken.exception.NotLoginException;
-import cn.hutool.core.codec.Base64;
-import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
-import jakarta.servlet.http.HttpServletRequest;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import me.zhyd.oauth.model.AuthResponse;
-import me.zhyd.oauth.model.AuthUser;
-import me.zhyd.oauth.request.AuthRequest;
-import me.zhyd.oauth.utils.AuthStateUtils;
 import org.dromara.common.core.constant.UserConstants;
 import org.dromara.common.core.domain.R;
 import org.dromara.common.core.domain.model.LoginBody;
 import org.dromara.common.core.domain.model.RegisterBody;
-import org.dromara.common.core.domain.model.SocialLoginBody;
 import org.dromara.common.core.utils.*;
 import org.dromara.common.encrypt.annotation.ApiEncrypt;
 import org.dromara.common.json.utils.JsonUtils;
 import org.dromara.common.satoken.utils.LoginHelper;
-import org.dromara.common.social.config.properties.SocialLoginConfigProperties;
-import org.dromara.common.social.config.properties.SocialProperties;
-import org.dromara.common.social.utils.SocialUtils;
-import org.dromara.common.tenant.helper.TenantHelper;
 import org.dromara.common.websocket.dto.WebSocketMessageDto;
 import org.dromara.common.websocket.utils.WebSocketUtils;
-import org.dromara.system.domain.bo.SysTenantBo;
 import org.dromara.system.domain.vo.SysClientVo;
-import org.dromara.system.domain.vo.SysTenantVo;
 import org.dromara.system.service.ISysClientService;
 import org.dromara.system.service.ISysConfigService;
-import org.dromara.system.service.ISysSocialService;
-import org.dromara.system.service.ISysTenantService;
-import org.dromara.web.domain.vo.LoginTenantVo;
 import org.dromara.web.domain.vo.LoginVo;
-import org.dromara.web.domain.vo.TenantListVo;
 import org.dromara.web.service.IAuthStrategy;
 import org.dromara.web.service.SysLoginService;
 import org.dromara.web.service.SysRegisterService;
 import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
-import java.net.URL;
-import java.nio.charset.StandardCharsets;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 
@@ -63,12 +40,9 @@ import java.util.concurrent.TimeUnit;
 @RequestMapping("/auth")
 public class AuthController {
 
-    private final SocialProperties socialProperties;
     private final SysLoginService loginService;
     private final SysRegisterService registerService;
     private final ISysConfigService configService;
-    private final ISysTenantService tenantService;
-    private final ISysSocialService socialUserService;
     private final ISysClientService clientService;
     private final ScheduledExecutorService scheduledExecutorService;
 
@@ -95,8 +69,6 @@ public class AuthController {
         } else if (!UserConstants.NORMAL.equals(client.getStatus())) {
             return R.fail(MessageUtils.message("auth.grant.type.blocked"));
         }
-        // 校验租户
-        loginService.checkTenant(loginBody.getTenantId());
         // 登录
         LoginVo loginVo = IAuthStrategy.login(body, client, grantType);
 
@@ -111,62 +83,6 @@ public class AuthController {
     }
 
     /**
-     * 第三方登录请求
-     *
-     * @param source 登录来源
-     * @return 结果
-     */
-    @GetMapping("/binding/{source}")
-    public R<String> authBinding(@PathVariable("source") String source,
-                                 @RequestParam String tenantId, @RequestParam String domain) {
-        SocialLoginConfigProperties obj = socialProperties.getType().get(source);
-        if (ObjectUtil.isNull(obj)) {
-            return R.fail(source + "平台账号暂不支持");
-        }
-        AuthRequest authRequest = SocialUtils.getAuthRequest(source, socialProperties);
-        Map<String, String> map = new HashMap<>();
-        map.put("tenantId", tenantId);
-        map.put("domain", domain);
-        map.put("state", AuthStateUtils.createState());
-        String authorizeUrl = authRequest.authorize(Base64.encode(JsonUtils.toJsonString(map), StandardCharsets.UTF_8));
-        return R.ok("操作成功", authorizeUrl);
-    }
-
-    /**
-     * 第三方登录回调业务处理 绑定授权
-     *
-     * @param loginBody 请求体
-     * @return 结果
-     */
-    @PostMapping("/social/callback")
-    public R<Void> socialCallback(@RequestBody SocialLoginBody loginBody) {
-        // 获取第三方登录信息
-        AuthResponse<AuthUser> response = SocialUtils.loginAuth(
-                loginBody.getSource(), loginBody.getSocialCode(),
-                loginBody.getSocialState(), socialProperties);
-        AuthUser authUserData = response.getData();
-        // 判断授权响应是否成功
-        if (!response.ok()) {
-            return R.fail(response.getMsg());
-        }
-        loginService.socialRegister(authUserData);
-        return R.ok();
-    }
-
-
-    /**
-     * 取消授权
-     *
-     * @param socialId socialId
-     */
-    @DeleteMapping(value = "/unlock/{socialId}")
-    public R<Void> unlockSocial(@PathVariable Long socialId) {
-        Boolean rows = socialUserService.deleteWithValidById(socialId);
-        return rows ? R.ok() : R.fail("取消授权失败");
-    }
-
-
-    /**
      * 退出登录
      */
     @PostMapping("/logout")
@@ -181,54 +97,9 @@ public class AuthController {
     @ApiEncrypt
     @PostMapping("/register")
     public R<Void> register(@Validated @RequestBody RegisterBody user) {
-        if (!configService.selectRegisterEnabled(user.getTenantId())) {
-            return R.fail("当前系统没有开启注册功能!");
-        }
         registerService.register(user);
         return R.ok();
     }
 
-    /**
-     * 登录页面租户下拉框
-     *
-     * @return 租户列表
-     */
-    @GetMapping("/tenant/list")
-    public R<LoginTenantVo> tenantList(HttpServletRequest request) throws Exception {
-        // 返回对象
-        LoginTenantVo result = new LoginTenantVo();
-        boolean enable = TenantHelper.isEnable();
-        result.setTenantEnabled(enable);
-        // 如果未开启租户这直接返回
-        if (!enable) {
-            return R.ok(result);
-        }
-
-        List<SysTenantVo> tenantList = tenantService.queryList(new SysTenantBo());
-        List<TenantListVo> voList = MapstructUtils.convert(tenantList, TenantListVo.class);
-        try {
-            // 如果只超管返回所有租户
-            if (LoginHelper.isSuperAdmin()) {
-                result.setVoList(voList);
-                return R.ok(result);
-            }
-        } catch (NotLoginException ignored) {
-        }
-
-        // 获取域名
-        String host;
-        String referer = request.getHeader("referer");
-        if (StringUtils.isNotBlank(referer)) {
-            // 这里从referer中取值是为了本地使用hosts添加虚拟域名,方便本地环境调试
-            host = referer.split("//")[1].split("/")[0];
-        } else {
-            host = new URL(request.getRequestURL().toString()).getHost();
-        }
-        // 根据域名进行筛选
-        List<TenantListVo> list = StreamUtils.filter(voList, vo ->
-                StringUtils.equals(vo.getDomain1(), host));
-        result.setVoList(CollUtil.isNotEmpty(list) ? list : voList);
-        return R.ok(result);
-    }
 
 }

+ 0 - 25
ruoyi-admin/src/main/java/org/dromara/web/domain/vo/LoginTenantVo.java

@@ -1,25 +0,0 @@
-package org.dromara.web.domain.vo;
-
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * 登录租户对象
- *
- * @author Michelle.Chung
- */
-@Data
-public class LoginTenantVo {
-
-    /**
-     * 租户开关
-     */
-    private Boolean tenantEnabled;
-
-    /**
-     * 租户对象列表
-     */
-    private List<TenantListVo> voList;
-
-}

+ 0 - 31
ruoyi-admin/src/main/java/org/dromara/web/domain/vo/TenantListVo.java

@@ -1,31 +0,0 @@
-package org.dromara.web.domain.vo;
-
-import org.dromara.system.domain.vo.SysTenantVo;
-import io.github.linpeilie.annotations.AutoMapper;
-import lombok.Data;
-
-/**
- * 租户列表
- *
- * @author Lion Li
- */
-@Data
-@AutoMapper(target = SysTenantVo.class)
-public class TenantListVo {
-
-    /**
-     * 租户编号
-     */
-    private String tenantId;
-
-    /**
-     * 企业名称
-     */
-    private String companyName;
-
-    /**
-     * 域名
-     */
-    private String domain1;
-
-}

+ 1 - 6
ruoyi-admin/src/main/java/org/dromara/web/listener/UserActionListener.java

@@ -17,7 +17,6 @@ import org.dromara.common.core.utils.ip.AddressUtils;
 import org.dromara.common.log.event.LogininforEvent;
 import org.dromara.common.redis.utils.RedisUtils;
 import org.dromara.common.satoken.utils.LoginHelper;
-import org.dromara.common.tenant.helper.TenantHelper;
 import org.dromara.web.service.SysLoginService;
 import org.springframework.stereotype.Component;
 
@@ -51,21 +50,17 @@ public class UserActionListener implements SaTokenListener {
         dto.setLoginTime(System.currentTimeMillis());
         dto.setTokenId(tokenValue);
         String username = (String) loginModel.getExtra(LoginHelper.USER_NAME_KEY);
-        String tenantId = (String) loginModel.getExtra(LoginHelper.TENANT_KEY);
         dto.setUserName(username);
         dto.setClientKey((String) loginModel.getExtra(LoginHelper.CLIENT_KEY));
         dto.setDeviceType(loginModel.getDevice());
-        dto.setDeptName((String) loginModel.getExtra(LoginHelper.DEPT_NAME_KEY));
-        TenantHelper.dynamic(tenantId, () -> {
+        dto.setDeptName((String) loginModel.getExtra(LoginHelper.AREA_NAME_KEY));
             if(tokenConfig.getTimeout() == -1) {
                 RedisUtils.setCacheObject(CacheConstants.ONLINE_TOKEN_KEY + tokenValue, dto);
             } else {
                 RedisUtils.setCacheObject(CacheConstants.ONLINE_TOKEN_KEY + tokenValue, dto, Duration.ofSeconds(tokenConfig.getTimeout()));
             }
-        });
         // 记录登录日志
         LogininforEvent logininforEvent = new LogininforEvent();
-        logininforEvent.setTenantId(tenantId);
         logininforEvent.setUsername(username);
         logininforEvent.setStatus(Constants.LOGIN_SUCCESS);
         logininforEvent.setMessage(MessageUtils.message("user.login.success"));

+ 13 - 100
ruoyi-admin/src/main/java/org/dromara/web/service/SysLoginService.java

@@ -3,30 +3,21 @@ package org.dromara.web.service;
 import cn.dev33.satoken.exception.NotLoginException;
 import cn.dev33.satoken.stp.StpUtil;
 import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.collection.CollUtil;
 import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.lock.annotation.Lock4j;
 import lombok.RequiredArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
-import me.zhyd.oauth.model.AuthUser;
 import org.dromara.common.core.constant.Constants;
 import org.dromara.common.core.constant.GlobalConstants;
-import org.dromara.common.core.constant.TenantConstants;
 import org.dromara.common.core.domain.dto.RoleDTO;
 import org.dromara.common.core.domain.model.LoginUser;
 import org.dromara.common.core.enums.LoginType;
-import org.dromara.common.core.enums.TenantStatus;
-import org.dromara.common.core.exception.ServiceException;
 import org.dromara.common.core.exception.user.UserException;
 import org.dromara.common.core.utils.*;
 import org.dromara.common.log.event.LogininforEvent;
 import org.dromara.common.mybatis.helper.DataPermissionHelper;
 import org.dromara.common.redis.utils.RedisUtils;
 import org.dromara.common.satoken.utils.LoginHelper;
-import org.dromara.common.tenant.exception.TenantException;
-import org.dromara.common.tenant.helper.TenantHelper;
 import org.dromara.system.domain.SysUser;
-import org.dromara.system.domain.bo.SysSocialBo;
 import org.dromara.system.domain.vo.*;
 import org.dromara.system.mapper.SysUserMapper;
 import org.dromara.system.service.*;
@@ -34,7 +25,6 @@ import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import java.time.Duration;
-import java.util.Date;
 import java.util.List;
 import java.util.function.Supplier;
 
@@ -54,52 +44,13 @@ public class SysLoginService {
     @Value("${user.password.lockTime}")
     private Integer lockTime;
 
-    private final ISysTenantService tenantService;
+
     private final ISysPermissionService permissionService;
-    private final ISysSocialService sysSocialService;
     private final ISysRoleService roleService;
-    private final ISysDeptService deptService;
+    private final ISysAreaService areaService;
     private final SysUserMapper userMapper;
 
 
-    /**
-     * 绑定第三方用户
-     *
-     * @param authUserData 授权响应实体
-     */
-    @Lock4j
-    public void socialRegister(AuthUser authUserData) {
-        String authId = authUserData.getSource() + authUserData.getUuid();
-        // 第三方用户信息
-        SysSocialBo bo = BeanUtil.toBean(authUserData, SysSocialBo.class);
-        BeanUtil.copyProperties(authUserData.getToken(), bo);
-        Long userId = LoginHelper.getUserId();
-        bo.setUserId(userId);
-        bo.setAuthId(authId);
-        bo.setOpenId(authUserData.getUuid());
-        bo.setUserName(authUserData.getUsername());
-        bo.setNickName(authUserData.getNickname());
-        List<SysSocialVo> checkList = sysSocialService.selectByAuthId(authId);
-        if (CollUtil.isNotEmpty(checkList)) {
-            throw new ServiceException("此三方账号已经被绑定!");
-        }
-        // 查询是否已经绑定用户
-        SysSocialBo params = new SysSocialBo();
-        params.setUserId(userId);
-        params.setSource(bo.getSource());
-        List<SysSocialVo> list = sysSocialService.queryList(params);
-        if (CollUtil.isEmpty(list)) {
-            // 没有绑定用户, 新增用户信息
-            sysSocialService.insertByBo(bo);
-        } else {
-            // 更新用户信息
-            bo.setId(list.get(0).getId());
-            sysSocialService.updateByBo(bo);
-            // 如果要绑定的平台账号已经被绑定过了 是否抛异常自行决断
-            // throw new ServiceException("此平台账号已经被绑定!");
-        }
-    }
-
 
     /**
      * 退出登录
@@ -110,11 +61,7 @@ public class SysLoginService {
             if (ObjectUtil.isNull(loginUser)) {
                 return;
             }
-            if (TenantHelper.isEnable() && LoginHelper.isSuperAdmin()) {
-                // 超级管理员 登出清除动态租户
-                TenantHelper.clearDynamic();
-            }
-            recordLogininfor(loginUser.getTenantId(), loginUser.getUsername(), Constants.LOGOUT, MessageUtils.message("user.logout.success"));
+            recordLogininfor(loginUser.getUsername(), Constants.LOGOUT, MessageUtils.message("user.logout.success"));
         } catch (NotLoginException ignored) {
         } finally {
             try {
@@ -127,14 +74,12 @@ public class SysLoginService {
     /**
      * 记录登录信息
      *
-     * @param tenantId 租户ID
      * @param username 用户名
      * @param status   状态
      * @param message  消息内容
      */
-    public void recordLogininfor(String tenantId, String username, String status, String message) {
+    public void recordLogininfor( String username, String status, String message) {
         LogininforEvent logininforEvent = new LogininforEvent();
-        logininforEvent.setTenantId(tenantId);
         logininforEvent.setUsername(username);
         logininforEvent.setStatus(status);
         logininforEvent.setMessage(message);
@@ -147,24 +92,20 @@ public class SysLoginService {
      */
     public LoginUser buildLoginUser(SysUserVo user) {
         LoginUser loginUser = new LoginUser();
-        loginUser.setTenantId(user.getTenantId());
         loginUser.setUserId(user.getUserId());
-        loginUser.setDeptId(user.getDeptId());
+        loginUser.setAreaId(user.getAreaId());
         loginUser.setUsername(user.getUserName());
         loginUser.setNickname(user.getNickName());
         loginUser.setUserType(user.getUserType());
         loginUser.setMenuPermission(permissionService.getMenuPermission(user.getUserId()));
         loginUser.setRolePermission(permissionService.getRolePermission(user.getUserId()));
-        TenantHelper.dynamic(user.getTenantId(), () -> {
-            SysDeptVo dept = null;
-            if (ObjectUtil.isNotNull(user.getDeptId())) {
-                dept = deptService.selectDeptById(user.getDeptId());
+            SysAreaVo area = null;
+            if (ObjectUtil.isNotNull(user.getAreaId())) {
+                area = areaService.selectAreaById(user.getAreaId());
             }
-            loginUser.setDeptName(ObjectUtil.isNull(dept) ? "" : dept.getDeptName());
-            loginUser.setDeptCategory(ObjectUtil.isNull(dept) ? "" : dept.getDeptCategory());
+            loginUser.setAreaName(ObjectUtil.isNull(area) ? "" : area.getAreaName());
             List<SysRoleVo> roles = roleService.selectRolesByUserId(user.getUserId());
             loginUser.setRoles(BeanUtil.copyToList(roles, RoleDTO.class));
-        });
         return loginUser;
     }
 
@@ -185,7 +126,7 @@ public class SysLoginService {
     /**
      * 登录校验
      */
-    public void checkLogin(LoginType loginType, String tenantId, String username, Supplier<Boolean> supplier) {
+    public void checkLogin(LoginType loginType, String username, Supplier<Boolean> supplier) {
         String errorKey = GlobalConstants.PWD_ERR_CNT_KEY + username;
         String loginFail = Constants.LOGIN_FAIL;
 
@@ -193,7 +134,7 @@ public class SysLoginService {
         int errorNumber = ObjectUtil.defaultIfNull(RedisUtils.getCacheObject(errorKey), 0);
         // 锁定时间内登录 则踢出
         if (errorNumber >= maxRetryCount) {
-            recordLogininfor(tenantId, username, loginFail, MessageUtils.message(loginType.getRetryLimitExceed(), maxRetryCount, lockTime));
+            recordLogininfor(username, loginFail, MessageUtils.message(loginType.getRetryLimitExceed(), maxRetryCount, lockTime));
             throw new UserException(loginType.getRetryLimitExceed(), maxRetryCount, lockTime);
         }
 
@@ -203,11 +144,11 @@ public class SysLoginService {
             RedisUtils.setCacheObject(errorKey, errorNumber, Duration.ofMinutes(lockTime));
             // 达到规定错误次数 则锁定登录
             if (errorNumber >= maxRetryCount) {
-                recordLogininfor(tenantId, username, loginFail, MessageUtils.message(loginType.getRetryLimitExceed(), maxRetryCount, lockTime));
+                recordLogininfor( username, loginFail, MessageUtils.message(loginType.getRetryLimitExceed(), maxRetryCount, lockTime));
                 throw new UserException(loginType.getRetryLimitExceed(), maxRetryCount, lockTime);
             } else {
                 // 未达到规定错误次数
-                recordLogininfor(tenantId, username, loginFail, MessageUtils.message(loginType.getRetryLimitCount(), errorNumber));
+                recordLogininfor( username, loginFail, MessageUtils.message(loginType.getRetryLimitCount(), errorNumber));
                 throw new UserException(loginType.getRetryLimitCount(), errorNumber);
             }
         }
@@ -216,33 +157,5 @@ public class SysLoginService {
         RedisUtils.deleteObject(errorKey);
     }
 
-    /**
-     * 校验租户
-     *
-     * @param tenantId 租户ID
-     */
-    public void checkTenant(String tenantId) {
-        if (!TenantHelper.isEnable()) {
-            return;
-        }
-        if (TenantConstants.DEFAULT_TENANT_ID.equals(tenantId)) {
-            return;
-        }
-        if (StringUtils.isBlank(tenantId)) {
-            throw new TenantException("tenant.number.not.blank");
-        }
-        SysTenantVo tenant = tenantService.queryByTenantId(tenantId);
-        if (ObjectUtil.isNull(tenant)) {
-            log.info("登录租户:{} 不存在.", tenantId);
-            throw new TenantException("tenant.not.exists");
-        } else if (TenantStatus.DISABLE.getCode().equals(tenant.getStatus())) {
-            log.info("登录租户:{} 已被停用.", tenantId);
-            throw new TenantException("tenant.blocked");
-        } else if (ObjectUtil.isNotNull(tenant.getExpireTime())
-            && new Date().after(tenant.getExpireTime())) {
-            log.info("登录租户:{} 已超过有效期.", tenantId);
-            throw new TenantException("tenant.expired");
-        }
-    }
 
 }

+ 8 - 14
ruoyi-admin/src/main/java/org/dromara/web/service/SysRegisterService.java

@@ -16,7 +16,6 @@ import org.dromara.common.core.utils.SpringUtils;
 import org.dromara.common.core.utils.StringUtils;
 import org.dromara.common.log.event.LogininforEvent;
 import org.dromara.common.redis.utils.RedisUtils;
-import org.dromara.common.tenant.helper.TenantHelper;
 import org.dromara.common.web.config.properties.CaptchaProperties;
 import org.dromara.system.domain.SysUser;
 import org.dromara.system.domain.bo.SysUserBo;
@@ -41,7 +40,6 @@ public class SysRegisterService {
      * 注册
      */
     public void register(RegisterBody registerBody) {
-        String tenantId = registerBody.getTenantId();
         String username = registerBody.getUsername();
         String password = registerBody.getPassword();
         // 校验用户类型是否存在
@@ -50,7 +48,7 @@ public class SysRegisterService {
         boolean captchaEnabled = captchaProperties.getEnable();
         // 验证码开关
         if (captchaEnabled) {
-            validateCaptcha(tenantId, username, registerBody.getCode(), registerBody.getUuid());
+            validateCaptcha( username, registerBody.getCode(), registerBody.getUuid());
         }
         SysUserBo sysUser = new SysUserBo();
         sysUser.setUserName(username);
@@ -58,18 +56,16 @@ public class SysRegisterService {
         sysUser.setPassword(BCrypt.hashpw(password));
         sysUser.setUserType(userType);
 
-        boolean exist = TenantHelper.dynamic(tenantId, () -> {
-            return userMapper.exists(new LambdaQueryWrapper<SysUser>()
+        boolean exist =userMapper.exists(new LambdaQueryWrapper<SysUser>()
                 .eq(SysUser::getUserName, sysUser.getUserName()));
-        });
         if (exist) {
             throw new UserException("user.register.save.error", username);
         }
-        boolean regFlag = userService.registerUser(sysUser, tenantId);
+        boolean regFlag = userService.registerUser(sysUser);
         if (!regFlag) {
             throw new UserException("user.register.error");
         }
-        recordLogininfor(tenantId, username, Constants.REGISTER, MessageUtils.message("user.register.success"));
+        recordLogininfor( username, Constants.REGISTER, MessageUtils.message("user.register.success"));
     }
 
     /**
@@ -79,16 +75,16 @@ public class SysRegisterService {
      * @param code     验证码
      * @param uuid     唯一标识
      */
-    public void validateCaptcha(String tenantId, String username, String code, String uuid) {
+    public void validateCaptcha( String username, String code, String uuid) {
         String verifyKey = GlobalConstants.CAPTCHA_CODE_KEY + StringUtils.blankToDefault(uuid, "");
         String captcha = RedisUtils.getCacheObject(verifyKey);
         RedisUtils.deleteObject(verifyKey);
         if (captcha == null) {
-            recordLogininfor(tenantId, username, Constants.REGISTER, MessageUtils.message("user.jcaptcha.expire"));
+            recordLogininfor( username, Constants.REGISTER, MessageUtils.message("user.jcaptcha.expire"));
             throw new CaptchaExpireException();
         }
         if (!code.equalsIgnoreCase(captcha)) {
-            recordLogininfor(tenantId, username, Constants.REGISTER, MessageUtils.message("user.jcaptcha.error"));
+            recordLogininfor( username, Constants.REGISTER, MessageUtils.message("user.jcaptcha.error"));
             throw new CaptchaException();
         }
     }
@@ -96,15 +92,13 @@ public class SysRegisterService {
     /**
      * 记录登录信息
      *
-     * @param tenantId 租户ID
      * @param username 用户名
      * @param status   状态
      * @param message  消息内容
      * @return
      */
-    private void recordLogininfor(String tenantId, String username, String status, String message) {
+    private void recordLogininfor(String username, String status, String message) {
         LogininforEvent logininforEvent = new LogininforEvent();
-        logininforEvent.setTenantId(tenantId);
         logininforEvent.setUsername(username);
         logininforEvent.setStatus(status);
         logininforEvent.setMessage(message);

+ 5 - 10
ruoyi-admin/src/main/java/org/dromara/web/service/impl/EmailAuthStrategy.java

@@ -20,8 +20,6 @@ import org.dromara.common.core.utils.ValidatorUtils;
 import org.dromara.common.json.utils.JsonUtils;
 import org.dromara.common.redis.utils.RedisUtils;
 import org.dromara.common.satoken.utils.LoginHelper;
-import org.dromara.common.tenant.helper.TenantHelper;
-import org.dromara.system.domain.SysClient;
 import org.dromara.system.domain.SysUser;
 import org.dromara.system.domain.vo.SysClientVo;
 import org.dromara.system.domain.vo.SysUserVo;
@@ -48,14 +46,13 @@ public class EmailAuthStrategy implements IAuthStrategy {
     public LoginVo login(String body, SysClientVo client) {
         EmailLoginBody loginBody = JsonUtils.parseObject(body, EmailLoginBody.class);
         ValidatorUtils.validate(loginBody);
-        String tenantId = loginBody.getTenantId();
         String email = loginBody.getEmail();
         String emailCode = loginBody.getEmailCode();
 
         // 通过邮箱查找用户
-        SysUserVo user = loadUserByEmail(tenantId, email);
+        SysUserVo user = loadUserByEmail(email);
 
-        loginService.checkLogin(LoginType.EMAIL, tenantId, user.getUserName(), () -> !validateEmailCode(tenantId, email, emailCode));
+        loginService.checkLogin(LoginType.EMAIL, user.getUserName(), () -> !validateEmailCode( email, emailCode));
         // 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
         LoginUser loginUser = loginService.buildLoginUser(user);
         loginUser.setClientKey(client.getClientKey());
@@ -80,17 +77,16 @@ public class EmailAuthStrategy implements IAuthStrategy {
     /**
      * 校验邮箱验证码
      */
-    private boolean validateEmailCode(String tenantId, String email, String emailCode) {
+    private boolean validateEmailCode( String email, String emailCode) {
         String code = RedisUtils.getCacheObject(GlobalConstants.CAPTCHA_CODE_KEY + email);
         if (StringUtils.isBlank(code)) {
-            loginService.recordLogininfor(tenantId, email, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire"));
+            loginService.recordLogininfor( email, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire"));
             throw new CaptchaExpireException();
         }
         return code.equals(emailCode);
     }
 
-    private SysUserVo loadUserByEmail(String tenantId, String email) {
-        return TenantHelper.dynamic(tenantId, () -> {
+    private SysUserVo loadUserByEmail( String email) {
             SysUserVo user = userMapper.selectVoOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getEmail, email));
             if (ObjectUtil.isNull(user)) {
                 log.info("登录用户:{} 不存在.", email);
@@ -100,7 +96,6 @@ public class EmailAuthStrategy implements IAuthStrategy {
                 throw new UserException("user.blocked", email);
             }
             return user;
-        });
     }
 
 }

+ 7 - 11
ruoyi-admin/src/main/java/org/dromara/web/service/impl/PasswordAuthStrategy.java

@@ -22,7 +22,6 @@ import org.dromara.common.core.utils.ValidatorUtils;
 import org.dromara.common.json.utils.JsonUtils;
 import org.dromara.common.redis.utils.RedisUtils;
 import org.dromara.common.satoken.utils.LoginHelper;
-import org.dromara.common.tenant.helper.TenantHelper;
 import org.dromara.common.web.config.properties.CaptchaProperties;
 import org.dromara.system.domain.SysUser;
 import org.dromara.system.domain.vo.SysClientVo;
@@ -51,7 +50,6 @@ public class PasswordAuthStrategy implements IAuthStrategy {
     public LoginVo login(String body, SysClientVo client) {
         PasswordLoginBody loginBody = JsonUtils.parseObject(body, PasswordLoginBody.class);
         ValidatorUtils.validate(loginBody);
-        String tenantId = loginBody.getTenantId();
         String username = loginBody.getUsername();
         String password = loginBody.getPassword();
         String code = loginBody.getCode();
@@ -60,11 +58,11 @@ public class PasswordAuthStrategy implements IAuthStrategy {
         boolean captchaEnabled = captchaProperties.getEnable();
         // 验证码开关
         if (captchaEnabled) {
-            validateCaptcha(tenantId, username, code, uuid);
+            validateCaptcha( username, code, uuid);
         }
 
-        SysUserVo user = loadUserByUsername(tenantId, username);
-        loginService.checkLogin(LoginType.PASSWORD, tenantId, username, () -> !BCrypt.checkpw(password, user.getPassword()));
+        SysUserVo user = loadUserByUsername( username);
+        loginService.checkLogin(LoginType.PASSWORD,  username, () -> !BCrypt.checkpw(password, user.getPassword()));
         // 此处可根据登录用户的数据不同 自行创建 loginUser
         LoginUser loginUser = loginService.buildLoginUser(user);
         loginUser.setClientKey(client.getClientKey());
@@ -93,22 +91,21 @@ public class PasswordAuthStrategy implements IAuthStrategy {
      * @param code     验证码
      * @param uuid     唯一标识
      */
-    private void validateCaptcha(String tenantId, String username, String code, String uuid) {
+    private void validateCaptcha( String username, String code, String uuid) {
         String verifyKey = GlobalConstants.CAPTCHA_CODE_KEY + StringUtils.blankToDefault(uuid, "");
         String captcha = RedisUtils.getCacheObject(verifyKey);
         RedisUtils.deleteObject(verifyKey);
         if (captcha == null) {
-            loginService.recordLogininfor(tenantId, username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire"));
+            loginService.recordLogininfor( username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire"));
             throw new CaptchaExpireException();
         }
         if (!code.equalsIgnoreCase(captcha)) {
-            loginService.recordLogininfor(tenantId, username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error"));
+            loginService.recordLogininfor( username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error"));
             throw new CaptchaException();
         }
     }
 
-    private SysUserVo loadUserByUsername(String tenantId, String username) {
-        return TenantHelper.dynamic(tenantId, () -> {
+    private SysUserVo loadUserByUsername( String username) {
             SysUserVo user = userMapper.selectVoOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getUserName, username));
             if (ObjectUtil.isNull(user)) {
                 log.info("登录用户:{} 不存在.", username);
@@ -118,7 +115,6 @@ public class PasswordAuthStrategy implements IAuthStrategy {
                 throw new UserException("user.blocked", username);
             }
             return user;
-        });
     }
 
 }

+ 5 - 10
ruoyi-admin/src/main/java/org/dromara/web/service/impl/SmsAuthStrategy.java

@@ -20,8 +20,6 @@ import org.dromara.common.core.utils.ValidatorUtils;
 import org.dromara.common.json.utils.JsonUtils;
 import org.dromara.common.redis.utils.RedisUtils;
 import org.dromara.common.satoken.utils.LoginHelper;
-import org.dromara.common.tenant.helper.TenantHelper;
-import org.dromara.system.domain.SysClient;
 import org.dromara.system.domain.SysUser;
 import org.dromara.system.domain.vo.SysClientVo;
 import org.dromara.system.domain.vo.SysUserVo;
@@ -48,14 +46,13 @@ public class SmsAuthStrategy implements IAuthStrategy {
     public LoginVo login(String body, SysClientVo client) {
         SmsLoginBody loginBody = JsonUtils.parseObject(body, SmsLoginBody.class);
         ValidatorUtils.validate(loginBody);
-        String tenantId = loginBody.getTenantId();
         String phonenumber = loginBody.getPhonenumber();
         String smsCode = loginBody.getSmsCode();
 
         // 通过手机号查找用户
-        SysUserVo user = loadUserByPhonenumber(tenantId, phonenumber);
+        SysUserVo user = loadUserByPhonenumber( phonenumber);
 
-        loginService.checkLogin(LoginType.SMS, tenantId, user.getUserName(), () -> !validateSmsCode(tenantId, phonenumber, smsCode));
+        loginService.checkLogin(LoginType.SMS, user.getUserName(), () -> !validateSmsCode( phonenumber, smsCode));
         // 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
         LoginUser loginUser = loginService.buildLoginUser(user);
         loginUser.setClientKey(client.getClientKey());
@@ -80,17 +77,16 @@ public class SmsAuthStrategy implements IAuthStrategy {
     /**
      * 校验短信验证码
      */
-    private boolean validateSmsCode(String tenantId, String phonenumber, String smsCode) {
+    private boolean validateSmsCode( String phonenumber, String smsCode) {
         String code = RedisUtils.getCacheObject(GlobalConstants.CAPTCHA_CODE_KEY + phonenumber);
         if (StringUtils.isBlank(code)) {
-            loginService.recordLogininfor(tenantId, phonenumber, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire"));
+            loginService.recordLogininfor( phonenumber, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire"));
             throw new CaptchaExpireException();
         }
         return code.equals(smsCode);
     }
 
-    private SysUserVo loadUserByPhonenumber(String tenantId, String phonenumber) {
-        return TenantHelper.dynamic(tenantId, () -> {
+    private SysUserVo loadUserByPhonenumber( String phonenumber) {
             SysUserVo user = userMapper.selectVoOne(new LambdaQueryWrapper<SysUser>().eq(SysUser::getPhonenumber, phonenumber));
             if (ObjectUtil.isNull(user)) {
                 log.info("登录用户:{} 不存在.", phonenumber);
@@ -100,7 +96,6 @@ public class SmsAuthStrategy implements IAuthStrategy {
                 throw new UserException("user.blocked", phonenumber);
             }
             return user;
-        });
     }
 
 }

+ 0 - 133
ruoyi-admin/src/main/java/org/dromara/web/service/impl/SocialAuthStrategy.java

@@ -1,133 +0,0 @@
-package org.dromara.web.service.impl;
-
-import cn.dev33.satoken.stp.SaLoginModel;
-import cn.dev33.satoken.stp.StpUtil;
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.map.MapUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.http.HttpUtil;
-import cn.hutool.http.Method;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import me.zhyd.oauth.model.AuthResponse;
-import me.zhyd.oauth.model.AuthUser;
-import org.dromara.common.core.domain.model.LoginUser;
-import org.dromara.common.core.domain.model.SocialLoginBody;
-import org.dromara.common.core.enums.UserStatus;
-import org.dromara.common.core.exception.ServiceException;
-import org.dromara.common.core.exception.user.UserException;
-import org.dromara.common.core.utils.StreamUtils;
-import org.dromara.common.core.utils.ValidatorUtils;
-import org.dromara.common.json.utils.JsonUtils;
-import org.dromara.common.satoken.utils.LoginHelper;
-import org.dromara.common.social.config.properties.SocialProperties;
-import org.dromara.common.social.utils.SocialUtils;
-import org.dromara.common.tenant.helper.TenantHelper;
-import org.dromara.system.domain.vo.SysClientVo;
-import org.dromara.system.domain.vo.SysSocialVo;
-import org.dromara.system.domain.vo.SysUserVo;
-import org.dromara.system.mapper.SysUserMapper;
-import org.dromara.system.service.ISysSocialService;
-import org.dromara.web.domain.vo.LoginVo;
-import org.dromara.web.service.IAuthStrategy;
-import org.dromara.web.service.SysLoginService;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-import java.util.Optional;
-
-/**
- * 第三方授权策略
- *
- * @author thiszhc is 三三
- */
-@Slf4j
-@Service("social" + IAuthStrategy.BASE_NAME)
-@RequiredArgsConstructor
-public class SocialAuthStrategy implements IAuthStrategy {
-
-    private final SocialProperties socialProperties;
-    private final ISysSocialService sysSocialService;
-    private final SysUserMapper userMapper;
-    private final SysLoginService loginService;
-
-    /**
-     * 登录-第三方授权登录
-     *
-     * @param body     登录信息
-     * @param client   客户端信息
-     */
-    @Override
-    public LoginVo login(String body, SysClientVo client) {
-        SocialLoginBody loginBody = JsonUtils.parseObject(body, SocialLoginBody.class);
-        ValidatorUtils.validate(loginBody);
-        AuthResponse<AuthUser> response = SocialUtils.loginAuth(
-                loginBody.getSource(), loginBody.getSocialCode(),
-                loginBody.getSocialState(), socialProperties);
-        if (!response.ok()) {
-            throw new ServiceException(response.getMsg());
-        }
-        AuthUser authUserData = response.getData();
-        if ("GITEE".equals(authUserData.getSource())) {
-            // 如用户使用 gitee 登录顺手 star 给作者一点支持 拒绝白嫖
-            HttpUtil.createRequest(Method.PUT, "https://gitee.com/api/v5/user/starred/dromara/RuoYi-Vue-Plus")
-                    .formStr(MapUtil.of("access_token", authUserData.getToken().getAccessToken()))
-                    .executeAsync();
-            HttpUtil.createRequest(Method.PUT, "https://gitee.com/api/v5/user/starred/dromara/RuoYi-Cloud-Plus")
-                    .formStr(MapUtil.of("access_token", authUserData.getToken().getAccessToken()))
-                    .executeAsync();
-        }
-
-        List<SysSocialVo> list = sysSocialService.selectByAuthId(authUserData.getSource() + authUserData.getUuid());
-        if (CollUtil.isEmpty(list)) {
-            throw new ServiceException("你还没有绑定第三方账号,绑定后才可以登录!");
-        }
-        SysSocialVo social;
-        if (TenantHelper.isEnable()) {
-            Optional<SysSocialVo> opt = StreamUtils.findAny(list, x -> x.getTenantId().equals(loginBody.getTenantId()));
-            if (opt.isEmpty()) {
-                throw new ServiceException("对不起,你没有权限登录当前租户!");
-            }
-            social = opt.get();
-        } else {
-            social = list.get(0);
-        }
-        // 查找用户
-        SysUserVo user = loadUser(social.getTenantId(), social.getUserId());
-
-        // 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
-        LoginUser loginUser = loginService.buildLoginUser(user);
-        loginUser.setClientKey(client.getClientKey());
-        loginUser.setDeviceType(client.getDeviceType());
-        SaLoginModel model = new SaLoginModel();
-        model.setDevice(client.getDeviceType());
-        // 自定义分配 不同用户体系 不同 token 授权时间 不设置默认走全局 yml 配置
-        // 例如: 后台用户30分钟过期 app用户1天过期
-        model.setTimeout(client.getTimeout());
-        model.setActiveTimeout(client.getActiveTimeout());
-        model.setExtra(LoginHelper.CLIENT_KEY, client.getClientId());
-        // 生成token
-        LoginHelper.login(loginUser, model);
-
-        LoginVo loginVo = new LoginVo();
-        loginVo.setAccessToken(StpUtil.getTokenValue());
-        loginVo.setExpireIn(StpUtil.getTokenTimeout());
-        loginVo.setClientId(client.getClientId());
-        return loginVo;
-    }
-
-    private SysUserVo loadUser(String tenantId, Long userId) {
-        return TenantHelper.dynamic(tenantId, () -> {
-            SysUserVo user = userMapper.selectVoById(userId);
-            if (ObjectUtil.isNull(user)) {
-                log.info("登录用户:{} 不存在.", "");
-                throw new UserException("user.not.exists", "");
-            } else if (UserStatus.DISABLE.getCode().equals(user.getStatus())) {
-                log.info("登录用户:{} 已被停用.", "");
-                throw new UserException("user.blocked", "");
-            }
-            return user;
-        });
-    }
-
-}

+ 0 - 1
ruoyi-admin/src/main/java/org/dromara/web/service/impl/XcxAuthStrategy.java

@@ -48,7 +48,6 @@ public class XcxAuthStrategy implements IAuthStrategy {
 
         // 此处可根据登录用户的数据不同 自行创建 loginUser 属性不够用继承扩展就行了
         XcxLoginUser loginUser = new XcxLoginUser();
-        loginUser.setTenantId(user.getTenantId());
         loginUser.setUserId(user.getUserId());
         loginUser.setUsername(user.getUserName());
         loginUser.setNickname(user.getNickName());

+ 0 - 1946
ruoyi-admin/src/main/java/org/flowable/common/engine/impl/AbstractEngineConfiguration.java

@@ -1,1946 +0,0 @@
-package org.flowable.common.engine.impl;
-
-//
-// Source code recreated from a .class file by IntelliJ IDEA
-// (powered by FernFlower decompiler)
-//
-
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.sql.Connection;
-import java.sql.DatabaseMetaData;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.time.Duration;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.ServiceLoader;
-import java.util.Set;
-import javax.naming.InitialContext;
-import javax.sql.DataSource;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.ibatis.builder.xml.XMLConfigBuilder;
-import org.apache.ibatis.builder.xml.XMLMapperBuilder;
-import org.apache.ibatis.datasource.pooled.PooledDataSource;
-import org.apache.ibatis.mapping.Environment;
-import org.apache.ibatis.plugin.Interceptor;
-import org.apache.ibatis.session.Configuration;
-import org.apache.ibatis.session.SqlSessionFactory;
-import org.apache.ibatis.session.defaults.DefaultSqlSessionFactory;
-import org.apache.ibatis.transaction.TransactionFactory;
-import org.apache.ibatis.transaction.jdbc.JdbcTransactionFactory;
-import org.apache.ibatis.transaction.managed.ManagedTransactionFactory;
-import org.apache.ibatis.type.ArrayTypeHandler;
-import org.apache.ibatis.type.BigDecimalTypeHandler;
-import org.apache.ibatis.type.BlobInputStreamTypeHandler;
-import org.apache.ibatis.type.BlobTypeHandler;
-import org.apache.ibatis.type.BooleanTypeHandler;
-import org.apache.ibatis.type.ByteTypeHandler;
-import org.apache.ibatis.type.ClobTypeHandler;
-import org.apache.ibatis.type.DateOnlyTypeHandler;
-import org.apache.ibatis.type.DateTypeHandler;
-import org.apache.ibatis.type.DoubleTypeHandler;
-import org.apache.ibatis.type.FloatTypeHandler;
-import org.apache.ibatis.type.IntegerTypeHandler;
-import org.apache.ibatis.type.JdbcType;
-import org.apache.ibatis.type.LongTypeHandler;
-import org.apache.ibatis.type.NClobTypeHandler;
-import org.apache.ibatis.type.NStringTypeHandler;
-import org.apache.ibatis.type.ShortTypeHandler;
-import org.apache.ibatis.type.SqlxmlTypeHandler;
-import org.apache.ibatis.type.StringTypeHandler;
-import org.apache.ibatis.type.TimeOnlyTypeHandler;
-import org.apache.ibatis.type.TypeHandlerRegistry;
-import org.flowable.common.engine.api.FlowableException;
-import org.flowable.common.engine.api.delegate.event.FlowableEngineEventType;
-import org.flowable.common.engine.api.delegate.event.FlowableEventDispatcher;
-import org.flowable.common.engine.api.delegate.event.FlowableEventListener;
-import org.flowable.common.engine.api.engine.EngineLifecycleListener;
-import org.flowable.common.engine.impl.agenda.AgendaOperationRunner;
-import org.flowable.common.engine.impl.cfg.CommandExecutorImpl;
-import org.flowable.common.engine.impl.cfg.IdGenerator;
-import org.flowable.common.engine.impl.cfg.TransactionContextFactory;
-import org.flowable.common.engine.impl.cfg.standalone.StandaloneMybatisTransactionContextFactory;
-import org.flowable.common.engine.impl.db.CommonDbSchemaManager;
-import org.flowable.common.engine.impl.db.DbSqlSessionFactory;
-import org.flowable.common.engine.impl.db.LogSqlExecutionTimePlugin;
-import org.flowable.common.engine.impl.db.MybatisTypeAliasConfigurator;
-import org.flowable.common.engine.impl.db.MybatisTypeHandlerConfigurator;
-import org.flowable.common.engine.impl.db.SchemaManager;
-import org.flowable.common.engine.impl.event.EventDispatchAction;
-import org.flowable.common.engine.impl.event.FlowableEventDispatcherImpl;
-import org.flowable.common.engine.impl.interceptor.Command;
-import org.flowable.common.engine.impl.interceptor.CommandConfig;
-import org.flowable.common.engine.impl.interceptor.CommandContextFactory;
-import org.flowable.common.engine.impl.interceptor.CommandContextInterceptor;
-import org.flowable.common.engine.impl.interceptor.CommandExecutor;
-import org.flowable.common.engine.impl.interceptor.CommandInterceptor;
-import org.flowable.common.engine.impl.interceptor.CrDbRetryInterceptor;
-import org.flowable.common.engine.impl.interceptor.DefaultCommandInvoker;
-import org.flowable.common.engine.impl.interceptor.LogInterceptor;
-import org.flowable.common.engine.impl.interceptor.SessionFactory;
-import org.flowable.common.engine.impl.interceptor.TransactionContextInterceptor;
-import org.flowable.common.engine.impl.lock.LockManager;
-import org.flowable.common.engine.impl.lock.LockManagerImpl;
-import org.flowable.common.engine.impl.logging.LoggingListener;
-import org.flowable.common.engine.impl.logging.LoggingSession;
-import org.flowable.common.engine.impl.logging.LoggingSessionFactory;
-import org.flowable.common.engine.impl.persistence.GenericManagerFactory;
-import org.flowable.common.engine.impl.persistence.StrongUuidGenerator;
-import org.flowable.common.engine.impl.persistence.cache.EntityCache;
-import org.flowable.common.engine.impl.persistence.cache.EntityCacheImpl;
-import org.flowable.common.engine.impl.persistence.entity.ByteArrayEntityManager;
-import org.flowable.common.engine.impl.persistence.entity.ByteArrayEntityManagerImpl;
-import org.flowable.common.engine.impl.persistence.entity.Entity;
-import org.flowable.common.engine.impl.persistence.entity.PropertyEntityManager;
-import org.flowable.common.engine.impl.persistence.entity.PropertyEntityManagerImpl;
-import org.flowable.common.engine.impl.persistence.entity.TableDataManager;
-import org.flowable.common.engine.impl.persistence.entity.TableDataManagerImpl;
-import org.flowable.common.engine.impl.persistence.entity.data.ByteArrayDataManager;
-import org.flowable.common.engine.impl.persistence.entity.data.PropertyDataManager;
-import org.flowable.common.engine.impl.persistence.entity.data.impl.MybatisByteArrayDataManager;
-import org.flowable.common.engine.impl.persistence.entity.data.impl.MybatisPropertyDataManager;
-import org.flowable.common.engine.impl.runtime.Clock;
-import org.flowable.common.engine.impl.service.CommonEngineServiceImpl;
-import org.flowable.common.engine.impl.util.DefaultClockImpl;
-import org.flowable.common.engine.impl.util.IoUtil;
-import org.flowable.common.engine.impl.util.ReflectUtil;
-import org.flowable.eventregistry.api.EventRegistryEventConsumer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public abstract class AbstractEngineConfiguration {
-    protected final Logger logger = LoggerFactory.getLogger(this.getClass());
-    public static final String NO_TENANT_ID = "";
-    public static final String DB_SCHEMA_UPDATE_FALSE = "false";
-    public static final String DB_SCHEMA_UPDATE_CREATE = "create";
-    public static final String DB_SCHEMA_UPDATE_CREATE_DROP = "create-drop";
-    public static final String DB_SCHEMA_UPDATE_DROP_CREATE = "drop-create";
-    public static final String DB_SCHEMA_UPDATE_TRUE = "true";
-    protected boolean forceCloseMybatisConnectionPool = true;
-    protected String databaseType;
-    protected String jdbcDriver = "org.h2.Driver";
-    protected String jdbcUrl = "jdbc:h2:tcp://localhost/~/flowable";
-    protected String jdbcUsername = "sa";
-    protected String jdbcPassword = "";
-    protected String dataSourceJndiName;
-    protected int jdbcMaxActiveConnections = 16;
-    protected int jdbcMaxIdleConnections = 8;
-    protected int jdbcMaxCheckoutTime;
-    protected int jdbcMaxWaitTime;
-    protected boolean jdbcPingEnabled;
-    protected String jdbcPingQuery;
-    protected int jdbcPingConnectionNotUsedFor;
-    protected int jdbcDefaultTransactionIsolationLevel;
-    protected DataSource dataSource;
-    protected SchemaManager commonSchemaManager;
-    protected SchemaManager schemaManager;
-    protected Command<Void> schemaManagementCmd;
-    protected String databaseSchemaUpdate = "false";
-    protected boolean useLockForDatabaseSchemaUpdate = false;
-    protected String xmlEncoding = "UTF-8";
-    protected CommandExecutor commandExecutor;
-    protected Collection<? extends CommandInterceptor> defaultCommandInterceptors;
-    protected CommandConfig defaultCommandConfig;
-    protected CommandConfig schemaCommandConfig;
-    protected CommandContextFactory commandContextFactory;
-    protected CommandInterceptor commandInvoker;
-    protected AgendaOperationRunner agendaOperationRunner = (commandContext, runnable) -> {
-        runnable.run();
-    };
-    protected List<CommandInterceptor> customPreCommandInterceptors;
-    protected List<CommandInterceptor> customPostCommandInterceptors;
-    protected List<CommandInterceptor> commandInterceptors;
-    protected Map<String, AbstractEngineConfiguration> engineConfigurations = new HashMap();
-    protected Map<String, AbstractServiceConfiguration> serviceConfigurations = new HashMap();
-    protected ClassLoader classLoader;
-    protected boolean useClassForNameClassLoading = true;
-    protected List<EngineLifecycleListener> engineLifecycleListeners;
-    protected Map<String, EventRegistryEventConsumer> eventRegistryEventConsumers = new HashMap();
-    protected boolean isDbHistoryUsed = true;
-    protected DbSqlSessionFactory dbSqlSessionFactory;
-    protected SqlSessionFactory sqlSessionFactory;
-    protected TransactionFactory transactionFactory;
-    protected TransactionContextFactory transactionContextFactory;
-    protected boolean isBulkInsertEnabled = true;
-    protected int maxNrOfStatementsInBulkInsert = 100;
-    public int DEFAULT_MAX_NR_OF_STATEMENTS_BULK_INSERT_SQL_SERVER = 55;
-    protected String mybatisMappingFile;
-    protected Set<Class<?>> customMybatisMappers;
-    protected Set<String> customMybatisXMLMappers;
-    protected List<Interceptor> customMybatisInterceptors;
-    protected Set<String> dependentEngineMyBatisXmlMappers;
-    protected List<MybatisTypeAliasConfigurator> dependentEngineMybatisTypeAliasConfigs;
-    protected List<MybatisTypeHandlerConfigurator> dependentEngineMybatisTypeHandlerConfigs;
-    protected List<SessionFactory> customSessionFactories;
-    protected Map<Class<?>, SessionFactory> sessionFactories;
-    protected boolean enableEventDispatcher = true;
-    protected FlowableEventDispatcher eventDispatcher;
-    protected List<FlowableEventListener> eventListeners;
-    protected Map<String, List<FlowableEventListener>> typedEventListeners;
-    protected List<EventDispatchAction> additionalEventDispatchActions;
-    protected LoggingListener loggingListener;
-    protected boolean transactionsExternallyManaged;
-    protected boolean usingRelationalDatabase = true;
-    protected boolean usingSchemaMgmt = true;
-    protected String databaseTablePrefix = "";
-    protected String databaseWildcardEscapeCharacter;
-    protected String databaseCatalog = "";
-    protected String databaseSchema;
-    protected boolean tablePrefixIsSchema;
-    protected boolean alwaysLookupLatestDefinitionVersion;
-    protected boolean fallbackToDefaultTenant;
-    protected DefaultTenantProvider defaultTenantProvider = (tenantId, scope, scopeKey) -> {
-        return "";
-    };
-    protected boolean enableLogSqlExecutionTime;
-    protected Properties databaseTypeMappings = getDefaultDatabaseTypeMappings();
-    protected Duration lockPollRate = Duration.ofSeconds(10L);
-    protected Duration schemaLockWaitTime = Duration.ofMinutes(5L);
-    protected PropertyDataManager propertyDataManager;
-    protected ByteArrayDataManager byteArrayDataManager;
-    protected TableDataManager tableDataManager;
-    protected PropertyEntityManager propertyEntityManager;
-    protected ByteArrayEntityManager byteArrayEntityManager;
-    protected List<EngineDeployer> customPreDeployers;
-    protected List<EngineDeployer> customPostDeployers;
-    protected List<EngineDeployer> deployers;
-    protected boolean enableConfiguratorServiceLoader = true;
-    protected List<EngineConfigurator> configurators;
-    protected List<EngineConfigurator> allConfigurators;
-    protected EngineConfigurator idmEngineConfigurator;
-    protected EngineConfigurator eventRegistryConfigurator;
-    public static final String PRODUCT_NAME_POSTGRES = "PostgreSQL";
-    public static final String PRODUCT_NAME_CRDB = "CockroachDB";
-    public static final String DATABASE_TYPE_H2 = "h2";
-    public static final String DATABASE_TYPE_HSQL = "hsql";
-    public static final String DATABASE_TYPE_MYSQL = "mysql";
-    public static final String DATABASE_TYPE_ORACLE = "oracle";
-    public static final String DATABASE_TYPE_POSTGRES = "postgres";
-    public static final String DATABASE_TYPE_MSSQL = "mssql";
-    public static final String DATABASE_TYPE_DB2 = "db2";
-    public static final String DATABASE_TYPE_COCKROACHDB = "cockroachdb";
-    protected Map<Object, Object> beans;
-    protected IdGenerator idGenerator;
-    protected boolean usePrefixId;
-    protected Clock clock;
-    protected ObjectMapper objectMapper;
-    public static final int DEFAULT_GENERIC_MAX_LENGTH_STRING = 4000;
-    public static final int DEFAULT_ORACLE_MAX_LENGTH_STRING = 2000;
-    protected int maxLengthStringVariableType = -1;
-
-    public AbstractEngineConfiguration() {
-    }
-
-    public static Properties getDefaultDatabaseTypeMappings() {
-        Properties databaseTypeMappings = new Properties();
-        databaseTypeMappings.setProperty("H2", "h2");
-        databaseTypeMappings.setProperty("HSQL Database Engine", "hsql");
-        databaseTypeMappings.setProperty("MySQL", "mysql");
-        databaseTypeMappings.setProperty("MariaDB", "mysql");
-        databaseTypeMappings.setProperty("Oracle", "oracle");
-        databaseTypeMappings.setProperty("PostgreSQL", "postgres");
-        databaseTypeMappings.setProperty("Microsoft SQL Server", "mssql");
-        databaseTypeMappings.setProperty("db2", "db2");
-        databaseTypeMappings.setProperty("DB2", "db2");
-        databaseTypeMappings.setProperty("DB2/NT", "db2");
-        databaseTypeMappings.setProperty("DB2/NT64", "db2");
-        databaseTypeMappings.setProperty("DB2 UDP", "db2");
-        databaseTypeMappings.setProperty("DB2/LINUX", "db2");
-        databaseTypeMappings.setProperty("DB2/LINUX390", "db2");
-        databaseTypeMappings.setProperty("DB2/LINUXX8664", "db2");
-        databaseTypeMappings.setProperty("DB2/LINUXZ64", "db2");
-        databaseTypeMappings.setProperty("DB2/LINUXPPC64", "db2");
-        databaseTypeMappings.setProperty("DB2/LINUXPPC64LE", "db2");
-        databaseTypeMappings.setProperty("DB2/400 SQL", "db2");
-        databaseTypeMappings.setProperty("DB2/6000", "db2");
-        databaseTypeMappings.setProperty("DB2 UDB iSeries", "db2");
-        databaseTypeMappings.setProperty("DB2/AIX64", "db2");
-        databaseTypeMappings.setProperty("DB2/HPUX", "db2");
-        databaseTypeMappings.setProperty("DB2/HP64", "db2");
-        databaseTypeMappings.setProperty("DB2/SUN", "db2");
-        databaseTypeMappings.setProperty("DB2/SUN64", "db2");
-        databaseTypeMappings.setProperty("DB2/PTX", "db2");
-        databaseTypeMappings.setProperty("DB2/2", "db2");
-        databaseTypeMappings.setProperty("DB2 UDB AS400", "db2");
-        databaseTypeMappings.setProperty("CockroachDB", "cockroachdb");
-        databaseTypeMappings.setProperty("DM DBMS", DATABASE_TYPE_ORACLE);
-        return databaseTypeMappings;
-    }
-
-    protected void initEngineConfigurations() {
-        this.addEngineConfiguration(this.getEngineCfgKey(), this.getEngineScopeType(), this);
-    }
-
-    protected void initDataSource() {
-        if (this.dataSource == null) {
-            if (this.dataSourceJndiName != null) {
-                try {
-                    this.dataSource = (DataSource)(new InitialContext()).lookup(this.dataSourceJndiName);
-                } catch (Exception var2) {
-                    Exception e = var2;
-                    throw new FlowableException("couldn't lookup datasource from " + this.dataSourceJndiName + ": " + e.getMessage(), e);
-                }
-            } else if (this.jdbcUrl != null) {
-                if (this.jdbcDriver == null || this.jdbcUsername == null) {
-                    throw new FlowableException("DataSource or JDBC properties have to be specified in a process engine configuration");
-                }
-
-                this.logger.debug("initializing datasource to db: {}", this.jdbcUrl);
-                if (this.logger.isInfoEnabled()) {
-                    this.logger.info("Configuring Datasource with following properties (omitted password for security)");
-                    this.logger.info("datasource driver : {}", this.jdbcDriver);
-                    this.logger.info("datasource url : {}", this.jdbcUrl);
-                    this.logger.info("datasource user name : {}", this.jdbcUsername);
-                }
-
-                PooledDataSource pooledDataSource = new PooledDataSource(this.getClass().getClassLoader(), this.jdbcDriver, this.jdbcUrl, this.jdbcUsername, this.jdbcPassword);
-                if (this.jdbcMaxActiveConnections > 0) {
-                    pooledDataSource.setPoolMaximumActiveConnections(this.jdbcMaxActiveConnections);
-                }
-
-                if (this.jdbcMaxIdleConnections > 0) {
-                    pooledDataSource.setPoolMaximumIdleConnections(this.jdbcMaxIdleConnections);
-                }
-
-                if (this.jdbcMaxCheckoutTime > 0) {
-                    pooledDataSource.setPoolMaximumCheckoutTime(this.jdbcMaxCheckoutTime);
-                }
-
-                if (this.jdbcMaxWaitTime > 0) {
-                    pooledDataSource.setPoolTimeToWait(this.jdbcMaxWaitTime);
-                }
-
-                if (this.jdbcPingEnabled) {
-                    pooledDataSource.setPoolPingEnabled(true);
-                    if (this.jdbcPingQuery != null) {
-                        pooledDataSource.setPoolPingQuery(this.jdbcPingQuery);
-                    }
-
-                    pooledDataSource.setPoolPingConnectionsNotUsedFor(this.jdbcPingConnectionNotUsedFor);
-                }
-
-                if (this.jdbcDefaultTransactionIsolationLevel > 0) {
-                    pooledDataSource.setDefaultTransactionIsolationLevel(this.jdbcDefaultTransactionIsolationLevel);
-                }
-
-                this.dataSource = pooledDataSource;
-            }
-        }
-
-        if (this.databaseType == null) {
-            this.initDatabaseType();
-        }
-
-    }
-
-    public void initDatabaseType() {
-        Connection connection = null;
-
-        try {
-            connection = this.dataSource.getConnection();
-            DatabaseMetaData databaseMetaData = connection.getMetaData();
-            String databaseProductName = databaseMetaData.getDatabaseProductName();
-            this.logger.debug("database product name: '{}'", databaseProductName);
-            if ("PostgreSQL".equalsIgnoreCase(databaseProductName)) {
-                PreparedStatement preparedStatement = connection.prepareStatement("select version() as version;");
-
-                try {
-                    ResultSet resultSet = preparedStatement.executeQuery();
-
-                    try {
-                        String version = null;
-                        if (resultSet.next()) {
-                            version = resultSet.getString("version");
-                        }
-
-                        if (StringUtils.isNotEmpty(version) && version.toLowerCase().startsWith("CockroachDB".toLowerCase())) {
-                            databaseProductName = "CockroachDB";
-                            this.logger.info("CockroachDB version '{}' detected", version);
-                        }
-                    } catch (Throwable var21) {
-                        if (resultSet != null) {
-                            try {
-                                resultSet.close();
-                            } catch (Throwable var20) {
-                                var21.addSuppressed(var20);
-                            }
-                        }
-
-                        throw var21;
-                    }
-
-                    if (resultSet != null) {
-                        resultSet.close();
-                    }
-                } catch (Throwable var22) {
-                    if (preparedStatement != null) {
-                        try {
-                            preparedStatement.close();
-                        } catch (Throwable var19) {
-                            var22.addSuppressed(var19);
-                        }
-                    }
-
-                    throw var22;
-                }
-
-                if (preparedStatement != null) {
-                    preparedStatement.close();
-                }
-            }
-
-            this.databaseType = this.databaseTypeMappings.getProperty(databaseProductName);
-            if (this.databaseType == null) {
-                throw new FlowableException("couldn't deduct database type from database product name '" + databaseProductName + "'");
-            }
-
-            this.logger.debug("using database type: {}", this.databaseType);
-        } catch (SQLException var23) {
-            SQLException e = var23;
-            throw new RuntimeException("Exception while initializing Database connection", e);
-        } finally {
-            try {
-                if (connection != null) {
-                    connection.close();
-                }
-            } catch (SQLException var18) {
-                SQLException e = var18;
-                this.logger.error("Exception while closing the Database connection", e);
-            }
-
-        }
-
-        if ("mssql".equals(this.databaseType)) {
-            this.maxNrOfStatementsInBulkInsert = this.DEFAULT_MAX_NR_OF_STATEMENTS_BULK_INSERT_SQL_SERVER;
-        }
-
-    }
-
-    public void initSchemaManager() {
-        if (this.commonSchemaManager == null) {
-            this.commonSchemaManager = new CommonDbSchemaManager();
-        }
-
-    }
-
-    public void addSessionFactory(SessionFactory sessionFactory) {
-        this.sessionFactories.put(sessionFactory.getSessionType(), sessionFactory);
-    }
-
-    public void initCommandContextFactory() {
-        if (this.commandContextFactory == null) {
-            this.commandContextFactory = new CommandContextFactory();
-        }
-
-    }
-
-    public void initTransactionContextFactory() {
-        if (this.transactionContextFactory == null) {
-            this.transactionContextFactory = new StandaloneMybatisTransactionContextFactory();
-        }
-
-    }
-
-    public void initCommandExecutors() {
-        this.initDefaultCommandConfig();
-        this.initSchemaCommandConfig();
-        this.initCommandInvoker();
-        this.initCommandInterceptors();
-        this.initCommandExecutor();
-    }
-
-    public void initDefaultCommandConfig() {
-        if (this.defaultCommandConfig == null) {
-            this.defaultCommandConfig = new CommandConfig();
-        }
-
-    }
-
-    public void initSchemaCommandConfig() {
-        if (this.schemaCommandConfig == null) {
-            this.schemaCommandConfig = new CommandConfig();
-        }
-
-    }
-
-    public void initCommandInvoker() {
-        if (this.commandInvoker == null) {
-            this.commandInvoker = new DefaultCommandInvoker();
-        }
-
-    }
-
-    public void initCommandInterceptors() {
-        if (this.commandInterceptors == null) {
-            this.commandInterceptors = new ArrayList();
-            if (this.customPreCommandInterceptors != null) {
-                this.commandInterceptors.addAll(this.customPreCommandInterceptors);
-            }
-
-            this.commandInterceptors.addAll(this.getDefaultCommandInterceptors());
-            if (this.customPostCommandInterceptors != null) {
-                this.commandInterceptors.addAll(this.customPostCommandInterceptors);
-            }
-
-            this.commandInterceptors.add(this.commandInvoker);
-        }
-
-    }
-
-    public Collection<? extends CommandInterceptor> getDefaultCommandInterceptors() {
-        if (this.defaultCommandInterceptors == null) {
-            List<CommandInterceptor> interceptors = new ArrayList();
-            interceptors.add(new LogInterceptor());
-            if ("cockroachdb".equals(this.databaseType)) {
-                interceptors.add(new CrDbRetryInterceptor());
-            }
-
-            CommandInterceptor transactionInterceptor = this.createTransactionInterceptor();
-            if (transactionInterceptor != null) {
-                interceptors.add(transactionInterceptor);
-            }
-
-            if (this.commandContextFactory != null) {
-                String engineCfgKey = this.getEngineCfgKey();
-                CommandContextInterceptor commandContextInterceptor = new CommandContextInterceptor(this.commandContextFactory, this.classLoader, this.useClassForNameClassLoading, this.clock, this.objectMapper);
-                this.engineConfigurations.put(engineCfgKey, this);
-                commandContextInterceptor.setEngineCfgKey(engineCfgKey);
-                commandContextInterceptor.setEngineConfigurations(this.engineConfigurations);
-                interceptors.add(commandContextInterceptor);
-            }
-
-            if (this.transactionContextFactory != null) {
-                interceptors.add(new TransactionContextInterceptor(this.transactionContextFactory));
-            }
-
-            List<CommandInterceptor> additionalCommandInterceptors = this.getAdditionalDefaultCommandInterceptors();
-            if (additionalCommandInterceptors != null) {
-                interceptors.addAll(additionalCommandInterceptors);
-            }
-
-            this.defaultCommandInterceptors = interceptors;
-        }
-
-        return this.defaultCommandInterceptors;
-    }
-
-    public abstract String getEngineCfgKey();
-
-    public abstract String getEngineScopeType();
-
-    public List<CommandInterceptor> getAdditionalDefaultCommandInterceptors() {
-        return null;
-    }
-
-    public void initCommandExecutor() {
-        if (this.commandExecutor == null) {
-            CommandInterceptor first = this.initInterceptorChain(this.commandInterceptors);
-            this.commandExecutor = new CommandExecutorImpl(this.getDefaultCommandConfig(), first);
-        }
-
-    }
-
-    public CommandInterceptor initInterceptorChain(List<CommandInterceptor> chain) {
-        if (chain != null && !chain.isEmpty()) {
-            for(int i = 0; i < chain.size() - 1; ++i) {
-                ((CommandInterceptor)chain.get(i)).setNext((CommandInterceptor)chain.get(i + 1));
-            }
-
-            return (CommandInterceptor)chain.get(0);
-        } else {
-            throw new FlowableException("invalid command interceptor chain configuration: " + chain);
-        }
-    }
-
-    public abstract CommandInterceptor createTransactionInterceptor();
-
-    public void initBeans() {
-        if (this.beans == null) {
-            this.beans = new HashMap();
-        }
-
-    }
-
-    public void initIdGenerator() {
-        if (this.idGenerator == null) {
-            this.idGenerator = new StrongUuidGenerator();
-        }
-
-    }
-
-    public void initObjectMapper() {
-        if (this.objectMapper == null) {
-            this.objectMapper = new ObjectMapper();
-            this.objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
-        }
-
-    }
-
-    public void initClock() {
-        if (this.clock == null) {
-            this.clock = new DefaultClockImpl();
-        }
-
-    }
-
-    public void initDataManagers() {
-        if (this.propertyDataManager == null) {
-            this.propertyDataManager = new MybatisPropertyDataManager(this.idGenerator);
-        }
-
-        if (this.byteArrayDataManager == null) {
-            this.byteArrayDataManager = new MybatisByteArrayDataManager(this.idGenerator);
-        }
-
-    }
-
-    public void initEntityManagers() {
-        if (this.propertyEntityManager == null) {
-            this.propertyEntityManager = new PropertyEntityManagerImpl(this, this.propertyDataManager);
-        }
-
-        if (this.byteArrayEntityManager == null) {
-            this.byteArrayEntityManager = new ByteArrayEntityManagerImpl(this.byteArrayDataManager, this.getEngineCfgKey(), this::getEventDispatcher);
-        }
-
-        if (this.tableDataManager == null) {
-            this.tableDataManager = new TableDataManagerImpl(this);
-        }
-
-    }
-
-    protected void initService(Object service) {
-        if (service instanceof CommonEngineServiceImpl) {
-            ((CommonEngineServiceImpl)service).setCommandExecutor(this.commandExecutor);
-        }
-
-    }
-
-    public void initSessionFactories() {
-        if (this.sessionFactories == null) {
-            this.sessionFactories = new HashMap();
-            if (this.usingRelationalDatabase) {
-                this.initDbSqlSessionFactory();
-            }
-
-            this.addSessionFactory(new GenericManagerFactory(EntityCache.class, EntityCacheImpl.class));
-            if (this.isLoggingSessionEnabled() && !this.sessionFactories.containsKey(LoggingSession.class)) {
-                LoggingSessionFactory loggingSessionFactory = new LoggingSessionFactory();
-                loggingSessionFactory.setLoggingListener(this.loggingListener);
-                loggingSessionFactory.setObjectMapper(this.objectMapper);
-                this.sessionFactories.put(LoggingSession.class, loggingSessionFactory);
-            }
-
-            this.commandContextFactory.setSessionFactories(this.sessionFactories);
-        } else if (this.usingRelationalDatabase) {
-            this.initDbSqlSessionFactoryEntitySettings();
-        }
-
-        if (this.customSessionFactories != null) {
-            Iterator var3 = this.customSessionFactories.iterator();
-
-            while(var3.hasNext()) {
-                SessionFactory sessionFactory = (SessionFactory)var3.next();
-                this.addSessionFactory(sessionFactory);
-            }
-        }
-
-    }
-
-    public void initDbSqlSessionFactory() {
-        if (this.dbSqlSessionFactory == null) {
-            this.dbSqlSessionFactory = this.createDbSqlSessionFactory();
-        }
-
-        this.dbSqlSessionFactory.setDatabaseType(this.databaseType);
-        this.dbSqlSessionFactory.setSqlSessionFactory(this.sqlSessionFactory);
-        this.dbSqlSessionFactory.setDbHistoryUsed(this.isDbHistoryUsed);
-        this.dbSqlSessionFactory.setDatabaseTablePrefix(this.databaseTablePrefix);
-        this.dbSqlSessionFactory.setTablePrefixIsSchema(this.tablePrefixIsSchema);
-        this.dbSqlSessionFactory.setDatabaseCatalog(this.databaseCatalog);
-        this.dbSqlSessionFactory.setDatabaseSchema(this.databaseSchema);
-        this.dbSqlSessionFactory.setMaxNrOfStatementsInBulkInsert(this.maxNrOfStatementsInBulkInsert);
-        this.initDbSqlSessionFactoryEntitySettings();
-        this.addSessionFactory(this.dbSqlSessionFactory);
-    }
-
-    public DbSqlSessionFactory createDbSqlSessionFactory() {
-        return new DbSqlSessionFactory(this.usePrefixId);
-    }
-
-    protected abstract void initDbSqlSessionFactoryEntitySettings();
-
-    protected void defaultInitDbSqlSessionFactoryEntitySettings(List<Class<? extends Entity>> insertOrder, List<Class<? extends Entity>> deleteOrder) {
-        Iterator var3;
-        Class clazz;
-        if (insertOrder != null) {
-            var3 = insertOrder.iterator();
-
-            while(var3.hasNext()) {
-                clazz = (Class)var3.next();
-                this.dbSqlSessionFactory.getInsertionOrder().add(clazz);
-                if (this.isBulkInsertEnabled) {
-                    this.dbSqlSessionFactory.getBulkInserteableEntityClasses().add(clazz);
-                }
-            }
-        }
-
-        if (deleteOrder != null) {
-            var3 = deleteOrder.iterator();
-
-            while(var3.hasNext()) {
-                clazz = (Class)var3.next();
-                this.dbSqlSessionFactory.getDeletionOrder().add(clazz);
-            }
-        }
-
-    }
-
-    public void initTransactionFactory() {
-        if (this.transactionFactory == null) {
-            if (this.transactionsExternallyManaged) {
-                this.transactionFactory = new ManagedTransactionFactory();
-                Properties properties = new Properties();
-                properties.put("closeConnection", "false");
-                this.transactionFactory.setProperties(properties);
-            } else {
-                this.transactionFactory = new JdbcTransactionFactory();
-            }
-        }
-
-    }
-
-    public void initSqlSessionFactory() {
-        if (this.sqlSessionFactory == null) {
-            InputStream inputStream = null;
-
-            try {
-                inputStream = this.getMyBatisXmlConfigurationStream();
-                Environment environment = new Environment("default", this.transactionFactory, this.dataSource);
-                Reader reader = new InputStreamReader(inputStream);
-                Properties properties = new Properties();
-                properties.put("prefix", this.databaseTablePrefix);
-                String wildcardEscapeClause = "";
-                if (this.databaseWildcardEscapeCharacter != null && this.databaseWildcardEscapeCharacter.length() != 0) {
-                    wildcardEscapeClause = " escape '" + this.databaseWildcardEscapeCharacter + "'";
-                }
-
-                properties.put("wildcardEscapeClause", wildcardEscapeClause);
-                properties.put("limitBefore", "");
-                properties.put("limitAfter", "");
-                properties.put("limitBetween", "");
-                properties.put("limitBeforeNativeQuery", "");
-                properties.put("limitAfterNativeQuery", "");
-                properties.put("blobType", "BLOB");
-                properties.put("boolValue", "TRUE");
-                if (this.databaseType != null) {
-                    properties.load(this.getResourceAsStream(this.pathToEngineDbProperties()));
-                }
-
-                Configuration configuration = this.initMybatisConfiguration(environment, reader, properties);
-                this.sqlSessionFactory = new DefaultSqlSessionFactory(configuration);
-            } catch (Exception var10) {
-                Exception e = var10;
-                throw new FlowableException("Error while building ibatis SqlSessionFactory: " + e.getMessage(), e);
-            } finally {
-                IoUtil.closeSilently(inputStream);
-            }
-        } else {
-            this.applyCustomMybatisCustomizations(this.sqlSessionFactory.getConfiguration());
-        }
-
-    }
-
-    public String pathToEngineDbProperties() {
-        return "org/flowable/common/db/properties/" + this.databaseType + ".properties";
-    }
-
-    public Configuration initMybatisConfiguration(Environment environment, Reader reader, Properties properties) {
-        XMLConfigBuilder parser = new XMLConfigBuilder(reader, "", properties);
-        Configuration configuration = parser.getConfiguration();
-        if (this.databaseType != null) {
-            configuration.setDatabaseId(this.databaseType);
-        }
-
-        configuration.setEnvironment(environment);
-        this.initMybatisTypeHandlers(configuration);
-        this.initCustomMybatisInterceptors(configuration);
-        if (this.isEnableLogSqlExecutionTime()) {
-            this.initMyBatisLogSqlExecutionTimePlugin(configuration);
-        }
-
-        configuration = this.parseMybatisConfiguration(parser);
-        return configuration;
-    }
-
-    public void initCustomMybatisMappers(Configuration configuration) {
-        if (this.getCustomMybatisMappers() != null) {
-            Iterator var2 = this.getCustomMybatisMappers().iterator();
-
-            while(var2.hasNext()) {
-                Class<?> clazz = (Class)var2.next();
-                if (!configuration.hasMapper(clazz)) {
-                    configuration.addMapper(clazz);
-                }
-            }
-        }
-
-    }
-
-    public void initMybatisTypeHandlers(Configuration configuration) {
-        TypeHandlerRegistry handlerRegistry = configuration.getTypeHandlerRegistry();
-        handlerRegistry.register(Object.class, JdbcType.BOOLEAN, new BooleanTypeHandler());
-        handlerRegistry.register(Object.class, JdbcType.BIT, new BooleanTypeHandler());
-        handlerRegistry.register(Object.class, JdbcType.TINYINT, new ByteTypeHandler());
-        handlerRegistry.register(Object.class, JdbcType.SMALLINT, new ShortTypeHandler());
-        handlerRegistry.register(Object.class, JdbcType.INTEGER, new IntegerTypeHandler());
-        handlerRegistry.register(Object.class, JdbcType.FLOAT, new FloatTypeHandler());
-        handlerRegistry.register(Object.class, JdbcType.DOUBLE, new DoubleTypeHandler());
-        handlerRegistry.register(Object.class, JdbcType.CHAR, new StringTypeHandler());
-        handlerRegistry.register(Object.class, JdbcType.CLOB, new ClobTypeHandler());
-        handlerRegistry.register(Object.class, JdbcType.VARCHAR, new StringTypeHandler());
-        handlerRegistry.register(Object.class, JdbcType.LONGVARCHAR, new StringTypeHandler());
-        handlerRegistry.register(Object.class, JdbcType.NVARCHAR, new NStringTypeHandler());
-        handlerRegistry.register(Object.class, JdbcType.NCHAR, new NStringTypeHandler());
-        handlerRegistry.register(Object.class, JdbcType.NCLOB, new NClobTypeHandler());
-        handlerRegistry.register(Object.class, JdbcType.ARRAY, new ArrayTypeHandler());
-        handlerRegistry.register(Object.class, JdbcType.BIGINT, new LongTypeHandler());
-        handlerRegistry.register(Object.class, JdbcType.REAL, new BigDecimalTypeHandler());
-        handlerRegistry.register(Object.class, JdbcType.DECIMAL, new BigDecimalTypeHandler());
-        handlerRegistry.register(Object.class, JdbcType.NUMERIC, new BigDecimalTypeHandler());
-        handlerRegistry.register(Object.class, JdbcType.BLOB, new BlobInputStreamTypeHandler());
-        handlerRegistry.register(Object.class, JdbcType.LONGVARBINARY, new BlobTypeHandler());
-        handlerRegistry.register(Object.class, JdbcType.DATE, new DateOnlyTypeHandler());
-        handlerRegistry.register(Object.class, JdbcType.TIME, new TimeOnlyTypeHandler());
-        handlerRegistry.register(Object.class, JdbcType.TIMESTAMP, new DateTypeHandler());
-        handlerRegistry.register(Object.class, JdbcType.SQLXML, new SqlxmlTypeHandler());
-    }
-
-    public void initCustomMybatisInterceptors(Configuration configuration) {
-        if (this.customMybatisInterceptors != null) {
-            Iterator var2 = this.customMybatisInterceptors.iterator();
-
-            while(var2.hasNext()) {
-                Interceptor interceptor = (Interceptor)var2.next();
-                configuration.addInterceptor(interceptor);
-            }
-        }
-
-    }
-
-    public void initMyBatisLogSqlExecutionTimePlugin(Configuration configuration) {
-        configuration.addInterceptor(new LogSqlExecutionTimePlugin());
-    }
-
-    public Configuration parseMybatisConfiguration(XMLConfigBuilder parser) {
-        Configuration configuration = parser.parse();
-        this.applyCustomMybatisCustomizations(configuration);
-        return configuration;
-    }
-
-    protected void applyCustomMybatisCustomizations(Configuration configuration) {
-        this.initCustomMybatisMappers(configuration);
-        Iterator var2;
-        if (this.dependentEngineMybatisTypeAliasConfigs != null) {
-            var2 = this.dependentEngineMybatisTypeAliasConfigs.iterator();
-
-            while(var2.hasNext()) {
-                MybatisTypeAliasConfigurator typeAliasConfig = (MybatisTypeAliasConfigurator)var2.next();
-                typeAliasConfig.configure(configuration.getTypeAliasRegistry());
-            }
-        }
-
-        if (this.dependentEngineMybatisTypeHandlerConfigs != null) {
-            var2 = this.dependentEngineMybatisTypeHandlerConfigs.iterator();
-
-            while(var2.hasNext()) {
-                MybatisTypeHandlerConfigurator typeHandlerConfig = (MybatisTypeHandlerConfigurator)var2.next();
-                typeHandlerConfig.configure(configuration.getTypeHandlerRegistry());
-            }
-        }
-
-        this.parseDependentEngineMybatisXMLMappers(configuration);
-        this.parseCustomMybatisXMLMappers(configuration);
-    }
-
-    public void parseCustomMybatisXMLMappers(Configuration configuration) {
-        if (this.getCustomMybatisXMLMappers() != null) {
-            Iterator var2 = this.getCustomMybatisXMLMappers().iterator();
-
-            while(var2.hasNext()) {
-                String resource = (String)var2.next();
-                this.parseMybatisXmlMapping(configuration, resource);
-            }
-        }
-
-    }
-
-    public void parseDependentEngineMybatisXMLMappers(Configuration configuration) {
-        if (this.getDependentEngineMyBatisXmlMappers() != null) {
-            Iterator var2 = this.getDependentEngineMyBatisXmlMappers().iterator();
-
-            while(var2.hasNext()) {
-                String resource = (String)var2.next();
-                this.parseMybatisXmlMapping(configuration, resource);
-            }
-        }
-
-    }
-
-    protected void parseMybatisXmlMapping(Configuration configuration, String resource) {
-        XMLMapperBuilder mapperParser = new XMLMapperBuilder(this.getResourceAsStream(resource), configuration, resource, configuration.getSqlFragments());
-        mapperParser.parse();
-    }
-
-    protected InputStream getResourceAsStream(String resource) {
-        ClassLoader classLoader = this.getClassLoader();
-        return classLoader != null ? this.getClassLoader().getResourceAsStream(resource) : this.getClass().getClassLoader().getResourceAsStream(resource);
-    }
-
-    public void setMybatisMappingFile(String file) {
-        this.mybatisMappingFile = file;
-    }
-
-    public String getMybatisMappingFile() {
-        return this.mybatisMappingFile;
-    }
-
-    public abstract InputStream getMyBatisXmlConfigurationStream();
-
-    public void initConfigurators() {
-        this.allConfigurators = new ArrayList();
-        this.allConfigurators.addAll(this.getEngineSpecificEngineConfigurators());
-        if (this.configurators != null) {
-            this.allConfigurators.addAll(this.configurators);
-        }
-
-        if (this.enableConfiguratorServiceLoader) {
-            ClassLoader classLoader = this.getClassLoader();
-            if (classLoader == null) {
-                classLoader = ReflectUtil.getClassLoader();
-            }
-
-            ServiceLoader<EngineConfigurator> configuratorServiceLoader = ServiceLoader.load(EngineConfigurator.class, classLoader);
-            int nrOfServiceLoadedConfigurators = 0;
-
-            Iterator var4;
-            EngineConfigurator configurator;
-            for(var4 = configuratorServiceLoader.iterator(); var4.hasNext(); ++nrOfServiceLoadedConfigurators) {
-                configurator = (EngineConfigurator)var4.next();
-                this.allConfigurators.add(configurator);
-            }
-
-            if (nrOfServiceLoadedConfigurators > 0) {
-                this.logger.info("Found {} auto-discoverable Process Engine Configurator{}", nrOfServiceLoadedConfigurators, nrOfServiceLoadedConfigurators > 1 ? "s" : "");
-            }
-
-            if (!this.allConfigurators.isEmpty()) {
-                this.allConfigurators.sort(new Comparator<EngineConfigurator>() {
-                    public int compare(EngineConfigurator configurator1, EngineConfigurator configurator2) {
-                        int priority1 = configurator1.getPriority();
-                        int priority2 = configurator2.getPriority();
-                        if (priority1 < priority2) {
-                            return -1;
-                        } else {
-                            return priority1 > priority2 ? 1 : 0;
-                        }
-                    }
-                });
-                this.logger.info("Found {} Engine Configurators in total:", this.allConfigurators.size());
-                var4 = this.allConfigurators.iterator();
-
-                while(var4.hasNext()) {
-                    configurator = (EngineConfigurator)var4.next();
-                    this.logger.info("{} (priority:{})", configurator.getClass(), configurator.getPriority());
-                }
-            }
-        }
-
-    }
-
-    public void close() {
-        if (this.forceCloseMybatisConnectionPool && this.dataSource instanceof PooledDataSource) {
-            ((PooledDataSource)this.dataSource).forceCloseAll();
-        }
-
-    }
-
-    protected List<EngineConfigurator> getEngineSpecificEngineConfigurators() {
-        return Collections.emptyList();
-    }
-
-    public void configuratorsBeforeInit() {
-        Iterator var1 = this.allConfigurators.iterator();
-
-        while(var1.hasNext()) {
-            EngineConfigurator configurator = (EngineConfigurator)var1.next();
-            this.logger.info("Executing beforeInit() of {} (priority:{})", configurator.getClass(), configurator.getPriority());
-            configurator.beforeInit(this);
-        }
-
-    }
-
-    public void configuratorsAfterInit() {
-        Iterator var1 = this.allConfigurators.iterator();
-
-        while(var1.hasNext()) {
-            EngineConfigurator configurator = (EngineConfigurator)var1.next();
-            this.logger.info("Executing configure() of {} (priority:{})", configurator.getClass(), configurator.getPriority());
-            configurator.configure(this);
-        }
-
-    }
-
-    public LockManager getLockManager(String lockName) {
-        return new LockManagerImpl(this.commandExecutor, lockName, this.getLockPollRate(), this.getEngineCfgKey());
-    }
-
-    public abstract String getEngineName();
-
-    public ClassLoader getClassLoader() {
-        return this.classLoader;
-    }
-
-    public AbstractEngineConfiguration setClassLoader(ClassLoader classLoader) {
-        this.classLoader = classLoader;
-        return this;
-    }
-
-    public boolean isUseClassForNameClassLoading() {
-        return this.useClassForNameClassLoading;
-    }
-
-    public AbstractEngineConfiguration setUseClassForNameClassLoading(boolean useClassForNameClassLoading) {
-        this.useClassForNameClassLoading = useClassForNameClassLoading;
-        return this;
-    }
-
-    public void addEngineLifecycleListener(EngineLifecycleListener engineLifecycleListener) {
-        if (this.engineLifecycleListeners == null) {
-            this.engineLifecycleListeners = new ArrayList();
-        }
-
-        this.engineLifecycleListeners.add(engineLifecycleListener);
-    }
-
-    public List<EngineLifecycleListener> getEngineLifecycleListeners() {
-        return this.engineLifecycleListeners;
-    }
-
-    public AbstractEngineConfiguration setEngineLifecycleListeners(List<EngineLifecycleListener> engineLifecycleListeners) {
-        this.engineLifecycleListeners = engineLifecycleListeners;
-        return this;
-    }
-
-    public String getDatabaseType() {
-        return this.databaseType;
-    }
-
-    public AbstractEngineConfiguration setDatabaseType(String databaseType) {
-        this.databaseType = databaseType;
-        return this;
-    }
-
-    public DataSource getDataSource() {
-        return this.dataSource;
-    }
-
-    public AbstractEngineConfiguration setDataSource(DataSource dataSource) {
-        this.dataSource = dataSource;
-        return this;
-    }
-
-    public SchemaManager getSchemaManager() {
-        return this.schemaManager;
-    }
-
-    public AbstractEngineConfiguration setSchemaManager(SchemaManager schemaManager) {
-        this.schemaManager = schemaManager;
-        return this;
-    }
-
-    public SchemaManager getCommonSchemaManager() {
-        return this.commonSchemaManager;
-    }
-
-    public AbstractEngineConfiguration setCommonSchemaManager(SchemaManager commonSchemaManager) {
-        this.commonSchemaManager = commonSchemaManager;
-        return this;
-    }
-
-    public Command<Void> getSchemaManagementCmd() {
-        return this.schemaManagementCmd;
-    }
-
-    public AbstractEngineConfiguration setSchemaManagementCmd(Command<Void> schemaManagementCmd) {
-        this.schemaManagementCmd = schemaManagementCmd;
-        return this;
-    }
-
-    public String getJdbcDriver() {
-        return this.jdbcDriver;
-    }
-
-    public AbstractEngineConfiguration setJdbcDriver(String jdbcDriver) {
-        this.jdbcDriver = jdbcDriver;
-        return this;
-    }
-
-    public String getJdbcUrl() {
-        return this.jdbcUrl;
-    }
-
-    public AbstractEngineConfiguration setJdbcUrl(String jdbcUrl) {
-        this.jdbcUrl = jdbcUrl;
-        return this;
-    }
-
-    public String getJdbcUsername() {
-        return this.jdbcUsername;
-    }
-
-    public AbstractEngineConfiguration setJdbcUsername(String jdbcUsername) {
-        this.jdbcUsername = jdbcUsername;
-        return this;
-    }
-
-    public String getJdbcPassword() {
-        return this.jdbcPassword;
-    }
-
-    public AbstractEngineConfiguration setJdbcPassword(String jdbcPassword) {
-        this.jdbcPassword = jdbcPassword;
-        return this;
-    }
-
-    public int getJdbcMaxActiveConnections() {
-        return this.jdbcMaxActiveConnections;
-    }
-
-    public AbstractEngineConfiguration setJdbcMaxActiveConnections(int jdbcMaxActiveConnections) {
-        this.jdbcMaxActiveConnections = jdbcMaxActiveConnections;
-        return this;
-    }
-
-    public int getJdbcMaxIdleConnections() {
-        return this.jdbcMaxIdleConnections;
-    }
-
-    public AbstractEngineConfiguration setJdbcMaxIdleConnections(int jdbcMaxIdleConnections) {
-        this.jdbcMaxIdleConnections = jdbcMaxIdleConnections;
-        return this;
-    }
-
-    public int getJdbcMaxCheckoutTime() {
-        return this.jdbcMaxCheckoutTime;
-    }
-
-    public AbstractEngineConfiguration setJdbcMaxCheckoutTime(int jdbcMaxCheckoutTime) {
-        this.jdbcMaxCheckoutTime = jdbcMaxCheckoutTime;
-        return this;
-    }
-
-    public int getJdbcMaxWaitTime() {
-        return this.jdbcMaxWaitTime;
-    }
-
-    public AbstractEngineConfiguration setJdbcMaxWaitTime(int jdbcMaxWaitTime) {
-        this.jdbcMaxWaitTime = jdbcMaxWaitTime;
-        return this;
-    }
-
-    public boolean isJdbcPingEnabled() {
-        return this.jdbcPingEnabled;
-    }
-
-    public AbstractEngineConfiguration setJdbcPingEnabled(boolean jdbcPingEnabled) {
-        this.jdbcPingEnabled = jdbcPingEnabled;
-        return this;
-    }
-
-    public int getJdbcPingConnectionNotUsedFor() {
-        return this.jdbcPingConnectionNotUsedFor;
-    }
-
-    public AbstractEngineConfiguration setJdbcPingConnectionNotUsedFor(int jdbcPingConnectionNotUsedFor) {
-        this.jdbcPingConnectionNotUsedFor = jdbcPingConnectionNotUsedFor;
-        return this;
-    }
-
-    public int getJdbcDefaultTransactionIsolationLevel() {
-        return this.jdbcDefaultTransactionIsolationLevel;
-    }
-
-    public AbstractEngineConfiguration setJdbcDefaultTransactionIsolationLevel(int jdbcDefaultTransactionIsolationLevel) {
-        this.jdbcDefaultTransactionIsolationLevel = jdbcDefaultTransactionIsolationLevel;
-        return this;
-    }
-
-    public String getJdbcPingQuery() {
-        return this.jdbcPingQuery;
-    }
-
-    public AbstractEngineConfiguration setJdbcPingQuery(String jdbcPingQuery) {
-        this.jdbcPingQuery = jdbcPingQuery;
-        return this;
-    }
-
-    public String getDataSourceJndiName() {
-        return this.dataSourceJndiName;
-    }
-
-    public AbstractEngineConfiguration setDataSourceJndiName(String dataSourceJndiName) {
-        this.dataSourceJndiName = dataSourceJndiName;
-        return this;
-    }
-
-    public CommandConfig getSchemaCommandConfig() {
-        return this.schemaCommandConfig;
-    }
-
-    public AbstractEngineConfiguration setSchemaCommandConfig(CommandConfig schemaCommandConfig) {
-        this.schemaCommandConfig = schemaCommandConfig;
-        return this;
-    }
-
-    public boolean isTransactionsExternallyManaged() {
-        return this.transactionsExternallyManaged;
-    }
-
-    public AbstractEngineConfiguration setTransactionsExternallyManaged(boolean transactionsExternallyManaged) {
-        this.transactionsExternallyManaged = transactionsExternallyManaged;
-        return this;
-    }
-
-    public Map<Object, Object> getBeans() {
-        return this.beans;
-    }
-
-    public AbstractEngineConfiguration setBeans(Map<Object, Object> beans) {
-        this.beans = beans;
-        return this;
-    }
-
-    public IdGenerator getIdGenerator() {
-        return this.idGenerator;
-    }
-
-    public AbstractEngineConfiguration setIdGenerator(IdGenerator idGenerator) {
-        this.idGenerator = idGenerator;
-        return this;
-    }
-
-    public boolean isUsePrefixId() {
-        return this.usePrefixId;
-    }
-
-    public AbstractEngineConfiguration setUsePrefixId(boolean usePrefixId) {
-        this.usePrefixId = usePrefixId;
-        return this;
-    }
-
-    public String getXmlEncoding() {
-        return this.xmlEncoding;
-    }
-
-    public AbstractEngineConfiguration setXmlEncoding(String xmlEncoding) {
-        this.xmlEncoding = xmlEncoding;
-        return this;
-    }
-
-    public CommandConfig getDefaultCommandConfig() {
-        return this.defaultCommandConfig;
-    }
-
-    public AbstractEngineConfiguration setDefaultCommandConfig(CommandConfig defaultCommandConfig) {
-        this.defaultCommandConfig = defaultCommandConfig;
-        return this;
-    }
-
-    public CommandExecutor getCommandExecutor() {
-        return this.commandExecutor;
-    }
-
-    public AbstractEngineConfiguration setCommandExecutor(CommandExecutor commandExecutor) {
-        this.commandExecutor = commandExecutor;
-        return this;
-    }
-
-    public CommandContextFactory getCommandContextFactory() {
-        return this.commandContextFactory;
-    }
-
-    public AbstractEngineConfiguration setCommandContextFactory(CommandContextFactory commandContextFactory) {
-        this.commandContextFactory = commandContextFactory;
-        return this;
-    }
-
-    public CommandInterceptor getCommandInvoker() {
-        return this.commandInvoker;
-    }
-
-    public AbstractEngineConfiguration setCommandInvoker(CommandInterceptor commandInvoker) {
-        this.commandInvoker = commandInvoker;
-        return this;
-    }
-
-    public AgendaOperationRunner getAgendaOperationRunner() {
-        return this.agendaOperationRunner;
-    }
-
-    public AbstractEngineConfiguration setAgendaOperationRunner(AgendaOperationRunner agendaOperationRunner) {
-        this.agendaOperationRunner = agendaOperationRunner;
-        return this;
-    }
-
-    public List<CommandInterceptor> getCustomPreCommandInterceptors() {
-        return this.customPreCommandInterceptors;
-    }
-
-    public AbstractEngineConfiguration setCustomPreCommandInterceptors(List<CommandInterceptor> customPreCommandInterceptors) {
-        this.customPreCommandInterceptors = customPreCommandInterceptors;
-        return this;
-    }
-
-    public List<CommandInterceptor> getCustomPostCommandInterceptors() {
-        return this.customPostCommandInterceptors;
-    }
-
-    public AbstractEngineConfiguration setCustomPostCommandInterceptors(List<CommandInterceptor> customPostCommandInterceptors) {
-        this.customPostCommandInterceptors = customPostCommandInterceptors;
-        return this;
-    }
-
-    public List<CommandInterceptor> getCommandInterceptors() {
-        return this.commandInterceptors;
-    }
-
-    public AbstractEngineConfiguration setCommandInterceptors(List<CommandInterceptor> commandInterceptors) {
-        this.commandInterceptors = commandInterceptors;
-        return this;
-    }
-
-    public Map<String, AbstractEngineConfiguration> getEngineConfigurations() {
-        return this.engineConfigurations;
-    }
-
-    public AbstractEngineConfiguration setEngineConfigurations(Map<String, AbstractEngineConfiguration> engineConfigurations) {
-        this.engineConfigurations = engineConfigurations;
-        return this;
-    }
-
-    public void addEngineConfiguration(String key, String scopeType, AbstractEngineConfiguration engineConfiguration) {
-        if (this.engineConfigurations == null) {
-            this.engineConfigurations = new HashMap();
-        }
-
-        this.engineConfigurations.put(key, engineConfiguration);
-        this.engineConfigurations.put(scopeType, engineConfiguration);
-    }
-
-    public Map<String, AbstractServiceConfiguration> getServiceConfigurations() {
-        return this.serviceConfigurations;
-    }
-
-    public AbstractEngineConfiguration setServiceConfigurations(Map<String, AbstractServiceConfiguration> serviceConfigurations) {
-        this.serviceConfigurations = serviceConfigurations;
-        return this;
-    }
-
-    public void addServiceConfiguration(String key, AbstractServiceConfiguration serviceConfiguration) {
-        if (this.serviceConfigurations == null) {
-            this.serviceConfigurations = new HashMap();
-        }
-
-        this.serviceConfigurations.put(key, serviceConfiguration);
-    }
-
-    public Map<String, EventRegistryEventConsumer> getEventRegistryEventConsumers() {
-        return this.eventRegistryEventConsumers;
-    }
-
-    public AbstractEngineConfiguration setEventRegistryEventConsumers(Map<String, EventRegistryEventConsumer> eventRegistryEventConsumers) {
-        this.eventRegistryEventConsumers = eventRegistryEventConsumers;
-        return this;
-    }
-
-    public void addEventRegistryEventConsumer(String key, EventRegistryEventConsumer eventRegistryEventConsumer) {
-        if (this.eventRegistryEventConsumers == null) {
-            this.eventRegistryEventConsumers = new HashMap();
-        }
-
-        this.eventRegistryEventConsumers.put(key, eventRegistryEventConsumer);
-    }
-
-    public AbstractEngineConfiguration setDefaultCommandInterceptors(Collection<? extends CommandInterceptor> defaultCommandInterceptors) {
-        this.defaultCommandInterceptors = defaultCommandInterceptors;
-        return this;
-    }
-
-    public SqlSessionFactory getSqlSessionFactory() {
-        return this.sqlSessionFactory;
-    }
-
-    public AbstractEngineConfiguration setSqlSessionFactory(SqlSessionFactory sqlSessionFactory) {
-        this.sqlSessionFactory = sqlSessionFactory;
-        return this;
-    }
-
-    public boolean isDbHistoryUsed() {
-        return this.isDbHistoryUsed;
-    }
-
-    public AbstractEngineConfiguration setDbHistoryUsed(boolean isDbHistoryUsed) {
-        this.isDbHistoryUsed = isDbHistoryUsed;
-        return this;
-    }
-
-    public DbSqlSessionFactory getDbSqlSessionFactory() {
-        return this.dbSqlSessionFactory;
-    }
-
-    public AbstractEngineConfiguration setDbSqlSessionFactory(DbSqlSessionFactory dbSqlSessionFactory) {
-        this.dbSqlSessionFactory = dbSqlSessionFactory;
-        return this;
-    }
-
-    public TransactionFactory getTransactionFactory() {
-        return this.transactionFactory;
-    }
-
-    public AbstractEngineConfiguration setTransactionFactory(TransactionFactory transactionFactory) {
-        this.transactionFactory = transactionFactory;
-        return this;
-    }
-
-    public TransactionContextFactory getTransactionContextFactory() {
-        return this.transactionContextFactory;
-    }
-
-    public AbstractEngineConfiguration setTransactionContextFactory(TransactionContextFactory transactionContextFactory) {
-        this.transactionContextFactory = transactionContextFactory;
-        return this;
-    }
-
-    public int getMaxNrOfStatementsInBulkInsert() {
-        return this.maxNrOfStatementsInBulkInsert;
-    }
-
-    public AbstractEngineConfiguration setMaxNrOfStatementsInBulkInsert(int maxNrOfStatementsInBulkInsert) {
-        this.maxNrOfStatementsInBulkInsert = maxNrOfStatementsInBulkInsert;
-        return this;
-    }
-
-    public boolean isBulkInsertEnabled() {
-        return this.isBulkInsertEnabled;
-    }
-
-    public AbstractEngineConfiguration setBulkInsertEnabled(boolean isBulkInsertEnabled) {
-        this.isBulkInsertEnabled = isBulkInsertEnabled;
-        return this;
-    }
-
-    public Set<Class<?>> getCustomMybatisMappers() {
-        return this.customMybatisMappers;
-    }
-
-    public AbstractEngineConfiguration setCustomMybatisMappers(Set<Class<?>> customMybatisMappers) {
-        this.customMybatisMappers = customMybatisMappers;
-        return this;
-    }
-
-    public Set<String> getCustomMybatisXMLMappers() {
-        return this.customMybatisXMLMappers;
-    }
-
-    public AbstractEngineConfiguration setCustomMybatisXMLMappers(Set<String> customMybatisXMLMappers) {
-        this.customMybatisXMLMappers = customMybatisXMLMappers;
-        return this;
-    }
-
-    public Set<String> getDependentEngineMyBatisXmlMappers() {
-        return this.dependentEngineMyBatisXmlMappers;
-    }
-
-    public AbstractEngineConfiguration setCustomMybatisInterceptors(List<Interceptor> customMybatisInterceptors) {
-        this.customMybatisInterceptors = customMybatisInterceptors;
-        return this;
-    }
-
-    public List<Interceptor> getCustomMybatisInterceptors() {
-        return this.customMybatisInterceptors;
-    }
-
-    public AbstractEngineConfiguration setDependentEngineMyBatisXmlMappers(Set<String> dependentEngineMyBatisXmlMappers) {
-        this.dependentEngineMyBatisXmlMappers = dependentEngineMyBatisXmlMappers;
-        return this;
-    }
-
-    public List<MybatisTypeAliasConfigurator> getDependentEngineMybatisTypeAliasConfigs() {
-        return this.dependentEngineMybatisTypeAliasConfigs;
-    }
-
-    public AbstractEngineConfiguration setDependentEngineMybatisTypeAliasConfigs(List<MybatisTypeAliasConfigurator> dependentEngineMybatisTypeAliasConfigs) {
-        this.dependentEngineMybatisTypeAliasConfigs = dependentEngineMybatisTypeAliasConfigs;
-        return this;
-    }
-
-    public List<MybatisTypeHandlerConfigurator> getDependentEngineMybatisTypeHandlerConfigs() {
-        return this.dependentEngineMybatisTypeHandlerConfigs;
-    }
-
-    public AbstractEngineConfiguration setDependentEngineMybatisTypeHandlerConfigs(List<MybatisTypeHandlerConfigurator> dependentEngineMybatisTypeHandlerConfigs) {
-        this.dependentEngineMybatisTypeHandlerConfigs = dependentEngineMybatisTypeHandlerConfigs;
-        return this;
-    }
-
-    public List<SessionFactory> getCustomSessionFactories() {
-        return this.customSessionFactories;
-    }
-
-    public AbstractEngineConfiguration addCustomSessionFactory(SessionFactory sessionFactory) {
-        if (this.customSessionFactories == null) {
-            this.customSessionFactories = new ArrayList();
-        }
-
-        this.customSessionFactories.add(sessionFactory);
-        return this;
-    }
-
-    public AbstractEngineConfiguration setCustomSessionFactories(List<SessionFactory> customSessionFactories) {
-        this.customSessionFactories = customSessionFactories;
-        return this;
-    }
-
-    public boolean isUsingRelationalDatabase() {
-        return this.usingRelationalDatabase;
-    }
-
-    public AbstractEngineConfiguration setUsingRelationalDatabase(boolean usingRelationalDatabase) {
-        this.usingRelationalDatabase = usingRelationalDatabase;
-        return this;
-    }
-
-    public boolean isUsingSchemaMgmt() {
-        return this.usingSchemaMgmt;
-    }
-
-    public AbstractEngineConfiguration setUsingSchemaMgmt(boolean usingSchema) {
-        this.usingSchemaMgmt = usingSchema;
-        return this;
-    }
-
-    public String getDatabaseTablePrefix() {
-        return this.databaseTablePrefix;
-    }
-
-    public AbstractEngineConfiguration setDatabaseTablePrefix(String databaseTablePrefix) {
-        this.databaseTablePrefix = databaseTablePrefix;
-        return this;
-    }
-
-    public String getDatabaseWildcardEscapeCharacter() {
-        return this.databaseWildcardEscapeCharacter;
-    }
-
-    public AbstractEngineConfiguration setDatabaseWildcardEscapeCharacter(String databaseWildcardEscapeCharacter) {
-        this.databaseWildcardEscapeCharacter = databaseWildcardEscapeCharacter;
-        return this;
-    }
-
-    public String getDatabaseCatalog() {
-        return this.databaseCatalog;
-    }
-
-    public AbstractEngineConfiguration setDatabaseCatalog(String databaseCatalog) {
-        this.databaseCatalog = databaseCatalog;
-        return this;
-    }
-
-    public String getDatabaseSchema() {
-        return this.databaseSchema;
-    }
-
-    public AbstractEngineConfiguration setDatabaseSchema(String databaseSchema) {
-        this.databaseSchema = databaseSchema;
-        return this;
-    }
-
-    public boolean isTablePrefixIsSchema() {
-        return this.tablePrefixIsSchema;
-    }
-
-    public AbstractEngineConfiguration setTablePrefixIsSchema(boolean tablePrefixIsSchema) {
-        this.tablePrefixIsSchema = tablePrefixIsSchema;
-        return this;
-    }
-
-    public boolean isAlwaysLookupLatestDefinitionVersion() {
-        return this.alwaysLookupLatestDefinitionVersion;
-    }
-
-    public AbstractEngineConfiguration setAlwaysLookupLatestDefinitionVersion(boolean alwaysLookupLatestDefinitionVersion) {
-        this.alwaysLookupLatestDefinitionVersion = alwaysLookupLatestDefinitionVersion;
-        return this;
-    }
-
-    public boolean isFallbackToDefaultTenant() {
-        return this.fallbackToDefaultTenant;
-    }
-
-    public AbstractEngineConfiguration setFallbackToDefaultTenant(boolean fallbackToDefaultTenant) {
-        this.fallbackToDefaultTenant = fallbackToDefaultTenant;
-        return this;
-    }
-
-    public AbstractEngineConfiguration setDefaultTenantValue(String defaultTenantValue) {
-        this.defaultTenantProvider = (tenantId, scope, scopeKey) -> {
-            return defaultTenantValue;
-        };
-        return this;
-    }
-
-    public DefaultTenantProvider getDefaultTenantProvider() {
-        return this.defaultTenantProvider;
-    }
-
-    public AbstractEngineConfiguration setDefaultTenantProvider(DefaultTenantProvider defaultTenantProvider) {
-        this.defaultTenantProvider = defaultTenantProvider;
-        return this;
-    }
-
-    public boolean isEnableLogSqlExecutionTime() {
-        return this.enableLogSqlExecutionTime;
-    }
-
-    public void setEnableLogSqlExecutionTime(boolean enableLogSqlExecutionTime) {
-        this.enableLogSqlExecutionTime = enableLogSqlExecutionTime;
-    }
-
-    public Map<Class<?>, SessionFactory> getSessionFactories() {
-        return this.sessionFactories;
-    }
-
-    public AbstractEngineConfiguration setSessionFactories(Map<Class<?>, SessionFactory> sessionFactories) {
-        this.sessionFactories = sessionFactories;
-        return this;
-    }
-
-    public String getDatabaseSchemaUpdate() {
-        return this.databaseSchemaUpdate;
-    }
-
-    public AbstractEngineConfiguration setDatabaseSchemaUpdate(String databaseSchemaUpdate) {
-        this.databaseSchemaUpdate = databaseSchemaUpdate;
-        return this;
-    }
-
-    public boolean isUseLockForDatabaseSchemaUpdate() {
-        return this.useLockForDatabaseSchemaUpdate;
-    }
-
-    public AbstractEngineConfiguration setUseLockForDatabaseSchemaUpdate(boolean useLockForDatabaseSchemaUpdate) {
-        this.useLockForDatabaseSchemaUpdate = useLockForDatabaseSchemaUpdate;
-        return this;
-    }
-
-    public boolean isEnableEventDispatcher() {
-        return this.enableEventDispatcher;
-    }
-
-    public AbstractEngineConfiguration setEnableEventDispatcher(boolean enableEventDispatcher) {
-        this.enableEventDispatcher = enableEventDispatcher;
-        return this;
-    }
-
-    public FlowableEventDispatcher getEventDispatcher() {
-        return this.eventDispatcher;
-    }
-
-    public AbstractEngineConfiguration setEventDispatcher(FlowableEventDispatcher eventDispatcher) {
-        this.eventDispatcher = eventDispatcher;
-        return this;
-    }
-
-    public List<FlowableEventListener> getEventListeners() {
-        return this.eventListeners;
-    }
-
-    public AbstractEngineConfiguration setEventListeners(List<FlowableEventListener> eventListeners) {
-        this.eventListeners = eventListeners;
-        return this;
-    }
-
-    public Map<String, List<FlowableEventListener>> getTypedEventListeners() {
-        return this.typedEventListeners;
-    }
-
-    public AbstractEngineConfiguration setTypedEventListeners(Map<String, List<FlowableEventListener>> typedEventListeners) {
-        this.typedEventListeners = typedEventListeners;
-        return this;
-    }
-
-    public List<EventDispatchAction> getAdditionalEventDispatchActions() {
-        return this.additionalEventDispatchActions;
-    }
-
-    public AbstractEngineConfiguration setAdditionalEventDispatchActions(List<EventDispatchAction> additionalEventDispatchActions) {
-        this.additionalEventDispatchActions = additionalEventDispatchActions;
-        return this;
-    }
-
-    public void initEventDispatcher() {
-        if (this.eventDispatcher == null) {
-            this.eventDispatcher = new FlowableEventDispatcherImpl();
-        }
-
-        this.initAdditionalEventDispatchActions();
-        this.eventDispatcher.setEnabled(this.enableEventDispatcher);
-        this.initEventListeners();
-        this.initTypedEventListeners();
-    }
-
-    protected void initEventListeners() {
-        if (this.eventListeners != null) {
-            Iterator var1 = this.eventListeners.iterator();
-
-            while(var1.hasNext()) {
-                FlowableEventListener listenerToAdd = (FlowableEventListener)var1.next();
-                this.eventDispatcher.addEventListener(listenerToAdd);
-            }
-        }
-
-    }
-
-    protected void initAdditionalEventDispatchActions() {
-        if (this.additionalEventDispatchActions == null) {
-            this.additionalEventDispatchActions = new ArrayList();
-        }
-
-    }
-
-    protected void initTypedEventListeners() {
-        if (this.typedEventListeners != null) {
-            Iterator var1 = this.typedEventListeners.entrySet().iterator();
-
-            while(var1.hasNext()) {
-                Map.Entry<String, List<FlowableEventListener>> listenersToAdd = (Map.Entry)var1.next();
-                FlowableEngineEventType[] types = FlowableEngineEventType.getTypesFromString((String)listenersToAdd.getKey());
-                Iterator var4 = ((List)listenersToAdd.getValue()).iterator();
-
-                while(var4.hasNext()) {
-                    FlowableEventListener listenerToAdd = (FlowableEventListener)var4.next();
-                    this.eventDispatcher.addEventListener(listenerToAdd, types);
-                }
-            }
-        }
-
-    }
-
-    public boolean isLoggingSessionEnabled() {
-        return this.loggingListener != null;
-    }
-
-    public LoggingListener getLoggingListener() {
-        return this.loggingListener;
-    }
-
-    public void setLoggingListener(LoggingListener loggingListener) {
-        this.loggingListener = loggingListener;
-    }
-
-    public Clock getClock() {
-        return this.clock;
-    }
-
-    public AbstractEngineConfiguration setClock(Clock clock) {
-        this.clock = clock;
-        return this;
-    }
-
-    public ObjectMapper getObjectMapper() {
-        return this.objectMapper;
-    }
-
-    public AbstractEngineConfiguration setObjectMapper(ObjectMapper objectMapper) {
-        this.objectMapper = objectMapper;
-        return this;
-    }
-
-    public int getMaxLengthString() {
-        if (this.maxLengthStringVariableType == -1) {
-            return "oracle".equalsIgnoreCase(this.databaseType) ? 2000 : 4000;
-        } else {
-            return this.maxLengthStringVariableType;
-        }
-    }
-
-    public int getMaxLengthStringVariableType() {
-        return this.maxLengthStringVariableType;
-    }
-
-    public AbstractEngineConfiguration setMaxLengthStringVariableType(int maxLengthStringVariableType) {
-        this.maxLengthStringVariableType = maxLengthStringVariableType;
-        return this;
-    }
-
-    public PropertyDataManager getPropertyDataManager() {
-        return this.propertyDataManager;
-    }
-
-    public Duration getLockPollRate() {
-        return this.lockPollRate;
-    }
-
-    public AbstractEngineConfiguration setLockPollRate(Duration lockPollRate) {
-        this.lockPollRate = lockPollRate;
-        return this;
-    }
-
-    public Duration getSchemaLockWaitTime() {
-        return this.schemaLockWaitTime;
-    }
-
-    public void setSchemaLockWaitTime(Duration schemaLockWaitTime) {
-        this.schemaLockWaitTime = schemaLockWaitTime;
-    }
-
-    public AbstractEngineConfiguration setPropertyDataManager(PropertyDataManager propertyDataManager) {
-        this.propertyDataManager = propertyDataManager;
-        return this;
-    }
-
-    public PropertyEntityManager getPropertyEntityManager() {
-        return this.propertyEntityManager;
-    }
-
-    public AbstractEngineConfiguration setPropertyEntityManager(PropertyEntityManager propertyEntityManager) {
-        this.propertyEntityManager = propertyEntityManager;
-        return this;
-    }
-
-    public ByteArrayDataManager getByteArrayDataManager() {
-        return this.byteArrayDataManager;
-    }
-
-    public AbstractEngineConfiguration setByteArrayDataManager(ByteArrayDataManager byteArrayDataManager) {
-        this.byteArrayDataManager = byteArrayDataManager;
-        return this;
-    }
-
-    public ByteArrayEntityManager getByteArrayEntityManager() {
-        return this.byteArrayEntityManager;
-    }
-
-    public AbstractEngineConfiguration setByteArrayEntityManager(ByteArrayEntityManager byteArrayEntityManager) {
-        this.byteArrayEntityManager = byteArrayEntityManager;
-        return this;
-    }
-
-    public TableDataManager getTableDataManager() {
-        return this.tableDataManager;
-    }
-
-    public AbstractEngineConfiguration setTableDataManager(TableDataManager tableDataManager) {
-        this.tableDataManager = tableDataManager;
-        return this;
-    }
-
-    public List<EngineDeployer> getDeployers() {
-        return this.deployers;
-    }
-
-    public AbstractEngineConfiguration setDeployers(List<EngineDeployer> deployers) {
-        this.deployers = deployers;
-        return this;
-    }
-
-    public List<EngineDeployer> getCustomPreDeployers() {
-        return this.customPreDeployers;
-    }
-
-    public AbstractEngineConfiguration setCustomPreDeployers(List<EngineDeployer> customPreDeployers) {
-        this.customPreDeployers = customPreDeployers;
-        return this;
-    }
-
-    public List<EngineDeployer> getCustomPostDeployers() {
-        return this.customPostDeployers;
-    }
-
-    public AbstractEngineConfiguration setCustomPostDeployers(List<EngineDeployer> customPostDeployers) {
-        this.customPostDeployers = customPostDeployers;
-        return this;
-    }
-
-    public boolean isEnableConfiguratorServiceLoader() {
-        return this.enableConfiguratorServiceLoader;
-    }
-
-    public AbstractEngineConfiguration setEnableConfiguratorServiceLoader(boolean enableConfiguratorServiceLoader) {
-        this.enableConfiguratorServiceLoader = enableConfiguratorServiceLoader;
-        return this;
-    }
-
-    public List<EngineConfigurator> getConfigurators() {
-        return this.configurators;
-    }
-
-    public AbstractEngineConfiguration addConfigurator(EngineConfigurator configurator) {
-        if (this.configurators == null) {
-            this.configurators = new ArrayList();
-        }
-
-        this.configurators.add(configurator);
-        return this;
-    }
-
-    public List<EngineConfigurator> getAllConfigurators() {
-        return this.allConfigurators;
-    }
-
-    public AbstractEngineConfiguration setConfigurators(List<EngineConfigurator> configurators) {
-        this.configurators = configurators;
-        return this;
-    }
-
-    public EngineConfigurator getIdmEngineConfigurator() {
-        return this.idmEngineConfigurator;
-    }
-
-    public AbstractEngineConfiguration setIdmEngineConfigurator(EngineConfigurator idmEngineConfigurator) {
-        this.idmEngineConfigurator = idmEngineConfigurator;
-        return this;
-    }
-
-    public EngineConfigurator getEventRegistryConfigurator() {
-        return this.eventRegistryConfigurator;
-    }
-
-    public AbstractEngineConfiguration setEventRegistryConfigurator(EngineConfigurator eventRegistryConfigurator) {
-        this.eventRegistryConfigurator = eventRegistryConfigurator;
-        return this;
-    }
-
-    public AbstractEngineConfiguration setForceCloseMybatisConnectionPool(boolean forceCloseMybatisConnectionPool) {
-        this.forceCloseMybatisConnectionPool = forceCloseMybatisConnectionPool;
-        return this;
-    }
-
-    public boolean isForceCloseMybatisConnectionPool() {
-        return this.forceCloseMybatisConnectionPool;
-    }
-}

+ 1 - 1
ruoyi-admin/src/main/resources/application-dev.yml

@@ -42,7 +42,7 @@ spring:
           driverClassName: com.mysql.cj.jdbc.Driver
           # jdbc 所有参数配置参考 https://lionli.blog.csdn.net/article/details/122018562
           # rewriteBatchedStatements=true 批处理优化 大幅提升批量插入更新删除性能(对数据库有性能损耗 使用批量操作应考虑性能问题)
-          url: jdbc:mysql://172.192.10.105:30002/little_iot?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
+          url: jdbc:mysql://172.192.10.105:30002/sense_db?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8&autoReconnect=true&rewriteBatchedStatements=true&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true
           username: root
           password: root
 #          driverClassName: dm.jdbc.driver.DmDriver

+ 0 - 1
ruoyi-common/pom.xml

@@ -31,7 +31,6 @@
         <module>ruoyi-common-sensitive</module>
         <module>ruoyi-common-json</module>
         <module>ruoyi-common-encrypt</module>
-        <module>ruoyi-common-tenant</module>
         <module>ruoyi-common-websocket</module>
     </modules>
 

+ 2 - 2
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/CacheNames.java

@@ -51,9 +51,9 @@ public interface CacheNames {
     String SYS_NICKNAME = "sys_nickname#30d";
 
     /**
-     * 部门
+     * 区域
      */
-    String SYS_DEPT = "sys_dept#30d";
+    String SYS_AREA = "sys_area#30d";
 
     /**
      * OSS内容

+ 0 - 26
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/constant/TenantConstants.java

@@ -6,17 +6,6 @@ package org.dromara.common.core.constant;
  * @author Lion Li
  */
 public interface TenantConstants {
-
-    /**
-     * 租户正常状态
-     */
-    String NORMAL = "0";
-
-    /**
-     * 租户封禁状态
-     */
-    String DISABLE = "1";
-
     /**
      * 超级管理员ID
      */
@@ -27,19 +16,4 @@ public interface TenantConstants {
      */
     String SUPER_ADMIN_ROLE_KEY = "superadmin";
 
-    /**
-     * 租户管理员角色 roleKey
-     */
-    String TENANT_ADMIN_ROLE_KEY = "admin";
-
-    /**
-     * 租户管理员角色名称
-     */
-    String TENANT_ADMIN_ROLE_NAME = "管理员";
-
-    /**
-     * 默认租户ID
-     */
-    String DEFAULT_TENANT_ID = "000000";
-
 }

+ 4 - 12
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/domain/model/LoginUser.java

@@ -21,10 +21,6 @@ public class LoginUser implements Serializable {
     @Serial
     private static final long serialVersionUID = 1L;
 
-    /**
-     * 租户ID
-     */
-    private String tenantId;
 
     /**
      * 用户ID
@@ -32,19 +28,15 @@ public class LoginUser implements Serializable {
     private Long userId;
 
     /**
-     * 部门ID
+     * 区域ID
      */
-    private Long deptId;
+    private Long areaId;
 
-    /**
-     * 部门类别编码
-     */
-    private String deptCategory;
 
     /**
-     * 部门
+     * 区域名
      */
-    private String deptName;
+    private String areaName;
 
     /**
      * 用户唯一标识

+ 18 - 0
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/AreaService.java

@@ -0,0 +1,18 @@
+package org.dromara.common.core.service;
+
+/**
+ * 通用 区域服务
+ *
+ * @author Lion Li
+ */
+public interface AreaService {
+
+    /**
+     * 通过区域ID查询区域名称
+     *
+     * @param areaIds 区域ID串逗号分隔
+     * @return 区域名称串逗号分隔
+     */
+    String selectAreaNameByIds(String areaIds);
+
+}

+ 0 - 18
ruoyi-common/ruoyi-common-core/src/main/java/org/dromara/common/core/service/DeptService.java

@@ -1,18 +0,0 @@
-package org.dromara.common.core.service;
-
-/**
- * 通用 部门服务
- *
- * @author Lion Li
- */
-public interface DeptService {
-
-    /**
-     * 通过部门ID查询部门名称
-     *
-     * @param deptIds 部门ID串逗号分隔
-     * @return 部门名称串逗号分隔
-     */
-    String selectDeptNameByIds(String deptIds);
-
-}

+ 1 - 2
ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/aspect/LogAspect.java

@@ -88,7 +88,6 @@ public class LogAspect {
 
             // *========数据库日志=========*//
             OperLogEvent operLog = new OperLogEvent();
-            operLog.setTenantId(LoginHelper.getTenantId());
             operLog.setStatus(BusinessStatus.SUCCESS.ordinal());
             // 请求的地址
             String ip = ServletUtils.getClientIP();
@@ -96,7 +95,7 @@ public class LogAspect {
             operLog.setOperUrl(StringUtils.substring(ServletUtils.getRequest().getRequestURI(), 0, 255));
             LoginUser loginUser = LoginHelper.getLoginUser();
             operLog.setOperName(loginUser.getUsername());
-            operLog.setDeptName(loginUser.getDeptName());
+            operLog.setDeptName(loginUser.getAreaName());
 
             if (e != null) {
                 operLog.setStatus(BusinessStatus.FAIL.ordinal());

+ 0 - 4
ruoyi-common/ruoyi-common-log/src/main/java/org/dromara/common/log/event/LogininforEvent.java

@@ -19,10 +19,6 @@ public class LogininforEvent implements Serializable {
     @Serial
     private static final long serialVersionUID = 1L;
 
-    /**
-     * 租户ID
-     */
-    private String tenantId;
 
     /**
      * 用户账号

+ 0 - 6
ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/domain/BaseEntity.java

@@ -31,12 +31,6 @@ public class BaseEntity implements Serializable {
     private String searchValue;
 
     /**
-     * 创建部门
-     */
-    @TableField(fill = FieldFill.INSERT)
-    private Long createDept;
-
-    /**
      * 创建者
      */
     @TableField(fill = FieldFill.INSERT)

+ 0 - 2
ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/InjectionMetaObjectHandler.java

@@ -44,8 +44,6 @@ public class InjectionMetaObjectHandler implements MetaObjectHandler {
                         // 填充创建人、更新人和创建部门信息
                         baseEntity.setCreateBy(userId);
                         baseEntity.setUpdateBy(userId);
-                        baseEntity.setCreateDept(ObjectUtil.isNotNull(baseEntity.getCreateDept())
-                            ? baseEntity.getCreateDept() : loginUser.getDeptId());
                     }
                 }
             }

+ 1 - 1
ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/handler/PlusDataPermissionHandler.java

@@ -95,7 +95,7 @@ public class PlusDataPermissionHandler {
             DataPermissionHelper.setVariable("user", currentUser);
         }
         // 如果是超级管理员或租户管理员,则不过滤数据
-        if (LoginHelper.isSuperAdmin() || LoginHelper.isTenantAdmin()) {
+        if (LoginHelper.isSuperAdmin() ) {
             return where;
         }
         // 构造数据过滤条件的 SQL 片段

+ 11 - 50
ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java

@@ -8,7 +8,6 @@ import cn.hutool.core.convert.Convert;
 import cn.hutool.core.util.ObjectUtil;
 import lombok.AccessLevel;
 import lombok.NoArgsConstructor;
-import org.dromara.common.core.constant.TenantConstants;
 import org.dromara.common.core.constant.UserConstants;
 import org.dromara.common.core.domain.model.LoginUser;
 import org.dromara.common.core.enums.UserType;
@@ -31,12 +30,10 @@ import java.util.Set;
 public class LoginHelper {
 
     public static final String LOGIN_USER_KEY = "loginUser";
-    public static final String TENANT_KEY = "tenantId";
     public static final String USER_KEY = "userId";
     public static final String USER_NAME_KEY = "userName";
-    public static final String DEPT_KEY = "deptId";
-    public static final String DEPT_NAME_KEY = "deptName";
-    public static final String DEPT_CATEGORY_KEY = "deptCategory";
+    public static final String AREA_KEY = "areaId";
+    public static final String AREA_NAME_KEY = "areaName";
     public static final String CLIENT_KEY = "clientid";
 
     /**
@@ -49,12 +46,11 @@ public class LoginHelper {
     public static void login(LoginUser loginUser, SaLoginModel model) {
         model = ObjectUtil.defaultIfNull(model, new SaLoginModel());
         StpUtil.login(loginUser.getLoginId(),
-            model.setExtra(TENANT_KEY, loginUser.getTenantId())
+            model
                 .setExtra(USER_KEY, loginUser.getUserId())
                 .setExtra(USER_NAME_KEY, loginUser.getUsername())
-                .setExtra(DEPT_KEY, loginUser.getDeptId())
-                .setExtra(DEPT_NAME_KEY, loginUser.getDeptName())
-                .setExtra(DEPT_CATEGORY_KEY, loginUser.getDeptCategory())
+                .setExtra(AREA_KEY, loginUser.getAreaId())
+                .setExtra(AREA_NAME_KEY, loginUser.getAreaName())
         );
         StpUtil.getTokenSession().set(LOGIN_USER_KEY, loginUser);
     }
@@ -95,32 +91,19 @@ public class LoginHelper {
         return Convert.toStr(getExtra(USER_NAME_KEY));
     }
 
-    /**
-     * 获取租户ID
-     */
-    public static String getTenantId() {
-        return Convert.toStr(getExtra(TENANT_KEY));
-    }
 
     /**
-     * 获取部门ID
+     * 获取区域ID
      */
-    public static Long getDeptId() {
-        return Convert.toLong(getExtra(DEPT_KEY));
+    public static Long getAreaId() {
+        return Convert.toLong(getExtra(AREA_KEY));
     }
 
     /**
-     * 获取部门
+     * 获取区域
      */
-    public static String getDeptName() {
-        return Convert.toStr(getExtra(DEPT_NAME_KEY));
-    }
-
-    /**
-     * 获取部门类别编码
-     */
-    public static String getDeptCategory() {
-        return Convert.toStr(getExtra(DEPT_CATEGORY_KEY));
+    public static String getAreaName() {
+        return Convert.toStr(getExtra(AREA_NAME_KEY));
     }
 
     /**
@@ -165,28 +148,6 @@ public class LoginHelper {
     }
 
     /**
-     * 是否为租户管理员
-     *
-     * @param rolePermission 角色权限标识组
-     * @return 结果
-     */
-    public static boolean isTenantAdmin(Set<String> rolePermission) {
-        if (CollUtil.isEmpty(rolePermission)) {
-            return false;
-        }
-        return rolePermission.contains(TenantConstants.TENANT_ADMIN_ROLE_KEY);
-    }
-
-    /**
-     * 是否为租户管理员
-     *
-     * @return 结果
-     */
-    public static boolean isTenantAdmin() {
-        return Convert.toBool(isTenantAdmin(getLoginUser().getRolePermission()));
-    }
-
-    /**
      * 检查当前用户是否已登录
      *
      * @return 结果

+ 0 - 32
ruoyi-common/ruoyi-common-tenant/pom.xml

@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <groupId>org.dromara</groupId>
-        <artifactId>ruoyi-common</artifactId>
-        <version>${revision}</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>ruoyi-common-tenant</artifactId>
-
-    <description>
-        ruoyi-common-tenant 租户模块
-    </description>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.dromara</groupId>
-            <artifactId>ruoyi-common-mybatis</artifactId>
-            <optional>true</optional>
-        </dependency>
-
-        <dependency>
-            <groupId>org.dromara</groupId>
-            <artifactId>ruoyi-common-redis</artifactId>
-        </dependency>
-
-    </dependencies>
-
-</project>

+ 0 - 89
ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/config/TenantConfig.java

@@ -1,89 +0,0 @@
-package org.dromara.common.tenant.config;
-
-import cn.dev33.satoken.dao.SaTokenDao;
-import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.extension.plugins.inner.TenantLineInnerInterceptor;
-import org.dromara.common.core.utils.reflect.ReflectUtils;
-import org.dromara.common.mybatis.config.MybatisPlusConfig;
-import org.dromara.common.redis.config.RedisConfig;
-import org.dromara.common.redis.config.properties.RedissonProperties;
-import org.dromara.common.tenant.core.TenantSaTokenDao;
-import org.dromara.common.tenant.handle.PlusTenantLineHandler;
-import org.dromara.common.tenant.handle.TenantKeyPrefixHandler;
-import org.dromara.common.tenant.manager.TenantSpringCacheManager;
-import org.dromara.common.tenant.properties.TenantProperties;
-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.ConditionalOnBean;
-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;
-
-/**
- * 租户配置类
- *
- * @author Lion Li
- */
-@EnableConfigurationProperties(TenantProperties.class)
-@AutoConfiguration(after = {RedisConfig.class})
-@ConditionalOnProperty(value = "tenant.enable", havingValue = "true")
-public class TenantConfig {
-
-    @ConditionalOnBean(MybatisPlusConfig.class)
-    @AutoConfiguration(after = {MybatisPlusConfig.class})
-    static class MybatisPlusConfiguration {
-
-        /**
-         * 多租户插件
-         */
-        @Bean
-        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();
-    }
-
-}

+ 0 - 21
ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/core/TenantEntity.java

@@ -1,21 +0,0 @@
-package org.dromara.common.tenant.core;
-
-import org.dromara.common.mybatis.core.domain.BaseEntity;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * 租户基类
- *
- * @author Michelle.Chung
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class TenantEntity extends BaseEntity {
-
-    /**
-     * 租户编号
-     */
-    private String tenantId;
-
-}

+ 0 - 148
ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/core/TenantSaTokenDao.java

@@ -1,148 +0,0 @@
-package org.dromara.common.tenant.core;
-
-import org.dromara.common.core.constant.GlobalConstants;
-import org.dromara.common.redis.utils.RedisUtils;
-import org.dromara.common.satoken.core.dao.PlusSaTokenDao;
-
-import java.time.Duration;
-import java.util.List;
-
-/**
- * SaToken 认证数据持久层 适配多租户
- *
- * @author Lion Li
- */
-public class TenantSaTokenDao extends PlusSaTokenDao {
-
-    @Override
-    public String get(String key) {
-        return super.get(GlobalConstants.GLOBAL_REDIS_KEY + key);
-    }
-
-    @Override
-    public void set(String key, String value, long timeout) {
-        super.set(GlobalConstants.GLOBAL_REDIS_KEY + key, value, timeout);
-    }
-
-    /**
-     * 修修改指定key-value键值对 (过期时间不变)
-     */
-    @Override
-    public void update(String key, String value) {
-        long expire = getTimeout(key);
-        // -2 = 无此键
-        if (expire == NOT_VALUE_EXPIRE) {
-            return;
-        }
-        this.set(key, value, expire);
-    }
-
-    /**
-     * 删除Value
-     */
-    @Override
-    public void delete(String key) {
-        super.delete(GlobalConstants.GLOBAL_REDIS_KEY + key);
-    }
-
-    /**
-     * 获取Value的剩余存活时间 (单位: 秒)
-     */
-    @Override
-    public long getTimeout(String key) {
-        return super.getTimeout(GlobalConstants.GLOBAL_REDIS_KEY + key);
-    }
-
-    /**
-     * 修改Value的剩余存活时间 (单位: 秒)
-     */
-    @Override
-    public void updateTimeout(String key, long timeout) {
-        // 判断是否想要设置为永久
-        if (timeout == NEVER_EXPIRE) {
-            long expire = getTimeout(key);
-            if (expire == NEVER_EXPIRE) {
-                // 如果其已经被设置为永久,则不作任何处理
-            } else {
-                // 如果尚未被设置为永久,那么再次set一次
-                this.set(key, this.get(key), timeout);
-            }
-            return;
-        }
-        RedisUtils.expire(GlobalConstants.GLOBAL_REDIS_KEY + key, Duration.ofSeconds(timeout));
-    }
-
-
-    /**
-     * 获取Object,如无返空
-     */
-    @Override
-    public Object getObject(String key) {
-        return super.getObject(GlobalConstants.GLOBAL_REDIS_KEY + key);
-    }
-
-    /**
-     * 写入Object,并设定存活时间 (单位: 秒)
-     */
-    @Override
-    public void setObject(String key, Object object, long timeout) {
-        super.setObject(GlobalConstants.GLOBAL_REDIS_KEY + key, object, timeout);
-    }
-
-    /**
-     * 更新Object (过期时间不变)
-     */
-    @Override
-    public void updateObject(String key, Object object) {
-        long expire = getObjectTimeout(key);
-        // -2 = 无此键
-        if (expire == NOT_VALUE_EXPIRE) {
-            return;
-        }
-        this.setObject(key, object, expire);
-    }
-
-    /**
-     * 删除Object
-     */
-    @Override
-    public void deleteObject(String key) {
-        super.deleteObject(GlobalConstants.GLOBAL_REDIS_KEY + key);
-    }
-
-    /**
-     * 获取Object的剩余存活时间 (单位: 秒)
-     */
-    @Override
-    public long getObjectTimeout(String key) {
-        return super.getObjectTimeout(GlobalConstants.GLOBAL_REDIS_KEY + key);
-    }
-
-    /**
-     * 修改Object的剩余存活时间 (单位: 秒)
-     */
-    @Override
-    public void updateObjectTimeout(String key, long timeout) {
-        // 判断是否想要设置为永久
-        if (timeout == NEVER_EXPIRE) {
-            long expire = getObjectTimeout(key);
-            if (expire == NEVER_EXPIRE) {
-                // 如果其已经被设置为永久,则不作任何处理
-            } else {
-                // 如果尚未被设置为永久,那么再次set一次
-                this.setObject(key, this.getObject(key), timeout);
-            }
-            return;
-        }
-        RedisUtils.expire(GlobalConstants.GLOBAL_REDIS_KEY + key, Duration.ofSeconds(timeout));
-    }
-
-
-    /**
-     * 搜索数据
-     */
-    @Override
-    public List<String> searchData(String prefix, String keyword, int start, int size, boolean sortType) {
-        return super.searchData(GlobalConstants.GLOBAL_REDIS_KEY + prefix, keyword, start, size, sortType);
-    }
-}

+ 0 - 20
ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/exception/TenantException.java

@@ -1,20 +0,0 @@
-package org.dromara.common.tenant.exception;
-
-import org.dromara.common.core.exception.base.BaseException;
-
-import java.io.Serial;
-
-/**
- * 租户异常类
- *
- * @author Lion Li
- */
-public class TenantException extends BaseException {
-
-    @Serial
-    private static final long serialVersionUID = 1L;
-
-    public TenantException(String code, Object... args) {
-        super("tenant", code, args, null);
-    }
-}

+ 0 - 56
ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/handle/PlusTenantLineHandler.java

@@ -1,56 +0,0 @@
-package org.dromara.common.tenant.handle;
-
-import cn.hutool.core.collection.ListUtil;
-import com.baomidou.mybatisplus.extension.plugins.handler.TenantLineHandler;
-import lombok.AllArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import net.sf.jsqlparser.expression.Expression;
-import net.sf.jsqlparser.expression.NullValue;
-import net.sf.jsqlparser.expression.StringValue;
-import org.dromara.common.core.utils.StringUtils;
-import org.dromara.common.tenant.helper.TenantHelper;
-import org.dromara.common.tenant.properties.TenantProperties;
-
-import java.util.List;
-
-/**
- * 自定义租户处理器
- *
- * @author Lion Li
- */
-@Slf4j
-@AllArgsConstructor
-public class PlusTenantLineHandler implements TenantLineHandler {
-
-    private final TenantProperties tenantProperties;
-
-    @Override
-    public Expression getTenantId() {
-        String tenantId = TenantHelper.getTenantId();
-        if (StringUtils.isBlank(tenantId)) {
-            log.error("无法获取有效的租户id -> Null");
-            return new NullValue();
-        }
-        // 返回固定租户
-        return new StringValue(tenantId);
-    }
-
-    @Override
-    public boolean ignoreTable(String tableName) {
-        String tenantId = TenantHelper.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;
-    }
-
-}

+ 0 - 73
ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/handle/TenantKeyPrefixHandler.java

@@ -1,73 +0,0 @@
-package org.dromara.common.tenant.handle;
-
-import com.baomidou.mybatisplus.core.plugins.InterceptorIgnoreHelper;
-import lombok.extern.slf4j.Slf4j;
-import org.dromara.common.core.constant.GlobalConstants;
-import org.dromara.common.core.utils.StringUtils;
-import org.dromara.common.redis.handler.KeyPrefixHandler;
-import org.dromara.common.tenant.helper.TenantHelper;
-
-/**
- * 多租户redis缓存key前缀处理
- *
- * @author Lion Li
- */
-@Slf4j
-public class TenantKeyPrefixHandler extends KeyPrefixHandler {
-
-    public TenantKeyPrefixHandler(String keyPrefix) {
-        super(keyPrefix);
-    }
-
-    /**
-     * 增加前缀
-     */
-    @Override
-    public String map(String name) {
-        if (StringUtils.isBlank(name)) {
-            return null;
-        }
-        if (InterceptorIgnoreHelper.willIgnoreTenantLine("")) {
-            return super.map(name);
-        }
-        if (StringUtils.contains(name, GlobalConstants.GLOBAL_REDIS_KEY)) {
-            return super.map(name);
-        }
-        String tenantId = TenantHelper.getTenantId();
-        if (StringUtils.isBlank(tenantId)) {
-            log.error("无法获取有效的租户id -> Null");
-        }
-        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 (InterceptorIgnoreHelper.willIgnoreTenantLine("")) {
-            return super.unmap(name);
-        }
-        if (StringUtils.contains(name, GlobalConstants.GLOBAL_REDIS_KEY)) {
-            return super.unmap(name);
-        }
-        String tenantId = TenantHelper.getTenantId();
-        if (StringUtils.isBlank(tenantId)) {
-            log.error("无法获取有效的租户id -> Null");
-        }
-        if (StringUtils.startsWith(unmap, tenantId + "")) {
-            // 如果存在则删除
-            return unmap.substring((tenantId + ":").length());
-        }
-        return unmap;
-    }
-
-}

+ 0 - 194
ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/helper/TenantHelper.java

@@ -1,194 +0,0 @@
-package org.dromara.common.tenant.helper;
-
-import cn.dev33.satoken.stp.StpUtil;
-import cn.hutool.core.convert.Convert;
-import com.alibaba.ttl.TransmittableThreadLocal;
-import com.baomidou.mybatisplus.core.plugins.IgnoreStrategy;
-import com.baomidou.mybatisplus.core.plugins.InterceptorIgnoreHelper;
-import lombok.AccessLevel;
-import lombok.NoArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.dromara.common.core.constant.GlobalConstants;
-import org.dromara.common.core.utils.SpringUtils;
-import org.dromara.common.core.utils.StringUtils;
-import org.dromara.common.redis.utils.RedisUtils;
-import org.dromara.common.satoken.utils.LoginHelper;
-
-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();
-        }
-    }
-
-    public static void setDynamic(String tenantId) {
-        setDynamic(tenantId, false);
-    }
-
-    /**
-     * 设置动态租户(一直有效 需要手动清理)
-     * <p>
-     * 如果为未登录状态下 那么只在当前线程内生效
-     *
-     * @param tenantId 租户id
-     * @param global   是否全局生效
-     */
-    public static void setDynamic(String tenantId, boolean global) {
-        if (!isEnable()) {
-            return;
-        }
-        if (!isLogin() || !global) {
-            TEMP_DYNAMIC_TENANT.set(tenantId);
-            return;
-        }
-        String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId();
-        RedisUtils.setCacheObject(cacheKey, tenantId);
-    }
-
-    /**
-     * 获取动态租户(一直有效 需要手动清理)
-     * <p>
-     * 如果为未登录状态下 那么只在当前线程内生效
-     */
-    public static String getDynamic() {
-        if (!isEnable()) {
-            return null;
-        }
-        if (!isLogin()) {
-            return TEMP_DYNAMIC_TENANT.get();
-        }
-        // 如果线程内有值 优先返回
-        String tenantId = TEMP_DYNAMIC_TENANT.get();
-        if (StringUtils.isNotBlank(tenantId)) {
-            return tenantId;
-        }
-        String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId();
-        tenantId = RedisUtils.getCacheObject(cacheKey);
-        return tenantId;
-    }
-
-    /**
-     * 清除动态租户
-     */
-    public static void clearDynamic() {
-        if (!isEnable()) {
-            return;
-        }
-        if (!isLogin()) {
-            TEMP_DYNAMIC_TENANT.remove();
-            return;
-        }
-        TEMP_DYNAMIC_TENANT.remove();
-        String cacheKey = DYNAMIC_TENANT_KEY + ":" + LoginHelper.getUserId();
-        RedisUtils.deleteObject(cacheKey);
-    }
-
-    /**
-     * 在动态租户中执行
-     *
-     * @param handle 处理执行方法
-     */
-    public static void dynamic(String tenantId, Runnable handle) {
-        setDynamic(tenantId);
-        try {
-            handle.run();
-        } finally {
-            clearDynamic();
-        }
-    }
-
-    /**
-     * 在动态租户中执行
-     *
-     * @param handle 处理执行方法
-     */
-    public static <T> T dynamic(String tenantId, Supplier<T> handle) {
-        setDynamic(tenantId);
-        try {
-            return handle.get();
-        } finally {
-            clearDynamic();
-        }
-    }
-
-    /**
-     * 获取当前租户id(动态租户优先)
-     */
-    public static String getTenantId() {
-        if (!isEnable()) {
-            return null;
-        }
-        String tenantId = TenantHelper.getDynamic();
-        if (StringUtils.isBlank(tenantId)) {
-            tenantId = LoginHelper.getTenantId();
-        }
-        return tenantId;
-    }
-
-    private static boolean isLogin() {
-        try {
-            StpUtil.checkLogin();
-            return true;
-        } catch (Exception e) {
-            return false;
-        }
-    }
-
-}

+ 0 - 32
ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/manager/TenantSpringCacheManager.java

@@ -1,32 +0,0 @@
-package org.dromara.common.tenant.manager;
-
-import org.dromara.common.core.constant.GlobalConstants;
-import org.dromara.common.core.utils.StringUtils;
-import org.dromara.common.redis.manager.PlusSpringCacheManager;
-import org.dromara.common.tenant.helper.TenantHelper;
-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);
-    }
-
-}

+ 0 - 27
ruoyi-common/ruoyi-common-tenant/src/main/java/org/dromara/common/tenant/properties/TenantProperties.java

@@ -1,27 +0,0 @@
-package org.dromara.common.tenant.properties;
-
-import lombok.Data;
-import org.springframework.boot.context.properties.ConfigurationProperties;
-
-import java.util.List;
-
-/**
- * 租户 配置属性
- *
- * @author Lion Li
- */
-@Data
-@ConfigurationProperties(prefix = "tenant")
-public class TenantProperties {
-
-    /**
-     * 是否启用
-     */
-    private Boolean enable;
-
-    /**
-     * 排除表
-     */
-    private List<String> excludes;
-
-}

+ 0 - 1
ruoyi-common/ruoyi-common-tenant/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -1 +0,0 @@
-org.dromara.common.tenant.config.TenantConfig

+ 2 - 2
ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/constant/TransConstant.java

@@ -18,9 +18,9 @@ public interface TransConstant {
     String USER_ID_TO_NICKNAME = "user_id_to_nickname";
 
     /**
-     * 部门id转名称
+     * 区域id转名称
      */
-    String DEPT_ID_TO_NAME = "dept_id_to_name";
+    String AREA_ID_TO_NAME = "area_id_to_name";
 
     /**
      * 字典type转label

+ 7 - 7
ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/DeptNameTranslationImpl.java → ruoyi-common/ruoyi-common-translation/src/main/java/org/dromara/common/translation/core/impl/AreaNameTranslationImpl.java

@@ -1,28 +1,28 @@
 package org.dromara.common.translation.core.impl;
 
-import org.dromara.common.core.service.DeptService;
+import org.dromara.common.core.service.AreaService;
 import org.dromara.common.translation.annotation.TranslationType;
 import org.dromara.common.translation.constant.TransConstant;
 import org.dromara.common.translation.core.TranslationInterface;
 import lombok.AllArgsConstructor;
 
 /**
- * 部门翻译实现
+ * 区域翻译实现
  *
  * @author Lion Li
  */
 @AllArgsConstructor
-@TranslationType(type = TransConstant.DEPT_ID_TO_NAME)
-public class DeptNameTranslationImpl implements TranslationInterface<String> {
+@TranslationType(type = TransConstant.AREA_ID_TO_NAME)
+public class AreaNameTranslationImpl implements TranslationInterface<String> {
 
-    private final DeptService deptService;
+    private final AreaService areaService;
 
     @Override
     public String translation(Object key, String other) {
         if (key instanceof String ids) {
-            return deptService.selectDeptNameByIds(ids);
+            return areaService.selectAreaNameByIds(ids);
         } else if (key instanceof Long id) {
-            return deptService.selectDeptNameByIds(id.toString());
+            return areaService.selectAreaNameByIds(id.toString());
         }
         return null;
     }

+ 1 - 1
ruoyi-common/ruoyi-common-translation/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -1,5 +1,5 @@
 org.dromara.common.translation.config.TranslationConfig
-org.dromara.common.translation.core.impl.DeptNameTranslationImpl
+org.dromara.common.translation.core.impl.AreaNameTranslationImpl
 org.dromara.common.translation.core.impl.DictTypeTranslationImpl
 org.dromara.common.translation.core.impl.OssUrlTranslationImpl
 org.dromara.common.translation.core.impl.UserNameTranslationImpl

+ 1 - 1
ruoyi-extend/pom.xml

@@ -13,7 +13,7 @@
 
     <modules>
         <module>ruoyi-monitor-admin</module>
-        <module>ruoyi-snailjob-server</module>
+<!--        <module>ruoyi-snailjob-server</module>-->
     </modules>
 
 </project>

+ 0 - 21
ruoyi-extend/ruoyi-snailjob-server/Dockerfile

@@ -1,21 +0,0 @@
-# 贝尔实验室 Spring 官方推荐镜像 JDK下载地址 https://bell-sw.com/pages/downloads/
-FROM bellsoft/liberica-openjdk-debian:17.0.11-cds
-#FROM bellsoft/liberica-openjdk-debian:21.0.3-cds
-#FROM findepi/graalvm:java17-native
-
-LABEL maintainer="Lion Li"
-
-RUN mkdir -p /ruoyi/snailjob/logs
-
-WORKDIR /ruoyi/snailjob
-
-ENV LANG=C.UTF-8 LC_ALL=C.UTF-8 JAVA_OPTS="-Xms512m -Xmx1024m"
-
-EXPOSE 8800
-EXPOSE 17888
-
-ADD ./target/ruoyi-snailjob-server.jar ./app.jar
-
-ENTRYPOINT java -Djava.security.egd=file:/dev/./urandom \
-           -XX:+HeapDumpOnOutOfMemoryError -XX:+UseZGC ${JAVA_OPTS} \
-           -jar app.jar

+ 0 - 46
ruoyi-extend/ruoyi-snailjob-server/pom.xml

@@ -1,46 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <groupId>org.dromara</groupId>
-        <artifactId>ruoyi-extend</artifactId>
-        <version>${revision}</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-    <packaging>jar</packaging>
-    <artifactId>ruoyi-snailjob-server</artifactId>
-
-    <dependencies>
-        <dependency>
-            <groupId>com.aizuda</groupId>
-            <artifactId>snail-job-server-starter</artifactId>
-            <version>${snailjob.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>de.codecentric</groupId>
-            <artifactId>spring-boot-admin-starter-client</artifactId>
-            <version>${spring-boot-admin.version}</version>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <finalName>${project.artifactId}</finalName>
-        <plugins>
-            <plugin>
-                <groupId>org.springframework.boot</groupId>
-                <artifactId>spring-boot-maven-plugin</artifactId>
-                <version>${spring-boot.version}</version>
-                <executions>
-                    <execution>
-                        <goals>
-                            <goal>repackage</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-
-</project>

+ 0 - 19
ruoyi-extend/ruoyi-snailjob-server/src/main/java/org/dromara/snailjob/SnailJobServerApplication.java

@@ -1,19 +0,0 @@
-package org.dromara.snailjob;
-
-import org.springframework.boot.SpringApplication;
-import org.springframework.boot.autoconfigure.SpringBootApplication;
-
-/**
- * SnailJob Server 启动程序
- *
- * @author opensnail
- * @date 2024-05-17
- */
-@SpringBootApplication
-public class SnailJobServerApplication {
-
-    public static void main(String[] args) {
-        SpringApplication.run(com.aizuda.snailjob.server.SnailJobServerApplication.class, args);
-    }
-
-}

+ 0 - 47
ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-dev.yml

@@ -1,47 +0,0 @@
-spring:
-  datasource:
-    type: com.zaxxer.hikari.HikariDataSource
-    driver-class-name: com.mysql.cj.jdbc.Driver
-    url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
-    username: root
-    password: root
-    hikari:
-      connection-timeout: 30000
-      validation-timeout: 5000
-      minimum-idle: 10
-      maximum-pool-size: 20
-      idle-timeout: 600000
-      max-lifetime: 900000
-      keepaliveTime: 30000
-
---- # snail-job 服务端配置
-snail-job:
-  # 拉取重试数据的每批次的大小
-  retry-pull-page-size: 1000
-  # 拉取重试数据的每批次的大小
-  job-pull-page-size: 1000
-  # 服务端netty端口
-  netty-port: 17888
-  # 一个客户端每秒最多接收的重试数量指令
-  limiter: 1000
-  # 号段模式下步长配置
-  step: 100
-  # 日志保存时间(单位: day)
-  log-storage: 90
-  # 回调配置
-  callback:
-    #回调最大执行次数
-    max-count: 288
-    #间隔时间
-    trigger-interval: 900
-  retry-max-pull-count: 10
-
---- # 监控中心配置
-spring.boot.admin.client:
-  # 增加客户端开关
-  enabled: true
-  url: http://localhost:9090/admin
-  instance:
-    service-host-type: IP
-  username: ruoyi
-  password: 123456

+ 0 - 47
ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application-prod.yml

@@ -1,47 +0,0 @@
-spring:
-  datasource:
-    type: com.zaxxer.hikari.HikariDataSource
-    driver-class-name: com.mysql.cj.jdbc.Driver
-    url: jdbc:mysql://localhost:3306/ry-vue?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
-    username: root
-    password: root
-    hikari:
-      connection-timeout: 30000
-      validation-timeout: 5000
-      minimum-idle: 10
-      maximum-pool-size: 20
-      idle-timeout: 600000
-      max-lifetime: 900000
-      keepaliveTime: 30000
-
---- # snail-job 服务端配置
-snail-job:
-  # 拉取重试数据的每批次的大小
-  retry-pull-page-size: 1000
-  # 拉取重试数据的每批次的大小
-  job-pull-page-size: 1000
-  # 服务端 netty 端口
-  netty-port: 17888
-  # 一个客户端每秒最多接收的重试数量指令
-  limiter: 1000
-  # 号段模式下步长配置
-  step: 100
-  # 日志保存时间(单位: day)
-  log-storage: 90
-  # 回调配置
-  callback:
-    #回调最大执行次数
-    max-count: 288
-    #间隔时间
-    trigger-interval: 900
-  retry-max-pull-count: 10
-
---- # 监控中心配置
-spring.boot.admin.client:
-  # 增加客户端开关
-  enabled: true
-  url: http://localhost:9090/admin
-  instance:
-    service-host-type: IP
-  username: ruoyi
-  password: 123456

+ 0 - 39
ruoyi-extend/ruoyi-snailjob-server/src/main/resources/application.yml

@@ -1,39 +0,0 @@
-server:
-  port: 8800
-  servlet:
-    context-path: /snail-job
-
-spring:
-  application:
-    name: ruoyi-snailjob-server
-  profiles:
-    active: @profiles.active@
-  web:
-    resources:
-      static-locations: classpath:admin/
-
-mybatis-plus:
-  typeAliasesPackage: com.aizuda.snailjob.template.datasource.persistence.po
-  global-config:
-    db-config:
-      where-strategy: NOT_EMPTY
-      capital-mode: false
-      logic-delete-value: 1
-      logic-not-delete-value: 0
-  configuration:
-    map-underscore-to-camel-case: true
-    cache-enabled: true
-
-logging:
-  config: classpath:logback-plus.xml
-
-management:
-  endpoints:
-    web:
-      exposure:
-        include: '*'
-  endpoint:
-    health:
-      show-details: ALWAYS
-    logfile:
-      external-file: ./logs/ruoyi-snailjob-server/console.log

+ 0 - 11
ruoyi-extend/ruoyi-snailjob-server/src/main/resources/banner.txt

@@ -1,11 +0,0 @@
-Application Version: ${revision}
-Spring Boot Version: ${spring-boot.version}
-                 _ _ _       _
-                (_) (_)     | |
- ___ _ __   __ _ _| |_  ___ | |__ ______ ___  ___ _ ____   _____ _ __
-/ __| '_ \ / _` | | | |/ _ \| '_ \______/ __|/ _ \ '__\ \ / / _ \ '__|
-\__ \ | | | (_| | | | | (_) | |_) |     \__ \  __/ |   \ V /  __/ |
-|___/_| |_|\__,_|_|_| |\___/|_.__/      |___/\___|_|    \_/ \___|_|
-                   _/ |
-                  |__/
-

+ 0 - 92
ruoyi-extend/ruoyi-snailjob-server/src/main/resources/logback-plus.xml

@@ -1,92 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<configuration>
-    <property name="log.path" value="./logs/ruoyi-snailjob-server" />
-    <property name="console.log.pattern"
-              value="%red(%d{yyyy-MM-dd HH:mm:ss}) %green([%thread]) %highlight(%-5level) %boldMagenta(%logger{36}%n) - %msg%n"/>
-    <property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n"/>
-
-
-    <!-- 控制台输出 -->
-    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
-        <encoder>
-            <pattern>${console.log.pattern}</pattern>
-            <charset>utf-8</charset>
-        </encoder>
-    </appender>
-
-    <!-- 控制台输出 -->
-    <appender name="file_console" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${log.path}/console.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <!-- 日志文件名格式 -->
-            <fileNamePattern>${log.path}/console.%d{yyyy-MM-dd}.log</fileNamePattern>
-            <!-- 日志最大 1天 -->
-            <maxHistory>1</maxHistory>
-        </rollingPolicy>
-        <encoder>
-            <pattern>${log.pattern}</pattern>
-            <charset>utf-8</charset>
-        </encoder>
-        <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
-            <!-- 过滤的级别 -->
-            <level>INFO</level>
-        </filter>
-    </appender>
-
-    <appender name="file_info" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${log.path}/info.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <FileNamePattern>${log.path}/info.%d{yyyy-MM-dd}.log</FileNamePattern>
-            <MaxHistory>60</MaxHistory>
-        </rollingPolicy>
-        <encoder>
-            <pattern>${log.pattern}</pattern>
-        </encoder>
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>INFO</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-        </filter>
-    </appender>
-
-    <appender name="file_error" class="ch.qos.logback.core.rolling.RollingFileAppender">
-        <file>${log.path}/error.log</file>
-        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
-            <FileNamePattern>${log.path}/error.%d{yyyy-MM-dd}.log
-            </FileNamePattern>
-            <MaxHistory>60</MaxHistory>
-        </rollingPolicy>
-        <encoder>
-            <pattern>${log.pattern}</pattern>
-        </encoder>
-        <filter class="ch.qos.logback.classic.filter.LevelFilter">
-            <level>ERROR</level>
-            <onMatch>ACCEPT</onMatch>
-            <onMismatch>DENY</onMismatch>
-        </filter>
-    </appender>
-
-    <appender name ="async_info" class= "ch.qos.logback.classic.AsyncAppender">
-        <discardingThreshold >100</discardingThreshold>
-        <queueSize>1024</queueSize>
-        <appender-ref ref ="file_info"/>
-    </appender>
-
-    <appender name ="async_error" class= "ch.qos.logback.classic.AsyncAppender">
-        <discardingThreshold >100</discardingThreshold>
-        <queueSize>1024</queueSize>
-        <appender-ref ref ="file_error"/>
-    </appender>
-
-    <!-- SnailJob appender -->
-    <appender name="snail_log_server_appender" class="com.aizuda.snailjob.server.common.appender.SnailJobServerLogbackAppender">
-    </appender>
-
-    <!-- 控制台输出日志级别 -->
-    <root level="info">
-        <appender-ref ref="console" />
-        <appender-ref ref="async_info" />
-        <appender-ref ref="async_error" />
-        <appender-ref ref="snail_log_server_appender" />
-    </root>
-</configuration>

+ 1 - 3
ruoyi-modules/pom.xml

@@ -10,11 +10,9 @@
     <modelVersion>4.0.0</modelVersion>
 
     <modules>
-        <module>ruoyi-demo</module>
         <module>ruoyi-generator</module>
-        <module>ruoyi-job</module>
+<!--        <module>ruoyi-job</module>-->
         <module>ruoyi-system</module>
-        <module>ruoyi-workflow</module>
         <module>ruoyi-iot</module>
     </modules>
 

+ 0 - 108
ruoyi-modules/ruoyi-demo/pom.xml

@@ -1,108 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"
-         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <groupId>org.dromara</groupId>
-        <artifactId>ruoyi-modules</artifactId>
-        <version>${revision}</version>
-    </parent>
-    <modelVersion>4.0.0</modelVersion>
-
-    <artifactId>ruoyi-demo</artifactId>
-
-    <description>
-        demo模块
-    </description>
-
-    <dependencies>
-
-        <!-- 通用工具-->
-        <dependency>
-            <groupId>org.dromara</groupId>
-            <artifactId>ruoyi-common-core</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.dromara</groupId>
-            <artifactId>ruoyi-common-doc</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.dromara</groupId>
-            <artifactId>ruoyi-common-sms</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.dromara</groupId>
-            <artifactId>ruoyi-common-mail</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.dromara</groupId>
-            <artifactId>ruoyi-common-redis</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.dromara</groupId>
-            <artifactId>ruoyi-common-idempotent</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.dromara</groupId>
-            <artifactId>ruoyi-common-mybatis</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.dromara</groupId>
-            <artifactId>ruoyi-common-log</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.dromara</groupId>
-            <artifactId>ruoyi-common-excel</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.dromara</groupId>
-            <artifactId>ruoyi-common-security</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.dromara</groupId>
-            <artifactId>ruoyi-common-web</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.dromara</groupId>
-            <artifactId>ruoyi-common-ratelimiter</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.dromara</groupId>
-            <artifactId>ruoyi-common-translation</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.dromara</groupId>
-            <artifactId>ruoyi-common-sensitive</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.dromara</groupId>
-            <artifactId>ruoyi-common-encrypt</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.dromara</groupId>
-            <artifactId>ruoyi-common-tenant</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.dromara</groupId>
-            <artifactId>ruoyi-common-websocket</artifactId>
-        </dependency>
-
-    </dependencies>
-
-</project>

+ 0 - 52
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/MailController.java

@@ -1,52 +0,0 @@
-package org.dromara.demo.controller;
-
-import org.dromara.common.core.domain.R;
-import org.dromara.common.mail.utils.MailUtils;
-import lombok.RequiredArgsConstructor;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.io.File;
-
-
-/**
- * 邮件发送案例
- *
- * @author Michelle.Chung
- */
-@Validated
-@RequiredArgsConstructor
-@RestController
-@RequestMapping("/demo/mail")
-public class MailController {
-
-    /**
-     * 发送邮件
-     *
-     * @param to      接收人
-     * @param subject 标题
-     * @param text    内容
-     */
-    @GetMapping("/sendSimpleMessage")
-    public R<Void> sendSimpleMessage(String to, String subject, String text) {
-        MailUtils.sendText(to, subject, text);
-        return R.ok();
-    }
-
-    /**
-     * 发送邮件(带附件)
-     *
-     * @param to       接收人
-     * @param subject  标题
-     * @param text     内容
-     * @param filePath 附件路径
-     */
-    @GetMapping("/sendMessageWithAttachment")
-    public R<Void> sendMessageWithAttachment(String to, String subject, String text, String filePath) {
-        MailUtils.sendText(to, subject, text, new File(filePath));
-        return R.ok();
-    }
-
-}

+ 0 - 95
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/RedisCacheController.java

@@ -1,95 +0,0 @@
-package org.dromara.demo.controller;
-
-import org.dromara.common.core.constant.CacheNames;
-import org.dromara.common.core.domain.R;
-import org.dromara.common.redis.utils.RedisUtils;
-import lombok.RequiredArgsConstructor;
-import org.springframework.cache.annotation.CacheEvict;
-import org.springframework.cache.annotation.CachePut;
-import org.springframework.cache.annotation.Cacheable;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.time.Duration;
-
-/**
- * spring-cache 演示案例
- *
- * @author Lion Li
- */
-// 类级别 缓存统一配置
-//@CacheConfig(cacheNames = CacheNames.DEMO_CACHE)
-@RequiredArgsConstructor
-@RestController
-@RequestMapping("/demo/cache")
-public class RedisCacheController {
-
-    /**
-     * 测试 @Cacheable
-     * <p>
-     * 表示这个方法有了缓存的功能,方法的返回值会被缓存下来
-     * 下一次调用该方法前,会去检查是否缓存中已经有值
-     * 如果有就直接返回,不调用方法
-     * 如果没有,就调用方法,然后把结果缓存起来
-     * 这个注解「一般用在查询方法上」
-     * <p>
-     * 重点说明: 缓存注解严谨与其他筛选数据功能一起使用
-     * 例如: 数据权限注解 会造成 缓存击穿 与 数据不一致问题
-     * <p>
-     * cacheNames 命名规则 查看 {@link CacheNames} 注释 支持多参数
-     */
-    @Cacheable(cacheNames = "demo:cache#60s#10m#20", key = "#key", condition = "#key != null")
-    @GetMapping("/test1")
-    public R<String> test1(String key, String value) {
-        return R.ok("操作成功", value);
-    }
-
-    /**
-     * 测试 @CachePut
-     * <p>
-     * 加了@CachePut注解的方法,会把方法的返回值put到缓存里面缓存起来,供其它地方使用
-     * 它「通常用在新增或者实时更新方法上」
-     * <p>
-     * cacheNames 命名规则 查看 {@link CacheNames} 注释 支持多参数
-     */
-    @CachePut(cacheNames = CacheNames.DEMO_CACHE, key = "#key", condition = "#key != null")
-    @GetMapping("/test2")
-    public R<String> test2(String key, String value) {
-        return R.ok("操作成功", value);
-    }
-
-    /**
-     * 测试 @CacheEvict
-     * <p>
-     * 使用了CacheEvict注解的方法,会清空指定缓存
-     * 「一般用在删除的方法上」
-     * <p>
-     * cacheNames 命名规则 查看 {@link CacheNames} 注释 支持多参数
-     */
-    @CacheEvict(cacheNames = CacheNames.DEMO_CACHE, key = "#key", condition = "#key != null")
-    @GetMapping("/test3")
-    public R<String> test3(String key, String value) {
-        return R.ok("操作成功", value);
-    }
-
-    /**
-     * 测试设置过期时间
-     * 手动设置过期时间10秒
-     * 11秒后获取 判断是否相等
-     */
-    @GetMapping("/test6")
-    public R<Boolean> test6(String key, String value) {
-        RedisUtils.setCacheObject(key, value);
-        boolean flag = RedisUtils.expire(key, Duration.ofSeconds(10));
-        System.out.println("***********" + flag);
-        try {
-            Thread.sleep(11 * 1000);
-        } catch (InterruptedException e) {
-            e.printStackTrace();
-        }
-        Object obj = RedisUtils.getCacheObject(key);
-        return R.ok(value.equals(obj));
-    }
-
-}

+ 0 - 71
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/RedisLockController.java

@@ -1,71 +0,0 @@
-package org.dromara.demo.controller;
-
-import com.baomidou.lock.LockInfo;
-import com.baomidou.lock.LockTemplate;
-import com.baomidou.lock.annotation.Lock4j;
-import com.baomidou.lock.executor.RedissonLockExecutor;
-import org.dromara.common.core.domain.R;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.time.LocalTime;
-
-
-/**
- * 测试分布式锁的样例
- *
- * @author shenxinquan
- */
-@Slf4j
-@RestController
-@RequestMapping("/demo/redisLock")
-public class RedisLockController {
-
-    @Autowired
-    private LockTemplate lockTemplate;
-
-    /**
-     * 测试lock4j 注解
-     */
-    @Lock4j(keys = {"#key"})
-    @GetMapping("/testLock4j")
-    public R<String> testLock4j(String key, String value) {
-        System.out.println("start:" + key + ",time:" + LocalTime.now().toString());
-        try {
-            Thread.sleep(10000);
-        } catch (InterruptedException e) {
-            e.printStackTrace();
-        }
-        System.out.println("end :" + key + ",time:" + LocalTime.now().toString());
-        return R.ok("操作成功", value);
-    }
-
-    /**
-     * 测试lock4j 工具
-     */
-    @GetMapping("/testLock4jLockTemplate")
-    public R<String> testLock4jLockTemplate(String key, String value) {
-        final LockInfo lockInfo = lockTemplate.lock(key, 30000L, 5000L, RedissonLockExecutor.class);
-        if (null == lockInfo) {
-            throw new RuntimeException("业务处理中,请稍后再试");
-        }
-        // 获取锁成功,处理业务
-        try {
-            try {
-                Thread.sleep(8000);
-            } catch (InterruptedException e) {
-                //
-            }
-            System.out.println("执行简单方法1 , 当前线程:" + Thread.currentThread().getName());
-        } finally {
-            //释放锁
-            lockTemplate.releaseLock(lockInfo);
-        }
-        //结束
-        return R.ok("操作成功", value);
-    }
-
-}

+ 0 - 47
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/RedisPubSubController.java

@@ -1,47 +0,0 @@
-package org.dromara.demo.controller;
-
-import org.dromara.common.core.domain.R;
-import org.dromara.common.redis.utils.RedisUtils;
-import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * Redis 发布订阅 演示案例
- *
- * @author Lion Li
- */
-@RequiredArgsConstructor
-@RestController
-@RequestMapping("/demo/redis/pubsub")
-public class RedisPubSubController {
-
-    /**
-     * 发布消息
-     *
-     * @param key   通道Key
-     * @param value 发送内容
-     */
-    @GetMapping("/pub")
-    public R<Void> pub(String key, String value) {
-        RedisUtils.publish(key, value, consumer -> {
-            System.out.println("发布通道 => " + key + ", 发送值 => " + value);
-        });
-        return R.ok("操作成功");
-    }
-
-    /**
-     * 订阅消息
-     *
-     * @param key 通道Key
-     */
-    @GetMapping("/sub")
-    public R<Void> sub(String key) {
-        RedisUtils.subscribe(key, String.class, msg -> {
-            System.out.println("订阅通道 => " + key + ", 接收值 => " + msg);
-        });
-        return R.ok("操作成功");
-    }
-
-}

+ 0 - 64
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/RedisRateLimiterController.java

@@ -1,64 +0,0 @@
-package org.dromara.demo.controller;
-
-import org.dromara.common.core.domain.R;
-import org.dromara.common.ratelimiter.annotation.RateLimiter;
-import org.dromara.common.ratelimiter.enums.LimitType;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-
-/**
- * 测试分布式限流样例
- *
- * @author Lion Li
- */
-@Slf4j
-@RestController
-@RequestMapping("/demo/rateLimiter")
-public class RedisRateLimiterController {
-
-    /**
-     * 测试全局限流
-     * 全局影响
-     */
-    @RateLimiter(count = 2, time = 10)
-    @GetMapping("/test")
-    public R<String> test(String value) {
-        return R.ok("操作成功", value);
-    }
-
-    /**
-     * 测试请求IP限流
-     * 同一IP请求受影响
-     */
-    @RateLimiter(count = 2, time = 10, limitType = LimitType.IP)
-    @GetMapping("/testip")
-    public R<String> testip(String value) {
-        return R.ok("操作成功", value);
-    }
-
-    /**
-     * 测试集群实例限流
-     * 启动两个后端服务互不影响
-     */
-    @RateLimiter(count = 2, time = 10, limitType = LimitType.CLUSTER)
-    @GetMapping("/testcluster")
-    public R<String> testcluster(String value) {
-        return R.ok("操作成功", value);
-    }
-
-    /**
-     * 测试请求IP限流(key基于参数获取)
-     * 同一IP请求受影响
-     *
-     * 简单变量获取 #变量 复杂表达式 #{#变量 != 1 ? 1 : 0}
-     */
-    @RateLimiter(count = 2, time = 10, limitType = LimitType.IP, key = "#value")
-    @GetMapping("/testObj")
-    public R<String> testObj(String value) {
-        return R.ok("操作成功", value);
-    }
-
-}

+ 0 - 82
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/SmsController.java

@@ -1,82 +0,0 @@
-package org.dromara.demo.controller;
-
-import lombok.RequiredArgsConstructor;
-import org.dromara.common.core.domain.R;
-import org.dromara.sms4j.api.SmsBlend;
-import org.dromara.sms4j.api.entity.SmsResponse;
-import org.dromara.sms4j.core.factory.SmsFactory;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.LinkedHashMap;
-
-/**
- * 短信演示案例
- * 请先阅读文档 否则无法使用
- *
- * @author Lion Li
- * @version 4.2.0
- */
-@Validated
-@RequiredArgsConstructor
-@RestController
-@RequestMapping("/demo/sms")
-public class SmsController {
-    /**
-     * 发送短信Aliyun
-     *
-     * @param phones     电话号
-     * @param templateId 模板ID
-     */
-    @GetMapping("/sendAliyun")
-    public R<Object> sendAliyun(String phones, String templateId) {
-        LinkedHashMap<String, String> map = new LinkedHashMap<>(1);
-        map.put("code", "1234");
-        SmsBlend smsBlend = SmsFactory.getSmsBlend("config1");
-        SmsResponse smsResponse = smsBlend.sendMessage(phones, templateId, map);
-        return R.ok(smsResponse);
-    }
-
-    /**
-     * 发送短信Tencent
-     *
-     * @param phones     电话号
-     * @param templateId 模板ID
-     */
-    @GetMapping("/sendTencent")
-    public R<Object> sendTencent(String phones, String templateId) {
-        LinkedHashMap<String, String> map = new LinkedHashMap<>(1);
-//        map.put("2", "测试测试");
-        map.put("1", "1234");
-        SmsBlend smsBlend = SmsFactory.getSmsBlend("config2");
-        SmsResponse smsResponse = smsBlend.sendMessage(phones, templateId, map);
-        return R.ok(smsResponse);
-    }
-
-    /**
-     * 添加黑名单
-     *
-     * @param phone 手机号
-     */
-    @GetMapping("/addBlacklist")
-    public R<Object> addBlacklist(String phone){
-        SmsBlend smsBlend = SmsFactory.getSmsBlend("config1");
-        smsBlend.joinInBlacklist(phone);
-        return R.ok();
-    }
-
-    /**
-     * 移除黑名单
-     *
-     * @param phone 手机号
-     */
-    @GetMapping("/removeBlacklist")
-    public R<Object> removeBlacklist(String phone){
-        SmsBlend smsBlend = SmsFactory.getSmsBlend("config1");
-        smsBlend.removeFromBlacklist(phone);
-        return R.ok();
-    }
-
-}

+ 0 - 31
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/Swagger3DemoController.java

@@ -1,31 +0,0 @@
-package org.dromara.demo.controller;
-
-import org.dromara.common.core.domain.R;
-import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestPart;
-import org.springframework.web.bind.annotation.RestController;
-import org.springframework.web.multipart.MultipartFile;
-
-/**
- * swagger3 用法示例
- *
- * @author Lion Li
- */
-@RestController
-@RequestMapping("/swagger/demo")
-public class Swagger3DemoController {
-
-    /**
-     * 上传请求
-     * 必须使用 @RequestPart 注解标注为文件
-     *
-     * @param file 文件
-     */
-    @PostMapping(value = "/upload", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
-    public R<String> upload(@RequestPart("file") MultipartFile file) {
-        return R.ok("操作成功", file.getOriginalFilename());
-    }
-
-}

+ 0 - 90
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestBatchController.java

@@ -1,90 +0,0 @@
-package org.dromara.demo.controller;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import org.dromara.common.core.domain.R;
-import org.dromara.common.web.core.BaseController;
-import org.dromara.demo.domain.TestDemo;
-import org.dromara.demo.mapper.TestDemoMapper;
-import lombok.RequiredArgsConstructor;
-import org.springframework.web.bind.annotation.DeleteMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * 测试批量方法
- *
- * @author Lion Li
- * @date 2021-05-30
- */
-@RequiredArgsConstructor
-@RestController
-@RequestMapping("/demo/batch")
-public class TestBatchController extends BaseController {
-
-    /**
-     * 为了便于测试 直接引入mapper
-     */
-    private final TestDemoMapper testDemoMapper;
-
-    /**
-     * 新增批量方法 可完美替代 saveBatch 秒级插入上万数据 (对mysql负荷较大)
-     * <p>
-     * 3.5.0 版本 增加 rewriteBatchedStatements=true 批处理参数 使 MP 原生批处理可以达到同样的速度
-     */
-    @PostMapping("/add")
-//    @DS("slave")
-    public R<Void> add() {
-        List<TestDemo> list = new ArrayList<>();
-        for (int i = 0; i < 1000; i++) {
-            TestDemo testDemo = new TestDemo();
-            testDemo.setOrderNum(-1);
-            testDemo.setTestKey("批量新增");
-            testDemo.setValue("测试新增");
-            list.add(testDemo);
-        }
-        return toAjax(testDemoMapper.insertBatch(list));
-    }
-
-    /**
-     * 新增或更新 可完美替代 saveOrUpdateBatch 高性能
-     * <p>
-     * 3.5.0 版本 增加 rewriteBatchedStatements=true 批处理参数 使 MP 原生批处理可以达到同样的速度
-     */
-    @PostMapping("/addOrUpdate")
-//    @DS("slave")
-    public R<Void> addOrUpdate() {
-        List<TestDemo> list = new ArrayList<>();
-        for (int i = 0; i < 1000; i++) {
-            TestDemo testDemo = new TestDemo();
-            testDemo.setOrderNum(-1);
-            testDemo.setTestKey("批量新增");
-            testDemo.setValue("测试新增");
-            list.add(testDemo);
-        }
-        testDemoMapper.insertBatch(list);
-        for (int i = 0; i < list.size(); i++) {
-            TestDemo testDemo = list.get(i);
-            testDemo.setTestKey("批量新增或修改");
-            testDemo.setValue("批量新增或修改");
-            if (i % 2 == 0) {
-                testDemo.setId(null);
-            }
-        }
-        return toAjax(testDemoMapper.insertOrUpdateBatch(list));
-    }
-
-    /**
-     * 删除批量方法
-     */
-    @DeleteMapping()
-//    @DS("slave")
-    public R<Void> remove() {
-        return toAjax(testDemoMapper.delete(new LambdaQueryWrapper<TestDemo>()
-            .eq(TestDemo::getOrderNum, -1L)));
-    }
-
-}

+ 0 - 147
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestDemoController.java

@@ -1,147 +0,0 @@
-package org.dromara.demo.controller;
-
-import cn.dev33.satoken.annotation.SaCheckPermission;
-import org.dromara.common.core.domain.R;
-import org.dromara.common.core.utils.MapstructUtils;
-import org.dromara.common.core.utils.ValidatorUtils;
-import org.dromara.common.core.validate.AddGroup;
-import org.dromara.common.core.validate.EditGroup;
-import org.dromara.common.core.validate.QueryGroup;
-import org.dromara.common.web.core.BaseController;
-import org.dromara.common.idempotent.annotation.RepeatSubmit;
-import org.dromara.common.mybatis.core.page.PageQuery;
-import org.dromara.common.mybatis.core.page.TableDataInfo;
-import org.dromara.common.excel.core.ExcelResult;
-import org.dromara.common.excel.utils.ExcelUtil;
-import org.dromara.common.log.annotation.Log;
-import org.dromara.common.log.enums.BusinessType;
-import org.dromara.demo.domain.TestDemo;
-import org.dromara.demo.domain.bo.TestDemoBo;
-import org.dromara.demo.domain.bo.TestDemoImportVo;
-import org.dromara.demo.domain.vo.TestDemoVo;
-import org.dromara.demo.service.ITestDemoService;
-import lombok.RequiredArgsConstructor;
-import org.springframework.http.MediaType;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.constraints.NotEmpty;
-import jakarta.validation.constraints.NotNull;
-
-import java.util.*;
-import java.util.concurrent.TimeUnit;
-
-/**
- * 测试单表Controller
- *
- * @author Lion Li
- * @date 2021-07-26
- */
-@Validated
-@RequiredArgsConstructor
-@RestController
-@RequestMapping("/demo/demo")
-public class TestDemoController extends BaseController {
-
-    private final ITestDemoService testDemoService;
-
-    /**
-     * 查询测试单表列表
-     */
-    @SaCheckPermission("demo:demo:list")
-    @GetMapping("/list")
-    public TableDataInfo<TestDemoVo> list(@Validated(QueryGroup.class) TestDemoBo bo, PageQuery pageQuery) {
-        return testDemoService.queryPageList(bo, pageQuery);
-    }
-
-    /**
-     * 自定义分页查询
-     */
-    @SaCheckPermission("demo:demo:list")
-    @GetMapping("/page")
-    public TableDataInfo<TestDemoVo> page(@Validated(QueryGroup.class) TestDemoBo bo, PageQuery pageQuery) {
-        return testDemoService.customPageList(bo, pageQuery);
-    }
-
-    /**
-     * 导入数据
-     *
-     * @param file 导入文件
-     */
-    @Log(title = "测试单表", businessType = BusinessType.IMPORT)
-    @SaCheckPermission("demo:demo:import")
-    @PostMapping(value = "/importData", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
-    public R<Void> importData(@RequestPart("file") MultipartFile file) throws Exception {
-        ExcelResult<TestDemoImportVo> excelResult = ExcelUtil.importExcel(file.getInputStream(), TestDemoImportVo.class, true);
-        List<TestDemo> list = MapstructUtils.convert(excelResult.getList(), TestDemo.class);
-        testDemoService.saveBatch(list);
-        return R.ok(excelResult.getAnalysis());
-    }
-
-    /**
-     * 导出测试单表列表
-     */
-    @SaCheckPermission("demo:demo:export")
-    @Log(title = "测试单表", businessType = BusinessType.EXPORT)
-    @PostMapping("/export")
-    public void export(@Validated TestDemoBo bo, HttpServletResponse response) {
-        List<TestDemoVo> list = testDemoService.queryList(bo);
-        // 测试雪花id导出
-//        for (TestDemoVo vo : list) {
-//            vo.setId(1234567891234567893L);
-//        }
-        ExcelUtil.exportExcel(list, "测试单表", TestDemoVo.class, response);
-    }
-
-    /**
-     * 获取测试单表详细信息
-     *
-     * @param id 测试ID
-     */
-    @SaCheckPermission("demo:demo:query")
-    @GetMapping("/{id}")
-    public R<TestDemoVo> getInfo(@NotNull(message = "主键不能为空")
-                                 @PathVariable("id") Long id) {
-        return R.ok(testDemoService.queryById(id));
-    }
-
-    /**
-     * 新增测试单表
-     */
-    @SaCheckPermission("demo:demo:add")
-    @Log(title = "测试单表", businessType = BusinessType.INSERT)
-    @RepeatSubmit(interval = 2, timeUnit = TimeUnit.SECONDS, message = "{repeat.submit.message}")
-    @PostMapping()
-    public R<Void> add(@RequestBody TestDemoBo bo) {
-        // 使用校验工具对标 @Validated(AddGroup.class) 注解
-        // 用于在非 Controller 的地方校验对象
-        ValidatorUtils.validate(bo, AddGroup.class);
-        return toAjax(testDemoService.insertByBo(bo));
-    }
-
-    /**
-     * 修改测试单表
-     */
-    @SaCheckPermission("demo:demo:edit")
-    @Log(title = "测试单表", businessType = BusinessType.UPDATE)
-    @RepeatSubmit
-    @PutMapping()
-    public R<Void> edit(@Validated(EditGroup.class) @RequestBody TestDemoBo bo) {
-        return toAjax(testDemoService.updateByBo(bo));
-    }
-
-    /**
-     * 删除测试单表
-     *
-     * @param ids 测试ID串
-     */
-    @SaCheckPermission("demo:demo:remove")
-    @Log(title = "测试单表", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{ids}")
-    public R<Void> remove(@NotEmpty(message = "主键不能为空")
-                          @PathVariable Long[] ids) {
-        return toAjax(testDemoService.deleteWithValidByIds(Arrays.asList(ids), true));
-    }
-}

+ 0 - 55
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestEncryptController.java

@@ -1,55 +0,0 @@
-package org.dromara.demo.controller;
-
-import org.dromara.common.core.domain.R;
-import org.dromara.demo.domain.TestDemoEncrypt;
-import org.dromara.demo.mapper.TestDemoEncryptMapper;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Value;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.HashMap;
-import java.util.Map;
-
-
-/**
- * 测试数据库加解密功能
- *
- * @author Lion Li
- */
-@Validated
-@RestController
-@RequestMapping("/demo/encrypt")
-public class TestEncryptController {
-
-    @Autowired
-    private TestDemoEncryptMapper mapper;
-    @Value("${mybatis-encryptor.enable}")
-    private Boolean encryptEnable;
-
-    /**
-     * 测试数据库加解密
-     *
-     * @param key   测试key
-     * @param value 测试value
-     */
-    @GetMapping()
-    public R<Map<String, TestDemoEncrypt>> test(String key, String value) {
-        if (!encryptEnable) {
-            throw new RuntimeException("加密功能未开启!");
-        }
-        Map<String, TestDemoEncrypt> map = new HashMap<>(2);
-        TestDemoEncrypt demo = new TestDemoEncrypt();
-        demo.setTestKey(key);
-        demo.setValue(value);
-        mapper.insert(demo);
-        map.put("加密", demo);
-        TestDemoEncrypt testDemo = mapper.selectById(demo.getId());
-        map.put("解密", testDemo);
-        return R.ok(map);
-    }
-
-
-}

+ 0 - 160
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestExcelController.java

@@ -1,160 +0,0 @@
-package org.dromara.demo.controller;
-
-import cn.hutool.core.collection.CollUtil;
-import jakarta.servlet.http.HttpServletResponse;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.RequiredArgsConstructor;
-import org.dromara.common.excel.core.ExcelResult;
-import org.dromara.common.excel.utils.ExcelUtil;
-import org.dromara.demo.domain.vo.ExportDemoVo;
-import org.dromara.demo.listener.ExportDemoListener;
-import org.dromara.demo.service.IExportExcelService;
-import org.springframework.http.MediaType;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.web.multipart.MultipartFile;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 测试Excel功能
- *
- * @author Lion Li
- */
-@RequiredArgsConstructor
-@RestController
-@RequestMapping("/demo/excel")
-public class TestExcelController {
-
-    private final IExportExcelService exportExcelService;
-
-    /**
-     * 单列表多数据
-     */
-    @GetMapping("/exportTemplateOne")
-    public void exportTemplateOne(HttpServletResponse response) {
-        Map<String, String> map = new HashMap<>();
-        map.put("title", "单列表多数据");
-        map.put("test1", "数据测试1");
-        map.put("test2", "数据测试2");
-        map.put("test3", "数据测试3");
-        map.put("test4", "数据测试4");
-        map.put("testTest", "666");
-        List<TestObj> list = new ArrayList<>();
-        list.add(new TestObj("单列表测试1", "列表测试1", "列表测试2", "列表测试3", "列表测试4"));
-        list.add(new TestObj("单列表测试2", "列表测试5", "列表测试6", "列表测试7", "列表测试8"));
-        list.add(new TestObj("单列表测试3", "列表测试9", "列表测试10", "列表测试11", "列表测试12"));
-        ExcelUtil.exportTemplate(CollUtil.newArrayList(map, list), "单列表.xlsx", "excel/单列表.xlsx", response);
-    }
-
-    /**
-     * 多列表多数据
-     */
-    @GetMapping("/exportTemplateMuliti")
-    public void exportTemplateMuliti(HttpServletResponse response) {
-        Map<String, String> map = new HashMap<>();
-        map.put("title1", "标题1");
-        map.put("title2", "标题2");
-        map.put("title3", "标题3");
-        map.put("title4", "标题4");
-        map.put("author", "Lion Li");
-        List<TestObj1> list1 = new ArrayList<>();
-        list1.add(new TestObj1("list1测试1", "list1测试2", "list1测试3"));
-        list1.add(new TestObj1("list1测试4", "list1测试5", "list1测试6"));
-        list1.add(new TestObj1("list1测试7", "list1测试8", "list1测试9"));
-        List<TestObj1> list2 = new ArrayList<>();
-        list2.add(new TestObj1("list2测试1", "list2测试2", "list2测试3"));
-        list2.add(new TestObj1("list2测试4", "list2测试5", "list2测试6"));
-        List<TestObj1> list3 = new ArrayList<>();
-        list3.add(new TestObj1("list3测试1", "list3测试2", "list3测试3"));
-        List<TestObj1> list4 = new ArrayList<>();
-        list4.add(new TestObj1("list4测试1", "list4测试2", "list4测试3"));
-        list4.add(new TestObj1("list4测试4", "list4测试5", "list4测试6"));
-        list4.add(new TestObj1("list4测试7", "list4测试8", "list4测试9"));
-        list4.add(new TestObj1("list4测试10", "list4测试11", "list4测试12"));
-        Map<String, Object> multiListMap = new HashMap<>();
-        multiListMap.put("map", map);
-        multiListMap.put("data1", list1);
-        multiListMap.put("data2", list2);
-        multiListMap.put("data3", list3);
-        multiListMap.put("data4", list4);
-        ExcelUtil.exportTemplateMultiList(multiListMap, "多列表.xlsx", "excel/多列表.xlsx", response);
-    }
-
-    /**
-     * 导出下拉框
-     *
-     * @param response /
-     */
-    @GetMapping("/exportWithOptions")
-    public void exportWithOptions(HttpServletResponse response) {
-        exportExcelService.exportWithOptions(response);
-    }
-
-    /**
-     * 多个sheet导出
-     */
-    @GetMapping("/exportTemplateMultiSheet")
-    public void exportTemplateMultiSheet(HttpServletResponse response) {
-        List<TestObj1> list1 = new ArrayList<>();
-        list1.add(new TestObj1("list1测试1", "list1测试2", "list1测试3"));
-        list1.add(new TestObj1("list1测试4", "list1测试5", "list1测试6"));
-        List<TestObj1> list2 = new ArrayList<>();
-        list2.add(new TestObj1("list2测试1", "list2测试2", "list2测试3"));
-        list2.add(new TestObj1("list2测试4", "list2测试5", "list2测试6"));
-        List<TestObj1> list3 = new ArrayList<>();
-        list3.add(new TestObj1("list3测试1", "list3测试2", "list3测试3"));
-        list3.add(new TestObj1("list3测试4", "list3测试5", "list3测试6"));
-        List<TestObj1> list4 = new ArrayList<>();
-        list4.add(new TestObj1("list4测试1", "list4测试2", "list4测试3"));
-        list4.add(new TestObj1("list4测试4", "list4测试5", "list4测试6"));
-
-        List<Map<String, Object>> list = new ArrayList<>();
-        Map<String, Object> sheetMap1 = new HashMap<>();
-        sheetMap1.put("data1", list1);
-        Map<String, Object> sheetMap2 = new HashMap<>();
-        sheetMap2.put("data2", list2);
-        Map<String, Object> sheetMap3 = new HashMap<>();
-        sheetMap3.put("data3", list3);
-        Map<String, Object> sheetMap4 = new HashMap<>();
-        sheetMap4.put("data4", list4);
-
-        list.add(sheetMap1);
-        list.add(sheetMap2);
-        list.add(sheetMap3);
-        list.add(sheetMap4);
-        ExcelUtil.exportTemplateMultiSheet(list, "多sheet列表", "excel/多sheet列表.xlsx", response);
-    }
-
-    /**
-     * 导入表格
-     */
-    @PostMapping(value = "/importWithOptions", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
-    public List<ExportDemoVo> importWithOptions(@RequestPart("file") MultipartFile file) throws Exception {
-        // 处理解析结果
-        ExcelResult<ExportDemoVo> excelResult = ExcelUtil.importExcel(file.getInputStream(), ExportDemoVo.class, new ExportDemoListener());
-        return excelResult.getList();
-    }
-
-    @Data
-    @AllArgsConstructor
-    static class TestObj1 {
-        private String test1;
-        private String test2;
-        private String test3;
-    }
-
-    @Data
-    @AllArgsConstructor
-    static class TestObj {
-        private String name;
-        private String list1;
-        private String list2;
-        private String list3;
-        private String list4;
-    }
-
-}

+ 0 - 71
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestI18nController.java

@@ -1,71 +0,0 @@
-package org.dromara.demo.controller;
-
-import org.dromara.common.core.domain.R;
-import org.dromara.common.core.utils.MessageUtils;
-import lombok.Data;
-import org.hibernate.validator.constraints.Range;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
-
-
-/**
- * 测试国际化
- *
- * @author Lion Li
- */
-@Validated
-@RestController
-@RequestMapping("/demo/i18n")
-public class TestI18nController {
-
-    /**
-     * 通过code获取国际化内容
-     * code为 messages.properties 中的 key
-     * <p>
-     * 测试使用 user.register.success
-     *
-     * @param code 国际化code
-     */
-    @GetMapping()
-    public R<Void> get(String code) {
-        return R.ok(MessageUtils.message(code));
-    }
-
-    /**
-     * Validator 校验国际化
-     * 不传值 分别查看异常返回
-     * <p>
-     * 测试使用 not.null
-     */
-    @GetMapping("/test1")
-    public R<Void> test1(@NotBlank(message = "{not.null}") String str) {
-        return R.ok(str);
-    }
-
-    /**
-     * Bean 校验国际化
-     * 不传值 分别查看异常返回
-     * <p>
-     * 测试使用 not.null
-     */
-    @GetMapping("/test2")
-    public R<TestI18nBo> test2(@Validated TestI18nBo bo) {
-        return R.ok(bo);
-    }
-
-    @Data
-    public static class TestI18nBo {
-
-        @NotBlank(message = "{not.null}")
-        private String name;
-
-        @NotNull(message = "{not.null}")
-        @Range(min = 0, max = 100, message = "{length.not.valid}")
-        private Integer age;
-    }
-}

+ 0 - 76
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestSensitiveController.java

@@ -1,76 +0,0 @@
-package org.dromara.demo.controller;
-
-import org.dromara.common.core.domain.R;
-import org.dromara.common.web.core.BaseController;
-import org.dromara.common.sensitive.annotation.Sensitive;
-import org.dromara.common.sensitive.core.SensitiveStrategy;
-import lombok.Data;
-import org.dromara.common.sensitive.core.SensitiveService;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * 测试数据脱敏控制器
- * <p>
- * 默认管理员不过滤
- * 需自行根据业务重写实现
- *
- * @author Lion Li
- * @version 3.6.0
- * @see SensitiveService
- */
-@RestController
-@RequestMapping("/demo/sensitive")
-public class TestSensitiveController extends BaseController {
-
-    /**
-     * 测试数据脱敏
-     */
-    @GetMapping("/test")
-    public R<TestSensitive> test() {
-        TestSensitive testSensitive = new TestSensitive();
-        testSensitive.setIdCard("210397198608215431");
-        testSensitive.setPhone("17640125371");
-        testSensitive.setAddress("北京市朝阳区某某四合院1203室");
-        testSensitive.setEmail("17640125371@163.com");
-        testSensitive.setBankCard("6226456952351452853");
-        return R.ok(testSensitive);
-    }
-
-    @Data
-    static class TestSensitive {
-
-        /**
-         * 身份证
-         */
-        @Sensitive(strategy = SensitiveStrategy.ID_CARD)
-        private String idCard;
-
-        /**
-         * 电话
-         */
-        @Sensitive(strategy = SensitiveStrategy.PHONE, roleKey = "common")
-        private String phone;
-
-        /**
-         * 地址
-         */
-        @Sensitive(strategy = SensitiveStrategy.ADDRESS, perms = "system:user:query")
-        private String address;
-
-        /**
-         * 邮箱
-         */
-        @Sensitive(strategy = SensitiveStrategy.EMAIL, roleKey = "common", perms = "system:user:query1")
-        private String email;
-
-        /**
-         * 银行卡
-         */
-        @Sensitive(strategy = SensitiveStrategy.BANK_CARD, roleKey = "common1", perms = "system:user:query")
-        private String bankCard;
-
-    }
-
-}

+ 0 - 107
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/TestTreeController.java

@@ -1,107 +0,0 @@
-package org.dromara.demo.controller;
-
-import cn.dev33.satoken.annotation.SaCheckPermission;
-import org.dromara.common.core.domain.R;
-import org.dromara.common.core.validate.AddGroup;
-import org.dromara.common.core.validate.EditGroup;
-import org.dromara.common.core.validate.QueryGroup;
-import org.dromara.common.web.core.BaseController;
-import org.dromara.common.excel.utils.ExcelUtil;
-import org.dromara.common.idempotent.annotation.RepeatSubmit;
-import org.dromara.common.log.annotation.Log;
-import org.dromara.common.log.enums.BusinessType;
-import org.dromara.demo.domain.bo.TestTreeBo;
-import org.dromara.demo.domain.vo.TestTreeVo;
-import org.dromara.demo.service.ITestTreeService;
-import lombok.RequiredArgsConstructor;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-import jakarta.servlet.http.HttpServletResponse;
-import jakarta.validation.constraints.NotEmpty;
-import jakarta.validation.constraints.NotNull;
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * 测试树表Controller
- *
- * @author Lion Li
- * @date 2021-07-26
- */
-@Validated
-@RequiredArgsConstructor
-@RestController
-@RequestMapping("/demo/tree")
-public class TestTreeController extends BaseController {
-
-    private final ITestTreeService testTreeService;
-
-    /**
-     * 查询测试树表列表
-     */
-    @SaCheckPermission("demo:tree:list")
-    @GetMapping("/list")
-    public R<List<TestTreeVo>> list(@Validated(QueryGroup.class) TestTreeBo bo) {
-        List<TestTreeVo> list = testTreeService.queryList(bo);
-        return R.ok(list);
-    }
-
-    /**
-     * 导出测试树表列表
-     */
-    @SaCheckPermission("demo:tree:export")
-    @Log(title = "测试树表", businessType = BusinessType.EXPORT)
-    @GetMapping("/export")
-    public void export(@Validated TestTreeBo bo, HttpServletResponse response) {
-        List<TestTreeVo> list = testTreeService.queryList(bo);
-        ExcelUtil.exportExcel(list, "测试树表", TestTreeVo.class, response);
-    }
-
-    /**
-     * 获取测试树表详细信息
-     *
-     * @param id 测试树ID
-     */
-    @SaCheckPermission("demo:tree:query")
-    @GetMapping("/{id}")
-    public R<TestTreeVo> getInfo(@NotNull(message = "主键不能为空")
-                                 @PathVariable("id") Long id) {
-        return R.ok(testTreeService.queryById(id));
-    }
-
-    /**
-     * 新增测试树表
-     */
-    @SaCheckPermission("demo:tree:add")
-    @Log(title = "测试树表", businessType = BusinessType.INSERT)
-    @RepeatSubmit
-    @PostMapping()
-    public R<Void> add(@Validated(AddGroup.class) @RequestBody TestTreeBo bo) {
-        return toAjax(testTreeService.insertByBo(bo));
-    }
-
-    /**
-     * 修改测试树表
-     */
-    @SaCheckPermission("demo:tree:edit")
-    @Log(title = "测试树表", businessType = BusinessType.UPDATE)
-    @RepeatSubmit
-    @PutMapping()
-    public R<Void> edit(@Validated(EditGroup.class) @RequestBody TestTreeBo bo) {
-        return toAjax(testTreeService.updateByBo(bo));
-    }
-
-    /**
-     * 删除测试树表
-     *
-     * @param ids 测试树ID串
-     */
-    @SaCheckPermission("demo:tree:remove")
-    @Log(title = "测试树表", businessType = BusinessType.DELETE)
-    @DeleteMapping("/{ids}")
-    public R<Void> remove(@NotEmpty(message = "主键不能为空")
-                          @PathVariable Long[] ids) {
-        return toAjax(testTreeService.deleteWithValidByIds(Arrays.asList(ids), true));
-    }
-}

+ 0 - 33
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/WeSocketController.java

@@ -1,33 +0,0 @@
-package org.dromara.demo.controller;
-
-import org.dromara.common.core.domain.R;
-import org.dromara.common.websocket.dto.WebSocketMessageDto;
-import org.dromara.common.websocket.utils.WebSocketUtils;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * WebSocket 演示案例
- *
- * @author zendwang
- */
-@RequiredArgsConstructor
-@RestController
-@RequestMapping("/demo/websocket")
-@Slf4j
-public class WeSocketController {
-
-    /**
-     * 发布消息
-     *
-     * @param dto 发送内容
-     */
-    @GetMapping("/send")
-    public R<Void> send(WebSocketMessageDto dto) throws InterruptedException {
-        WebSocketUtils.publishMessage(dto);
-        return R.ok("操作成功");
-    }
-}

+ 0 - 1
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/package-info.java

@@ -1 +0,0 @@
-package org.dromara.demo.controller;

+ 0 - 92
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/queue/BoundedQueueController.java

@@ -1,92 +0,0 @@
-package org.dromara.demo.controller.queue;
-
-import cn.dev33.satoken.annotation.SaIgnore;
-import org.dromara.common.core.domain.R;
-import org.dromara.common.redis.utils.QueueUtils;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.redisson.api.RBoundedBlockingQueue;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * 有界队列 演示案例
- * <p>
- * 轻量级队列 重量级数据量 请使用 MQ
- * <p>
- * 集群测试通过 同一个数据只会被消费一次 做好事务补偿
- * 集群测试流程 在其中一台发送数据 两端分别调用获取接口 一次获取一条
- *
- * @author Lion Li
- * @version 3.6.0
- */
-@Slf4j
-@RequiredArgsConstructor
-@RestController
-@RequestMapping("/demo/queue/bounded")
-public class BoundedQueueController {
-
-
-    /**
-     * 添加队列数据
-     *
-     * @param queueName 队列名
-     * @param capacity  容量
-     */
-    @GetMapping("/add")
-    public R<Void> add(String queueName, int capacity) {
-        // 用完了一定要销毁 否则会一直存在
-        boolean b = QueueUtils.destroyBoundedQueue(queueName);
-        log.info("通道: {} , 删除: {}", queueName, b);
-        // 初始化设置一次即可
-        if (QueueUtils.trySetBoundedQueueCapacity(queueName, capacity)) {
-            log.info("通道: {} , 设置容量: {}", queueName, capacity);
-        } else {
-            log.info("通道: {} , 设置容量失败", queueName);
-            return R.fail("操作失败");
-        }
-        for (int i = 0; i < 11; i++) {
-            String data = "data-" + i;
-            boolean flag = QueueUtils.addBoundedQueueObject(queueName, data);
-            if (flag == false) {
-                log.info("通道: {} , 发送数据: {} 失败, 通道已满", queueName, data);
-            } else {
-                log.info("通道: {} , 发送数据: {}", queueName, data);
-            }
-        }
-        return R.ok("操作成功");
-    }
-
-    /**
-     * 删除队列数据
-     *
-     * @param queueName 队列名
-     */
-    @GetMapping("/remove")
-    public R<Void> remove(String queueName) {
-        String data = "data-" + 5;
-        if (QueueUtils.removeBoundedQueueObject(queueName, data)) {
-            log.info("通道: {} , 删除数据: {}", queueName, data);
-        } else {
-            return R.fail("操作失败");
-        }
-        return R.ok("操作成功");
-    }
-
-    /**
-     * 获取队列数据
-     *
-     * @param queueName 队列名
-     */
-    @GetMapping("/get")
-    public R<Void> get(String queueName) {
-        String data;
-        do {
-            data = QueueUtils.getBoundedQueueObject(queueName);
-            log.info("通道: {} , 获取数据: {}", queueName, data);
-        } while (data != null);
-        return R.ok("操作成功");
-    }
-
-}

+ 0 - 97
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/queue/DelayedQueueController.java

@@ -1,97 +0,0 @@
-package org.dromara.demo.controller.queue;
-
-import cn.dev33.satoken.annotation.SaIgnore;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.dromara.common.core.domain.R;
-import org.dromara.common.redis.utils.QueueUtils;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.TimeUnit;
-
-/**
- * 延迟队列 演示案例
- * <p>
- * 轻量级队列 重量级数据量 请使用 MQ
- * 例如: 创建订单30分钟后过期处理
- * <p>
- * 集群测试通过 同一个数据只会被消费一次 做好事务补偿
- * 集群测试流程 两台集群分别开启订阅 在其中一台发送数据 观察接收消息的规律
- *
- * @author Lion Li
- * @version 3.6.0
- */
-@SaIgnore
-@Slf4j
-@RequiredArgsConstructor
-@RestController
-@RequestMapping("/demo/queue/delayed")
-public class DelayedQueueController {
-
-    /**
-     * 订阅队列
-     *
-     * @param queueName 队列名
-     */
-    @GetMapping("/subscribe")
-    public R<Void> subscribe(String queueName) {
-        log.info("通道: {} 监听中......", queueName);
-        // 项目初始化设置一次即可
-        QueueUtils.subscribeBlockingQueue(queueName, (String orderNum) -> {
-            // 观察接收时间
-            log.info("通道: {}, 收到数据: {}", queueName, orderNum);
-            return CompletableFuture.runAsync(() -> {
-                // 异步处理数据逻辑 不要在上方处理业务逻辑
-                log.info("数据处理: {}", orderNum);
-            });
-        }, true);
-        return R.ok("操作成功");
-    }
-
-    /**
-     * 添加队列数据
-     *
-     * @param queueName 队列名
-     * @param orderNum  订单号
-     * @param time      延迟时间(秒)
-     */
-    @GetMapping("/add")
-    public R<Void> add(String queueName, String orderNum, Long time) {
-        QueueUtils.addDelayedQueueObject(queueName, orderNum, time, TimeUnit.SECONDS);
-        // 观察发送时间
-        log.info("通道: {} , 发送数据: {}", queueName, orderNum);
-        return R.ok("操作成功");
-    }
-
-    /**
-     * 删除队列数据
-     *
-     * @param queueName 队列名
-     * @param orderNum  订单号
-     */
-    @GetMapping("/remove")
-    public R<Void> remove(String queueName, String orderNum) {
-        if (QueueUtils.removeDelayedQueueObject(queueName, orderNum)) {
-            log.info("通道: {} , 删除数据: {}", queueName, orderNum);
-        } else {
-            return R.fail("操作失败");
-        }
-        return R.ok("操作成功");
-    }
-
-    /**
-     * 销毁队列
-     *
-     * @param queueName 队列名
-     */
-    @GetMapping("/destroy")
-    public R<Void> destroy(String queueName) {
-        // 用完了一定要销毁 否则会一直存在
-        QueueUtils.destroyDelayedQueue(queueName);
-        return R.ok("操作成功");
-    }
-
-}

+ 0 - 22
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/queue/PriorityDemo.java

@@ -1,22 +0,0 @@
-package org.dromara.demo.controller.queue;
-
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-/**
- * 实体类 注意不允许使用内部类 否则会找不到类
- *
- * @author Lion Li
- * @version 3.6.0
- */
-@Data
-@NoArgsConstructor
-public class PriorityDemo implements Comparable<PriorityDemo> {
-    private String name;
-    private Integer orderNum;
-
-    @Override
-    public int compareTo(PriorityDemo other) {
-        return Integer.compare(getOrderNum(), other.getOrderNum());
-    }
-}

+ 0 - 89
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/controller/queue/PriorityQueueController.java

@@ -1,89 +0,0 @@
-package org.dromara.demo.controller.queue;
-
-import cn.hutool.core.util.RandomUtil;
-import org.dromara.common.core.domain.R;
-import org.dromara.common.redis.utils.QueueUtils;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
-
-/**
- * 优先队列 演示案例
- * <p>
- * 轻量级队列 重量级数据量 请使用 MQ
- * <p>
- * 集群测试通过 同一个消息只会被消费一次 做好事务补偿
- * 集群测试流程 在其中一台发送数据 两端分别调用获取接口 一次获取一条
- *
- * @author Lion Li
- * @version 3.6.0
- */
-@Slf4j
-@RequiredArgsConstructor
-@RestController
-@RequestMapping("/demo/queue/priority")
-public class PriorityQueueController {
-
-    /**
-     * 添加队列数据
-     *
-     * @param queueName 队列名
-     */
-    @GetMapping("/add")
-    public R<Void> add(String queueName) {
-        // 用完了一定要销毁 否则会一直存在
-        boolean b = QueueUtils.destroyPriorityQueue(queueName);
-        log.info("通道: {} , 删除: {}", queueName, b);
-
-        for (int i = 0; i < 10; i++) {
-            int randomNum = RandomUtil.randomInt(10);
-            PriorityDemo data = new PriorityDemo();
-            data.setName("data-" + i);
-            data.setOrderNum(randomNum);
-            if (QueueUtils.addPriorityQueueObject(queueName, data)) {
-                log.info("通道: {} , 发送数据: {}", queueName, data);
-            } else {
-                log.info("通道: {} , 发送数据: {}, 发送失败", queueName, data);
-            }
-        }
-        return R.ok("操作成功");
-    }
-
-    /**
-     * 删除队列数据
-     *
-     * @param queueName 队列名
-     * @param name      对象名
-     * @param orderNum  排序号
-     */
-    @GetMapping("/remove")
-    public R<Void> remove(String queueName, String name, Integer orderNum) {
-        PriorityDemo data = new PriorityDemo();
-        data.setName(name);
-        data.setOrderNum(orderNum);
-        if (QueueUtils.removePriorityQueueObject(queueName, data)) {
-            log.info("通道: {} , 删除数据: {}", queueName, data);
-        } else {
-            return R.fail("操作失败");
-        }
-        return R.ok("操作成功");
-    }
-
-    /**
-     * 获取队列数据
-     *
-     * @param queueName 队列名
-     */
-    @GetMapping("/get")
-    public R<Void> get(String queueName) {
-        PriorityDemo data;
-        do {
-            data = QueueUtils.getPriorityQueueObject(queueName);
-            log.info("通道: {} , 获取数据: {}", queueName, data);
-        } while (data != null);
-        return R.ok("操作成功");
-    }
-
-}

+ 0 - 68
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/TestDemo.java

@@ -1,68 +0,0 @@
-package org.dromara.demo.domain;
-
-import com.baomidou.mybatisplus.annotation.*;
-import org.dromara.common.tenant.core.TenantEntity;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import java.io.Serial;
-
-/**
- * 测试单表对象 test_demo
- *
- * @author Lion Li
- * @date 2021-07-26
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@TableName("test_demo")
-public class TestDemo extends TenantEntity {
-
-    @Serial
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 主键
-     */
-    @TableId(value = "id")
-    private Long id;
-
-    /**
-     * 部门id
-     */
-    private Long deptId;
-
-    /**
-     * 用户id
-     */
-    private Long userId;
-
-    /**
-     * 排序号
-     */
-    @OrderBy(asc = false, sort = 1)
-    private Integer orderNum;
-
-    /**
-     * key键
-     */
-    private String testKey;
-
-    /**
-     * 值
-     */
-    private String value;
-
-    /**
-     * 版本
-     */
-    @Version
-    private Long version;
-
-    /**
-     * 删除标志
-     */
-    @TableLogic
-    private Long delFlag;
-
-}

+ 0 - 29
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/TestDemoEncrypt.java

@@ -1,29 +0,0 @@
-package org.dromara.demo.domain;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import org.dromara.common.encrypt.annotation.EncryptField;
-import org.dromara.common.encrypt.enumd.AlgorithmType;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-@Data
-@EqualsAndHashCode(callSuper = true)
-@TableName("test_demo")
-public class TestDemoEncrypt extends TestDemo {
-
-    /**
-     * key键
-     */
-    // @EncryptField(algorithm=AlgorithmType.SM2, privateKey = "MIGTAgEAMBMGByqGSM49AgEGCCqBHM9VAYItBHkwdwIBAQQgZSlOvw8FBiH+aFJWLYZP/VRjg9wjfRarTkGBZd/T3N+gCgYIKoEcz1UBgi2hRANCAAR5DGuQwJqkxnbCsP+iPSDoHWIF4RwcR5EsSvT8QPxO1wRkR2IhCkzvRb32x2CUgJFdvoqVqfApFDPZzShqzBwX", publicKey = "MFkwEwYHKoZIzj0CAQYIKoEcz1UBgi0DQgAEeQxrkMCapMZ2wrD/oj0g6B1iBeEcHEeRLEr0/ED8TtcEZEdiIQpM70W99sdglICRXb6KlanwKRQz2c0oaswcFw==")
-    @EncryptField(algorithm = AlgorithmType.RSA, privateKey = "MIICdQIBADANBgkqhkiG9w0BAQEFAASCAl8wggJbAgEAAoGBANBBEeueWlXlkkj2+WY5l+IWe42d8b5K28g+G/CFKC/yYAEHtqGlCsBOrb+YBkG9mPzmuYA/n9k0NFIc8E8yY5vZQaroyFBrTTWEzG9RY2f7Y3svVyybs6jpXSUs4xff8abo7wL1Y/wUaeatTViamxYnyTvdTmLm3d+JjRij68rxAgMBAAECgYAB0TnhXraSopwIVRfmboea1b0upl+BUdTJcmci412UjrKr5aE695ZLPkXbFXijVu7HJlyyv94NVUdaMACV7Ku/S2RuNB70M7YJm8rAjHFC3/i2ZeIM60h1Ziy4QKv0XM3pRATlDCDNhC1WUrtQCQSgU8kcp6eUUppruOqDzcY04QJBAPm9+sBP9CwDRgy3e5+V8aZtJkwDstb0lVVV/KY890cydVxiCwvX3fqVnxKMlb+x0YtH0sb9v+71xvK2lGobaRECQQDVePU6r/cCEfpc+nkWF6osAH1f8Mux3rYv2DoBGvaPzV2BGfsLed4neRfCwWNCKvGPCdW+L0xMJg8+RwaoBUPhAkAT5kViqXxFPYWJYd1h2+rDXhMdH3ZSlm6HvDBDdrwlWinr0Iwcx3iSjPV93uHXwm118aUj4fg3LDJMCKxOwBxhAkByrQXfvwOMYygBprRBf/j0plazoWFrbd6lGR0f1uI5IfNnFRPdeFw1DEINZ2Hw+6zEUF44SqRMC+4IYJNc02dBAkBCgy7RvfyV/A7N6kKXxTHauY0v6XwSSvpeKtRJkbIcRWOdIYvaHO9L7cklj3vIEdwjSUp9K4VTBYYlmAz1xh03", publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQQRHrnlpV5ZJI9vlmOZfiFnuNnfG+StvIPhvwhSgv8mABB7ahpQrATq2/mAZBvZj85rmAP5/ZNDRSHPBPMmOb2UGq6MhQa001hMxvUWNn+2N7L1csm7Oo6V0lLOMX3/Gm6O8C9WP8FGnmrU1YmpsWJ8k73U5i5t3fiY0Yo+vK8QIDAQAB")
-    private String testKey;
-
-    /**
-     * 值
-     */
-    // @EncryptField // 什么也不写走默认yml配置
-    // @EncryptField(algorithm = AlgorithmType.SM4, password = "10rfylhtccpuyke5")
-    @EncryptField(algorithm = AlgorithmType.AES, password = "10rfylhtccpuyke5")
-    private String value;
-
-}

+ 0 - 65
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/TestTree.java

@@ -1,65 +0,0 @@
-package org.dromara.demo.domain;
-
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.baomidou.mybatisplus.annotation.Version;
-import org.dromara.common.tenant.core.TenantEntity;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import java.io.Serial;
-
-/**
- * 测试树表对象 test_tree
- *
- * @author Lion Li
- * @date 2021-07-26
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@TableName("test_tree")
-public class TestTree extends TenantEntity {
-
-    @Serial
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 主键
-     */
-    @TableId(value = "id")
-    private Long id;
-
-    /**
-     * 父ID
-     */
-    private Long parentId;
-
-    /**
-     * 部门id
-     */
-    private Long deptId;
-
-    /**
-     * 用户id
-     */
-    private Long userId;
-
-    /**
-     * 树节点名
-     */
-    private String treeName;
-
-    /**
-     * 版本
-     */
-    @Version
-    private Long version;
-
-    /**
-     * 删除标志
-     */
-    @TableLogic
-    private Long delFlag;
-
-}

+ 0 - 62
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/TestDemoBo.java

@@ -1,62 +0,0 @@
-package org.dromara.demo.domain.bo;
-
-import org.dromara.common.core.validate.AddGroup;
-import org.dromara.common.core.validate.EditGroup;
-import org.dromara.common.mybatis.core.domain.BaseEntity;
-import org.dromara.demo.domain.TestDemo;
-import io.github.linpeilie.annotations.AutoMapper;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
-
-/**
- * 测试单表业务对象 test_demo
- *
- * @author Lion Li
- * @date 2021-07-26
- */
-
-@Data
-@EqualsAndHashCode(callSuper = true)
-@AutoMapper(target = TestDemo.class, reverseConvertGenerate = false)
-public class TestDemoBo extends BaseEntity {
-
-    /**
-     * 主键
-     */
-    @NotNull(message = "主键不能为空", groups = {EditGroup.class})
-    private Long id;
-
-    /**
-     * 部门id
-     */
-    @NotNull(message = "部门id不能为空", groups = {AddGroup.class, EditGroup.class})
-    private Long deptId;
-
-    /**
-     * 用户id
-     */
-    @NotNull(message = "用户id不能为空", groups = {AddGroup.class, EditGroup.class})
-    private Long userId;
-
-    /**
-     * 排序号
-     */
-    @NotNull(message = "排序号不能为空", groups = {AddGroup.class, EditGroup.class})
-    private Integer orderNum;
-
-    /**
-     * key键
-     */
-    @NotBlank(message = "key键不能为空", groups = {AddGroup.class, EditGroup.class})
-    private String testKey;
-
-    /**
-     * 值
-     */
-    @NotBlank(message = "值不能为空", groups = {AddGroup.class, EditGroup.class})
-    private String value;
-
-}

+ 0 - 53
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/TestDemoImportVo.java

@@ -1,53 +0,0 @@
-package org.dromara.demo.domain.bo;
-
-import com.alibaba.excel.annotation.ExcelProperty;
-import lombok.Data;
-
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
-
-/**
- * 测试单表业务对象 test_demo
- *
- * @author Lion Li
- * @date 2021-07-26
- */
-@Data
-public class TestDemoImportVo {
-
-    /**
-     * 部门id
-     */
-    @NotNull(message = "部门id不能为空")
-    @ExcelProperty(value = "部门id")
-    private Long deptId;
-
-    /**
-     * 用户id
-     */
-    @NotNull(message = "用户id不能为空")
-    @ExcelProperty(value = "用户id")
-    private Long userId;
-
-    /**
-     * 排序号
-     */
-    @NotNull(message = "排序号不能为空")
-    @ExcelProperty(value = "排序号")
-    private Long orderNum;
-
-    /**
-     * key键
-     */
-    @NotBlank(message = "key键不能为空")
-    @ExcelProperty(value = "key键")
-    private String testKey;
-
-    /**
-     * 值
-     */
-    @NotBlank(message = "值不能为空")
-    @ExcelProperty(value = "值")
-    private String value;
-
-}

+ 0 - 54
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/bo/TestTreeBo.java

@@ -1,54 +0,0 @@
-package org.dromara.demo.domain.bo;
-
-import org.dromara.common.core.validate.AddGroup;
-import org.dromara.common.core.validate.EditGroup;
-import org.dromara.common.mybatis.core.domain.BaseEntity;
-import org.dromara.demo.domain.TestTree;
-import io.github.linpeilie.annotations.AutoMapper;
-import jakarta.validation.constraints.NotBlank;
-import jakarta.validation.constraints.NotNull;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * 测试树表业务对象 test_tree
- *
- * @author Lion Li
- * @date 2021-07-26
- */
-
-@Data
-@EqualsAndHashCode(callSuper = true)
-@AutoMapper(target = TestTree.class, reverseConvertGenerate = false)
-public class TestTreeBo extends BaseEntity {
-
-    /**
-     * 主键
-     */
-    @NotNull(message = "主键不能为空", groups = {EditGroup.class})
-    private Long id;
-
-    /**
-     * 父ID
-     */
-    private Long parentId;
-
-    /**
-     * 部门id
-     */
-    @NotNull(message = "部门id不能为空", groups = {AddGroup.class, EditGroup.class})
-    private Long deptId;
-
-    /**
-     * 用户id
-     */
-    @NotNull(message = "用户id不能为空", groups = {AddGroup.class, EditGroup.class})
-    private Long userId;
-
-    /**
-     * 树节点名
-     */
-    @NotBlank(message = "树节点名不能为空", groups = {AddGroup.class, EditGroup.class})
-    private String treeName;
-
-}

+ 0 - 1
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/package-info.java

@@ -1 +0,0 @@
-package org.dromara.demo.domain;

+ 0 - 118
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/ExportDemoVo.java

@@ -1,118 +0,0 @@
-package org.dromara.demo.domain.vo;
-
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
-import jakarta.validation.constraints.NotEmpty;
-import jakarta.validation.constraints.NotNull;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-import org.dromara.common.core.enums.UserStatus;
-import org.dromara.common.core.validate.AddGroup;
-import org.dromara.common.core.validate.EditGroup;
-import org.dromara.common.excel.annotation.ExcelDictFormat;
-import org.dromara.common.excel.annotation.ExcelEnumFormat;
-import org.dromara.common.excel.convert.ExcelDictConvert;
-import org.dromara.common.excel.convert.ExcelEnumConvert;
-
-/**
- * 带有下拉选的Excel导出
- *
- * @author Emil.Zhang
- */
-@Data
-@ExcelIgnoreUnannotated
-@AllArgsConstructor
-@NoArgsConstructor
-public class ExportDemoVo {
-
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 用户昵称
-     */
-    @ExcelProperty(value = "用户名", index = 0)
-    @NotEmpty(message = "用户名不能为空", groups = AddGroup.class)
-    private String nickName;
-
-    /**
-     * 用户类型
-     * </p>
-     * 使用ExcelEnumFormat注解需要进行下拉选的部分
-     */
-    @ExcelProperty(value = "用户类型", index = 1, converter = ExcelEnumConvert.class)
-    @ExcelEnumFormat(enumClass = UserStatus.class, textField = "info")
-    @NotEmpty(message = "用户类型不能为空", groups = AddGroup.class)
-    private String userStatus;
-
-    /**
-     * 性别
-     * <p>
-     * 使用ExcelDictFormat注解需要进行下拉选的部分
-     */
-    @ExcelProperty(value = "性别", index = 2, converter = ExcelDictConvert.class)
-    @ExcelDictFormat(dictType = "sys_user_sex")
-    @NotEmpty(message = "性别不能为空", groups = AddGroup.class)
-    private String gender;
-
-    /**
-     * 手机号
-     */
-    @ExcelProperty(value = "手机号", index = 3)
-    @NotEmpty(message = "手机号不能为空", groups = AddGroup.class)
-    private String phoneNumber;
-
-    /**
-     * Email
-     */
-    @ExcelProperty(value = "Email", index = 4)
-    @NotEmpty(message = "Email不能为空", groups = AddGroup.class)
-    private String email;
-
-    /**
-     * 省
-     * <p>
-     * 级联下拉,仅判断是否选了
-     */
-    @ExcelProperty(value = "省", index = 5)
-    @NotNull(message = "省不能为空", groups = AddGroup.class)
-    private String province;
-
-    /**
-     * 数据库中的省ID
-     * </p>
-     * 处理完毕后再判断是否市正确的值
-     */
-    @NotNull(message = "请勿手动输入", groups = EditGroup.class)
-    private Integer provinceId;
-
-    /**
-     * 市
-     * <p>
-     * 级联下拉
-     */
-    @ExcelProperty(value = "市", index = 6)
-    @NotNull(message = "市不能为空", groups = AddGroup.class)
-    private String city;
-
-    /**
-     * 数据库中的市ID
-     */
-    @NotNull(message = "请勿手动输入", groups = EditGroup.class)
-    private Integer cityId;
-
-    /**
-     * 县
-     * <p>
-     * 级联下拉
-     */
-    @ExcelProperty(value = "县", index = 7)
-    @NotNull(message = "县不能为空", groups = AddGroup.class)
-    private String area;
-
-    /**
-     * 数据库中的县ID
-     */
-    @NotNull(message = "请勿手动输入", groups = EditGroup.class)
-    private Integer areaId;
-}

+ 0 - 104
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/TestDemoVo.java

@@ -1,104 +0,0 @@
-package org.dromara.demo.domain.vo;
-
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
-import org.dromara.common.translation.annotation.Translation;
-import org.dromara.common.translation.constant.TransConstant;
-import org.dromara.demo.domain.TestDemo;
-import io.github.linpeilie.annotations.AutoMapper;
-import lombok.Data;
-
-import java.io.Serial;
-import java.io.Serializable;
-import java.util.Date;
-
-
-/**
- * 测试单表视图对象 test_demo
- *
- * @author Lion Li
- * @date 2021-07-26
- */
-@Data
-@ExcelIgnoreUnannotated
-@AutoMapper(target = TestDemo.class)
-public class TestDemoVo implements Serializable {
-
-    @Serial
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 主键
-     */
-    @ExcelProperty(value = "主键")
-    private Long id;
-
-    /**
-     * 部门id
-     */
-    @ExcelProperty(value = "部门id")
-    private Long deptId;
-
-    /**
-     * 用户id
-     */
-    @ExcelProperty(value = "用户id")
-    private Long userId;
-
-    /**
-     * 排序号
-     */
-    @ExcelProperty(value = "排序号")
-    private Integer orderNum;
-
-    /**
-     * key键
-     */
-    @ExcelProperty(value = "key键")
-    private String testKey;
-
-    /**
-     * 值
-     */
-    @ExcelProperty(value = "值")
-    private String value;
-
-    /**
-     * 创建时间
-     */
-    @ExcelProperty(value = "创建时间")
-    private Date createTime;
-
-    /**
-     * 创建人
-     */
-    @ExcelProperty(value = "创建人")
-    private Long createBy;
-
-    /**
-     * 创建人账号
-     */
-    @Translation(type = TransConstant.USER_ID_TO_NAME, mapper = "createBy")
-    @ExcelProperty(value = "创建人账号")
-    private String createByName;
-
-    /**
-     * 更新时间
-     */
-    @ExcelProperty(value = "更新时间")
-    private Date updateTime;
-
-    /**
-     * 更新人
-     */
-    @ExcelProperty(value = "更新人")
-    private Long updateBy;
-
-    /**
-     * 更新人账号
-     */
-    @Translation(type = TransConstant.USER_ID_TO_NAME, mapper = "updateBy")
-    @ExcelProperty(value = "更新人账号")
-    private String updateByName;
-
-}

+ 0 - 64
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/domain/vo/TestTreeVo.java

@@ -1,64 +0,0 @@
-package org.dromara.demo.domain.vo;
-
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
-import org.dromara.demo.domain.TestTree;
-import io.github.linpeilie.annotations.AutoMapper;
-import lombok.Data;
-
-import java.io.Serial;
-import java.io.Serializable;
-import java.util.Date;
-
-
-/**
- * 测试树表视图对象 test_tree
- *
- * @author Lion Li
- * @date 2021-07-26
- */
-@Data
-@ExcelIgnoreUnannotated
-@AutoMapper(target = TestTree.class)
-public class TestTreeVo implements Serializable {
-
-    @Serial
-    private static final long serialVersionUID = 1L;
-
-    /**
-     * 主键
-     */
-    private Long id;
-
-    /**
-     * 父id
-     */
-    @ExcelProperty(value = "父id")
-    private Long parentId;
-
-    /**
-     * 部门id
-     */
-    @ExcelProperty(value = "部门id")
-    private Long deptId;
-
-    /**
-     * 用户id
-     */
-    @ExcelProperty(value = "用户id")
-    private Long userId;
-
-    /**
-     * 树节点名
-     */
-    @ExcelProperty(value = "树节点名")
-    private String treeName;
-
-    /**
-     * 创建时间
-     */
-    @ExcelProperty(value = "创建时间")
-    private Date createTime;
-
-
-}

+ 0 - 68
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/listener/ExportDemoListener.java

@@ -1,68 +0,0 @@
-package org.dromara.demo.listener;
-
-import cn.hutool.core.util.NumberUtil;
-import com.alibaba.excel.context.AnalysisContext;
-import org.dromara.common.core.utils.ValidatorUtils;
-import org.dromara.common.core.validate.AddGroup;
-import org.dromara.common.core.validate.EditGroup;
-import org.dromara.common.excel.core.DefaultExcelListener;
-import org.dromara.common.excel.core.DropDownOptions;
-import org.dromara.demo.domain.vo.ExportDemoVo;
-
-import java.util.List;
-
-/**
- * Excel带下拉框的解析处理器
- *
- * @author Emil.Zhang
- */
-public class ExportDemoListener extends DefaultExcelListener<ExportDemoVo> {
-
-    public ExportDemoListener() {
-        // 显示使用构造函数,否则将导致空指针
-        super(true);
-    }
-
-    @Override
-    public void invoke(ExportDemoVo data, AnalysisContext context) {
-        // 先校验必填
-        ValidatorUtils.validate(data, AddGroup.class);
-
-        // 处理级联下拉的部分
-        String province = data.getProvince();
-        String city = data.getCity();
-        String area = data.getArea();
-        // 本行用户选择的省
-        List<String> thisRowSelectedProvinceOption = DropDownOptions.analyzeOptionValue(province);
-        if (thisRowSelectedProvinceOption.size() == 2) {
-            String provinceIdStr = thisRowSelectedProvinceOption.get(1);
-            if (NumberUtil.isNumber(provinceIdStr)) {
-                // 严格要求数据的话可以在这里做与数据库相关的判断
-                // 例如判断省信息是否在数据库中存在等,建议结合RedisCache做缓存10s,减少数据库调用
-                data.setProvinceId(Integer.parseInt(provinceIdStr));
-            }
-        }
-        // 本行用户选择的市
-        List<String> thisRowSelectedCityOption = DropDownOptions.analyzeOptionValue(city);
-        if (thisRowSelectedCityOption.size() == 2) {
-            String cityIdStr = thisRowSelectedCityOption.get(1);
-            if (NumberUtil.isNumber(cityIdStr)) {
-                data.setCityId(Integer.parseInt(cityIdStr));
-            }
-        }
-        // 本行用户选择的县
-        List<String> thisRowSelectedAreaOption = DropDownOptions.analyzeOptionValue(area);
-        if (thisRowSelectedAreaOption.size() == 2) {
-            String areaIdStr = thisRowSelectedAreaOption.get(1);
-            if (NumberUtil.isNumber(areaIdStr)) {
-                data.setAreaId(Integer.parseInt(areaIdStr));
-            }
-        }
-
-        // 处理完毕以后判断是否符合规则
-        ValidatorUtils.validate(data, EditGroup.class);
-
-        // 添加到处理结果中
-        getExcelResult().getList().add(data);
-    }
-}

+ 0 - 13
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/mapper/TestDemoEncryptMapper.java

@@ -1,13 +0,0 @@
-package org.dromara.demo.mapper;
-
-import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
-import org.dromara.demo.domain.TestDemoEncrypt;
-
-/**
- * 测试加密功能
- *
- * @author Lion Li
- */
-public interface TestDemoEncryptMapper extends BaseMapperPlus<TestDemoEncrypt, TestDemoEncrypt> {
-
-}

+ 0 - 59
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/mapper/TestDemoMapper.java

@@ -1,59 +0,0 @@
-package org.dromara.demo.mapper;
-
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Constants;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import org.apache.poi.ss.formula.functions.T;
-import org.dromara.common.mybatis.annotation.DataColumn;
-import org.dromara.common.mybatis.annotation.DataPermission;
-import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
-import org.dromara.demo.domain.TestDemo;
-import org.dromara.demo.domain.vo.TestDemoVo;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * 测试单表Mapper接口
- *
- * @author Lion Li
- * @date 2021-07-26
- */
-public interface TestDemoMapper extends BaseMapperPlus<TestDemo, TestDemoVo> {
-
-    @DataPermission({
-        @DataColumn(key = "deptName", value = "dept_id"),
-        @DataColumn(key = "userName", value = "user_id")
-    })
-    Page<TestDemoVo> customPageList(@Param("page") Page<TestDemo> page, @Param("ew") Wrapper<TestDemo> wrapper);
-
-    @Override
-    @DataPermission({
-        @DataColumn(key = "deptName", value = "dept_id"),
-        @DataColumn(key = "userName", value = "user_id")
-    })
-    List<TestDemo> selectList(IPage<TestDemo> page, @Param(Constants.WRAPPER) Wrapper<TestDemo> queryWrapper);
-
-    @Override
-    @DataPermission({
-        @DataColumn(key = "deptName", value = "dept_id"),
-        @DataColumn(key = "userName", value = "user_id")
-    })
-    List<TestDemo> selectList(@Param(Constants.WRAPPER) Wrapper<TestDemo> queryWrapper);
-
-    @Override
-    @DataPermission({
-        @DataColumn(key = "deptName", value = "dept_id"),
-        @DataColumn(key = "userName", value = "user_id")
-    })
-    int updateById(@Param(Constants.ENTITY) TestDemo entity);
-
-    @Override
-    @DataPermission({
-        @DataColumn(key = "deptName", value = "dept_id"),
-        @DataColumn(key = "userName", value = "user_id")
-    })
-    int deleteByIds(@Param(Constants.COLL) Collection<?> idList);
-}

+ 0 - 21
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/mapper/TestTreeMapper.java

@@ -1,21 +0,0 @@
-package org.dromara.demo.mapper;
-
-import org.dromara.common.mybatis.annotation.DataColumn;
-import org.dromara.common.mybatis.annotation.DataPermission;
-import org.dromara.common.mybatis.core.mapper.BaseMapperPlus;
-import org.dromara.demo.domain.TestTree;
-import org.dromara.demo.domain.vo.TestTreeVo;
-
-/**
- * 测试树表Mapper接口
- *
- * @author Lion Li
- * @date 2021-07-26
- */
-@DataPermission({
-    @DataColumn(key = "deptName", value = "dept_id"),
-    @DataColumn(key = "userName", value = "user_id")
-})
-public interface TestTreeMapper extends BaseMapperPlus<TestTree, TestTreeVo> {
-
-}

+ 0 - 1
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/mapper/package-info.java

@@ -1 +0,0 @@
-package org.dromara.demo.mapper;

+ 0 - 18
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/IExportExcelService.java

@@ -1,18 +0,0 @@
-package org.dromara.demo.service;
-
-import jakarta.servlet.http.HttpServletResponse;
-
-/**
- * 导出下拉框Excel示例
- *
- * @author Emil.Zhang
- */
-public interface IExportExcelService {
-
-    /**
-     * 导出下拉框
-     *
-     * @param response /
-     */
-    void exportWithOptions(HttpServletResponse response);
-}

+ 0 - 71
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/ITestDemoService.java

@@ -1,71 +0,0 @@
-package org.dromara.demo.service;
-
-import org.dromara.common.mybatis.core.page.PageQuery;
-import org.dromara.common.mybatis.core.page.TableDataInfo;
-import org.dromara.demo.domain.TestDemo;
-import org.dromara.demo.domain.bo.TestDemoBo;
-import org.dromara.demo.domain.vo.TestDemoVo;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * 测试单表Service接口
- *
- * @author Lion Li
- * @date 2021-07-26
- */
-public interface ITestDemoService {
-
-    /**
-     * 查询单个
-     *
-     * @return
-     */
-    TestDemoVo queryById(Long id);
-
-    /**
-     * 查询列表
-     */
-    TableDataInfo<TestDemoVo> queryPageList(TestDemoBo bo, PageQuery pageQuery);
-
-    /**
-     * 自定义分页查询
-     */
-    TableDataInfo<TestDemoVo> customPageList(TestDemoBo bo, PageQuery pageQuery);
-
-    /**
-     * 查询列表
-     */
-    List<TestDemoVo> queryList(TestDemoBo bo);
-
-    /**
-     * 根据新增业务对象插入测试单表
-     *
-     * @param bo 测试单表新增业务对象
-     * @return
-     */
-    Boolean insertByBo(TestDemoBo bo);
-
-    /**
-     * 根据编辑业务对象修改测试单表
-     *
-     * @param bo 测试单表编辑业务对象
-     * @return
-     */
-    Boolean updateByBo(TestDemoBo bo);
-
-    /**
-     * 校验并删除数据
-     *
-     * @param ids     主键集合
-     * @param isValid 是否校验,true-删除前校验,false-不校验
-     * @return
-     */
-    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
-
-    /**
-     * 批量保存
-     */
-    Boolean saveBatch(List<TestDemo> list);
-}

+ 0 - 52
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/ITestTreeService.java

@@ -1,52 +0,0 @@
-package org.dromara.demo.service;
-
-import org.dromara.demo.domain.bo.TestTreeBo;
-import org.dromara.demo.domain.vo.TestTreeVo;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * 测试树表Service接口
- *
- * @author Lion Li
- * @date 2021-07-26
- */
-public interface ITestTreeService {
-    /**
-     * 查询单个
-     *
-     * @return
-     */
-    TestTreeVo queryById(Long id);
-
-    /**
-     * 查询列表
-     */
-    List<TestTreeVo> queryList(TestTreeBo bo);
-
-    /**
-     * 根据新增业务对象插入测试树表
-     *
-     * @param bo 测试树表新增业务对象
-     * @return
-     */
-    Boolean insertByBo(TestTreeBo bo);
-
-    /**
-     * 根据编辑业务对象修改测试树表
-     *
-     * @param bo 测试树表编辑业务对象
-     * @return
-     */
-    Boolean updateByBo(TestTreeBo bo);
-
-    /**
-     * 校验并删除数据
-     *
-     * @param ids     主键集合
-     * @param isValid 是否校验,true-删除前校验,false-不校验
-     * @return
-     */
-    Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid);
-}

+ 0 - 222
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/ExportExcelServiceImpl.java

@@ -1,222 +0,0 @@
-package org.dromara.demo.service.impl;
-
-import cn.hutool.core.util.StrUtil;
-import jakarta.servlet.http.HttpServletResponse;
-import lombok.Data;
-import lombok.RequiredArgsConstructor;
-import org.dromara.common.core.enums.UserStatus;
-import org.dromara.common.core.utils.StreamUtils;
-import org.dromara.common.excel.core.DropDownOptions;
-import org.dromara.common.excel.utils.ExcelUtil;
-import org.dromara.demo.domain.vo.ExportDemoVo;
-import org.dromara.demo.service.IExportExcelService;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-import java.util.stream.Collectors;
-
-/**
- * 导出下拉框Excel示例
- *
- * @author Emil.Zhang
- */
-@Service
-@RequiredArgsConstructor
-public class ExportExcelServiceImpl implements IExportExcelService {
-
-    @Override
-    public void exportWithOptions(HttpServletResponse response) {
-        // 创建表格数据,业务中一般通过数据库查询
-        List<ExportDemoVo> excelDataList = new ArrayList<>();
-        for (int i = 0; i < 3; i++) {
-            // 模拟数据库中的一条数据
-            ExportDemoVo everyRowData = new ExportDemoVo();
-            everyRowData.setNickName("用户-" + i);
-            everyRowData.setUserStatus(UserStatus.OK.getCode());
-            everyRowData.setGender("1");
-            everyRowData.setPhoneNumber(String.format("175%08d", i));
-            everyRowData.setEmail(String.format("175%08d", i) + "@163.com");
-            everyRowData.setProvinceId(i);
-            everyRowData.setCityId(i);
-            everyRowData.setAreaId(i);
-            excelDataList.add(everyRowData);
-        }
-
-        // 通过@ExcelIgnoreUnannotated配合@ExcelProperty合理显示需要的列
-        // 并通过@DropDown注解指定下拉值,或者通过创建ExcelOptions来指定下拉框
-        // 使用ExcelOptions时建议指定列index,防止出现下拉列解析不对齐
-
-        // 首先从数据库中查询下拉框内的可选项
-        // 这里模拟查询结果
-        List<DemoCityData> provinceList = getProvinceList(),
-            cityList = getCityList(provinceList),
-            areaList = getAreaList(cityList);
-        int provinceIndex = 5, cityIndex = 6, areaIndex = 7;
-
-        DropDownOptions provinceToCity = DropDownOptions.buildLinkedOptions(
-            provinceList,
-            provinceIndex,
-            cityList,
-            cityIndex,
-            DemoCityData::getId,
-            DemoCityData::getPid,
-            everyOptions -> DropDownOptions.createOptionValue(
-                everyOptions.getName(),
-                everyOptions.getId()
-            )
-        );
-
-        DropDownOptions cityToArea = DropDownOptions.buildLinkedOptions(
-            cityList,
-            cityIndex,
-            areaList,
-            areaIndex,
-            DemoCityData::getId,
-            DemoCityData::getPid,
-            everyOptions -> DropDownOptions.createOptionValue(
-                everyOptions.getName(),
-                everyOptions.getId()
-            )
-        );
-
-        // 把所有的下拉框存储
-        List<DropDownOptions> options = new ArrayList<>();
-        options.add(provinceToCity);
-        options.add(cityToArea);
-
-        // 到此为止所有的下拉框可选项已全部配置完毕
-
-        // 接下来需要将Excel中的展示数据转换为对应的下拉选
-        List<ExportDemoVo> outList = StreamUtils.toList(excelDataList, everyRowData -> {
-            // 只需要处理没有使用@ExcelDictFormat注解的下拉框
-            // 一般来说,可以直接在数据库查询即查询出省市县信息,这里通过模拟操作赋值
-            everyRowData.setProvince(buildOptions(provinceList, everyRowData.getProvinceId()));
-            everyRowData.setCity(buildOptions(cityList, everyRowData.getCityId()));
-            everyRowData.setArea(buildOptions(areaList, everyRowData.getAreaId()));
-            return everyRowData;
-        });
-
-        ExcelUtil.exportExcel(outList, "下拉框示例", ExportDemoVo.class, response, options);
-    }
-
-    private String buildOptions(List<DemoCityData> cityDataList, Integer id) {
-        Map<Integer, List<DemoCityData>> groupByIdMap =
-            cityDataList.stream().collect(Collectors.groupingBy(DemoCityData::getId));
-        if (groupByIdMap.containsKey(id)) {
-            DemoCityData demoCityData = groupByIdMap.get(id).get(0);
-            return DropDownOptions.createOptionValue(demoCityData.getName(), demoCityData.getId());
-        } else {
-            return StrUtil.EMPTY;
-        }
-    }
-
-    /**
-     * 模拟查询数据库操作
-     *
-     * @return /
-     */
-    private List<DemoCityData> getProvinceList() {
-        List<DemoCityData> provinceList = new ArrayList<>();
-
-        // 实际业务中一般采用数据库读取的形式,这里直接拼接创建
-        provinceList.add(new DemoCityData(0, null, "安徽省"));
-        provinceList.add(new DemoCityData(1, null, "江苏省"));
-
-        return provinceList;
-    }
-
-    /**
-     * 模拟查找数据库操作,需要连带查询出省的数据
-     *
-     * @param provinceList 模拟的父省数据
-     * @return /
-     */
-    private List<DemoCityData> getCityList(List<DemoCityData> provinceList) {
-        List<DemoCityData> cityList = new ArrayList<>();
-
-        // 实际业务中一般采用数据库读取的形式,这里直接拼接创建
-        cityList.add(new DemoCityData(0, 0, "合肥市"));
-        cityList.add(new DemoCityData(1, 0, "芜湖市"));
-        cityList.add(new DemoCityData(2, 1, "南京市"));
-        cityList.add(new DemoCityData(3, 1, "无锡市"));
-        cityList.add(new DemoCityData(4, 1, "徐州市"));
-
-        selectParentData(provinceList, cityList);
-
-        return cityList;
-    }
-
-    /**
-     * 模拟查找数据库操作,需要连带查询出市的数据
-     *
-     * @param cityList 模拟的父市数据
-     * @return /
-     */
-    private List<DemoCityData> getAreaList(List<DemoCityData> cityList) {
-        List<DemoCityData> areaList = new ArrayList<>();
-
-        // 实际业务中一般采用数据库读取的形式,这里直接拼接创建
-        areaList.add(new DemoCityData(0, 0, "瑶海区"));
-        areaList.add(new DemoCityData(1, 0, "庐江区"));
-        areaList.add(new DemoCityData(2, 1, "南宁县"));
-        areaList.add(new DemoCityData(3, 1, "镜湖区"));
-        areaList.add(new DemoCityData(4, 2, "玄武区"));
-        areaList.add(new DemoCityData(5, 2, "秦淮区"));
-        areaList.add(new DemoCityData(6, 3, "宜兴市"));
-        areaList.add(new DemoCityData(7, 3, "新吴区"));
-        areaList.add(new DemoCityData(8, 4, "鼓楼区"));
-        areaList.add(new DemoCityData(9, 4, "丰县"));
-
-        selectParentData(cityList, areaList);
-
-        return areaList;
-    }
-
-    /**
-     * 模拟数据库的查询父数据操作
-     *
-     * @param parentList /
-     * @param sonList    /
-     */
-    private void selectParentData(List<DemoCityData> parentList, List<DemoCityData> sonList) {
-        Map<Integer, List<DemoCityData>> parentGroupByIdMap =
-            parentList.stream().collect(Collectors.groupingBy(DemoCityData::getId));
-
-        sonList.forEach(everySon -> {
-            if (parentGroupByIdMap.containsKey(everySon.getPid())) {
-                everySon.setPData(parentGroupByIdMap.get(everySon.getPid()).get(0));
-            }
-        });
-    }
-
-    /**
-     * 模拟的数据库省市县
-     */
-    @Data
-    private static class DemoCityData {
-        /**
-         * 数据库id字段
-         */
-        private Integer id;
-        /**
-         * 数据库pid字段
-         */
-        private Integer pid;
-        /**
-         * 数据库name字段
-         */
-        private String name;
-        /**
-         * MyBatisPlus连带查询父数据
-         */
-        private DemoCityData pData;
-
-        public DemoCityData(Integer id, Integer pid, String name) {
-            this.id = id;
-            this.pid = pid;
-            this.name = name;
-        }
-    }
-}

+ 0 - 111
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/TestDemoServiceImpl.java

@@ -1,111 +0,0 @@
-package org.dromara.demo.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import org.dromara.common.core.utils.MapstructUtils;
-import org.dromara.common.core.utils.StringUtils;
-import org.dromara.common.mybatis.core.page.PageQuery;
-import org.dromara.common.mybatis.core.page.TableDataInfo;
-import org.dromara.demo.domain.TestDemo;
-import org.dromara.demo.domain.bo.TestDemoBo;
-import org.dromara.demo.domain.vo.TestDemoVo;
-import org.dromara.demo.mapper.TestDemoMapper;
-import org.dromara.demo.service.ITestDemoService;
-import lombok.RequiredArgsConstructor;
-import org.springframework.stereotype.Service;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 测试单表Service业务层处理
- *
- * @author Lion Li
- * @date 2021-07-26
- */
-@RequiredArgsConstructor
-@Service
-public class TestDemoServiceImpl implements ITestDemoService {
-
-    private final TestDemoMapper baseMapper;
-
-    @Override
-    public TestDemoVo queryById(Long id) {
-        return baseMapper.selectVoById(id);
-    }
-
-    @Override
-    public TableDataInfo<TestDemoVo> queryPageList(TestDemoBo bo, PageQuery pageQuery) {
-        LambdaQueryWrapper<TestDemo> lqw = buildQueryWrapper(bo);
-        Page<TestDemoVo> result = baseMapper.selectVoPage(pageQuery.build(), lqw);
-        return TableDataInfo.build(result);
-    }
-
-    /**
-     * 自定义分页查询
-     */
-    @Override
-    public TableDataInfo<TestDemoVo> customPageList(TestDemoBo bo, PageQuery pageQuery) {
-        LambdaQueryWrapper<TestDemo> lqw = buildQueryWrapper(bo);
-        Page<TestDemoVo> result = baseMapper.customPageList(pageQuery.build(), lqw);
-        return TableDataInfo.build(result);
-    }
-
-    @Override
-    public List<TestDemoVo> queryList(TestDemoBo bo) {
-        return baseMapper.selectVoList(buildQueryWrapper(bo));
-    }
-
-    private LambdaQueryWrapper<TestDemo> buildQueryWrapper(TestDemoBo bo) {
-        Map<String, Object> params = bo.getParams();
-        LambdaQueryWrapper<TestDemo> lqw = Wrappers.lambdaQuery();
-        lqw.like(StringUtils.isNotBlank(bo.getTestKey()), TestDemo::getTestKey, bo.getTestKey());
-        lqw.eq(StringUtils.isNotBlank(bo.getValue()), TestDemo::getValue, bo.getValue());
-        lqw.between(params.get("beginCreateTime") != null && params.get("endCreateTime") != null,
-            TestDemo::getCreateTime, params.get("beginCreateTime"), params.get("endCreateTime"));
-        lqw.orderByAsc(TestDemo::getId);
-        return lqw;
-    }
-
-    @Override
-    public Boolean insertByBo(TestDemoBo bo) {
-        TestDemo add = MapstructUtils.convert(bo, TestDemo.class);
-        validEntityBeforeSave(add);
-        boolean flag = baseMapper.insert(add) > 0;
-        if (flag) {
-            bo.setId(add.getId());
-        }
-        return flag;
-    }
-
-    @Override
-    public Boolean updateByBo(TestDemoBo bo) {
-        TestDemo update = MapstructUtils.convert(bo, TestDemo.class);
-        validEntityBeforeSave(update);
-        return baseMapper.updateById(update) > 0;
-    }
-
-    /**
-     * 保存前的数据校验
-     *
-     * @param entity 实体类数据
-     */
-    private void validEntityBeforeSave(TestDemo entity) {
-        //TODO 做一些数据校验,如唯一约束
-    }
-
-    @Override
-    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
-        if (isValid) {
-            //TODO 做一些业务上的校验,判断是否需要校验
-        }
-        return baseMapper.deleteByIds(ids) > 0;
-    }
-
-    @Override
-    public Boolean saveBatch(List<TestDemo> list) {
-        return baseMapper.insertBatch(list);
-    }
-}

+ 0 - 88
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/TestTreeServiceImpl.java

@@ -1,88 +0,0 @@
-package org.dromara.demo.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import org.dromara.common.core.utils.MapstructUtils;
-import org.dromara.common.core.utils.StringUtils;
-import org.dromara.demo.domain.TestTree;
-import org.dromara.demo.domain.bo.TestTreeBo;
-import org.dromara.demo.domain.vo.TestTreeVo;
-import org.dromara.demo.mapper.TestTreeMapper;
-import org.dromara.demo.service.ITestTreeService;
-import lombok.RequiredArgsConstructor;
-import org.springframework.stereotype.Service;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 测试树表Service业务层处理
- *
- * @author Lion Li
- * @date 2021-07-26
- */
-// @DS("slave") // 切换从库查询
-@RequiredArgsConstructor
-@Service
-public class TestTreeServiceImpl implements ITestTreeService {
-
-    private final TestTreeMapper baseMapper;
-
-    @Override
-    public TestTreeVo queryById(Long id) {
-        return baseMapper.selectVoById(id);
-    }
-
-    // @DS("slave") // 切换从库查询
-    @Override
-    public List<TestTreeVo> queryList(TestTreeBo bo) {
-        LambdaQueryWrapper<TestTree> lqw = buildQueryWrapper(bo);
-        return baseMapper.selectVoList(lqw);
-    }
-
-    private LambdaQueryWrapper<TestTree> buildQueryWrapper(TestTreeBo bo) {
-        Map<String, Object> params = bo.getParams();
-        LambdaQueryWrapper<TestTree> lqw = Wrappers.lambdaQuery();
-        lqw.like(StringUtils.isNotBlank(bo.getTreeName()), TestTree::getTreeName, bo.getTreeName());
-        lqw.between(params.get("beginCreateTime") != null && params.get("endCreateTime") != null,
-            TestTree::getCreateTime, params.get("beginCreateTime"), params.get("endCreateTime"));
-        lqw.orderByAsc(TestTree::getId);
-        return lqw;
-    }
-
-    @Override
-    public Boolean insertByBo(TestTreeBo bo) {
-        TestTree add = MapstructUtils.convert(bo, TestTree.class);
-        validEntityBeforeSave(add);
-        boolean flag = baseMapper.insert(add) > 0;
-        if (flag) {
-            bo.setId(add.getId());
-        }
-        return flag;
-    }
-
-    @Override
-    public Boolean updateByBo(TestTreeBo bo) {
-        TestTree update = MapstructUtils.convert(bo, TestTree.class);
-        validEntityBeforeSave(update);
-        return baseMapper.updateById(update) > 0;
-    }
-
-    /**
-     * 保存前的数据校验
-     *
-     * @param entity 实体类数据
-     */
-    private void validEntityBeforeSave(TestTree entity) {
-        //TODO 做一些数据校验,如唯一约束
-    }
-
-    @Override
-    public Boolean deleteWithValidByIds(Collection<Long> ids, Boolean isValid) {
-        if (isValid) {
-            //TODO 做一些业务上的校验,判断是否需要校验
-        }
-        return baseMapper.deleteByIds(ids) > 0;
-    }
-}

+ 0 - 1
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/impl/package-info.java

@@ -1 +0,0 @@
-package org.dromara.demo.service.impl;

+ 0 - 1
ruoyi-modules/ruoyi-demo/src/main/java/org/dromara/demo/service/package-info.java

@@ -1 +0,0 @@
-package org.dromara.demo.service;

BIN
ruoyi-modules/ruoyi-demo/src/main/resources/excel/单列表.xlsx


BIN
ruoyi-modules/ruoyi-demo/src/main/resources/excel/多sheet列表.xlsx


BIN
ruoyi-modules/ruoyi-demo/src/main/resources/excel/多列表.xlsx


+ 0 - 11
ruoyi-modules/ruoyi-demo/src/main/resources/mapper/demo/TestDemoMapper.xml

@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.dromara.demo.mapper.TestDemoMapper">
-
-    <select id="customPageList" resultType="org.dromara.demo.domain.vo.TestDemoVo">
-        SELECT * FROM test_demo ${ew.customSqlSegment}
-    </select>
-
-</mapper>

+ 0 - 7
ruoyi-modules/ruoyi-demo/src/main/resources/mapper/demo/TestTreeMapper.xml

@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE mapper
-PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
-"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="org.dromara.demo.mapper.TestTreeMapper">
-
-</mapper>

Some files were not shown because too many files changed in this diff