diff --git a/README.md b/README.md index a56dc6c4..6fb00c16 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,7 @@ [![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://gitee.com/JavaLionLi/RuoYi-Vue-Plus/blob/master/LICENSE) [![使用IntelliJ IDEA开发维护](https://img.shields.io/badge/IntelliJ%20IDEA-提供支持-blue.svg)](https://www.jetbrains.com/?from=RuoYi-Vue-Plus)
-[![RuoYi-Vue-Plus](https://img.shields.io/badge/RuoYi_Vue_Plus-2.5.0-success.svg)](https://gitee.com/JavaLionLi/RuoYi-Vue-Plus) +[![RuoYi-Vue-Plus](https://img.shields.io/badge/RuoYi_Vue_Plus-2.5.1-success.svg)](https://gitee.com/JavaLionLi/RuoYi-Vue-Plus) [![Spring Boot](https://img.shields.io/badge/Spring%20Boot-2.4-blue.svg)]() [![JDK-8+](https://img.shields.io/badge/JDK-8+-green.svg)]() [![JDK-11](https://img.shields.io/badge/JDK-11-green.svg)]() diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index d40ae29e..63c46a46 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -76,12 +76,13 @@ services: ipv4_address: 172.30.0.48 ruoyi-server1: - image: "ruoyi/ruoyi-server:2.5.0" + image: "ruoyi/ruoyi-server:2.5.1" environment: - TZ=Asia/Shanghai volumes: # 配置文件 - /docker/server1/logs/:/ruoyi/server/logs/ + - /docker/ruoyi/uploadPath/:/ruoyi/server/ruoyi/uploadPath/ privileged: true restart: always networks: @@ -89,12 +90,13 @@ services: ipv4_address: 172.30.0.60 ruoyi-server2: - image: "ruoyi/ruoyi-server:2.5.0" + image: "ruoyi/ruoyi-server:2.5.1" environment: - TZ=Asia/Shanghai volumes: # 配置文件 - /docker/server2/logs/:/ruoyi/server/logs/ + - /docker/ruoyi/uploadPath/:/ruoyi/server/ruoyi/uploadPath/ privileged: true restart: always networks: @@ -102,7 +104,7 @@ services: ipv4_address: 172.30.0.61 ruoyi-monitor-admin: - image: "ruoyi/ruoyi-monitor-admin:2.5.0" + image: "ruoyi/ruoyi-monitor-admin:2.5.1" environment: - TZ=Asia/Shanghai privileged: true diff --git a/pom.xml b/pom.xml index d56898ba..00becec1 100644 --- a/pom.xml +++ b/pom.xml @@ -6,14 +6,14 @@ com.ruoyi ruoyi-vue-plus - 2.5.0 + 2.5.1 RuoYi-Vue-Plus https://gitee.com/JavaLionLi/RuoYi-Vue-Plus RuoYi-Vue-Plus后台管理系统 - 2.5.0 + 2.5.1 2.4.8 UTF-8 UTF-8 diff --git a/ruoyi-admin/Dockerfile b/ruoyi-admin/Dockerfile index 88f4932b..dc484c5b 100644 --- a/ruoyi-admin/Dockerfile +++ b/ruoyi-admin/Dockerfile @@ -4,6 +4,7 @@ MAINTAINER Lion Li RUN mkdir -p /ruoyi/server RUN mkdir -p /ruoyi/server/logs +RUN mkdir -p /ruoyi/server/ruoyi/uploadPath WORKDIR /ruoyi/server diff --git a/ruoyi-admin/pom.xml b/ruoyi-admin/pom.xml index 74502132..7ff67bef 100644 --- a/ruoyi-admin/pom.xml +++ b/ruoyi-admin/pom.xml @@ -5,7 +5,7 @@ ruoyi-vue-plus com.ruoyi - 2.5.0 + 2.5.1 4.0.0 jar diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java index 2f303ba9..46545165 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/common/CaptchaController.java @@ -14,6 +14,7 @@ import com.ruoyi.common.core.domain.AjaxResult; import com.ruoyi.common.core.redis.RedisCache; import com.ruoyi.framework.captcha.UnsignedMathGenerator; import com.ruoyi.framework.config.properties.CaptchaProperties; +import com.ruoyi.system.service.ISysConfigService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @@ -26,7 +27,7 @@ import java.util.concurrent.TimeUnit; /** * 验证码操作处理 * - * @author Lion Li + * @author ruoyi */ @RestController public class CaptchaController { @@ -47,15 +48,18 @@ public class CaptchaController { @Autowired private CaptchaProperties captchaProperties; + @Autowired + private ISysConfigService configService; + /** * 生成验证码 */ @GetMapping("/captchaImage") public AjaxResult getCode() { Map ajax = new HashMap<>(); - Boolean enabled = captchaProperties.getEnabled(); - ajax.put("enabled", enabled); - if (!enabled) { + boolean captchaOnOff = configService.selectCaptchaOnOff(); + ajax.put("captchaOnOff", captchaOnOff); + if (!captchaOnOff) { return AjaxResult.success(ajax); } // 保存验证码信息 diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java index f4185413..246abf40 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysMenuController.java @@ -1,5 +1,6 @@ package com.ruoyi.web.controller.system; +import cn.hutool.core.lang.Validator; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.constant.UserConstants; import com.ruoyi.common.core.controller.BaseController; @@ -9,7 +10,6 @@ import com.ruoyi.common.core.domain.model.LoginUser; import com.ruoyi.common.enums.BusinessType; import com.ruoyi.common.utils.SecurityUtils; import com.ruoyi.common.utils.ServletUtils; -import com.ruoyi.common.utils.StringUtils; import com.ruoyi.framework.web.service.TokenService; import com.ruoyi.system.service.ISysMenuService; import org.springframework.beans.factory.annotation.Autowired; @@ -97,7 +97,7 @@ public class SysMenuController extends BaseController { return AjaxResult.error("新增菜单'" + menu.getMenuName() + "'失败,菜单名称已存在"); } - else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) + else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !Validator.isUrl(menu.getPath())) { return AjaxResult.error("新增菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头"); } @@ -117,7 +117,7 @@ public class SysMenuController extends BaseController { return AjaxResult.error("修改菜单'" + menu.getMenuName() + "'失败,菜单名称已存在"); } - else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !StringUtils.ishttp(menu.getPath())) + else if (UserConstants.YES_FRAME.equals(menu.getIsFrame()) && !Validator.isUrl(menu.getPath())) { return AjaxResult.error("修改菜单'" + menu.getMenuName() + "'失败,地址必须以http(s)://开头"); } diff --git a/ruoyi-admin/src/main/resources/application.yml b/ruoyi-admin/src/main/resources/application.yml index b88929dd..4a52958a 100644 --- a/ruoyi-admin/src/main/resources/application.yml +++ b/ruoyi-admin/src/main/resources/application.yml @@ -14,8 +14,6 @@ ruoyi: addressEnabled: true captcha: - # 验证码开关 - enabled: true # 验证码类型 math 数组计算 char 字符验证 type: math # line 线段干扰 circle 圆圈干扰 shear 扭曲干扰 diff --git a/ruoyi-common/pom.xml b/ruoyi-common/pom.xml index 28af3046..1c2eb3c8 100644 --- a/ruoyi-common/pom.xml +++ b/ruoyi-common/pom.xml @@ -5,7 +5,7 @@ ruoyi-vue-plus com.ruoyi - 2.5.0 + 2.5.1 4.0.0 diff --git a/ruoyi-common/src/main/java/com/ruoyi/common/utils/StringUtils.java b/ruoyi-common/src/main/java/com/ruoyi/common/utils/StringUtils.java deleted file mode 100644 index f3f29f46..00000000 --- a/ruoyi-common/src/main/java/com/ruoyi/common/utils/StringUtils.java +++ /dev/null @@ -1,28 +0,0 @@ -package com.ruoyi.common.utils; - -import cn.hutool.core.util.StrUtil; -import com.ruoyi.common.constant.Constants; - -/** - * 字符串工具类 - * - * @author ruoyi - */ -public class StringUtils extends org.apache.commons.lang3.StringUtils { - /** 空字符串 */ - private static final String NULLSTR = ""; - - /** 下划线 */ - private static final char SEPARATOR = '_'; - - /** - * 是否为http(s)://开头 - * - * @param link 链接 - * @return 结果 - */ - public static boolean ishttp(String link) { - return StrUtil.startWithAny(link, Constants.HTTP, Constants.HTTPS); - } - -} diff --git a/ruoyi-demo/pom.xml b/ruoyi-demo/pom.xml index d3909a28..99d40dd9 100644 --- a/ruoyi-demo/pom.xml +++ b/ruoyi-demo/pom.xml @@ -5,7 +5,7 @@ ruoyi-vue-plus com.ruoyi - 2.5.0 + 2.5.1 4.0.0 diff --git a/ruoyi-extend/pom.xml b/ruoyi-extend/pom.xml index e71a426c..dc04bc64 100644 --- a/ruoyi-extend/pom.xml +++ b/ruoyi-extend/pom.xml @@ -5,7 +5,7 @@ ruoyi-vue-plus com.ruoyi - 2.5.0 + 2.5.1 4.0.0 ruoyi-extend diff --git a/ruoyi-extend/ruoyi-monitor-admin/pom.xml b/ruoyi-extend/ruoyi-monitor-admin/pom.xml index e9d48d66..7c45549e 100644 --- a/ruoyi-extend/ruoyi-monitor-admin/pom.xml +++ b/ruoyi-extend/ruoyi-monitor-admin/pom.xml @@ -5,7 +5,7 @@ ruoyi-extend com.ruoyi - 2.5.0 + 2.5.1 4.0.0 jar diff --git a/ruoyi-framework/pom.xml b/ruoyi-framework/pom.xml index e7ed9918..d3c27399 100644 --- a/ruoyi-framework/pom.xml +++ b/ruoyi-framework/pom.xml @@ -5,7 +5,7 @@ ruoyi-vue-plus com.ruoyi - 2.5.0 + 2.5.1 4.0.0 diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/CaptchaProperties.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/CaptchaProperties.java index 86ac7060..cf9ad8b0 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/CaptchaProperties.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/config/properties/CaptchaProperties.java @@ -14,11 +14,6 @@ import org.springframework.stereotype.Component; @ConfigurationProperties(prefix = "captcha") public class CaptchaProperties { - /** - * 验证码开关 - */ - private Boolean enabled; - /** * 验证码类型 */ diff --git a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java index d0b9511e..239825f0 100644 --- a/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java +++ b/ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysLoginService.java @@ -11,7 +11,7 @@ import com.ruoyi.common.exception.user.UserPasswordNotMatchException; import com.ruoyi.common.utils.DateUtils; import com.ruoyi.common.utils.MessageUtils; import com.ruoyi.common.utils.ServletUtils; -import com.ruoyi.framework.config.properties.CaptchaProperties; +import com.ruoyi.system.service.ISysConfigService; import com.ruoyi.system.service.ISysUserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.authentication.AuthenticationManager; @@ -41,10 +41,10 @@ public class SysLoginService private RedisCache redisCache; @Autowired - private CaptchaProperties captchaProperties; + private ISysUserService userService; @Autowired - private ISysUserService userService; + private ISysConfigService configService; @Autowired private AsyncService asyncService; @@ -61,19 +61,12 @@ public class SysLoginService public String login(String username, String password, String code, String uuid) { HttpServletRequest request = ServletUtils.getRequest(); - if(captchaProperties.getEnabled()) { - String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid; - String captcha = redisCache.getCacheObject(verifyKey); - redisCache.deleteObject(verifyKey); - if (captcha == null) { - asyncService.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire"), request); - throw new CaptchaExpireException(); - } - if (!code.equalsIgnoreCase(captcha)) { - asyncService.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error"), request); - throw new CaptchaException(); - } - } + boolean captchaOnOff = configService.selectCaptchaOnOff(); + // 验证码开关 + if (captchaOnOff) + { + validateCapcha(username, code, uuid, request); + } // 用户验证 Authentication authentication = null; try @@ -102,6 +95,28 @@ public class SysLoginService return tokenService.createToken(loginUser); } + /** + * 校验验证码 + * + * @param username 用户名 + * @param code 验证码 + * @param uuid 唯一标识 + * @return 结果 + */ + public void validateCapcha(String username, String code, String uuid, HttpServletRequest request) { + String verifyKey = Constants.CAPTCHA_CODE_KEY + uuid; + String captcha = redisCache.getCacheObject(verifyKey); + redisCache.deleteObject(verifyKey); + if (captcha == null) { + asyncService.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.expire"), request); + throw new CaptchaExpireException(); + } + if (!code.equalsIgnoreCase(captcha)) { + asyncService.recordLogininfor(username, Constants.LOGIN_FAIL, MessageUtils.message("user.jcaptcha.error"), request); + throw new CaptchaException(); + } + } + /** * 记录登录信息 */ diff --git a/ruoyi-generator/pom.xml b/ruoyi-generator/pom.xml index 642dfec1..693a8dc6 100644 --- a/ruoyi-generator/pom.xml +++ b/ruoyi-generator/pom.xml @@ -5,7 +5,7 @@ ruoyi-vue-plus com.ruoyi - 2.5.0 + 2.5.1 4.0.0 diff --git a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java index 5fcdd3b3..17789104 100644 --- a/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java +++ b/ruoyi-generator/src/main/java/com/ruoyi/generator/service/GenTableServiceImpl.java @@ -35,10 +35,7 @@ import java.io.ByteArrayOutputStream; import java.io.File; import java.io.IOException; import java.io.StringWriter; -import java.util.Arrays; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.util.*; import java.util.stream.Collectors; import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; @@ -137,14 +134,17 @@ public class GenTableServiceImpl extends ServicePlusImpl() - .set(cenTableColumn.getIsPk() == null, GenTableColumn::getIsPk, null) - .set(cenTableColumn.getIsIncrement() == null, GenTableColumn::getIsIncrement, null) - .set(cenTableColumn.getIsInsert() == null, GenTableColumn::getIsInsert, null) - .set(cenTableColumn.getIsEdit() == null, GenTableColumn::getIsEdit, null) - .set(cenTableColumn.getIsList() == null, GenTableColumn::getIsList, null) - .set(cenTableColumn.getIsQuery() == null, GenTableColumn::getIsQuery, null) - .set(cenTableColumn.getIsRequired() == null, GenTableColumn::getIsRequired, null) - .eq(GenTableColumn::getColumnId,cenTableColumn.getColumnId())); + .set(StrUtil.isBlank(cenTableColumn.getColumnComment()), GenTableColumn::getColumnComment, null) + .set(StrUtil.isBlank(cenTableColumn.getIsPk()), GenTableColumn::getIsPk, null) + .set(StrUtil.isBlank(cenTableColumn.getIsIncrement()), GenTableColumn::getIsIncrement, null) + .set(StrUtil.isBlank(cenTableColumn.getIsInsert()), GenTableColumn::getIsInsert, null) + .set(StrUtil.isBlank(cenTableColumn.getIsEdit()), GenTableColumn::getIsEdit, null) + .set(StrUtil.isBlank(cenTableColumn.getIsList()), GenTableColumn::getIsList, null) + .set(StrUtil.isBlank(cenTableColumn.getIsQuery()), GenTableColumn::getIsQuery, null) + .set(StrUtil.isBlank(cenTableColumn.getIsRequired()), GenTableColumn::getIsRequired, null) + .set(StrUtil.isBlank(cenTableColumn.getQueryType()), GenTableColumn::getQueryType, null) + .set(StrUtil.isBlank(cenTableColumn.getDictType()), GenTableColumn::getDictType, null) + .eq(GenTableColumn::getColumnId,cenTableColumn.getColumnId())); } } } @@ -180,10 +180,14 @@ public class GenTableServiceImpl extends ServicePlusImpl 0) { // 保存列信息 List genTableColumns = genTableColumnMapper.selectDbTableColumnsByName(tableName); + List saveColumns = new ArrayList<>(); for (GenTableColumn column : genTableColumns) { GenUtils.initColumnField(column, table); + saveColumns.add(column); } - genTableColumnMapper.insertAll(genTableColumns); + if (CollUtil.isNotEmpty(saveColumns)) { + genTableColumnMapper.insertAll(saveColumns); + } } } } catch (Exception e) { @@ -287,12 +291,16 @@ public class GenTableServiceImpl extends ServicePlusImpl dbTableColumnNames = dbTableColumns.stream().map(GenTableColumn::getColumnName).collect(Collectors.toList()); + List saveColumns = new ArrayList<>(); dbTableColumns.forEach(column -> { if (!tableColumnNames.contains(column.getColumnName())) { GenUtils.initColumnField(column, table); + saveColumns.add(column); } }); - genTableColumnMapper.insertAll(tableColumns); + if (CollUtil.isNotEmpty(saveColumns)) { + genTableColumnMapper.insertAll(saveColumns); + } List delColumns = tableColumns.stream().filter(column -> !dbTableColumnNames.contains(column.getColumnName())).collect(Collectors.toList()); if (CollUtil.isNotEmpty(delColumns)) { diff --git a/ruoyi-generator/src/main/resources/vm/vue/index-tree.vue.vm b/ruoyi-generator/src/main/resources/vm/vue/index-tree.vue.vm index cedab30d..30489e07 100644 --- a/ruoyi-generator/src/main/resources/vm/vue/index-tree.vue.vm +++ b/ruoyi-generator/src/main/resources/vm/vue/index-tree.vue.vm @@ -285,7 +285,7 @@ export default { #else #set($comment=$column.columnComment) #end -#if(${column.dictType} != '') +#if(${column.dictType} && ${column.dictType} != '') // $comment字典 ${column.javaField}Options: [], #elseif($column.htmlType == "datetime" && $column.queryType == "BETWEEN") @@ -327,7 +327,7 @@ export default { created() { this.getList(); #foreach ($column in $columns) -#if(${column.dictType} != '') +#if(${column.dictType} && ${column.dictType} != '') this.getDicts("${column.dictType}").then(response => { this.${column.javaField}Options = response.data; }); @@ -379,7 +379,7 @@ export default { }); }, #foreach ($column in $columns) -#if(${column.dictType} != '') +#if(${column.dictType} && ${column.dictType} != '') #set($parentheseIndex=$column.columnComment.indexOf("(")) #if($parentheseIndex != -1) #set($comment=$column.columnComment.substring(0, $parentheseIndex)) diff --git a/ruoyi-generator/src/main/resources/vm/vue/index.vue.vm b/ruoyi-generator/src/main/resources/vm/vue/index.vue.vm index 12a9a63c..6667c1e0 100644 --- a/ruoyi-generator/src/main/resources/vm/vue/index.vue.vm +++ b/ruoyi-generator/src/main/resources/vm/vue/index.vue.vm @@ -350,7 +350,7 @@ export default { #else #set($comment=$column.columnComment) #end -#if(${column.dictType} != '') +#if(${column.dictType} && ${column.dictType} != '') // $comment字典 ${column.javaField}Options: [], #elseif($column.htmlType == "datetime" && $column.queryType == "BETWEEN") @@ -394,7 +394,7 @@ export default { created() { this.getList(); #foreach ($column in $columns) -#if(${column.dictType} != '') +#if(${column.dictType} && ${column.dictType} != '') this.getDicts("${column.dictType}").then(response => { this.${column.javaField}Options = response.data; }); @@ -427,7 +427,7 @@ export default { }); }, #foreach ($column in $columns) -#if(${column.dictType} != '') +#if(${column.dictType} && ${column.dictType} != '') #set($parentheseIndex=$column.columnComment.indexOf("(")) #if($parentheseIndex != -1) #set($comment=$column.columnComment.substring(0, $parentheseIndex)) diff --git a/ruoyi-quartz/pom.xml b/ruoyi-quartz/pom.xml index 522a84e2..8d741986 100644 --- a/ruoyi-quartz/pom.xml +++ b/ruoyi-quartz/pom.xml @@ -5,7 +5,7 @@ ruoyi-vue-plus com.ruoyi - 2.5.0 + 2.5.1 4.0.0 diff --git a/ruoyi-system/pom.xml b/ruoyi-system/pom.xml index 85576db4..3f995658 100644 --- a/ruoyi-system/pom.xml +++ b/ruoyi-system/pom.xml @@ -5,7 +5,7 @@ ruoyi-vue-plus com.ruoyi - 2.5.0 + 2.5.1 4.0.0 diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MetaVo.java b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MetaVo.java index 495db54e..dbe7a6e1 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MetaVo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/domain/vo/MetaVo.java @@ -1,6 +1,6 @@ package com.ruoyi.system.domain.vo; -import com.ruoyi.common.utils.StringUtils; +import cn.hutool.core.lang.Validator; import lombok.Data; import lombok.NoArgsConstructor; import lombok.experimental.Accessors; @@ -56,7 +56,7 @@ public class MetaVo { this.title = title; this.icon = icon; this.noCache = noCache; - if (StringUtils.ishttp(link)) { + if (Validator.isUrl(link)) { this.link = link; } } diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java index 429559b3..b649c7f8 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/ISysConfigService.java @@ -32,6 +32,13 @@ public interface ISysConfigService extends IServicePlus { */ public String selectConfigByKey(String configKey); + /** + * 获取验证码开关 + * + * @return true开启,false关闭 + */ + public boolean selectCaptchaOnOff(); + /** * 查询参数配置列表 * diff --git a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java index dd7321ad..41be8077 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysConfigServiceImpl.java @@ -93,6 +93,19 @@ public class SysConfigServiceImpl extends ServicePlusImpl * @return 结果 */ public boolean isInnerLink(SysMenu menu) { - return menu.getIsFrame().equals(UserConstants.NO_FRAME) && StringUtils.ishttp(menu.getPath()); + return menu.getIsFrame().equals(UserConstants.NO_FRAME) && Validator.isUrl(menu.getPath()); } /** diff --git a/ruoyi-ui/package.json b/ruoyi-ui/package.json index 648b1729..bdd09f43 100644 --- a/ruoyi-ui/package.json +++ b/ruoyi-ui/package.json @@ -1,6 +1,6 @@ { "name": "ruoyi-vue-plus", - "version": "2.5.0", + "version": "2.5.1", "description": "RuoYi-Vue-Plus后台管理系统", "author": "LionLi", "license": "MIT", diff --git a/ruoyi-ui/src/components/Editor/index.vue b/ruoyi-ui/src/components/Editor/index.vue index 98b9fa79..f78dfcc5 100644 --- a/ruoyi-ui/src/components/Editor/index.vue +++ b/ruoyi-ui/src/components/Editor/index.vue @@ -130,14 +130,14 @@ export default { this.quill.format("image", false); } }); - toolbar.addHandler("video", (value) => { - this.uploadType = "video"; - if (value) { - this.$refs.upload.$children[0].$refs.input.click(); - } else { - this.quill.format("video", false); - } - }); + // toolbar.addHandler("video", (value) => { + // this.uploadType = "video"; + // if (value) { + // this.$refs.upload.$children[0].$refs.input.click(); + // } else { + // this.quill.format("video", false); + // } + // }); } this.Quill.pasteHTML(this.currentValue); this.Quill.on("text-change", (delta, oldDelta, source) => { diff --git a/ruoyi-ui/src/components/ImageUpload/index.vue b/ruoyi-ui/src/components/ImageUpload/index.vue index f2a7402b..31940af2 100644 --- a/ruoyi-ui/src/components/ImageUpload/index.vue +++ b/ruoyi-ui/src/components/ImageUpload/index.vue @@ -116,7 +116,7 @@ export default { methods: { // 删除图片 handleRemove(file, fileList) { - const findex = this.fileList.indexOf(file.name); + const findex = this.fileList.map(f => f.name).indexOf(file.name); this.fileList.splice(findex, 1); this.$emit("input", this.listToString(this.fileList)); }, diff --git a/ruoyi-ui/src/views/index.vue b/ruoyi-ui/src/views/index.vue index 671dcde2..9f8e79fb 100644 --- a/ruoyi-ui/src/views/index.vue +++ b/ruoyi-ui/src/views/index.vue @@ -91,6 +91,18 @@ 更新日志 + +
    +
  1. update 验证码开关 转移到表 参数管理 内
  2. +
  3. update 使用hutool重构 判断是否url
  4. +
  5. fix 修复 docker业务集群部署与文件上传的问题
  6. +
  7. fix 修复代码生成同步表结构id冲突问题
  8. +
  9. fix 修复代码生成选择字典 无法取消问题
  10. +
  11. fix 修复代码生成字典为null问题
  12. +
  13. fix 图片上传 多图时无法删除相应图片修复
  14. +
  15. remove 删除富文本video事件
  16. +
+
  1. update springboot 2.4.7 => 2.4.8
  2. diff --git a/ruoyi-ui/src/views/login.vue b/ruoyi-ui/src/views/login.vue index e8da56b7..a87cb9df 100644 --- a/ruoyi-ui/src/views/login.vue +++ b/ruoyi-ui/src/views/login.vue @@ -18,7 +18,7 @@ - + { - this.captchaEnabled = res.data.enabled; - if(res.data.enabled){ + this.captchaOnOff = res.data.captchaOnOff === undefined ? true : res.data.captchaOnOff; + if (this.captchaOnOff) { this.codeUrl = "data:image/gif;base64," + res.data.img; this.loginForm.uuid = res.data.uuid; } @@ -134,7 +134,9 @@ export default { this.$router.push({ path: this.redirect || "/" }).catch(()=>{}); }).catch(() => { this.loading = false; - this.getCode(); + if (this.captchaOnOff) { + this.getCode(); + } }); } }); diff --git a/sql/ry_20210210.sql b/sql/ry_20210713.sql similarity index 98% rename from sql/ry_20210210.sql rename to sql/ry_20210713.sql index 59a55f12..088960ef 100644 --- a/sql/ry_20210210.sql +++ b/sql/ry_20210713.sql @@ -537,9 +537,10 @@ create table sys_config ( primary key (config_id) ) engine=innodb auto_increment=100 comment = '参数配置表'; -insert into sys_config values(1, '主框架页-默认皮肤样式名称', 'sys.index.skinName', 'skin-blue', 'Y', 'admin', sysdate(), '', null, '蓝色 skin-blue、绿色 skin-green、紫色 skin-purple、红色 skin-red、黄色 skin-yellow' ); -insert into sys_config values(2, '用户管理-账号初始密码', 'sys.user.initPassword', '123456', 'Y', 'admin', sysdate(), '', null, '初始化密码 123456' ); -insert into sys_config values(3, '主框架页-侧边栏主题', 'sys.index.sideTheme', 'theme-dark', 'Y', 'admin', sysdate(), '', null, '深色主题theme-dark,浅色主题theme-light' ); +insert into sys_config values(1, '主框架页-默认皮肤样式名称', 'sys.index.skinName', 'skin-blue', 'Y', 'admin', sysdate(), '', null, '蓝色 skin-blue、绿色 skin-green、紫色 skin-purple、红色 skin-red、黄色 skin-yellow' ); +insert into sys_config values(2, '用户管理-账号初始密码', 'sys.user.initPassword', '123456', 'Y', 'admin', sysdate(), '', null, '初始化密码 123456' ); +insert into sys_config values(3, '主框架页-侧边栏主题', 'sys.index.sideTheme', 'theme-dark', 'Y', 'admin', sysdate(), '', null, '深色主题theme-dark,浅色主题theme-light' ); +insert into sys_config values(4, '账号自助-验证码开关', 'sys.account.captchaOnOff', 'true', 'Y', 'admin', sysdate(), '', null, '是否开启登录验证码功能(true开启,false关闭)'); -- ----------------------------