refactor(system): 优化用户查询功能并调整部门相关代码
- 移除了Dept实体中的members字段 - 删除了DeptMapper.xml中的members相关映射 - 移除了DeptTree类 - 更新了gateway.sql和sys_user.sql以添加用户数据 - 优化了UserController中的用户查询方法,支持按部门ID查询 - 更新了UserMapper.xml以适应新的查询逻辑 - 调整了UserQuery类,使用部门ID列表替代单个部门ID
This commit is contained in:
parent
d706e56451
commit
c7ae0385a0
@ -3,28 +3,28 @@ package com.zsc.edu.gateway.modules.system.controller;
|
|||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||||
|
import com.sun.source.tree.Tree;
|
||||||
import com.zsc.edu.gateway.framework.mybatisplus.DataPermission;
|
import com.zsc.edu.gateway.framework.mybatisplus.DataPermission;
|
||||||
import com.zsc.edu.gateway.framework.security.UserDetailsImpl;
|
import com.zsc.edu.gateway.framework.security.UserDetailsImpl;
|
||||||
import com.zsc.edu.gateway.modules.system.dto.UserCreateDto;
|
import com.zsc.edu.gateway.modules.system.dto.UserCreateDto;
|
||||||
import com.zsc.edu.gateway.modules.system.dto.UserSelfUpdateDto;
|
import com.zsc.edu.gateway.modules.system.dto.UserSelfUpdateDto;
|
||||||
import com.zsc.edu.gateway.modules.system.dto.UserSelfUpdatePasswordDto;
|
import com.zsc.edu.gateway.modules.system.dto.UserSelfUpdatePasswordDto;
|
||||||
import com.zsc.edu.gateway.modules.system.dto.UserUpdateDto;
|
import com.zsc.edu.gateway.modules.system.dto.UserUpdateDto;
|
||||||
import com.zsc.edu.gateway.modules.system.entity.Authority;
|
import com.zsc.edu.gateway.modules.system.entity.*;
|
||||||
import com.zsc.edu.gateway.modules.system.entity.Menu;
|
|
||||||
import com.zsc.edu.gateway.modules.system.entity.Role;
|
|
||||||
import com.zsc.edu.gateway.modules.system.entity.User;
|
|
||||||
import com.zsc.edu.gateway.modules.system.query.UserQuery;
|
import com.zsc.edu.gateway.modules.system.query.UserQuery;
|
||||||
import com.zsc.edu.gateway.modules.system.service.*;
|
import com.zsc.edu.gateway.modules.system.service.*;
|
||||||
import com.zsc.edu.gateway.modules.system.utils.TreeUtil;
|
import com.zsc.edu.gateway.modules.system.utils.TreeUtil;
|
||||||
import com.zsc.edu.gateway.modules.system.vo.MenuVo;
|
import com.zsc.edu.gateway.modules.system.vo.MenuVo;
|
||||||
import com.zsc.edu.gateway.modules.system.vo.UserDetail;
|
import com.zsc.edu.gateway.modules.system.vo.UserDetail;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.Data;
|
||||||
import org.springframework.security.access.prepost.PreAuthorize;
|
import org.springframework.security.access.prepost.PreAuthorize;
|
||||||
import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
||||||
import org.springframework.security.web.csrf.CsrfToken;
|
import org.springframework.security.web.csrf.CsrfToken;
|
||||||
import org.springframework.web.bind.annotation.*;
|
import org.springframework.web.bind.annotation.*;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户Controller
|
* 用户Controller
|
||||||
@ -119,10 +119,14 @@ public class UserController {
|
|||||||
* @param page 分页
|
* @param page 分页
|
||||||
* @return 分页用户信息
|
* @return 分页用户信息
|
||||||
*/
|
*/
|
||||||
@DataPermission
|
@GetMapping()
|
||||||
@GetMapping
|
|
||||||
@PreAuthorize("hasAuthority('system:user:query')")
|
@PreAuthorize("hasAuthority('system:user:query')")
|
||||||
public Page<User> query(UserQuery query, Page<User> page) {
|
public Page<User> query(Long deptId, UserQuery query, Page<User> page) {
|
||||||
|
if (deptId != null) {
|
||||||
|
List<Dept> deptList = TreeUtil.flat(deptService.listTree(deptId), Dept::getChildren, d -> d.setChildren(null));
|
||||||
|
List<Long> deptIds = deptList.stream().map(Dept::getId).collect(Collectors.toList());
|
||||||
|
query.setDeptIds(deptIds);
|
||||||
|
}
|
||||||
return service.page(page, query.wrapper());
|
return service.page(page, query.wrapper());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +48,4 @@ public class Dept extends BaseEntity {
|
|||||||
@TableField(exist = false)
|
@TableField(exist = false)
|
||||||
public List<Dept> children = null;
|
public List<Dept> children = null;
|
||||||
|
|
||||||
@TableField(exist = false)
|
|
||||||
public List<UserVo> members = null;
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,12 +1,14 @@
|
|||||||
package com.zsc.edu.gateway.modules.system.query;
|
package com.zsc.edu.gateway.modules.system.query;
|
||||||
|
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
|
import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
||||||
import com.zsc.edu.gateway.modules.system.entity.User;
|
import com.zsc.edu.gateway.modules.system.entity.User;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
import org.springframework.util.StringUtils;
|
import org.springframework.util.StringUtils;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
import java.util.Objects;
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -48,7 +50,9 @@ public class UserQuery {
|
|||||||
/**
|
/**
|
||||||
* 部门集合
|
* 部门集合
|
||||||
*/
|
*/
|
||||||
public Long deptId;
|
public List<Long> deptIds;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public LambdaQueryWrapper<User> wrapper() {
|
public LambdaQueryWrapper<User> wrapper() {
|
||||||
@ -57,7 +61,7 @@ public class UserQuery {
|
|||||||
queryWrapper.eq(StringUtils.hasText(this.phone), User::getPhone, this.phone);
|
queryWrapper.eq(StringUtils.hasText(this.phone), User::getPhone, this.phone);
|
||||||
queryWrapper.eq(StringUtils.hasText(this.email), User::getEmail, this.email);
|
queryWrapper.eq(StringUtils.hasText(this.email), User::getEmail, this.email);
|
||||||
queryWrapper.eq(Objects.nonNull(this.enableState), User::getEnableState, this.enableState);
|
queryWrapper.eq(Objects.nonNull(this.enableState), User::getEnableState, this.enableState);
|
||||||
queryWrapper.eq(Objects.nonNull(this.deptId),User::getDeptId,this.deptId);
|
queryWrapper.in(CollectionUtils.isNotEmpty(this.deptIds), User::getDeptId, this.deptIds);
|
||||||
queryWrapper.eq(Objects.nonNull(this.roleId),User::getRoleId,this.roleId);
|
queryWrapper.eq(Objects.nonNull(this.roleId),User::getRoleId,this.roleId);
|
||||||
return queryWrapper;
|
return queryWrapper;
|
||||||
}
|
}
|
||||||
|
@ -1,25 +0,0 @@
|
|||||||
package com.zsc.edu.gateway.modules.system.vo;
|
|
||||||
|
|
||||||
import com.fasterxml.jackson.annotation.JsonIgnore;
|
|
||||||
import com.zsc.edu.gateway.modules.system.entity.User;
|
|
||||||
import lombok.AllArgsConstructor;
|
|
||||||
import lombok.Data;
|
|
||||||
import lombok.NoArgsConstructor;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @author zhuang
|
|
||||||
*/
|
|
||||||
@Data
|
|
||||||
@AllArgsConstructor
|
|
||||||
@NoArgsConstructor
|
|
||||||
public class DeptTree {
|
|
||||||
|
|
||||||
private Long id;
|
|
||||||
private Long pid;
|
|
||||||
private String name;
|
|
||||||
List<DeptTree> children = new ArrayList<>();
|
|
||||||
List<UserVo> members = new ArrayList<>();
|
|
||||||
}
|
|
@ -754,3 +754,15 @@ comment on column sys_user.enable_state is '状态';
|
|||||||
alter table sys_user
|
alter table sys_user
|
||||||
owner to gitea;
|
owner to gitea;
|
||||||
|
|
||||||
|
INSERT INTO sys_user (dept_id, role_id, username, password, phone, email, name, avatar, address, create_by, update_by,
|
||||||
|
create_time, update_time, remark, enable_state, create_id)
|
||||||
|
VALUES (1, 1, 'user1', 'password1', '13800138000', 'user1@example.com', '张三', 'avatar1.jpg', '北京市', 'admin',
|
||||||
|
'admin', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, '备注1', '启用', 1),
|
||||||
|
(2, 2, 'user2', 'password2', '13800138001', 'user2@example.com', '李四', 'avatar2.jpg', '上海市', 'admin',
|
||||||
|
'admin', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, '备注2', '启用', 2),
|
||||||
|
(3, 3, 'user3', 'password3', '13800138002', 'user3@example.com', '王五', 'avatar3.jpg', '广州市', 'admin',
|
||||||
|
'admin', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, '备注3', '禁用', 3),
|
||||||
|
(4, 4, 'user4', 'password4', '13800138003', 'user4@example.com', '赵六', 'avatar4.jpg', '深圳市', 'admin',
|
||||||
|
'admin', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, '备注4', '启用', 4),
|
||||||
|
(5, 5, 'user5', 'password5', '13800138004', 'user5@example.com', '孙七', 'avatar5.jpg', '杭州市', 'admin',
|
||||||
|
'admin', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, '备注5', '启用', 5);
|
||||||
|
@ -1,5 +1,8 @@
|
|||||||
create table sys_user
|
create table sys_user
|
||||||
(
|
(
|
||||||
|
id bigserial
|
||||||
|
constraint _copy_3
|
||||||
|
primary key,
|
||||||
dept_id bigint,
|
dept_id bigint,
|
||||||
role_id bigint,
|
role_id bigint,
|
||||||
username varchar(20) not null,
|
username varchar(20) not null,
|
||||||
@ -15,8 +18,7 @@ create table sys_user
|
|||||||
update_time timestamp(6),
|
update_time timestamp(6),
|
||||||
remark varchar(255),
|
remark varchar(255),
|
||||||
enable_state varchar(5),
|
enable_state varchar(5),
|
||||||
id bigint not null
|
create_id bigint
|
||||||
primary key
|
|
||||||
);
|
);
|
||||||
|
|
||||||
comment
|
comment
|
||||||
@ -55,14 +57,13 @@ on column sys_user.update_by is '更新者';
|
|||||||
comment
|
comment
|
||||||
on column sys_user.enable_state is '状态';
|
on column sys_user.enable_state is '状态';
|
||||||
|
|
||||||
alter table sys_user
|
comment
|
||||||
owner to gitea;
|
on column sys_user.create_id is '创建者ID';
|
||||||
|
|
||||||
_user
|
|
||||||
.
|
|
||||||
enable_state
|
|
||||||
is '状态';
|
|
||||||
|
|
||||||
alter table sys_user
|
alter table sys_user
|
||||||
owner to gitea;
|
owner to gitea;
|
||||||
|
|
||||||
|
lter
|
||||||
|
table sys_user
|
||||||
|
owner to gitea;
|
||||||
|
|
||||||
|
@ -9,26 +9,10 @@
|
|||||||
<result column="name" property="name"/>
|
<result column="name" property="name"/>
|
||||||
<result column="dept_sort" property="deptSort"/>
|
<result column="dept_sort" property="deptSort"/>
|
||||||
<result column="remark" property="remark"/>
|
<result column="remark" property="remark"/>
|
||||||
<collection
|
|
||||||
property="members"
|
|
||||||
ofType="com.zsc.edu.gateway.modules.system.vo.UserVo"
|
|
||||||
autoMapping="true"
|
|
||||||
columnPrefix="members_"
|
|
||||||
>
|
|
||||||
<id column="id" jdbcType="BIGINT" property="userId"/>
|
|
||||||
<result column="username" jdbcType="VARCHAR" property="username"/>
|
|
||||||
<result column="email" jdbcType="VARCHAR" property="email"/>
|
|
||||||
<result column="phone" jdbcType="VARCHAR" property="phone"/>
|
|
||||||
</collection>
|
|
||||||
</resultMap>
|
</resultMap>
|
||||||
|
|
||||||
<select id="selectDeptTree" resultMap="deptMap">
|
<select id="selectDeptTree" resultMap="deptMap">
|
||||||
SELECT sd.*,
|
SELECT *
|
||||||
su.id as members_id,
|
FROM sys_dept
|
||||||
su.username as members_username,
|
|
||||||
su.email as members_email,
|
|
||||||
su.phone as members_phone
|
|
||||||
FROM sys_dept sd
|
|
||||||
left join sys_user su on sd.id = su.dept_id
|
|
||||||
</select>
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
|
@ -49,9 +49,8 @@
|
|||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="page" resultType="com.zsc.edu.gateway.modules.system.vo.UserVo" resultMap="UserVoMap">
|
<select id="page" resultType="com.zsc.edu.gateway.modules.system.vo.UserVo" resultMap="UserVoMap">
|
||||||
select
|
select su.*
|
||||||
*
|
from sys_user su
|
||||||
from sys_user
|
|
||||||
${ew.customSqlSegment}
|
${ew.customSqlSegment}
|
||||||
</select>
|
</select>
|
||||||
<select id="detail" resultType="com.zsc.edu.gateway.modules.system.vo.UserVo" resultMap="UserVoMap">
|
<select id="detail" resultType="com.zsc.edu.gateway.modules.system.vo.UserVo" resultMap="UserVoMap">
|
||||||
|
Loading…
Reference in New Issue
Block a user