Bläddra i källkod

Merge branch 'master' of https://gitee.com/y_project/RuoYi-Cloud

 Conflicts:
	ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/GenConstants.java
	ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ExceptionUtil.java
	ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ServletUtils.java
	ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/file/ImageUtils.java
	ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/poi/ExcelUtil.java
	ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/sql/SqlUtil.java
	ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/xss/XssValidator.java
	ruoyi-common/ruoyi-common-security/src/main/java/com/ruoyi/common/security/utils/DictUtils.java
	ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/BlackListUrlFilter.java
	ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/ValidateCodeFilter.java
	ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/XssFilter.java
	ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/ValidateCodeHandler.java
	ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/ValidateCodeService.java
	ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/impl/ValidateCodeServiceImpl.java
	ruoyi-modules/ruoyi-file/src/main/java/com/ruoyi/file/utils/FileUploadUtils.java
	ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/GenTableServiceImpl.java
	ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/VelocityUtils.java
	ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
	ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java
	ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java
	ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java
	ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java
	ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPostService.java
	ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
	ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDeptServiceImpl.java
	ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java
	ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
	ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java
	ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
	ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java
	ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
	ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
	ruoyi-ui/src/components/FileUpload/index.vue
	ruoyi-ui/src/router/index.js
疯狂的狮子li 4 år sedan
förälder
incheckning
4827f9217b
36 ändrade filer med 477 tillägg och 473 borttagningar
  1. 3 0
      .gitignore
  2. 186 181
      ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/GenConstants.java
  3. 4 9
      ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ServletUtils.java
  4. 58 58
      ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/BlackListUrlFilter.java
  5. 73 73
      ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/ValidateCodeFilter.java
  6. 110 110
      ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/XssFilter.java
  7. 1 1
      ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/ValidateCodeHandler.java
  8. 2 2
      ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/ValidateCodeService.java
  9. 2 2
      ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/impl/ValidateCodeServiceImpl.java
  10. 10 1
      ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/GenTableServiceImpl.java
  11. 4 5
      ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/GenUtils.java
  12. 1 2
      ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/VelocityUtils.java
  13. 1 1
      ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java
  14. 0 1
      ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java
  15. 0 1
      ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java
  16. 1 1
      ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java
  17. 1 1
      ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java
  18. 1 1
      ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPostService.java
  19. 0 1
      ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java
  20. 0 1
      ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java
  21. 0 1
      ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java
  22. 1 1
      ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java
  23. 1 1
      ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java
  24. 0 1
      ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java
  25. 1 1
      ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java
  26. 1 1
      ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml
  27. 1 1
      ruoyi-ui/src/components/FileUpload/index.vue
  28. 1 1
      ruoyi-ui/src/router/index.js
  29. 0 0
      ruoyi-ui/src/utils/generator/drawingDefault.js
  30. 2 2
      ruoyi-ui/src/utils/generator/html.js
  31. 1 1
      ruoyi-ui/src/utils/generator/js.js
  32. 2 2
      ruoyi-ui/src/views/tool/build/CodeTypeDialog.vue
  33. 2 2
      ruoyi-ui/src/views/tool/build/TreeNodeDialog.vue
  34. 4 4
      ruoyi-ui/src/views/tool/build/index.vue
  35. 1 1
      ruoyi-ui/src/views/tool/gen/editTable.vue
  36. 1 1
      ruoyi-ui/src/views/tool/gen/index.vue

+ 3 - 0
.gitignore

@@ -25,6 +25,8 @@ target/
 *.iml
 *.ipr
 
