refactor: 优化用户、角色、字典分页查询

This commit is contained in:
Jie Zheng 2025-01-14 10:05:55 +08:00
parent 88ea29feff
commit eff0fd9e12
13 changed files with 60 additions and 115 deletions

View File

@ -25,8 +25,4 @@ import lombok.Data;
public class DictQueryCriteria {
private String blurry;
private Long offset;
private Long size;
}

View File

@ -29,8 +29,4 @@ public class RoleQueryCriteria {
private String blurry;
private List<Timestamp> createTime;
private Long offset;
private Long size;
}

View File

@ -40,8 +40,4 @@ public class UserQueryCriteria implements Serializable {
private Long deptId;
private List<Timestamp> createTime;
private Long offset;
private Long size;
}

View File

@ -16,6 +16,8 @@
package me.zhengjie.modules.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import me.zhengjie.modules.system.domain.Dict;
import me.zhengjie.modules.system.domain.vo.DictQueryCriteria;
import org.apache.ibatis.annotations.Mapper;
@ -29,7 +31,7 @@ import java.util.List;
@Mapper
public interface DictMapper extends BaseMapper<Dict> {
List<Dict> findAll(@Param("criteria") DictQueryCriteria criteria);
IPage<Dict> findAll(@Param("criteria") DictQueryCriteria criteria, Page<Object> page);
Long countAll(@Param("criteria") DictQueryCriteria criteria);
List<Dict> findAll(@Param("criteria") DictQueryCriteria criteria);
}

View File

@ -16,6 +16,8 @@
package me.zhengjie.modules.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import me.zhengjie.modules.system.domain.Role;
import me.zhengjie.modules.system.domain.vo.RoleQueryCriteria;
import org.apache.ibatis.annotations.Mapper;
@ -33,18 +35,20 @@ public interface RoleMapper extends BaseMapper<Role> {
List<Role> queryAll();
List<Role> findAll(@Param("criteria") RoleQueryCriteria criteria);
IPage<Role> findAll(@Param("criteria") RoleQueryCriteria criteria, Page<Object> page);
Role findById(@Param("roleId") Long roleId);
Role findByName(@Param("name") String name);
List<Role> findByUserId(@Param("userId") Long userId);
Long countAll(@Param("criteria") RoleQueryCriteria criteria);
List<Role> findAll(@Param("criteria") RoleQueryCriteria criteria);
int countByDepts(@Param("deptIds") Set<Long> deptIds);
@Select("SELECT role.role_id as id FROM sys_role role, sys_roles_menus rm " +
"WHERE role.role_id = rm.role_id AND rm.menu_id = #{menuId}")
List<Role> findByMenuId(@Param("menuId") Long menuId);
}

View File

