diff --git a/RMS/src/main/java/com/demo/controller/UserController.java b/RMS/src/main/java/com/demo/controller/UserController.java index 0c8f24f90d0909dc8a8cdfb163ed0f7700d7d551..5ff27b8c34123baa8b6e263b0fb31095a81e4539 100644 --- a/RMS/src/main/java/com/demo/controller/UserController.java +++ b/RMS/src/main/java/com/demo/controller/UserController.java @@ -2,19 +2,25 @@ package com.demo.controller; + +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.demo.mapper.DeptMapper; import com.demo.mapper.UserMapper; -import com.demo.pojo.DTO.DTODeptId; +import com.demo.pojo.DTO.DTOUserDept; +import com.demo.pojo.DTO.DTOUserPost; +import com.demo.pojo.DTO.DTOUserRole; +import com.demo.pojo.PO.UserRole; +import com.demo.pojo.VO.VODeptId; import com.demo.pojo.PO.Dept; import com.demo.pojo.PO.User; import com.demo.pojo.R; +import com.demo.pojo.VO.VOUser; import com.demo.service.UserService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; - import java.util.List; import java.util.stream.Collectors; -import java.util.stream.Stream; // 用户管理 @RestController @@ -27,36 +33,78 @@ public class UserController { private UserMapper userMapper; @Autowired private DeptMapper deptMapper; + // 获取左侧树状图,点击后拿到树状图点击的treePath,显示归属的人员 // 默认进去给个1就能显示全部 @GetMapping - public R getAllUser(){ - return new R(true,"",userMapper.selectAllUser()); + public R getAllUser(String treePath){ + // 拿到tree数字,查询树下的机构id + List user1 = userMapper.selectDeptTree("%"+treePath+"%"); + // 查询归属于以上机构id的人 + System.out.println(user1); + QueryWrapper wrapper = new QueryWrapper() + .in("dept_id", user1); + List userList = userMapper.selectList(wrapper) + .stream().map(m->{ + VOUser user = new VOUser(); + user.setId(m.getId()); + user.setUsername(m.getUsername()); + user.setName(m.getName()); + user.setPhone(m.getPhone()); + user.setStatus(m.getStatus()); + user.setCreateTime(m.getCreateTime()); + // 调岗位表一一对应 + List getPost = getPost(); + getPost.stream().filter(m2-> m2.getId().equals(m.getPostId())).forEach(m2->{ + user.setPost(m2.getName()); + }); + List getRole = getRole(); + getRole.stream().filter(m2-> m2.getUserId().equals(m.getId())).forEach(m2->{ + user.setRole(m2.getRoleName()); + }); + List getDept = getDept(); + getDept.stream().filter(m2-> m2.getId().equals(m.getDeptId())).forEach(m2->{ + user.setDept(m2.getDeptName()); + }); + return user; + }).collect(Collectors.toList()); + return new R(true,"",userList); } - @GetMapping(value = "/getPost") - public R getPost(){ - return new R(true,"",userMapper.selectAllPost()); + + // 这几个是中间查询方法 + public List getPost(){ + return userMapper.selectAllPost(); } @GetMapping(value = "/getRole") - public R getRole(){ - return new R(true,"",userMapper.selectAllRole()); + public List getRole(){ + return userMapper.selectAllUserRoleAndRole(); + } + public List getDept(){ + return userMapper.selectAllDept(); } + // 模糊查询 @GetMapping(value = "/getLike") public R getLike(String need){ System.out.println(need); return new R(true,"",userMapper.selectLikeUser("%"+need+"%")); } - public List getDeptStream(List userList,List userid){ - List userid1= userid.stream().map(m->{ - DTODeptId dtoDeptId = new DTODeptId(); - dtoDeptId.setDeptId(m.getDeptId()); - return dtoDeptId; + + // 递归分层级 部门 + public List getDeptStream(List userList, List userid){ + List userid1= userid.stream().map(m->{ + VODeptId VODeptId = new VODeptId(); + VODeptId.setName(m.getName()); + VODeptId.setDeptId(m.getDeptId()); + VODeptId.setTreePath(m.getTreePath()); + return VODeptId; }).map(m->{ //拿到每个id再全部拿一次parentId进行对比 - List dtoDeptId3 = userList.stream().filter(m2->m2.getParentId().equals(m.getDeptId())).map(m2->{ - DTODeptId dtoDeptId2 = new DTODeptId(); - dtoDeptId2.setDeptId(m2.getId()); - return dtoDeptId2; + List VODeptId3 = userList.stream().filter(m2->m2.getParentId().equals(m.getDeptId())).map(m2->{ + VODeptId VODeptId2 = new VODeptId(); + VODeptId2.setDeptId(m2.getId()); + VODeptId2.setName(m2.getName()); + VODeptId2.setTreePath(m2.getTreePath()); + return VODeptId2; }).collect(Collectors.toList()); - m.setSonId(dtoDeptId3); + m.setSonId(VODeptId3); // System.out.println(m.getSonId().toArray().length); if (m.getSonId().toArray().length>0){ @@ -64,54 +112,52 @@ public class UserController { } return m; }).collect(Collectors.toList()); -// System.out.println(userid1); return userid1; } - - // 递归分层级 @GetMapping(value = "/get") - public R getByDept(Integer id){ + public R getByDept(){ //选择一次性拿出数据避免多次读取数据库费时间 List userList = deptMapper.selectList(null); - // 需要这个id去搜索他的下一层 - List userId = userList.stream().map(m->{ - DTODeptId dtoDeptId = new DTODeptId(); - dtoDeptId.setDeptId(m.getId()); - return dtoDeptId; + // 转中转类型 + List userId = userList.stream().map(m->{ + VODeptId VODeptId = new VODeptId(); + VODeptId.setDeptId(m.getId()); + VODeptId.setName(m.getName()); + VODeptId.setTreePath(m.getTreePath()); + return VODeptId; }).collect(Collectors.toList()); - List getUserId = getDeptStream(userList,userId); -// .map(m->{ -// //拿到每个id再全部拿一次parentId进行对比 -// List dtoDeptId3 = userList.stream().filter(m2->m2.getParentId().equals(m.getDeptId())).map(m2->{ -// DTODeptId dtoDeptId2 = new DTODeptId(); -// dtoDeptId2.setDeptId(m2.getId()); -// return dtoDeptId2; -// }).collect(Collectors.toList()); -// m.setSonId(dtoDeptId3); -// return m; -// }).collect(Collectors.toList()); -// System.out.println(userId); + List getUserId = getDeptStream(userList,userId.subList(0,1)); return new R(true,"",getUserId); } -//新增用户 + //新增用户 @PostMapping(value = "/addUser") public R addUser(@RequestBody User user){ return new R(true,"",userMapper.insert(user)); } -//修改用户信息 + //修改用户信息 @PutMapping(value = "putUser") public R putUser(@RequestBody User user){ return new R(true,"",userMapper.updateById(user)); } // 分配角色 - - + @PutMapping(value = "putUserRole") + public R putUserDept(@RequestBody User user){ + // 先用上面getRole拉取角色表做多选框选择 + // 用户id读取user_role联表role表格查到这个用户的角色信息 + List userRoleList = userMapper.selectUserRole(user.getId()); + return new R(true,"",userRoleList); + } + // 删除用户 + @DeleteMapping(value = "delUser") + public R delUser(@RequestBody User user){ + return new R(true,"",userMapper.deleteById(user.getId())); + } } diff --git a/RMS/src/main/java/com/demo/mapper/UserMapper.java b/RMS/src/main/java/com/demo/mapper/UserMapper.java index 27b3ed68d70771c2e3168146d5f9ab87b0b3b479..e478e9e6271af1b5efdd03051cb45c0780aa2263 100644 --- a/RMS/src/main/java/com/demo/mapper/UserMapper.java +++ b/RMS/src/main/java/com/demo/mapper/UserMapper.java @@ -1,11 +1,11 @@ package com.demo.mapper; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import com.demo.pojo.DTO.DTOUserDept; import com.demo.pojo.PO.User; -import com.demo.pojo.VO.VOUserPost; -import com.demo.pojo.VO.VOUserRole; -import org.apache.ibatis.annotations.Insert; +import com.demo.pojo.DTO.DTOUserPost; +import com.demo.pojo.DTO.DTOUserRole; +import com.demo.pojo.PO.UserRole; import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Select; @@ -16,10 +16,17 @@ public interface UserMapper extends BaseMapper { @Select("select * from sys_user") public List selectAllUser(); @Select("select id,name from sys_post") - public List selectAllPost(); - @Select("select id,role_name from sys_role") - public List selectAllRole(); + public List selectAllPost(); + @Select("select user_id,role_id,role_name from sys_user_role left join sys_role on sys_user_role.role_id = sys_role.id") + public List selectAllUserRoleAndRole(); + @Select("select * from sys_dept") + public List selectAllDept(); @Select("select * from sys_user where username like #{need} or name like #{need} or phone like #{need}") public List selectLikeUser(String need); - + @Select("select id from sys_dept where tree_path like #{treePath}") + public List selectDeptTree(String treePath); + @Select("select * from sys_user where sys_user.dept_id in (#{user2})") + public List selectUserList(String user2); + @Select("select * from sys_user_role left join sys_role on sys_user_role.role_id = sys_role.id where user_id = #{userId}") + public List selectUserRole(Integer userId); } diff --git a/RMS/src/main/java/com/demo/pojo/DTO/DTOUserDept.java b/RMS/src/main/java/com/demo/pojo/DTO/DTOUserDept.java new file mode 100644 index 0000000000000000000000000000000000000000..2510b212250e54288c33d85db0110f1266fee90c --- /dev/null +++ b/RMS/src/main/java/com/demo/pojo/DTO/DTOUserDept.java @@ -0,0 +1,30 @@ +package com.demo.pojo.DTO; + +import lombok.Data; + +@Data +public class DTOUserDept { + private Integer id; + private String deptName; + + public Integer getId() { + return id; + } + + public void setId(Integer id) { + this.id = id; + } + + public String getDeptName() { + return deptName; + } + + public void setDeptName(String deptName) { + this.deptName = deptName; + } + + public DTOUserDept(Integer id, String deptName) { + this.id = id; + this.deptName = deptName; + } +} diff --git a/RMS/src/main/java/com/demo/pojo/VO/VOUserPost.java b/RMS/src/main/java/com/demo/pojo/DTO/DTOUserPost.java similarity index 45% rename from RMS/src/main/java/com/demo/pojo/VO/VOUserPost.java rename to RMS/src/main/java/com/demo/pojo/DTO/DTOUserPost.java index 2a9aea67f4edabee71f78d05ecc433e2560f6287..f66c03f4651893cd7154b1e609b691bf03945286 100644 --- a/RMS/src/main/java/com/demo/pojo/VO/VOUserPost.java +++ b/RMS/src/main/java/com/demo/pojo/DTO/DTOUserPost.java @@ -1,6 +1,9 @@ -package com.demo.pojo.VO; +package com.demo.pojo.DTO; -public class VOUserPost { +import lombok.Data; + +@Data +public class DTOUserPost { private Integer id; private String name; @@ -12,8 +15,16 @@ public class VOUserPost { return name; } - public VOUserPost(Integer id, String name) { + public DTOUserPost(Integer id, String name) { this.id = id; this.name = name; } + + public void setId(Integer id) { + this.id = id; + } + + public void setName(String name) { + this.name = name; + } } diff --git a/RMS/src/main/java/com/demo/pojo/DTO/DTOUserRole.java b/RMS/src/main/java/com/demo/pojo/DTO/DTOUserRole.java new file mode 100644 index 0000000000000000000000000000000000000000..adce60969804f71075440d52017700499c559520 --- /dev/null +++ b/RMS/src/main/java/com/demo/pojo/DTO/DTOUserRole.java @@ -0,0 +1,41 @@ +package com.demo.pojo.DTO; + +import lombok.Data; +// 给用户管理中提供角色下拉框 +// 展示层 不提供set 创建时赋值 +@Data +public class DTOUserRole { + private Integer roleId; + private Integer userId; + private String roleName; + + public Integer getRoleId() { + return roleId; + } + + public void setRoleId(Integer roleId) { + this.roleId = roleId; + } + + public Integer getUserId() { + return userId; + } + + public void setUserId(Integer userId) { + this.userId = userId; + } + + public String getRoleName() { + return roleName; + } + + public void setRoleName(String roleName) { + this.roleName = roleName; + } + + public DTOUserRole(Integer roleId, Integer userId, String roleName) { + this.roleId = roleId; + this.userId = userId; + this.roleName = roleName; + } +} diff --git a/RMS/src/main/java/com/demo/pojo/DTO/DTODeptId.java b/RMS/src/main/java/com/demo/pojo/VO/VODeptId.java similarity index 36% rename from RMS/src/main/java/com/demo/pojo/DTO/DTODeptId.java rename to RMS/src/main/java/com/demo/pojo/VO/VODeptId.java index d2c932b279e2bd6228064849b9f3a90ebc3f273a..cd495a708f425167486230e9ec9f9586537db321 100644 --- a/RMS/src/main/java/com/demo/pojo/DTO/DTODeptId.java +++ b/RMS/src/main/java/com/demo/pojo/VO/VODeptId.java @@ -1,11 +1,13 @@ -package com.demo.pojo.DTO; +package com.demo.pojo.VO; import lombok.Data; import java.util.List; @Data -public class DTODeptId { +public class VODeptId { private int deptId; - private List sonId; + private String name; + private List sonId; + private String treePath; } diff --git a/RMS/src/main/java/com/demo/pojo/VO/VOUser.java b/RMS/src/main/java/com/demo/pojo/VO/VOUser.java new file mode 100644 index 0000000000000000000000000000000000000000..15aa34e94a95803850408a4796aa340456fe0738 --- /dev/null +++ b/RMS/src/main/java/com/demo/pojo/VO/VOUser.java @@ -0,0 +1,18 @@ +package com.demo.pojo.VO; + +import lombok.Data; + +import java.util.Date; + +@Data +public class VOUser { + private Integer id; + private String username; + private String name; + private String phone; + private String dept; // 部门 + private String post; //岗位 + private String role; // 角色 + private int status; // 状态码,1正常 0停用 + private Date createTime; +} diff --git a/RMS/src/main/java/com/demo/pojo/VO/VOUserRole.java b/RMS/src/main/java/com/demo/pojo/VO/VOUserRole.java deleted file mode 100644 index 190ee9a2a05faa453b359e07ef90f941c9dd55df..0000000000000000000000000000000000000000 --- a/RMS/src/main/java/com/demo/pojo/VO/VOUserRole.java +++ /dev/null @@ -1,23 +0,0 @@ -package com.demo.pojo.VO; - -import lombok.Data; -// 给用户管理中提供角色下拉框 -// 展示层 不提供set 创建时赋值 -@Data -public class VOUserRole { - private Integer id; - private String roleName; - - public Integer getId() { - return id; - } - - public String getRoleName() { - return roleName; - } - - public VOUserRole(Integer id, String roleName) { - this.id = id; - this.roleName = roleName; - } -}