diff --git a/README.md b/README.md index f2d22c7a..e3eb7e45 100644 --- a/README.md +++ b/README.md @@ -275,8 +275,8 @@ continew-admin ## 核心技术栈 -| 名称 | 版本 | 简介 | -| :----------------------------------------------------------- |:-------------| :----------------------------------------------------------- | +| 名称 | 版本 | 简介 | +| :----------------------------------------------------------- | :----------- | :----------------------------------------------------------- | | Vue | 3.3.4 | 渐进式 JavaScript 框架,易学易用,性能出色,适用场景丰富的 Web 前端框架。 | | TypeScript | 4.9.5 | TypeScript 是微软开发的一个开源的编程语言,通过在 JavaScript 的基础上添加静态类型定义构建而成。 | | Arco Design Vue | 2.51.0 | 字节跳动推出的前端 UI 框架,样式美观,组件丰富。 | @@ -284,7 +284,7 @@ continew-admin | Undertow | 2.2.26.Final | 采用 Java 开发的灵活的高性能 Web 服务器,提供包括阻塞和基于 NIO 的非堵塞机制。 | | Sa-Token + JWT | 1.35.0.RC | 轻量级 Java 权限认证框架,让鉴权变得简单、优雅。 | | MariaDB | 10.10.2 | MySQL 的一个分支,主要由开源社区在维护,完全兼容 MySQL,包括 API 和命令行,能轻松成为 MySQL 的代替品。 | -| MyBatis Plus | 3.5.3.1 | MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,简化开发、提高效率。 | +| MyBatis Plus | 3.5.3.2 | MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,简化开发、提高效率。 | | dynamic-datasource-spring-boot-starter | 3.6.1 | 基于 Spring Boot 的快速集成多数据源的启动器。 | | Hikari | 4.0.3 | JDBC 连接池,号称 “史上最快连接池”,SpringBoot 在 2.0 之后,采用的默认数据库连接池就是 Hikari。 | | mysql-connector-j | 8.0.33 | MySQL Java 驱动。 | diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/DataPermissionMapper.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/DataPermissionMapper.java new file mode 100644 index 00000000..c9a46087 --- /dev/null +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/base/DataPermissionMapper.java @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2022-present Charles7c Authors. All Rights Reserved. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package top.charles7c.cnadmin.common.base; + +import java.util.List; + +import org.apache.ibatis.annotations.Param; + +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; + +/** + * 数据权限 Mapper 基类 + * + * @param + * 实体类 + * @author Charles7c + * @since 2023/9/3 21:50 + */ +public interface DataPermissionMapper extends BaseMapper { + + @Override + @DataPermission + List selectList(@Param(Constants.WRAPPER) Wrapper queryWrapper); + + @Override + @DataPermission + List selectList(IPage page, @Param(Constants.WRAPPER) Wrapper queryWrapper); +} diff --git a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/mybatis/DataPermissionHandlerImpl.java b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/mybatis/DataPermissionHandlerImpl.java index cc15349a..e58798f7 100644 --- a/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/mybatis/DataPermissionHandlerImpl.java +++ b/continew-admin-common/src/main/java/top/charles7c/cnadmin/common/config/mybatis/DataPermissionHandlerImpl.java @@ -77,12 +77,11 @@ public class DataPermissionHandlerImpl implements DataPermissionHandler { Class clazz = Class.forName(mappedStatementId.substring(0, mappedStatementId.lastIndexOf(StringConsts.DOT))); String methodName = mappedStatementId.substring(mappedStatementId.lastIndexOf(StringConsts.DOT) + 1); - Method[] methods = clazz.getDeclaredMethods(); - for (Method method : methods) { + Method[] methodArr = clazz.getMethods(); + for (Method method : methodArr) { DataPermission dataPermission = method.getAnnotation(DataPermission.class); if (null != dataPermission && (method.getName().equals(methodName) || (method.getName() + "_COUNT").equals(methodName))) { - // 获取当前登录用户 LoginUser loginUser = LoginHelper.getLoginUser(); if (null != loginUser && !loginUser.isAdmin()) { return buildDataScopeFilter(loginUser, dataPermission.value(), where); @@ -106,7 +105,7 @@ public class DataPermissionHandlerImpl implements DataPermissionHandler { * 当前查询条件 * @return 构建后查询条件 */ - private static Expression buildDataScopeFilter(LoginUser user, String tableAlias, Expression where) { + private Expression buildDataScopeFilter(LoginUser user, String tableAlias, Expression where) { Expression expression = null; for (RoleDTO role : user.getRoles()) { DataScopeEnum dataScope = role.getDataScope(); @@ -131,19 +130,19 @@ public class DataPermissionHandlerImpl implements DataPermissionHandler { subSelect.setSelectBody(select); // 构建父查询 InExpression inExpression = new InExpression(); - inExpression.setLeftExpression(buildColumn(tableAlias, DEPT_ID)); + inExpression.setLeftExpression(this.buildColumn(tableAlias, DEPT_ID)); inExpression.setRightExpression(subSelect); expression = null != expression ? new OrExpression(expression, inExpression) : inExpression; } else if (DataScopeEnum.DEPT.equals(dataScope)) { // select t1.* from table as t1 where t1.`dept_id` = xxx; EqualsTo equalsTo = new EqualsTo(); - equalsTo.setLeftExpression(buildColumn(tableAlias, DEPT_ID)); + equalsTo.setLeftExpression(this.buildColumn(tableAlias, DEPT_ID)); equalsTo.setRightExpression(new LongValue(user.getDeptId())); expression = null != expression ? new OrExpression(expression, equalsTo) : equalsTo; } else if (DataScopeEnum.SELF.equals(dataScope)) { // select t1.* from table as t1 where t1.`create_user` = xxx; EqualsTo equalsTo = new EqualsTo(); - equalsTo.setLeftExpression(buildColumn(tableAlias, CREATE_USER)); + equalsTo.setLeftExpression(this.buildColumn(tableAlias, CREATE_USER)); equalsTo.setRightExpression(new LongValue(user.getId())); expression = null != expression ? new OrExpression(expression, equalsTo) : equalsTo; } else if (DataScopeEnum.CUSTOM.equals(dataScope)) { @@ -161,7 +160,7 @@ public class DataPermissionHandlerImpl implements DataPermissionHandler { subSelect.setSelectBody(select); // 构建父查询 InExpression inExpression = new InExpression(); - inExpression.setLeftExpression(buildColumn(tableAlias, DEPT_ID)); + inExpression.setLeftExpression(this.buildColumn(tableAlias, DEPT_ID)); inExpression.setRightExpression(subSelect); expression = null != expression ? new OrExpression(expression, inExpression) : inExpression; } @@ -178,7 +177,7 @@ public class DataPermissionHandlerImpl implements DataPermissionHandler { * 字段名称 * @return 带表别名字段 */ - private static Column buildColumn(String tableAlias, String columnName) { + private Column buildColumn(String tableAlias, String columnName) { if (StringUtils.isNotEmpty(tableAlias)) { columnName = String.format("%s.%s", tableAlias, 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 978b4ed0..1b77c049 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,17 +16,10 @@ 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.common.base.DataPermissionMapper; import top.charles7c.cnadmin.system.model.entity.UserDO; /** @@ -35,15 +28,7 @@ import top.charles7c.cnadmin.system.model.entity.UserDO; * @author Charles7c * @since 2022/12/22 21:47 */ -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); +public interface UserMapper extends DataPermissionMapper { /** * 根据用户名查询 diff --git a/pom.xml b/pom.xml index b4dcf36c..29d69d6d 100644 --- a/pom.xml +++ b/pom.xml @@ -47,7 +47,7 @@ limitations under the License. 1.35.0.RC - 3.5.3.1 + 3.5.3.2 3.6.1 3.9.1