@ -26,6 +26,7 @@ import java.util.Set;
*/
@Mapper
public interface UserJobMapper {
void insertData(@Param("userId") Long userId, @Param("jobs") Set<Job> jobs);
void deleteByUserId(@Param("userId") Long userId);

View File

@ -16,6 +16,8 @@
package me.zhengjie.modules.system.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import me.zhengjie.modules.system.domain.User;
import me.zhengjie.modules.system.domain.vo.UserQueryCriteria;
import org.apache.ibatis.annotations.Mapper;
@ -34,7 +36,7 @@ public interface UserMapper extends BaseMapper<User> {
List<User> findAll(@Param("criteria") UserQueryCriteria criteria);
Long countAll(@Param("criteria") UserQueryCriteria criteria);
IPage<User> findAll(@Param("criteria") UserQueryCriteria criteria, Page<Object> page);
User findByUsername(@Param("username") String username);

View File

@ -16,6 +16,7 @@
package me.zhengjie.modules.system.service.impl;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
@ -48,10 +49,8 @@ public class DictServiceImpl extends ServiceImpl<DictMapper, Dict> implements Di
@Override
public PageResult<Dict> queryAll(DictQueryCriteria criteria, Page<Object> page){
criteria.setOffset(page.offset());
List<Dict> dicts = dictMapper.findAll(criteria);
Long total = dictMapper.countAll(criteria);
return PageUtil.toPage(dicts,total);
IPage<Dict> dicts = dictMapper.findAll(criteria, page);
return PageUtil.toPage(dicts);
}
@Override

View File

@ -17,6 +17,7 @@ package me.zhengjie.modules.system.service.impl;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.collection.CollectionUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
@ -71,10 +72,8 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
@Override
public PageResult<Role> queryAll(RoleQueryCriteria criteria, Page<Object> page) {
criteria.setOffset(page.offset());
List<Role> roles = roleMapper.findAll(criteria);
Long total = roleMapper.countAll(criteria);
return PageUtil.toPage(roles, total);
IPage<Role> roles = roleMapper.findAll(criteria, page);
return PageUtil.toPage(roles);
}
@Override

View File

@ -15,6 +15,7 @@
*/
package me.zhengjie.modules.system.service.impl;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import lombok.RequiredArgsConstructor;
@ -63,10 +64,8 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
@Override
public PageResult<User> queryAll(UserQueryCriteria criteria, Page<Object> page) {
criteria.setOffset(page.offset());
List<User> users = userMapper.findAll(criteria);
Long total = userMapper.countAll(criteria);
return PageUtil.toPage(users, total);
IPage<User> users = userMapper.findAll(criteria, page);
return PageUtil.toPage(users);
}
@Override

View File

@ -25,35 +25,19 @@
dd.detail_id as dd_id, dd.label, dd.`value`, dd.create_time as dd_create_time
</sql>
<sql id="Where_sql">
<select id="findAll" resultMap="BaseResultMap">
SELECT <include refid="Base_Column_List"/>,
<include refid="Dict_Details_Column_List"/>
from sys_dict d
left join sys_dict_detail dd on d.dict_id = dd.dict_id
<where>
<if test="criteria.blurry != null and criteria.blurry != ''">
and (
d.name like concat('%', #{criteria.blurry}, '%')
or d.description like concat('%', #{criteria.blurry}, '%')
d.name like concat('%', #{criteria.blurry}, '%')
or d.description like concat('%', #{criteria.blurry}, '%')
)
</if>
</where>
</sql>
<select id="findAll" resultMap="BaseResultMap">
SELECT d.*,
<include refid="Dict_Details_Column_List"/>
from (
select <include refid="Base_Column_List"/>
from sys_dict d
<include refid="Where_sql"/>
<if test="criteria.offset != null">
limit #{criteria.offset}, #{criteria.size}
</if>
) d
left join sys_dict_detail dd on d.dict_id = dd.dict_id
order by d.dict_id desc
</select>
<select id="countAll" resultType="java.lang.Long">
select count(*)
from sys_dict d
<include refid="Where_sql"/>
</select>
</mapper>

View File

@ -36,7 +36,21 @@
dept.dept_id as dept_id, dept.name as dept_name
</sql>
<sql id="Where_sql">
<select id="queryAll" resultType="me.zhengjie.modules.system.domain.Role">
select role_id as id, name, level
from sys_role order by level
</select>
<select id="findAll" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>,
<include refid="Dept_Column_List"/>,
<include refid="Menu_Column_List"/>
from sys_role role
left join sys_roles_menus srm on role.role_id = srm.role_id
left join sys_menu menu on menu.menu_id = srm.menu_id
left join sys_roles_depts srd on role.role_id = srd.role_id
left join sys_dept dept on dept.dept_id = srd.dept_id
<where>
<if test="criteria.blurry != null and criteria.blurry != ''">
and (
@ -48,37 +62,7 @@
and role.create_time between #{criteria.createTime[0]} and #{criteria.createTime[1]}
</if>
</where>
</sql>
<select id="queryAll" resultType="me.zhengjie.modules.system.domain.Role">
select role_id as id, name, level
from sys_role order by level
</select>
<select id="findAll" resultMap="BaseResultMap">
select role.*,
<include refid="Dept_Column_List"/>,
<include refid="Menu_Column_List"/>
from (
select
<include refid="Base_Column_List"/>
from sys_role role
<include refid="Where_sql"/>
<if test="criteria.offset != null">
limit #{criteria.offset}, #{criteria.size}
</if>
) role
left join sys_roles_menus srm on role.role_role_id = srm.role_id
left join sys_menu menu on menu.menu_id = srm.menu_id
left join sys_roles_depts srd on role.role_role_id = srd.role_id
left join sys_dept dept on dept.dept_id = srd.dept_id
order by role.role_level
</select>
<select id="countAll" resultType="java.lang.Long">
select count(*)
from sys_role role
<include refid="Where_sql"/>
order by role.level
</select>
<select id="findByName" resultType="me.zhengjie.modules.system.domain.Role">

View File

@ -52,7 +52,17 @@
r.role_id as role_id, r.name as role_name, r.level as role_level, r.data_scope as role_data_scope
</sql>
<sql id="Whrer_Sql">
<select id="findAll" resultMap="BaseResultMap">
select
<include refid="Base_Column_List"/>,
<include refid="Job_Column_List"/>,
<include refid="Role_Column_List"/>
from sys_user u
left join sys_dept d on u.dept_id = d.dept_id
left join sys_users_jobs suj on u.user_id = suj.user_id
left join sys_job j on suj.job_id = j.job_id
left join sys_users_roles sur on u.user_id = sur.user_id
left join sys_role r on sur.role_id = r.role_id
<where>
<if test="criteria.id != null">
and u.user_id = #{criteria.id}
@ -77,34 +87,7 @@
and u.create_time between #{criteria.createTime[0]} and #{criteria.createTime[1]}
</if>
</where>
</sql>
<select id="findAll" resultMap="BaseResultMap">
select u.*,
<include refid="Job_Column_List"/>,
<include refid="Role_Column_List"/>
from (
select
<include refid="Base_Column_List"/>
from sys_user u
left join sys_dept d on u.dept_id = d.dept_id
<include refid="Whrer_Sql"/>
<if test="criteria.offset != null">
order by u.user_id desc
limit #{criteria.offset}, #{criteria.size}
</if>
) u
left join sys_users_jobs suj on u.user_user_id = suj.user_id
left join sys_job j on suj.job_id = j.job_id
left join sys_users_roles sur on u.user_user_id = sur.user_id
left join sys_role r on sur.role_id = r.role_id
order by u.user_user_id desc
</select>
<select id="countAll" resultType="java.lang.Long">
select count(*)
from sys_user u
<include refid="Whrer_Sql"/>
order by u.user_id desc
</select>
<select id="findByUsername" resultMap="BaseResultMap">