refactor: 优化用户、角色、字典分页查询
This commit is contained in:
parent
d0e4da214d
commit
902d862ee5
@ -16,7 +16,6 @@
|
||||
package me.zhengjie.modules.system.domain;
|
||||
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
@ -26,7 +25,6 @@ import me.zhengjie.base.BaseEntity;
|
||||
import javax.validation.constraints.NotBlank;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author Zheng Jie
|
||||
@ -42,10 +40,6 @@ public class Dict extends BaseEntity implements Serializable {
|
||||
@TableId(value = "dict_id", type = IdType.AUTO)
|
||||
private Long id;
|
||||
|
||||
@TableField(exist = false)
|
||||
@ApiModelProperty(value = "字典详情")
|
||||
private List<DictDetail> dictDetails;
|
||||
|
||||
@NotBlank
|
||||
@ApiModelProperty(value = "名称")
|
||||
private String name;
|
||||
|
@ -38,4 +38,7 @@ public class RoleQueryCriteria {
|
||||
|
||||
@ApiModelProperty(value = "每页数据量", example = "10")
|
||||
private Integer size = 10;
|
||||
|
||||
@ApiModelProperty(value = "偏移量", hidden = true)
|
||||
private long offset;
|
||||
}
|
||||
|
@ -53,4 +53,7 @@ public class UserQueryCriteria implements Serializable {
|
||||
|
||||
@ApiModelProperty(value = "每页数据量", example = "10")
|
||||
private Integer size = 10;
|
||||
|
||||
@ApiModelProperty(value = "偏移量", hidden = true)
|
||||
private long offset;
|
||||
}
|
||||
|
@ -35,9 +35,9 @@ public interface RoleMapper extends BaseMapper<Role> {
|
||||
|
||||
List<Role> queryAll();
|
||||
|
||||
List<Role> findAll(@Param("criteria") RoleQueryCriteria criteria);
|
||||
Long countAll(@Param("criteria") RoleQueryCriteria criteria);
|
||||
|
||||
IPage<Role> findAll(@Param("criteria") RoleQueryCriteria criteria, Page<Object> page);
|
||||
List<Role> findAll(@Param("criteria") RoleQueryCriteria criteria);
|
||||
|
||||
Role findById(@Param("roleId") Long roleId);
|
||||
|
||||
|
@ -34,6 +34,8 @@ import java.util.Set;
|
||||
@Mapper
|
||||
public interface UserMapper extends BaseMapper<User> {
|
||||
|
||||
Long countAll(@Param("criteria") UserQueryCriteria criteria);
|
||||
|
||||
List<User> findAll(@Param("criteria") UserQueryCriteria criteria);
|
||||
|
||||
IPage<User> findAll(@Param("criteria") UserQueryCriteria criteria, Page<Object> page);
|
||||
|
@ -44,6 +44,7 @@ public class DictServiceImpl extends ServiceImpl<DictMapper, Dict> implements Di
|
||||
private final DictMapper dictMapper;
|
||||
private final RedisUtils redisUtils;
|
||||
private final DictDetailMapper deleteDetail;
|
||||
private final DictDetailMapper dictDetailMapper;
|
||||
|
||||
@Override
|
||||
public PageResult<Dict> queryAll(DictQueryCriteria criteria, Page<Object> page){
|
||||
@ -91,8 +92,9 @@ public class DictServiceImpl extends ServiceImpl<DictMapper, Dict> implements Di
|
||||
public void download(List<Dict> dicts, HttpServletResponse response) throws IOException {
|
||||
List<Map<String, Object>> list = new ArrayList<>();
|
||||
for (Dict dict : dicts) {
|
||||
if(CollectionUtil.isNotEmpty(dict.getDictDetails())){
|
||||
for (DictDetail dictDetail : dict.getDictDetails()) {
|
||||
List<DictDetail> dictDetails = dictDetailMapper.findByDictName(dict.getName());
|
||||
if(CollectionUtil.isNotEmpty(dictDetails)){
|
||||
for (DictDetail dictDetail : dictDetails) {
|
||||
Map<String,Object> map = new LinkedHashMap<>();
|
||||
map.put("字典名称", dict.getName());
|
||||
map.put("字典描述", dict.getDescription());
|
||||
|
@ -17,7 +17,6 @@ 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;
|
||||
@ -70,8 +69,10 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
|
||||
|
||||
@Override
|
||||
public PageResult<Role> queryAll(RoleQueryCriteria criteria, Page<Object> page) {
|
||||
IPage<Role> roles = roleMapper.findAll(criteria, page);
|
||||
return PageUtil.toPage(roles);
|
||||
criteria.setOffset(page.offset());
|
||||
List<Role> roles = roleMapper.findAll(criteria);
|
||||
Long total = roleMapper.countAll(criteria);
|
||||
return PageUtil.toPage(roles, total);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -15,7 +15,6 @@
|
||||
*/
|
||||
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;
|
||||
@ -62,8 +61,10 @@ public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements Us
|
||||
|
||||
@Override
|
||||
public PageResult<User> queryAll(UserQueryCriteria criteria, Page<Object> page) {
|
||||
IPage<User> users = userMapper.findAll(criteria, page);
|
||||
return PageUtil.toPage(users);
|
||||
criteria.setOffset(page.offset());
|
||||
List<User> users = userMapper.findAll(criteria);
|
||||
Long total = userMapper.countAll(criteria);
|
||||
return PageUtil.toPage(users, total);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -9,27 +9,15 @@
|
||||
<result column="update_by" property="updateBy" jdbcType="VARCHAR"/>
|
||||
<result column="create_time" property="createTime" jdbcType="TIMESTAMP"/>
|
||||
<result column="update_time" property="updateTime" jdbcType="TIMESTAMP"/>
|
||||
<collection property="dictDetails" ofType="me.zhengjie.modules.system.domain.DictDetail">
|
||||
<id column="dd_id" property="id" jdbcType="BIGINT"/>
|
||||
<result column="label" property="label" jdbcType="VARCHAR"/>
|
||||
<result column="value" property="value" jdbcType="VARCHAR"/>
|
||||
<result column="dd_create_time" property="createTime" jdbcType="TIMESTAMP"/>
|
||||
</collection>
|
||||
</resultMap>
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
d.dict_id, d.name, d.description, d.create_by, d.update_by, d.create_time, d.update_time
|
||||
</sql>
|
||||
|
||||
<sql id="Dict_Details_Column_List">
|
||||
dd.detail_id as dd_id, dd.label, dd.`value`, dd.create_time as dd_create_time
|
||||
</sql>
|
||||
|
||||
<select id="findAll" resultMap="BaseResultMap">
|
||||
SELECT <include refid="Base_Column_List"/>,
|
||||
<include refid="Dict_Details_Column_List"/>
|
||||
SELECT <include refid="Base_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 (
|
||||
|
@ -36,21 +36,7 @@
|
||||
dept.dept_id as dept_id, dept.name as dept_name
|
||||
</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
|
||||
<sql id="Where_sql">
|
||||
<where>
|
||||
<if test="criteria.blurry != null and criteria.blurry != ''">
|
||||
and (
|
||||
@ -62,7 +48,38 @@
|
||||
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"/>
|
||||
order by role.level
|
||||
<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"/>
|
||||
</select>
|
||||
|
||||
<select id="findByName" resultType="me.zhengjie.modules.system.domain.Role">
|
||||
|
@ -36,7 +36,7 @@
|
||||
</resultMap>
|
||||
|
||||
<sql id="Base_Column_List">
|
||||
u.user_id as user_user_id, u.dept_id as user_dept_id, u.username as user_username,
|
||||
u.user_id as user_user_id, u.dept_id as user_dept_id, u.username as user_username,
|
||||
u.nick_name as user_nick_name, u.email as user_email, u.phone as user_phone,
|
||||
u.gender as user_gender, u.avatar_name as user_avatar_name, u.avatar_path as user_avatar_path,
|
||||
u.enabled as user_enabled, u.pwd_reset_time as user_pwd_reset_time, u.create_by as user_create_by,
|
||||
@ -52,17 +52,7 @@
|
||||
r.role_id as role_id, r.name as role_name, r.level as role_level, r.data_scope as role_data_scope
|
||||
</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
|
||||
<sql id="Whrer_Sql">
|
||||
<where>
|
||||
<if test="criteria.id != null">
|
||||
and u.user_id = #{criteria.id}
|
||||
@ -87,7 +77,34 @@
|
||||
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"/>
|
||||
order by u.user_id desc
|
||||
<if test="criteria.offset != null">
|
||||
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"/>
|
||||
</select>
|
||||
|
||||
<select id="findByUsername" resultMap="BaseResultMap">
|
||||
@ -158,4 +175,4 @@
|
||||
#{id}
|
||||
</foreach>
|
||||
</update>
|
||||
</mapper>
|
||||
</mapper>
|
Loading…
Reference in New Issue
Block a user