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); 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