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:
zhuangtianxiang 2025-01-24 18:29:33 +08:00
parent d706e56451
commit c7ae0385a0
8 changed files with 43 additions and 67 deletions

View File

@ -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.QueryWrapper;
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.security.UserDetailsImpl;
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.UserSelfUpdatePasswordDto;
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.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.entity.*;
import com.zsc.edu.gateway.modules.system.query.UserQuery;
import com.zsc.edu.gateway.modules.system.service.*;
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.UserDetail;
import lombok.AllArgsConstructor;
import lombok.Data;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.security.web.csrf.CsrfToken;
import org.springframework.web.bind.annotation.*;
import java.util.*;
import java.util.stream.Collectors;
/**
* 用户Controller
@ -119,10 +119,14 @@ public class UserController {
* @param page 分页
* @return 分页用户信息
*/
@DataPermission
@GetMapping
@GetMapping()
@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());
}

View File

@ -48,7 +48,4 @@ public class Dept extends BaseEntity {
@TableField(exist = false)
public List<Dept> children = null;
@TableField(exist = false)
public List<UserVo> members = null;
}

View File

@ -1,12 +1,14 @@
package com.zsc.edu.gateway.modules.system.query;
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 lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.util.StringUtils;
import java.util.List;
import java.util.Objects;
/**
@ -48,7 +50,9 @@ public class UserQuery {
/**
* 部门集合
*/
public Long deptId;
public List<Long> deptIds;
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.email), User::getEmail, this.email);
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);
return queryWrapper;
}

View File

@ -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<>();
}

View File

@ -754,3 +754,15 @@ comment on column sys_user.enable_state is '状态';
alter table sys_user
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);

View File

@ -1,5 +1,8 @@
create table sys_user
(
id bigserial
constraint _copy_3
primary key,
dept_id bigint,
role_id bigint,
username varchar(20) not null,
@ -15,8 +18,7 @@ create table sys_user
update_time timestamp(6),
remark varchar(255),
enable_state varchar(5),
id bigint not null
primary key
create_id bigint
);
comment
@ -55,14 +57,13 @@ on column sys_user.update_by is '更新者';
comment
on column sys_user.enable_state is '状态';
alter table sys_user
owner to gitea;
_user
.
enable_state
is '状态';
comment
on column sys_user.create_id is '创建者ID';
alter table sys_user
owner to gitea;
lter
table sys_user
owner to gitea;

View File

@ -9,26 +9,10 @@
<result column="name" property="name"/>
<result column="dept_sort" property="deptSort"/>
<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>
<select id="selectDeptTree" resultMap="deptMap">
SELECT sd.*,
su.id as members_id,
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 *
FROM sys_dept
</select>
</mapper>

View File

@ -49,9 +49,8 @@
</select>
<select id="page" resultType="com.zsc.edu.gateway.modules.system.vo.UserVo" resultMap="UserVoMap">
select
*
from sys_user
select su.*
from sys_user su
${ew.customSqlSegment}
</select>
<select id="detail" resultType="com.zsc.edu.gateway.modules.system.vo.UserVo" resultMap="UserVoMap">