diff --git a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/datascope/DataScopeMapper.java b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/datascope/DataScopeMapper.java new file mode 100644 index 000000000..8d3b41ec1 --- /dev/null +++ b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/datascope/DataScopeMapper.java @@ -0,0 +1,38 @@ +package com.pig4cloud.pigx.common.data.datascope; + +import com.baomidou.mybatisplus.core.conditions.Wrapper; +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.baomidou.mybatisplus.core.metadata.IPage; +import com.baomidou.mybatisplus.core.toolkit.Constants; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +/** + * @author lengleng + * @date 2020/4/26 + */ +public interface DataScopeMapper extends BaseMapper { + + /** + * 根据 entity 条件,查询全部记录 + * + * @param queryWrapper 实体对象封装操作类(可以为 null) + * @param scope 数据权限范围 + * @return List + */ + List selectListByScope(@Param(Constants.WRAPPER) Wrapper queryWrapper, DataScope scope); + + + /** + * 根据 entity 条件,查询全部记录(并翻页) + * + * @param page 分页查询条件(可以为 RowBounds.DEFAULT) + * @param queryWrapper 实体对象封装操作类(可以为 null) + * @param scope 数据权限范围 + * @return Page + */ + > E selectPageByScope(E page, @Param(Constants.WRAPPER) Wrapper queryWrapper, DataScope scope); + + +} diff --git a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/datascope/DataScopeSqlInjector.java b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/datascope/DataScopeSqlInjector.java new file mode 100644 index 000000000..5c65ed32c --- /dev/null +++ b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/datascope/DataScopeSqlInjector.java @@ -0,0 +1,21 @@ +package com.pig4cloud.pigx.common.data.datascope; + +import com.baomidou.mybatisplus.core.injector.AbstractMethod; +import com.baomidou.mybatisplus.core.injector.DefaultSqlInjector; + +import java.util.List; + +/** + * @author lengleng + * @date 2020/4/26 + */ +public class DataScopeSqlInjector extends DefaultSqlInjector { + + @Override + public List getMethodList(Class mapperClass) { + List methodList = super.getMethodList(mapperClass); + methodList.add(new SelectListByScope()); + methodList.add(new SelectPageByScope()); + return methodList; + } +} diff --git a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/datascope/SelectListByScope.java b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/datascope/SelectListByScope.java new file mode 100644 index 000000000..e349e4d2d --- /dev/null +++ b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/datascope/SelectListByScope.java @@ -0,0 +1,22 @@ +package com.pig4cloud.pigx.common.data.datascope; + +import com.baomidou.mybatisplus.core.enums.SqlMethod; +import com.baomidou.mybatisplus.core.injector.AbstractMethod; +import com.baomidou.mybatisplus.core.metadata.TableInfo; +import org.apache.ibatis.mapping.MappedStatement; +import org.apache.ibatis.mapping.SqlSource; + +/** + * @author lengleng + * @date 2020/4/26 + */ +public class SelectListByScope extends AbstractMethod { + @Override + public MappedStatement injectMappedStatement(Class mapperClass, Class modelClass, TableInfo tableInfo) { + SqlMethod sqlMethod = SqlMethod.SELECT_LIST; + String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlSelectColumns(tableInfo, true), tableInfo.getTableName(), + sqlWhereEntityWrapper(true, tableInfo), sqlComment()); + SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass); + return this.addSelectMappedStatementForTable(mapperClass, "selectListByScope", sqlSource, tableInfo); + } +} diff --git a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/datascope/SelectPageByScope.java b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/datascope/SelectPageByScope.java new file mode 100644 index 000000000..b8017dd91 --- /dev/null +++ b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/datascope/SelectPageByScope.java @@ -0,0 +1,24 @@ +package com.pig4cloud.pigx.common.data.datascope; + +import com.baomidou.mybatisplus.core.enums.SqlMethod; +import com.baomidou.mybatisplus.core.injector.AbstractMethod; +import com.baomidou.mybatisplus.core.metadata.TableInfo; +import org.apache.ibatis.mapping.MappedStatement; +import org.apache.ibatis.mapping.SqlSource; + +/** + * @author lengleng + * @date 2020/4/26 + */ +public class SelectPageByScope extends AbstractMethod { + + @Override + public MappedStatement injectMappedStatement(Class mapperClass, Class modelClass, TableInfo tableInfo) { + SqlMethod sqlMethod = SqlMethod.SELECT_PAGE; + String sql = String.format(sqlMethod.getSql(), sqlFirst(), sqlSelectColumns(tableInfo, true), + tableInfo.getTableName(), sqlWhereEntityWrapper(true, tableInfo), sqlComment()); + SqlSource sqlSource = languageDriver.createSqlSource(configuration, sql, modelClass); + return this.addSelectMappedStatementForTable(mapperClass, "selectPageByScope", sqlSource, tableInfo); + } + +} diff --git a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/mybatis/MybatisPlusConfiguration.java b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/mybatis/MybatisPlusConfiguration.java index 6b2fb2da1..bb94b7c4d 100644 --- a/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/mybatis/MybatisPlusConfiguration.java +++ b/pigx-common/pigx-common-data/src/main/java/com/pig4cloud/pigx/common/data/mybatis/MybatisPlusConfiguration.java @@ -22,6 +22,7 @@ import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor; import com.baomidou.mybatisplus.extension.plugins.tenant.TenantSqlParser; import com.pig4cloud.pigx.common.data.datascope.DataScopeHandle; import com.pig4cloud.pigx.common.data.datascope.DataScopeInterceptor; +import com.pig4cloud.pigx.common.data.datascope.DataScopeSqlInjector; import com.pig4cloud.pigx.common.data.datascope.PigxDefaultDatascopeHandle; import com.pig4cloud.pigx.common.data.tenant.PigxTenantHandler; import org.springframework.boot.autoconfigure.AutoConfigureAfter; @@ -97,4 +98,10 @@ public class MybatisPlusConfiguration { public DataScopeInterceptor dataScopeInterceptor() { return new DataScopeInterceptor(dataScopeHandle()); } + + @Bean + @ConditionalOnBean(DataScopeHandle.class) + public DataScopeSqlInjector dataScopeSqlInjector() { + return new DataScopeSqlInjector(); + } } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysDeptMapper.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysDeptMapper.java index 738274b24..a7e56d269 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysDeptMapper.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/mapper/SysDeptMapper.java @@ -19,13 +19,10 @@ package com.pig4cloud.pigx.admin.mapper; -import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.pig4cloud.pigx.admin.api.entity.SysDept; -import com.pig4cloud.pigx.common.data.datascope.DataScope; +import com.pig4cloud.pigx.common.data.datascope.DataScopeMapper; import org.apache.ibatis.annotations.Mapper; -import java.util.List; - /** *

* 部门管理 Mapper 接口 @@ -35,13 +32,5 @@ import java.util.List; * @since 2018-01-20 */ @Mapper -public interface SysDeptMapper extends BaseMapper { - - /** - * 根据数据权限查询部门 - * - * @param dataScope - * @return - */ - List listDepts(DataScope dataScope); +public interface SysDeptMapper extends DataScopeMapper { } diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysDeptServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysDeptServiceImpl.java index 345ebca05..5e7f5025d 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysDeptServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysDeptServiceImpl.java @@ -51,6 +51,7 @@ import java.util.stream.Collectors; @AllArgsConstructor public class SysDeptServiceImpl extends ServiceImpl implements SysDeptService { private final SysDeptRelationService sysDeptRelationService; + private final SysDeptMapper deptMapper; /** * 添加信息部门 @@ -121,7 +122,7 @@ public class SysDeptServiceImpl extends ServiceImpl impl */ @Override public List selectTree() { - return getDeptTree(baseMapper.listDepts(new DataScope())); + return getDeptTree(deptMapper.selectListByScope(Wrappers.emptyWrapper(), new DataScope())); } diff --git a/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysDeptMapper.xml b/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysDeptMapper.xml index 013ef26d3..7f0befa96 100644 --- a/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysDeptMapper.xml +++ b/pigx-upms/pigx-upms-biz/src/main/resources/mapper/SysDeptMapper.xml @@ -21,7 +21,4 @@ -