From 8743ed14d927ab52814ed5f5f166afaa7a6b78b2 Mon Sep 17 00:00:00 2001 From: Charles7c Date: Thu, 29 Jun 2023 20:39:23 +0800 Subject: [PATCH 1/3] =?UTF-8?q?style:=20=E8=A7=A3=E5=86=B3=20IDE=20?= =?UTF-8?q?=E6=8A=A5=20Delete=20`=E2=90=8D`=20eslint(prettier/prettier)=20?= =?UTF-8?q?=E8=AD=A6=E5=91=8A=E7=9A=84=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit endOfLine: 'auto',自动检测行尾符,根据当前操作系统自动选择行尾符。例如:Windows 上的行尾符是 CRLF(\r\n),而 Unix 和 Linux 上的行尾符是 LF(\n)。 --- continew-admin-ui/.prettierrc.js | 1 + 1 file changed, 1 insertion(+) diff --git a/continew-admin-ui/.prettierrc.js b/continew-admin-ui/.prettierrc.js index 656ddd81..ed93c1d0 100644 --- a/continew-admin-ui/.prettierrc.js +++ b/continew-admin-ui/.prettierrc.js @@ -6,4 +6,5 @@ module.exports = { quoteProps: 'consistent', htmlWhitespaceSensitivity: 'strict', vueIndentScriptAndStyle: true, + endOfLine: 'auto', }; From 026247f677110ae199124a67c68503729cbaec92 Mon Sep 17 00:00:00 2001 From: Charles7c Date: Fri, 30 Jun 2023 00:38:25 +0800 Subject: [PATCH 2/3] =?UTF-8?q?fix:=20=E5=AE=8C=E5=96=84=E6=9F=A5=E8=AF=A2?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E6=95=B0=E6=8D=AE=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 1、暂时对用户 Mapper 的 selectList 和 selectPage 进行了数据权限过滤; 2、由于对用户 Mapper 的 selectList 添加了数据权限过滤,请小心使用 selectOne 因为其底层使用的也是 selectList; 3、tips:如需在查询时进行数据权限过滤,尽量不要对 MyBatis Plus 原生查询进行过滤,而是单独声明一个查询方法来使用,以避免不需要过滤数据权限查询数据的场景受到较大影响。 --- .../cnadmin/system/mapper/UserMapper.java | 31 ++++++++++++++++++- .../system/service/impl/UserServiceImpl.java | 2 +- 2 files changed, 31 insertions(+), 2 deletions(-) diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/mapper/UserMapper.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/mapper/UserMapper.java index 353764bd..76e84851 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/mapper/UserMapper.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/mapper/UserMapper.java @@ -16,6 +16,16 @@ package top.charles7c.cnadmin.system.mapper; +import java.util.List; + +import org.apache.ibatis.annotations.Param; +import org.apache.ibatis.annotations.Select; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; + +import top.charles7c.cnadmin.common.annotation.DataPermission; import top.charles7c.cnadmin.common.base.BaseMapper; import top.charles7c.cnadmin.system.model.entity.UserDO; @@ -25,4 +35,23 @@ import top.charles7c.cnadmin.system.model.entity.UserDO; * @author Charles7c * @since 2022/12/22 21:47 */ -public interface UserMapper extends BaseMapper {} +public interface UserMapper extends BaseMapper { + + @Override + @DataPermission + List selectList(@Param(Constants.WRAPPER) Wrapper queryWrapper); + + @Override + @DataPermission +

> P selectPage(P page, @Param(Constants.WRAPPER) Wrapper queryWrapper); + + /** + * 根据用户名查询 + * + * @param username + * 用户名 + * @return 用户信息 + */ + @Select("SELECT * FROM `sys_user` WHERE `username` = #{username}") + UserDO selectByUsername(@Param("username") String username); +} diff --git a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/UserServiceImpl.java b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/UserServiceImpl.java index cedf71fc..eaf95993 100644 --- a/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/UserServiceImpl.java +++ b/continew-admin-system/src/main/java/top/charles7c/cnadmin/system/service/impl/UserServiceImpl.java @@ -238,7 +238,7 @@ public class UserServiceImpl extends BaseServiceImpl Date: Sat, 1 Jul 2023 17:03:26 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix:=20=E5=AE=8C=E5=96=84=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E9=80=9A=E7=94=A8=E6=9F=A5=E8=AF=A2=E6=B3=A8=E8=A7=A3=E6=97=B6?= =?UTF-8?q?=E7=9A=84=E5=8F=82=E6=95=B0=E9=AA=8C=E8=AF=81=E6=8F=90=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/util/helper/QueryHelper.java | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/helper/QueryHelper.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/helper/QueryHelper.java index 70871873..bfab8cbb 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/helper/QueryHelper.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/util/helper/QueryHelper.java @@ -26,12 +26,13 @@ import lombok.extern.slf4j.Slf4j; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; -import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import top.charles7c.cnadmin.common.annotation.Query; +import top.charles7c.cnadmin.common.exception.BadRequestException; import top.charles7c.cnadmin.common.util.ReflectUtils; +import top.charles7c.cnadmin.common.util.validate.ValidationUtils; /** * 查询助手 @@ -100,6 +101,10 @@ public class QueryHelper { // 解析查询条件 parse(queryAnnotation, field.getName(), fieldValue, queryWrapper); + } catch (BadRequestException e) { + log.error("Build query occurred an validation error: {}. Query: {}, Field: {}.", e.getMessage(), query, + field, e); + throw e; } catch (Exception e) { log.error("Build query occurred an error: {}. Query: {}, Field: {}.", e.getMessage(), query, field, e); } finally { @@ -140,8 +145,7 @@ public class QueryHelper { // 如果没有单独指定属性名,就和使用该注解的属性的名称一致 // 注意:数据库规范中列采用下划线连接法命名,程序规范中变量采用驼峰法命名 String property = queryAnnotation.property(); - fieldName = StrUtil.blankToDefault(property, fieldName); - String columnName = StrUtil.toUnderlineCase(fieldName); + String columnName = StrUtil.toUnderlineCase(StrUtil.blankToDefault(property, fieldName)); Query.Type queryType = queryAnnotation.type(); switch (queryType) { case EQUAL: @@ -164,9 +168,8 @@ public class QueryHelper { break; case BETWEEN: List between = new ArrayList<>((List)fieldValue); - if (between.size() >= 2) { - queryWrapper.between(columnName, between.get(0), between.get(1)); - } + ValidationUtils.throwIf(between.size() != 2, "[{}] 必须是一个范围", fieldName); + queryWrapper.between(columnName, between.get(0), between.get(1)); break; case LEFT_LIKE: queryWrapper.likeLeft(columnName, fieldValue); @@ -178,14 +181,12 @@ public class QueryHelper { queryWrapper.likeRight(columnName, fieldValue); break; case IN: - if (CollUtil.isNotEmpty((List)fieldValue)) { - queryWrapper.in(columnName, (List)fieldValue); - } + ValidationUtils.throwIfEmpty(fieldValue, "[{}] 不能为空", fieldName); + queryWrapper.in(columnName, (List)fieldValue); break; case NOT_IN: - if (CollUtil.isNotEmpty((List)fieldValue)) { - queryWrapper.notIn(columnName, (List)fieldValue); - } + ValidationUtils.throwIfEmpty(fieldValue, "[{}] 不能为空", fieldName); + queryWrapper.notIn(columnName, (List)fieldValue); break; case IS_NULL: queryWrapper.isNull(columnName);