+### JRebel ###
+rebel.xml
 ### NetBeans ###
 nbproject/private/
 build/*
@@ -36,6 +38,7 @@ nbdist/
 # Others
 *.log
 *.xml.versionsBackup
+*.swp
 
 !*/build/*.java
 !*/build/*.html

+ 186 - 181
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/constant/GenConstants.java

@@ -1,181 +1,186 @@
-package com.ruoyi.common.core.constant;
-
-/**
- * 代码生成通用常量
- *
- * @author Lion Li
- */
-public interface GenConstants {
-    /**
-     * 单表(增删改查)
-     */
-    String TPL_CRUD = "crud";
-
-    /**
-     * 树表(增删改查)
-     */
-    String TPL_TREE = "tree";
-
-    /**
-     * 主子表(增删改查)
-     */
-    String TPL_SUB = "sub";
-
-    /**
-     * 树编码字段
-     */
-    String TREE_CODE = "treeCode";
-
-    /**
-     * 树父编码字段
-     */
-    String TREE_PARENT_CODE = "treeParentCode";
-
-    /**
-     * 树名称字段
-     */
-    String TREE_NAME = "treeName";
-
-    /**
-     * 上级菜单ID字段
-     */
-    String PARENT_MENU_ID = "parentMenuId";
-
-    /**
-     * 上级菜单名称字段
-     */
-    String PARENT_MENU_NAME = "parentMenuName";
-
-    /**
-     * 数据库字符串类型
-     */
-    String[] COLUMNTYPE_STR = {"char", "varchar", "nvarchar", "varchar2"};
-
-    /**
-     * 数据库文本类型
-     */
-    String[] COLUMNTYPE_TEXT = {"tinytext", "text", "mediumtext", "longtext"};
-
-    /**
-     * 数据库时间类型
-     */
-    String[] COLUMNTYPE_TIME = {"datetime", "time", "date", "timestamp"};
-
-    /**
-     * 数据库数字类型
-     */
-    String[] COLUMNTYPE_NUMBER = {"tinyint", "smallint", "mediumint", "int", "number", "integer",
-            "bigint", "float", "double", "decimal"};
-
-    /**
-     * 页面不需要编辑字段
-     */
-    String[] COLUMNNAME_NOT_EDIT = {"id", "create_by", "create_time", "del_flag"};
-
-    /**
-     * 页面不需要显示的列表字段
-     */
-    String[] COLUMNNAME_NOT_LIST = {"id", "create_by", "create_time", "del_flag", "update_by",
-            "update_time"};
-
-    /**
-     * 页面不需要查询字段
-     */
-    String[] COLUMNNAME_NOT_QUERY = {"id", "create_by", "create_time", "del_flag", "update_by",
-            "update_time", "remark"};
-
-    /**
-     * Entity基类字段
-     */
-    String[] BASE_ENTITY = {"createBy", "createTime", "updateBy", "updateTime", "remark"};
-
-    /**
-     * Tree基类字段
-     */
-    String[] TREE_ENTITY = {"parentName", "parentId", "orderNum", "ancestors"};
-
-    /**
-     * 文本框
-     */
-    String HTML_INPUT = "input";
-
-    /**
-     * 文本域
-     */
-    String HTML_TEXTAREA = "textarea";
-
-    /**
-     * 下拉框
-     */
-    String HTML_SELECT = "select";
-
-    /**
-     * 单选框
-     */
-    String HTML_RADIO = "radio";
-
-    /**
-     * 复选框
-     */
-    String HTML_CHECKBOX = "checkbox";
-
-    /**
-     * 日期控件
-     */
-    String HTML_DATETIME = "datetime";
-
-    /**
-     * 图片上传控件
-     */
-    String HTML_IMAGE_UPLOAD = "imageUpload";
-
-    /**
-     * 文件上传控件
-     */
-    String HTML_FILE_UPLOAD = "fileUpload";
-
-    /**
-     * 富文本控件
-     */
-    String HTML_EDITOR = "editor";
-
-    /**
-     * 字符串类型
-     */
-    String TYPE_STRING = "String";
-
-    /**
-     * 整型
-     */
-    String TYPE_INTEGER = "Integer";
-
-    /**
-     * 长整型
-     */
-    String TYPE_LONG = "Long";
-
-    /**
-     * 浮点型
-     */
-    String TYPE_DOUBLE = "Double";
-
-    /**
-     * 高精度计算类型
-     */
-    String TYPE_BIGDECIMAL = "BigDecimal";
-
-    /**
-     * 时间类型
-     */
-    String TYPE_DATE = "Date";
-
-    /**
-     * 模糊查询
-     */
-    String QUERY_LIKE = "LIKE";
-
-    /**
-     * 需要
-     */
-    String REQUIRE = "1";
-}
+package com.ruoyi.common.core.constant;
+
+/**
+ * 代码生成通用常量
+ *
+ * @author Lion Li
+ */
+public interface GenConstants {
+    /**
+     * 单表(增删改查)
+     */
+    String TPL_CRUD = "crud";
+
+    /**
+     * 树表(增删改查)
+     */
+    String TPL_TREE = "tree";
+
+    /**
+     * 主子表(增删改查)
+     */
+    String TPL_SUB = "sub";
+
+    /**
+     * 树编码字段
+     */
+    String TREE_CODE = "treeCode";
+
+    /**
+     * 树父编码字段
+     */
+    String TREE_PARENT_CODE = "treeParentCode";
+
+    /**
+     * 树名称字段
+     */
+    String TREE_NAME = "treeName";
+
+    /**
+     * 上级菜单ID字段
+     */
+    String PARENT_MENU_ID = "parentMenuId";
+
+    /**
+     * 上级菜单名称字段
+     */
+    String PARENT_MENU_NAME = "parentMenuName";
+
+    /**
+     * 数据库字符串类型
+     */
+    String[] COLUMNTYPE_STR = {"char", "varchar", "nvarchar", "varchar2"};
+
+    /**
+     * 数据库文本类型
+     */
+    String[] COLUMNTYPE_TEXT = {"tinytext", "text", "mediumtext", "longtext"};
+
+    /**
+     * 数据库时间类型
+     */
+    String[] COLUMNTYPE_TIME = {"datetime", "time", "date", "timestamp"};
+
+    /**
+     * 数据库数字类型
+     */
+    String[] COLUMNTYPE_NUMBER = {"tinyint", "smallint", "mediumint", "int", "number", "integer",
+            "bigint", "float", "double", "decimal"};
+
+    /**
+     * 页面不需要编辑字段
+     */
+    String[] COLUMNNAME_NOT_EDIT = {"id", "create_by", "create_time", "del_flag"};
+
+    /**
+     * 页面不需要显示的列表字段
+     */
+    String[] COLUMNNAME_NOT_LIST = {"id", "create_by", "create_time", "del_flag", "update_by",
+            "update_time"};
+
+    /**
+     * 页面不需要查询字段
+     */
+    String[] COLUMNNAME_NOT_QUERY = {"id", "create_by", "create_time", "del_flag", "update_by",
+            "update_time", "remark"};
+
+    /**
+     * Entity基类字段
+     */
+    String[] BASE_ENTITY = {"createBy", "createTime", "updateBy", "updateTime", "remark"};
+
+    /**
+     * Tree基类字段
+     */
+    String[] TREE_ENTITY = {"parentName", "parentId", "orderNum", "ancestors"};
+
+    /**
+     * 文本框
+     */
+    String HTML_INPUT = "input";
+
+    /**
+     * 文本域
+     */
+    String HTML_TEXTAREA = "textarea";
+
+    /**
+     * 下拉框
+     */
+    String HTML_SELECT = "select";
+
+    /**
+     * 单选框
+     */
+    String HTML_RADIO = "radio";
+
+    /**
+     * 复选框
+     */
+    String HTML_CHECKBOX = "checkbox";
+
+    /**
+     * 日期控件
+     */
+    String HTML_DATETIME = "datetime";
+
+    /**
+     * 图片上传控件
+     */
+    String HTML_IMAGE_UPLOAD = "imageUpload";
+
+    /**
+     * 文件上传控件
+     */
+    String HTML_FILE_UPLOAD = "fileUpload";
+
+    /**
+     * 富文本控件
+     */
+    String HTML_EDITOR = "editor";
+
+    /**
+     * 字符串类型
+     */
+    String TYPE_STRING = "String";
+
+    /**
+     * 整型
+     */
+    String TYPE_INTEGER = "Integer";
+
+    /**
+     * 长整型
+     */
+    String TYPE_LONG = "Long";
+
+    /**
+     * 浮点型
+     */
+    String TYPE_DOUBLE = "Double";
+
+    /**
+     * 高精度计算类型
+     */
+    String TYPE_BIGDECIMAL = "BigDecimal";
+
+    /**
+     * 时间类型
+     */
+    String TYPE_DATE = "Date";
+
+    /**
+     * 模糊查询
+     */
+    String QUERY_LIKE = "LIKE";
+
+    /**
+     * 相等查询
+     */
+    String QUERY_EQ = "EQ";
+
+    /**
+     * 需要
+     */
+    String REQUIRE = "1";
+}

+ 4 - 9
ruoyi-common/ruoyi-common-core/src/main/java/com/ruoyi/common/core/utils/ServletUtils.java

@@ -137,9 +137,8 @@ public class ServletUtils extends ServletUtil {
      *
      * @param response 渲染对象
      * @param string   待渲染的字符串
-     * @return null
      */
-    public static String renderString(HttpServletResponse response, String string) {
+    public static void renderString(HttpServletResponse response, String string) {
         try {
             response.setStatus(HttpStatus.HTTP_OK);
             response.setContentType(MediaType.APPLICATION_JSON_VALUE);
@@ -148,7 +147,6 @@ public class ServletUtils extends ServletUtil {
         } catch (IOException e) {
             e.printStackTrace();
         }
-        return null;
     }
 
     /**
@@ -159,12 +157,12 @@ public class ServletUtils extends ServletUtil {
     public static boolean isAjaxRequest(HttpServletRequest request) {
 
         String accept = request.getHeader("accept");
-        if (accept != null && accept.indexOf("application/json") != -1) {
+        if (accept != null && accept.contains("application/json")) {
             return true;
         }
 
         String xRequestedWith = request.getHeader("X-Requested-With");
-        if (xRequestedWith != null && xRequestedWith.indexOf("XMLHttpRequest") != -1) {
+        if (xRequestedWith != null && xRequestedWith.contains("XMLHttpRequest")) {
             return true;
         }
 
@@ -174,10 +172,7 @@ public class ServletUtils extends ServletUtil {
         }
 
         String ajax = request.getParameter("__ajax");
-        if (StringUtils.equalsAnyIgnoreCase(ajax, "json", "xml")) {
-            return true;
-        }
-        return false;
+        return StringUtils.equalsAnyIgnoreCase(ajax, "json", "xml");
     }
 
     public static String getClientIP() {

+ 58 - 58
ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/BlackListUrlFilter.java

@@ -1,58 +1,58 @@
-package com.ruoyi.gateway.filter;
-
-import com.ruoyi.gateway.utils.WebFluxUtils;
-import org.springframework.cloud.gateway.filter.GatewayFilter;
-import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;
-import org.springframework.stereotype.Component;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.Pattern;
-
-/**
- * 黑名单过滤器
- *
- * @author ruoyi
- */
-@Component
-public class BlackListUrlFilter extends AbstractGatewayFilterFactory<BlackListUrlFilter.Config> {
-    @Override
-    public GatewayFilter apply(Config config) {
-        return (exchange, chain) -> {
-
-            String url = exchange.getRequest().getURI().getPath();
-            if (config.matchBlacklist(url)) {
-                return WebFluxUtils.webFluxResponseWriter(exchange.getResponse(), "请求地址不允许访问");
-            }
-
-            return chain.filter(exchange);
-        };
-    }
-
-    public BlackListUrlFilter() {
-        super(Config.class);
-    }
-
-    public static class Config {
-        private List<String> blacklistUrl;
-
-        private List<Pattern> blacklistUrlPattern = new ArrayList<>();
-
-        public boolean matchBlacklist(String url) {
-            return blacklistUrlPattern.isEmpty() ? false : blacklistUrlPattern.stream().filter(p -> p.matcher(url).find()).findAny().isPresent();
-        }
-
-        public List<String> getBlacklistUrl() {
-            return blacklistUrl;
-        }
-
-        public void setBlacklistUrl(List<String> blacklistUrl) {
-            this.blacklistUrl = blacklistUrl;
-            this.blacklistUrlPattern.clear();
-            this.blacklistUrl.forEach(url -> {
-                this.blacklistUrlPattern.add(Pattern.compile(url.replaceAll("\\*\\*", "(.*?)"), Pattern.CASE_INSENSITIVE));
-            });
-        }
-    }
-
-}
+package com.ruoyi.gateway.filter;
+
+import com.ruoyi.gateway.utils.WebFluxUtils;
+import org.springframework.cloud.gateway.filter.GatewayFilter;
+import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.regex.Pattern;
+
+/**
+ * 黑名单过滤器
+ *
+ * @author ruoyi
+ */
+@Component
+public class BlackListUrlFilter extends AbstractGatewayFilterFactory<BlackListUrlFilter.Config> {
+    @Override
+    public GatewayFilter apply(Config config) {
+        return (exchange, chain) -> {
+
+            String url = exchange.getRequest().getURI().getPath();
+            if (config.matchBlacklist(url)) {
+                return WebFluxUtils.webFluxResponseWriter(exchange.getResponse(), "请求地址不允许访问");
+            }
+
+            return chain.filter(exchange);
+        };
+    }
+
+    public BlackListUrlFilter() {
+        super(Config.class);
+    }
+
+    public static class Config {
+        private List<String> blacklistUrl;
+
+        private List<Pattern> blacklistUrlPattern = new ArrayList<>();
+
+        public boolean matchBlacklist(String url) {
+            return !blacklistUrlPattern.isEmpty() && blacklistUrlPattern.stream().anyMatch(p -> p.matcher(url).find());
+        }
+
+        public List<String> getBlacklistUrl() {
+            return blacklistUrl;
+        }
+
+        public void setBlacklistUrl(List<String> blacklistUrl) {
+            this.blacklistUrl = blacklistUrl;
+            this.blacklistUrlPattern.clear();
+            this.blacklistUrl.forEach(url -> {
+                this.blacklistUrlPattern.add(Pattern.compile(url.replaceAll("\\*\\*", "(.*?)"), Pattern.CASE_INSENSITIVE));
+            });
+        }
+    }
+
+}

+ 73 - 73
ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/ValidateCodeFilter.java

@@ -1,73 +1,73 @@
-package com.ruoyi.gateway.filter;
-
-import com.ruoyi.common.core.utils.JsonUtils;
-import com.ruoyi.common.core.utils.StringUtils;
-import com.ruoyi.gateway.config.properties.CaptchaProperties;
-import com.ruoyi.gateway.service.ValidateCodeService;
-import com.ruoyi.gateway.utils.WebFluxUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.cloud.gateway.filter.GatewayFilter;
-import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;
-import org.springframework.core.io.buffer.DataBuffer;
-import org.springframework.core.io.buffer.DataBufferUtils;
-import org.springframework.http.server.reactive.ServerHttpRequest;
-import org.springframework.stereotype.Component;
-import reactor.core.publisher.Flux;
-
-import java.nio.CharBuffer;
-import java.nio.charset.StandardCharsets;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicReference;
-
-/**
- * 验证码过滤器
- *
- * @author ruoyi
- */
-@Component
-public class ValidateCodeFilter extends AbstractGatewayFilterFactory<Object> {
-    private final static String[] VALIDATE_URL = new String[]{"/auth/login", "/auth/register"};
-
-    @Autowired
-    private ValidateCodeService validateCodeService;
-
-    @Autowired
-    private CaptchaProperties captchaProperties;
-
-    private static final String CODE = "code";
-
-    private static final String UUID = "uuid";
-
-    @Override
-    public GatewayFilter apply(Object config) {
-        return (exchange, chain) -> {
-            ServerHttpRequest request = exchange.getRequest();
-
-            // 非登录/注册请求或验证码关闭,不处理
-            if (!StringUtils.containsAnyIgnoreCase(request.getURI().getPath(), VALIDATE_URL) || !captchaProperties.getEnabled()) {
-                return chain.filter(exchange);
-            }
-
-            try {
-                String rspStr = resolveBodyFromRequest(request);
-                Map<String, String> obj = JsonUtils.parseMap(rspStr);
-                validateCodeService.checkCapcha(obj.get(CODE), obj.get(UUID));
-            } catch (Exception e) {
-                return WebFluxUtils.webFluxResponseWriter(exchange.getResponse(), e.getMessage());
-            }
-            return chain.filter(exchange);
-        };
-    }
-
-    private String resolveBodyFromRequest(ServerHttpRequest serverHttpRequest) {
-        // 获取请求体
-        Flux<DataBuffer> body = serverHttpRequest.getBody();
-        AtomicReference<String> bodyRef = new AtomicReference<>();
-        body.subscribe(buffer -> {
-            CharBuffer charBuffer = StandardCharsets.UTF_8.decode(buffer.asByteBuffer());
-            DataBufferUtils.release(buffer);
-            bodyRef.set(charBuffer.toString());
-        });
-        return bodyRef.get();
-    }
-}
+package com.ruoyi.gateway.filter;
+
+import com.ruoyi.common.core.utils.JsonUtils;
+import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.gateway.config.properties.CaptchaProperties;
+import com.ruoyi.gateway.service.ValidateCodeService;
+import com.ruoyi.gateway.utils.WebFluxUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.cloud.gateway.filter.GatewayFilter;
+import org.springframework.cloud.gateway.filter.factory.AbstractGatewayFilterFactory;
+import org.springframework.core.io.buffer.DataBuffer;
+import org.springframework.core.io.buffer.DataBufferUtils;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.stereotype.Component;
+import reactor.core.publisher.Flux;
+
+import java.nio.CharBuffer;
+import java.nio.charset.StandardCharsets;
+import java.util.Map;
+import java.util.concurrent.atomic.AtomicReference;
+
+/**
+ * 验证码过滤器
+ *
+ * @author ruoyi
+ */
+@Component
+public class ValidateCodeFilter extends AbstractGatewayFilterFactory<Object> {
+    private final static String[] VALIDATE_URL = new String[]{"/auth/login", "/auth/register"};
+
+    @Autowired
+    private ValidateCodeService validateCodeService;
+
+    @Autowired
+    private CaptchaProperties captchaProperties;
+
+    private static final String CODE = "code";
+
+    private static final String UUID = "uuid";
+
+    @Override
+    public GatewayFilter apply(Object config) {
+        return (exchange, chain) -> {
+            ServerHttpRequest request = exchange.getRequest();
+
+            // 非登录/注册请求或验证码关闭,不处理
+            if (!StringUtils.containsAnyIgnoreCase(request.getURI().getPath(), VALIDATE_URL) || !captchaProperties.getEnabled()) {
+                return chain.filter(exchange);
+            }
+
+            try {
+                String rspStr = resolveBodyFromRequest(request);
+                Map<String, String> obj = JsonUtils.parseMap(rspStr);
+                validateCodeService.checkCaptcha(obj.get(CODE), obj.get(UUID));
+            } catch (Exception e) {
+                return WebFluxUtils.webFluxResponseWriter(exchange.getResponse(), e.getMessage());
+            }
+            return chain.filter(exchange);
+        };
+    }
+
+    private String resolveBodyFromRequest(ServerHttpRequest serverHttpRequest) {
+        // 获取请求体
+        Flux<DataBuffer> body = serverHttpRequest.getBody();
+        AtomicReference<String> bodyRef = new AtomicReference<>();
+        body.subscribe(buffer -> {
+            CharBuffer charBuffer = StandardCharsets.UTF_8.decode(buffer.asByteBuffer());
+            DataBufferUtils.release(buffer);
+            bodyRef.set(charBuffer.toString());
+        });
+        return bodyRef.get();
+    }
+}

+ 110 - 110
ruoyi-gateway/src/main/java/com/ruoyi/gateway/filter/XssFilter.java

@@ -1,110 +1,110 @@
-package com.ruoyi.gateway.filter;
-
-import cn.hutool.http.HtmlUtil;
-import com.ruoyi.common.core.utils.StringUtils;
-import com.ruoyi.gateway.config.properties.XssProperties;
-import io.netty.buffer.ByteBufAllocator;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
-import org.springframework.cloud.gateway.filter.GatewayFilterChain;
-import org.springframework.cloud.gateway.filter.GlobalFilter;
-import org.springframework.core.Ordered;
-import org.springframework.core.io.buffer.*;
-import org.springframework.http.HttpHeaders;
-import org.springframework.http.HttpMethod;
-import org.springframework.http.MediaType;
-import org.springframework.http.server.reactive.ServerHttpRequest;
-import org.springframework.http.server.reactive.ServerHttpRequestDecorator;
-import org.springframework.stereotype.Component;
-import org.springframework.web.server.ServerWebExchange;
-import reactor.core.publisher.Flux;
-import reactor.core.publisher.Mono;
-
-import java.nio.charset.StandardCharsets;
-
-/**
- * 跨站脚本过滤器
- *
- * @author ruoyi
- */
-@Component
-@ConditionalOnProperty(value = "security.xss.enabled", havingValue = "true")
-public class XssFilter implements GlobalFilter, Ordered {
-    // 跨站脚本的 xss 配置,nacos自行添加
-    @Autowired
-    private XssProperties xss;
-
-    @Override
-    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
-        ServerHttpRequest request = exchange.getRequest();
-        // GET DELETE 不过滤
-        HttpMethod method = request.getMethod();
-        if (method == null || method.matches("GET") || method.matches("DELETE")) {
-            return chain.filter(exchange);
-        }
-        // 非json类型,不过滤
-        if (!isJsonRequest(exchange)) {
-            return chain.filter(exchange);
-        }
-        // excludeUrls 不过滤
-        String url = request.getURI().getPath();
-        if (StringUtils.matches(url, xss.getExcludeUrls())) {
-            return chain.filter(exchange);
-        }
-        ServerHttpRequestDecorator httpRequestDecorator = requestDecorator(exchange);
-        return chain.filter(exchange.mutate().request(httpRequestDecorator).build());
-
-    }
-
-    private ServerHttpRequestDecorator requestDecorator(ServerWebExchange exchange) {
-        ServerHttpRequestDecorator serverHttpRequestDecorator = new ServerHttpRequestDecorator(exchange.getRequest()) {
-            @Override
-            public Flux<DataBuffer> getBody() {
-                Flux<DataBuffer> body = super.getBody();
-                return body.buffer().map(dataBuffers -> {
-                    DataBufferFactory dataBufferFactory = new DefaultDataBufferFactory();
-                    DataBuffer join = dataBufferFactory.join(dataBuffers);
-                    byte[] content = new byte[join.readableByteCount()];
-                    join.read(content);
-                    DataBufferUtils.release(join);
-                    String bodyStr = new String(content, StandardCharsets.UTF_8);
-                    // 防xss攻击过滤
-                    bodyStr = HtmlUtil.cleanHtmlTag(bodyStr);
-                    // 转成字节
-                    byte[] bytes = bodyStr.getBytes();
-                    NettyDataBufferFactory nettyDataBufferFactory = new NettyDataBufferFactory(ByteBufAllocator.DEFAULT);
-                    DataBuffer buffer = nettyDataBufferFactory.allocateBuffer(bytes.length);
-                    buffer.write(bytes);
-                    return buffer;
-                });
-            }
-
-            @Override
-            public HttpHeaders getHeaders() {
-                HttpHeaders httpHeaders = new HttpHeaders();
-                httpHeaders.putAll(super.getHeaders());
-                // 由于修改了请求体的body,导致content-length长度不确定,因此需要删除原先的content-length
-                httpHeaders.remove(HttpHeaders.CONTENT_LENGTH);
-                httpHeaders.set(HttpHeaders.TRANSFER_ENCODING, "chunked");
-                return httpHeaders;
-            }
-
-        };
-        return serverHttpRequestDecorator;
-    }
-
-    /**
-     * 是否是Json请求
-     *
-     * @param request
-     */
-    public boolean isJsonRequest(ServerWebExchange exchange) {
-        String header = exchange.getRequest().getHeaders().getFirst(HttpHeaders.CONTENT_TYPE);
-        return StringUtils.startsWithIgnoreCase(header, MediaType.APPLICATION_JSON_VALUE);
-    }
-
-    @Override
-    public int getOrder() {
-        return -100;
-    }
-}
+package com.ruoyi.gateway.filter;
+
+import cn.hutool.http.HtmlUtil;
+import com.ruoyi.common.core.utils.StringUtils;
+import com.ruoyi.gateway.config.properties.XssProperties;
+import io.netty.buffer.ByteBufAllocator;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.cloud.gateway.filter.GatewayFilterChain;
+import org.springframework.cloud.gateway.filter.GlobalFilter;
+import org.springframework.core.Ordered;
+import org.springframework.core.io.buffer.*;
+import org.springframework.http.HttpHeaders;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.MediaType;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.http.server.reactive.ServerHttpRequestDecorator;
+import org.springframework.stereotype.Component;
+import org.springframework.web.server.ServerWebExchange;
+import reactor.core.publisher.Flux;
+import reactor.core.publisher.Mono;
+
+import java.nio.charset.StandardCharsets;
+
+/**
+ * 跨站脚本过滤器
+ *
+ * @author ruoyi
+ */
+@Component
+@ConditionalOnProperty(value = "security.xss.enabled", havingValue = "true")
+public class XssFilter implements GlobalFilter, Ordered {
+    // 跨站脚本的 xss 配置,nacos自行添加
+    @Autowired
+    private XssProperties xss;
+
+    @Override
+    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
+        ServerHttpRequest request = exchange.getRequest();
+        // GET DELETE 不过滤
+        HttpMethod method = request.getMethod();
+        if (method == null || method.matches("GET") || method.matches("DELETE")) {
+            return chain.filter(exchange);
+        }
+        // 非json类型,不过滤
+        if (!isJsonRequest(exchange)) {
+            return chain.filter(exchange);
+        }
+        // excludeUrls 不过滤
+        String url = request.getURI().getPath();
+        if (StringUtils.matches(url, xss.getExcludeUrls())) {
+            return chain.filter(exchange);
+        }
+        ServerHttpRequestDecorator httpRequestDecorator = requestDecorator(exchange);
+        return chain.filter(exchange.mutate().request(httpRequestDecorator).build());
+
+    }
+
+    private ServerHttpRequestDecorator requestDecorator(ServerWebExchange exchange) {
+        ServerHttpRequestDecorator serverHttpRequestDecorator = new ServerHttpRequestDecorator(exchange.getRequest()) {
+            @Override
+            public Flux<DataBuffer> getBody() {
+                Flux<DataBuffer> body = super.getBody();
+                return body.buffer().map(dataBuffers -> {
+                    DataBufferFactory dataBufferFactory = new DefaultDataBufferFactory();
+                    DataBuffer join = dataBufferFactory.join(dataBuffers);
+                    byte[] content = new byte[join.readableByteCount()];
+                    join.read(content);
+                    DataBufferUtils.release(join);
+                    String bodyStr = new String(content, StandardCharsets.UTF_8);
+                    // 防xss攻击过滤
+                    bodyStr = HtmlUtil.cleanHtmlTag(bodyStr);
+                    // 转成字节
+                    byte[] bytes = bodyStr.getBytes();
+                    NettyDataBufferFactory nettyDataBufferFactory = new NettyDataBufferFactory(ByteBufAllocator.DEFAULT);
+                    DataBuffer buffer = nettyDataBufferFactory.allocateBuffer(bytes.length);
+                    buffer.write(bytes);
+                    return buffer;
+                });
+            }
+
+            @Override
+            public HttpHeaders getHeaders() {
+                HttpHeaders httpHeaders = new HttpHeaders();
+                httpHeaders.putAll(super.getHeaders());
+                // 由于修改了请求体的body,导致content-length长度不确定,因此需要删除原先的content-length
+                httpHeaders.remove(HttpHeaders.CONTENT_LENGTH);
+                httpHeaders.set(HttpHeaders.TRANSFER_ENCODING, "chunked");
+                return httpHeaders;
+            }
+
+        };
+        return serverHttpRequestDecorator;
+    }
+
+    /**
+     * 是否是Json请求
+     *
+     * @param exchange HTTP请求
+     */
+    public boolean isJsonRequest(ServerWebExchange exchange) {
+        String header = exchange.getRequest().getHeaders().getFirst(HttpHeaders.CONTENT_TYPE);
+        return StringUtils.startsWithIgnoreCase(header, MediaType.APPLICATION_JSON_VALUE);
+    }
+
+    @Override
+    public int getOrder() {
+        return -100;
+    }
+}

+ 1 - 1
ruoyi-gateway/src/main/java/com/ruoyi/gateway/handler/ValidateCodeHandler.java

@@ -29,7 +29,7 @@ public class ValidateCodeHandler implements HandlerFunction<ServerResponse> {
     public Mono<ServerResponse> handle(ServerRequest serverRequest) {
         R<Map<String, Object>> ajax;
         try {
-            ajax = validateCodeService.createCapcha();
+            ajax = validateCodeService.createCaptcha();
         } catch (CaptchaException | IOException e) {
             return Mono.error(e);
         }

+ 2 - 2
ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/ValidateCodeService.java

@@ -15,10 +15,10 @@ public interface ValidateCodeService {
     /**
      * 生成验证码
      */
-    R<Map<String, Object>> createCapcha() throws IOException, CaptchaException;
+    R<Map<String, Object>> createCaptcha() throws IOException, CaptchaException;
 
     /**
      * 校验验证码
      */
-    void checkCapcha(String key, String value) throws CaptchaException;
+    void checkCaptcha(String key, String value) throws CaptchaException;
 }

+ 2 - 2
ruoyi-gateway/src/main/java/com/ruoyi/gateway/service/impl/ValidateCodeServiceImpl.java

@@ -36,7 +36,7 @@ public class ValidateCodeServiceImpl implements ValidateCodeService {
      * 生成验证码
      */
     @Override
-    public R<Map<String, Object>> createCapcha() throws IOException, CaptchaException {
+    public R<Map<String, Object>> createCaptcha() throws IOException, CaptchaException {
         Map<String, Object> ajax = new HashMap<>();
         boolean captchaOnOff = captchaProperties.getEnabled();
         ajax.put("captchaOnOff", captchaOnOff);
@@ -83,7 +83,7 @@ public class ValidateCodeServiceImpl implements ValidateCodeService {
      * 校验验证码
      */
     @Override
-    public void checkCapcha(String code, String uuid) throws CaptchaException {
+    public void checkCaptcha(String code, String uuid) throws CaptchaException {
         if (StringUtils.isEmpty(code)) {
             throw new CaptchaException("验证码不能为空");
         }

+ 10 - 1
ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/service/GenTableServiceImpl.java

@@ -293,8 +293,17 @@ public class GenTableServiceImpl implements IGenTableService {
                 GenTableColumn prevColumn = tableColumnMap.get(column.getColumnName());
                 column.setColumnId(prevColumn.getColumnId());
                 if (column.isList()) {
-                    // 如果是列表,继续保留字典类型
+                    // 如果是列表,继续保留查询方式/字典类型选项
                     column.setDictType(prevColumn.getDictType());
+                    column.setQueryType(prevColumn.getQueryType());
+                }
+                if (StringUtils.isNotEmpty(prevColumn.getIsRequired()) && !column.isPk()
+                        && (column.isInsert() || column.isEdit())
+                        && ((column.isUsableColumn()) || (!column.isSuperColumn())))
+                {
+                    // 如果是(新增/修改&非主键/非忽略及父属性),继续保留必填/显示类型选项
+                    column.setIsRequired(prevColumn.getIsRequired());
+                    column.setHtmlType(prevColumn.getHtmlType());
                 }
                 genTableColumnMapper.updateById(column);
             } else {

+ 4 - 5
ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/GenUtils.java

@@ -40,6 +40,7 @@ public class GenUtils {
         column.setJavaField(StringUtils.toCamelCase(columnName));
         // 设置默认类型
         column.setJavaType(GenConstants.TYPE_STRING);
+        column.setQueryType(GenConstants.QUERY_EQ);
 
         if (arraysContains(GenConstants.COLUMNTYPE_STR, dataType) || arraysContains(GenConstants.COLUMNTYPE_TEXT, dataType)) {
             // 字符串长度超过500设置为文本域
@@ -130,8 +131,7 @@ public class GenUtils {
     public static String getModuleName(String packageName) {
         int lastIndex = packageName.lastIndexOf(".");
         int nameLength = packageName.length();
-        String moduleName = StringUtils.substring(packageName, lastIndex + 1, nameLength);
-        return moduleName;
+        return StringUtils.substring(packageName, lastIndex + 1, nameLength);
     }
 
     /**
@@ -143,8 +143,7 @@ public class GenUtils {
     public static String getBusinessName(String tableName) {
         int lastIndex = tableName.lastIndexOf("_");
         int nameLength = tableName.length();
-        String businessName = StringUtils.substring(tableName, lastIndex + 1, nameLength);
-        return businessName;
+        return StringUtils.substring(tableName, lastIndex + 1, nameLength);
     }
 
     /**
@@ -219,4 +218,4 @@ public class GenUtils {
             return 0;
         }
     }
-}
+}

+ 1 - 2
ruoyi-modules/ruoyi-gen/src/main/java/com/ruoyi/gen/util/VelocityUtils.java

@@ -197,8 +197,7 @@ public class VelocityUtils {
      */
     public static String getPackagePrefix(String packageName) {
         int lastIndex = packageName.lastIndexOf(".");
-        String basePackage = StringUtils.substring(packageName, 0, lastIndex);
-        return basePackage;
+        return StringUtils.substring(packageName, 0, lastIndex);
     }
 
     /**

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/mapper/SysUserMapper.java

@@ -35,7 +35,7 @@ public interface SysUserMapper extends BaseMapperPlus<SysUserMapper, SysUser, Sy
     List<SysUser> selectUserList(SysUser sysUser);
 
     /**
-     * 根据条件分页查询已配用户角色列表
+     * 根据条件分页查询已配用户角色列表
      *
      * @param user 用户信息
      * @return 用户信息集合信息

+ 0 - 1
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java

@@ -59,7 +59,6 @@ public interface ISysConfigService {
      * 批量删除参数信息
      *
      * @param configIds 需要删除的参数ID
-     * @return 结果
      */
     void deleteConfigByIds(Long[] configIds);
 

+ 0 - 1
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictDataService.java

@@ -44,7 +44,6 @@ public interface ISysDictDataService {
      * 批量删除字典数据信息
      *
      * @param dictCodes 需要删除的字典数据ID
-     * @return 结果
      */
     void deleteDictDataByIds(Long[] dictCodes);
 

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysDictTypeService.java

@@ -13,6 +13,7 @@ import java.util.List;
  * @author ruoyi
  */
 public interface ISysDictTypeService {
+
     TableDataInfo<SysDictType> selectPageDictTypeList(SysDictType dictType, PageQuery pageQuery);
 
     /**
@@ -58,7 +59,6 @@ public interface ISysDictTypeService {
      * 批量删除字典信息
      *
      * @param dictIds 需要删除的字典ID
-     * @return 结果
      */
     void deleteDictTypeByIds(Long[] dictIds);
 

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysLogininforService.java

@@ -34,7 +34,7 @@ public interface ISysLogininforService {
      * 批量删除系统登录日志
      *
      * @param infoIds 需要删除的登录日志ID
-     * @return
+     * @return 结果
      */
     int deleteLogininforByIds(Long[] infoIds);
 

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysPostService.java

@@ -12,6 +12,7 @@ import java.util.List;
  * @author ruoyi
  */
 public interface ISysPostService {
+
     TableDataInfo<SysPost> selectPagePostList(SysPost post, PageQuery pageQuery);
 
     /**
@@ -82,7 +83,6 @@ public interface ISysPostService {
      *
      * @param postIds 需要删除的岗位ID
      * @return 结果
-     * @throws Exception 异常
      */
     int deletePostByIds(Long[] postIds);
 

+ 0 - 1
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java

@@ -137,7 +137,6 @@ public class SysConfigServiceImpl implements ISysConfigService {
      * 批量删除参数信息
      *
      * @param configIds 需要删除的参数ID
-     * @return 结果
      */
     @Override
     public void deleteConfigByIds(Long[] configIds) {

+ 0 - 1
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictDataServiceImpl.java

@@ -82,7 +82,6 @@ public class SysDictDataServiceImpl implements ISysDictDataService {
      * 批量删除字典数据信息
      *
      * @param dictCodes 需要删除的字典数据ID
-     * @return 结果
      */
     @Override
     public void deleteDictDataByIds(Long[] dictCodes) {

+ 0 - 1
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysDictTypeServiceImpl.java

@@ -125,7 +125,6 @@ public class SysDictTypeServiceImpl implements ISysDictTypeService {
      * 批量删除字典类型信息
      *
      * @param dictIds 需要删除的字典ID
-     * @return 结果
      */
     @Override
     public void deleteDictTypeByIds(Long[] dictIds) {

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysLogininforServiceImpl.java

@@ -77,7 +77,7 @@ public class SysLogininforServiceImpl implements ISysLogininforService {
      * 批量删除系统登录日志
      *
      * @param infoIds 需要删除的登录日志ID
-     * @return
+     * @return 结果
      */
     @Override
     public int deleteLogininforByIds(Long[] infoIds) {

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysMenuServiceImpl.java

@@ -415,7 +415,7 @@ public class SysMenuServiceImpl implements ISysMenuService {
      * 判断是否有子节点
      */
     private boolean hasChild(List<SysMenu> list, SysMenu t) {
-        return getChildList(list, t).size() > 0 ? true : false;
+        return getChildList(list, t).size() > 0;
     }
 
     /**

+ 0 - 1
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysPostServiceImpl.java

@@ -148,7 +148,6 @@ public class SysPostServiceImpl implements ISysPostService {
      *
      * @param postIds 需要删除的岗位ID
      * @return 结果
-     * @throws Exception 异常
      */
     @Override
     public int deletePostByIds(Long[] postIds) {

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysRoleServiceImpl.java

@@ -374,7 +374,7 @@ public class SysRoleServiceImpl implements ISysRoleService {
      * 批量选择授权用户角色
      *
      * @param roleId  角色ID
-     * @param userIds 需要删除的用户数据ID
+     * @param userIds 需要授权的用户数据ID
      * @return 结果
      */
     @Override

+ 1 - 1
ruoyi-modules/ruoyi-system/src/main/resources/mapper/system/SysMenuMapper.xml

@@ -50,7 +50,7 @@
     </select>
 
 	<select id="selectMenuListByUserId" parameterType="SysMenu" resultMap="SysMenuResult">
-		select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.query, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time
+		select distinct m.menu_id, m.parent_id, m.menu_name, m.path, m.component, m.`query`, m.visible, m.status, ifnull(m.perms,'') as perms, m.is_frame, m.is_cache, m.menu_type, m.icon, m.order_num, m.create_time
 		from sys_menu m
 		left join sys_role_menu rm on m.menu_id = rm.menu_id
 		left join sys_user_role ur on rm.role_id = ur.role_id

+ 1 - 1
ruoyi-ui/src/components/FileUpload/index.vue

@@ -26,7 +26,7 @@
 
     <!-- 文件列表 -->
     <transition-group class="upload-file-list el-upload-list el-upload-list--text" name="el-fade-in-linear" tag="ul">
-      <li :key="file.uid" class="el-upload-list__item ele-upload-list__item-content" v-for="(file, index) in fileList">
+      <li :key="file.url" class="el-upload-list__item ele-upload-list__item-content" v-for="(file, index) in fileList">
         <el-link :href="file.url" :underline="false" target="_blank">
           <span class="el-icon-document"> {{ getFileName(file.name) }} </span>
         </el-link>

+ 1 - 1
ruoyi-ui/src/router/index.js

@@ -155,7 +155,7 @@ export const dynamicRoutes = [
     permissions: ['tool:gen:edit'],
     children: [
       {
-        path: 'index',
+        path: 'index/:tableId(\\d+)',
         component: () => import('@/views/tool/gen/editTable'),
         name: 'GenEdit',
         meta: { title: '修改生成配置', activeMenu: '/tool/gen' }

+ 0 - 0
ruoyi-ui/src/utils/generator/drawingDefalut.js → ruoyi-ui/src/utils/generator/drawingDefault.js


+ 2 - 2
ruoyi-ui/src/utils/generator/html.js

@@ -5,11 +5,11 @@ let confGlobal
 let someSpanIsNot24
 
 export function dialogWrapper(str) {
-  return `<el-dialog v-bind="$attrs" v-on="$listeners" @open="onOpen" @close="onClose" title="Dialog Titile">
+  return `<el-dialog v-bind="$attrs" v-on="$listeners" @open="onOpen" @close="onClose" title="Dialog Title">
     ${str}
     <div slot="footer">
       <el-button @click="close">取消</el-button>
-      <el-button type="primary" @click="handelConfirm">确定</el-button>
+      <el-button type="primary" @click="handleConfirm">确定</el-button>
     </div>
   </el-dialog>`
 }

+ 1 - 1
ruoyi-ui/src/utils/generator/js.js

@@ -98,7 +98,7 @@ function mixinMethod(type) {
         close: `close() {
         this.$emit('update:visible', false)
       },`,
-        handelConfirm: `handelConfirm() {
+        handleConfirm: `handleConfirm() {
         this.$refs['${confGlobal.formRef}'].validate(valid => {
           if(!valid) return
           this.close()

+ 2 - 2
ruoyi-ui/src/views/tool/build/CodeTypeDialog.vue

@@ -41,7 +41,7 @@
         <el-button @click="close">
           取消
         </el-button>
-        <el-button type="primary" @click="handelConfirm">
+        <el-button type="primary" @click="handleConfirm">
           确定
         </el-button>
       </div>
@@ -94,7 +94,7 @@ export default {
     close(e) {
       this.$emit('update:visible', false)
     },
-    handelConfirm() {
+    handleConfirm() {
       this.$refs.elForm.validate(valid => {
         if (!valid) return
         this.$emit('confirm', { ...this.formData })

+ 2 - 2
ruoyi-ui/src/views/tool/build/TreeNodeDialog.vue

@@ -59,7 +59,7 @@
       <div slot="footer">
         <el-button
           type="primary"
-          @click="handelConfirm"
+          @click="handleConfirm"
         >
           确定
         </el-button>
@@ -133,7 +133,7 @@ export default {
     close() {
       this.$emit('update:visible', false)
     },
-    handelConfirm() {
+    handleConfirm() {
       this.$refs.elForm.validate(valid => {
         if (!valid) return
         if (this.dataType === 'number') {

+ 4 - 4
ruoyi-ui/src/views/tool/build/index.vue

@@ -146,7 +146,7 @@ import { beautifierConf, titleCase } from '@/utils/index'
 import { makeUpHtml, vueTemplate, vueScript, cssStyle } from '@/utils/generator/html'
 import { makeUpJs } from '@/utils/generator/js'
 import { makeUpCss } from '@/utils/generator/css'
-import drawingDefalut from '@/utils/generator/drawingDefalut'
+import drawingDefault from '@/utils/generator/drawingDefault'
 import logo from '@/assets/logo/logo.png'
 import CodeTypeDialog from './CodeTypeDialog'
 import DraggableItem from './DraggableItem'
@@ -171,15 +171,15 @@ export default {
       selectComponents,
       layoutComponents,
       labelWidth: 100,
-      drawingList: drawingDefalut,
+      drawingList: drawingDefault,
       drawingData: {},
-      activeId: drawingDefalut[0].formId,
+      activeId: drawingDefault[0].formId,
       drawerVisible: false,
       formData: {},
       dialogVisible: false,
       generateConf: null,
       showFileName: false,
-      activeData: drawingDefalut[0]
+      activeData: drawingDefault[0]
     }
   },
   created() {

+ 1 - 1
ruoyi-ui/src/views/tool/gen/editTable.vue

@@ -159,7 +159,7 @@ export default {
     };
   },
   created() {
-    const tableId = this.$route.query && this.$route.query.tableId;
+    const tableId = this.$route.params && this.$route.params.tableId;
     if (tableId) {
       // 获取表详细信息
       getGenTable(tableId).then(res => {

+ 1 - 1
ruoyi-ui/src/views/tool/gen/index.vue

@@ -321,7 +321,7 @@ export default {
     /** 修改按钮操作 */
     handleEditTable(row) {
       const tableId = row.tableId || this.ids[0];
-      this.$router.push({ path: '/tool/gen-edit/index', query: { tableId: tableId, pageNum: this.queryParams.pageNum } });
+      this.$router.push({ path: '/tool/gen-edit/index/' + tableId, query: { pageNum: this.queryParams.pageNum } });
     },
     /** 删除按钮操作 */
     handleDelete(row) {