feat: 系统菜单连表查询用户完成

This commit is contained in:
bunny 2024-10-31 09:06:27 +08:00
parent 5ebff699a2
commit bdff8f7906
20 changed files with 108 additions and 104 deletions

View File

@ -13,12 +13,6 @@ import lombok.NoArgsConstructor;
@Schema(name = "DeptDto对象", title = "部门", description = "部门管理")
public class DeptDto {
@Schema(name = "parentId", title = "父级id")
private String parentId;
@Schema(name = "managerId", title = "管理者id")
private String managerId;
@Schema(name = "deptName", title = "部门名称")
private String deptName;

View File

@ -1,6 +1,6 @@
package cn.bunny.dao.view;
import cn.bunny.dao.common.entity.BaseEntity;
import cn.bunny.dao.common.entity.BaseUserEntity;
import com.baomidou.mybatisplus.annotation.TableName;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
@ -20,7 +20,7 @@ import lombok.experimental.Accessors;
@Accessors(chain = true)
@TableName("sys_user")
@Schema(name = "AdminUserAndDept对象", title = "用户信息和部门Id", description = "用户信息和部门Id")
public class ViewUserDept extends BaseEntity {
public class ViewUserDept extends BaseUserEntity {
@Schema(name = "username", title = "用户名")
private String username;

View File

@ -1,24 +1,22 @@
package cn.bunny.dao.vo.system;
import cn.bunny.dao.common.vo.BaseVo;
import cn.bunny.dao.common.vo.BaseUserVo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
import java.util.List;
@EqualsAndHashCode(callSuper = true)
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
@Schema(name = "DeptVo对象", title = "部门", description = "部门管理")
public class DeptVo extends BaseVo {
public class DeptVo extends BaseUserVo {
@Schema(name = "parentId", title = "父级id")
private String parentId;
@Schema(name = "manager", title = "管理者")
private List<String> manager;
private String manager;
@Schema(name = "deptName", title = "部门名称")
private String deptName;

View File

@ -1,6 +1,6 @@
package cn.bunny.dao.vo.system.rolePower;
import cn.bunny.dao.common.vo.BaseVo;
import cn.bunny.dao.common.vo.BaseUserVo;
import com.alibaba.fastjson2.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
@ -15,7 +15,7 @@ import java.util.List;
@NoArgsConstructor
@Builder
@Schema(name = "PowerVo对象", title = "权限", description = "权限管理")
public class PowerVo extends BaseVo {
public class PowerVo extends BaseUserVo {
@Schema(name = "parentId", title = "父级id")
@JsonFormat(shape = JsonFormat.Shape.STRING)

View File

@ -1,6 +1,6 @@
package cn.bunny.dao.vo.system.rolePower;
import cn.bunny.dao.common.vo.BaseVo;
import cn.bunny.dao.common.vo.BaseUserVo;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.*;
@ -10,7 +10,7 @@ import lombok.*;
@NoArgsConstructor
@Builder
@Schema(name = "RoleVo对象", title = "角色", description = "角色管理")
public class RoleVo extends BaseVo {
public class RoleVo extends BaseUserVo {
@Schema(name = "roleCode", title = "角色代码")
private String roleCode;

View File

@ -1,6 +1,6 @@
package cn.bunny.dao.vo.system.router;
import cn.bunny.dao.common.vo.BaseVo;
import cn.bunny.dao.common.vo.BaseUserVo;
import com.alibaba.fastjson2.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonProperty;
@ -18,7 +18,7 @@ import java.util.List;
@NoArgsConstructor
@Builder
@ApiModel(value = "RouterControllerVo对象", description = "路由管理端返回对象")
public class RouterManageVo extends BaseVo {
public class RouterManageVo extends BaseUserVo {
@ApiModelProperty("父级id")
@JsonProperty("parentId")

View File

@ -1,6 +1,6 @@
package cn.bunny.dao.vo.system.user;
import cn.bunny.dao.common.vo.BaseVo;
import cn.bunny.dao.common.vo.BaseUserVo;
import com.alibaba.fastjson2.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
@ -13,7 +13,7 @@ import lombok.*;
@NoArgsConstructor
@Builder
@Schema(name = "AdminUserVo对象", title = "用户信息", description = "用户信息")
public class AdminUserVo extends BaseVo {
public class AdminUserVo extends BaseUserVo {
@Schema(name = "username", title = "用户名")
private String username;

View File

@ -2,6 +2,7 @@ package cn.bunny.services.mapper;
import cn.bunny.dao.dto.system.dept.DeptDto;
import cn.bunny.dao.entity.system.Dept;
import cn.bunny.dao.vo.system.DeptVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -28,7 +29,7 @@ public interface DeptMapper extends BaseMapper<Dept> {
* @param dto 部门查询表单
* @return 部门分页结果
*/
IPage<Dept> selectListByPage(@Param("page") Page<Dept> pageParams, @Param("dto") DeptDto dto);
IPage<DeptVo> selectListByPage(@Param("page") Page<Dept> pageParams, @Param("dto") DeptDto dto);
/**
* 物理删除部门

View File

@ -2,6 +2,7 @@ package cn.bunny.services.mapper;
import cn.bunny.dao.dto.system.rolePower.power.PowerDto;
import cn.bunny.dao.entity.system.Power;
import cn.bunny.dao.vo.system.rolePower.PowerVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -29,7 +30,7 @@ public interface PowerMapper extends BaseMapper<Power> {
* @param dto 权限查询表单
* @return 权限分页结果
*/
IPage<Power> selectListByPage(@Param("page") Page<Power> pageParams, @Param("dto") PowerDto dto);
IPage<PowerVo> selectListByPage(@Param("page") Page<Power> pageParams, @Param("dto") PowerDto dto);
/**
* 物理删除权限

View File

@ -2,6 +2,7 @@ package cn.bunny.services.mapper;
import cn.bunny.dao.dto.system.rolePower.role.RoleDto;
import cn.bunny.dao.entity.system.Role;
import cn.bunny.dao.vo.system.rolePower.RoleVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -29,7 +30,7 @@ public interface RoleMapper extends BaseMapper<Role> {
* @param dto 角色查询表单
* @return 角色分页结果
*/
IPage<Role> selectListByPage(@Param("page") Page<Role> pageParams, @Param("dto") RoleDto dto);
IPage<RoleVo> selectListByPage(@Param("page") Page<Role> pageParams, @Param("dto") RoleDto dto);
/**
* 物理删除角色

View File

@ -3,6 +3,7 @@ package cn.bunny.services.mapper;
import cn.bunny.dao.dto.system.router.RouterManageDto;
import cn.bunny.dao.entity.system.Router;
import cn.bunny.dao.vo.system.router.RouterManageVo;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -45,7 +46,15 @@ public interface RouterMapper extends BaseMapper<Router> {
* @param dto 路由查询表单
* @return 分页结果
*/
IPage<Router> selectListByPage(@Param("page") Page<Router> pageParams, @Param("dto") RouterManageDto dto);
IPage<RouterManageVo> selectListByPage(@Param("page") Page<Router> pageParams, @Param("dto") RouterManageDto dto);
/**
* * 管理菜单列表不分页
*
* @param dto 路由查询表单
* @return 分页结果
*/
List<RouterManageVo> selectAllList(@Param("dto") RouterManageDto dto);
/**
* * 物理删除路由菜单

View File

@ -21,7 +21,6 @@ import org.springframework.cache.annotation.Cacheable;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
@ -50,20 +49,10 @@ public class DeptServiceImpl extends ServiceImpl<DeptMapper, Dept> implements De
@Override
public PageResult<DeptVo> getDeptList(Page<Dept> pageParams, DeptDto dto) {
// 分页查询菜单图标
IPage<Dept> page = baseMapper.selectListByPage(pageParams, dto);
List<DeptVo> voList = page.getRecords().stream().map(dept -> {
// 将数据库中管理员取出
List<String> mangerList = Arrays.stream(dept.getManager().split(",")).map(String::trim).toList();
DeptVo deptVo = new DeptVo();
BeanUtils.copyProperties(dept, deptVo);
deptVo.setManager(mangerList);
return deptVo;
}).toList();
IPage<DeptVo> page = baseMapper.selectListByPage(pageParams, dto);
return PageResult.<DeptVo>builder()
.list(voList)
.list(page.getRecords())
.pageNo(page.getCurrent())
.pageSize(page.getSize())
.total(page.getTotal())

View File

@ -52,16 +52,10 @@ public class PowerServiceImpl extends ServiceImpl<PowerMapper, Power> implements
@Override
public PageResult<PowerVo> getPowerList(Page<Power> pageParams, PowerDto dto) {
// 分页查询菜单图标
IPage<Power> page = baseMapper.selectListByPage(pageParams, dto);
List<PowerVo> voList = page.getRecords().stream().map(Power -> {
PowerVo PowerVo = new PowerVo();
BeanUtils.copyProperties(Power, PowerVo);
return PowerVo;
}).toList();
IPage<PowerVo> page = baseMapper.selectListByPage(pageParams, dto);
return PageResult.<PowerVo>builder()
.list(voList)
.list(page.getRecords())
.pageNo(page.getCurrent())
.pageSize(page.getSize())
.total(page.getTotal())

View File

@ -61,16 +61,10 @@ public class RoleServiceImpl extends ServiceImpl<RoleMapper, Role> implements Ro
@Override
public PageResult<RoleVo> getRoleList(Page<Role> pageParams, RoleDto dto) {
// 分页查询菜单图标
IPage<Role> page = baseMapper.selectListByPage(pageParams, dto);
List<RoleVo> voList = page.getRecords().stream().map(Role -> {
RoleVo RoleVo = new RoleVo();
BeanUtils.copyProperties(Role, RoleVo);
return RoleVo;
}).toList();
IPage<RoleVo> page = baseMapper.selectListByPage(pageParams, dto);
return PageResult.<RoleVo>builder()
.list(voList)
.list(page.getRecords())
.pageNo(page.getCurrent())
.pageSize(page.getSize())
.total(page.getTotal())

View File

@ -22,7 +22,6 @@ import cn.bunny.services.mapper.RouterMapper;
import cn.bunny.services.mapper.RouterRoleMapper;
import cn.bunny.services.security.custom.CustomCheckIsAdmin;
import cn.bunny.services.service.RouterService;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@ -31,7 +30,6 @@ import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.StringUtils;
import java.util.*;
import java.util.stream.Collectors;
@ -170,15 +168,10 @@ public class RouterServiceImpl extends ServiceImpl<RouterMapper, Router> impleme
*/
@Override
public PageResult<RouterManageVo> getMenusByPage(Page<Router> pageParams, RouterManageDto dto) {
IPage<Router> page = baseMapper.selectListByPage(pageParams, dto);
IPage<RouterManageVo> page = baseMapper.selectListByPage(pageParams, dto);
// 构建返回对象
List<RouterManageVo> voList = page.getRecords().stream()
.map(router -> {
RouterManageVo routerManageVo = new RouterManageVo();
BeanUtils.copyProperties(router, routerManageVo);
return routerManageVo;
})
.sorted(Comparator.comparing(RouterManageVo::getRouterRank))
.toList();
@ -197,16 +190,8 @@ public class RouterServiceImpl extends ServiceImpl<RouterMapper, Router> impleme
*/
@Override
public List<RouterManageVo> getMenusList(RouterManageDto dto) {
LambdaQueryWrapper<Router> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.like(StringUtils.hasText(dto.getTitle()), Router::getTitle, dto.getTitle());
lambdaQueryWrapper.eq(dto.getVisible() != null, Router::getVisible, dto.getVisible());
return list(lambdaQueryWrapper).stream()
.map(router -> {
RouterManageVo routerManageVo = new RouterManageVo();
BeanUtils.copyProperties(router, routerManageVo);
return routerManageVo;
})
List<RouterManageVo> list = baseMapper.selectAllList(dto);
return list.stream()
.sorted(Comparator.comparing(RouterManageVo::getRouterRank))
.toList();
}

View File

@ -22,23 +22,23 @@
</sql>
<!-- 分页查询部门内容 -->
<select id="selectListByPage" resultType="cn.bunny.dao.entity.system.Dept">
<select id="selectListByPage" resultType="cn.bunny.dao.vo.system.DeptVo">
select
<include refid="Base_Column_List"/>
from sys_dept
dept.*,
create_user.username as create_username,
update_user.username as update_username
from sys_dept dept
left join sys_user create_user on create_user.id = dept.create_user
left join sys_user update_user on update_user.id = dept.update_user
<where>
is_deleted = 0
<if test="dto.parentId != null and dto.parentId != ''">
and parent_id like CONCAT('%',#{dto.parentId},'%')
</if>
dept.is_deleted = 0
<if test="dto.deptName != null and dto.deptName != ''">
and dept_name like CONCAT('%',#{dto.deptName},'%')
and dept.dept_name like CONCAT('%',#{dto.deptName},'%')
</if>
<if test="dto.summary != null and dto.summary != ''">
and summary like CONCAT('%',#{dto.summary},'%')
and dept.summary like CONCAT('%',#{dto.summary},'%')
</if>
</where>
order by update_time
</select>
<!-- 物理删除部门 -->

View File

@ -22,23 +22,26 @@
</sql>
<!-- 分页查询权限内容 -->
<select id="selectListByPage" resultType="cn.bunny.dao.entity.system.Power">
<select id="selectListByPage" resultType="cn.bunny.dao.vo.system.rolePower.PowerVo">
select
<include refid="Base_Column_List"/>
from sys_power
power.*,
create_user.username as create_username,
update_user.username as update_username
from sys_power power
left join sys_user create_user on create_user.id = power.create_user
left join sys_user update_user on update_user.id = power.update_user
<where>
is_deleted = 0
power.is_deleted = 0
<if test="dto.powerCode != null and dto.powerCode != ''">
and power_code like CONCAT('%',#{dto.powerCode},'%')
and ppower.ower_code like CONCAT('%',#{dto.powerCode},'%')
</if>
<if test="dto.powerName != null and dto.powerName != ''">
and power_name like CONCAT('%',#{dto.powerName},'%')
and power.power_name like CONCAT('%',#{dto.powerName},'%')
</if>
<if test="dto.requestUrl != null and dto.requestUrl != ''">
and request_url like CONCAT('%',#{dto.requestUrl},'%')
and power.request_url like CONCAT('%',#{dto.requestUrl},'%')
</if>
</where>
order by update_time desc
</select>
<!-- 物理删除权限 -->

View File

@ -20,17 +20,21 @@
</sql>
<!-- 分页查询角色内容 -->
<select id="selectListByPage" resultType="cn.bunny.dao.entity.system.Role">
<select id="selectListByPage" resultType="cn.bunny.dao.vo.system.rolePower.RoleVo">
select
<include refid="Base_Column_List"/>
from sys_role
role.*,
create_user.username as create_username,
update_user.username as update_username
from sys_role role
left join sys_user create_user on create_user.id = role.create_user
left join sys_user update_user on update_user.id = role.update_user
<where>
is_deleted = 0
role.is_deleted = 0
<if test="dto.roleCode != null and dto.roleCode != ''">
and role_code like CONCAT('%',#{dto.roleCode},'%')
and role.role_code like CONCAT('%',#{dto.roleCode},'%')
</if>
<if test="dto.description != null and dto.description != ''">
and description like CONCAT('%',#{dto.description},'%')
and role.description like CONCAT('%',#{dto.description},'%')
</if>
</where>
</select>

View File

@ -66,16 +66,41 @@
</select>
<!-- 管理菜单列表 -->
<select id="selectListByPage" resultType="cn.bunny.dao.entity.system.Router">
select *
from sys_router
<select id="selectListByPage" resultType="cn.bunny.dao.vo.system.router.RouterManageVo">
select
router.*,
create_user.username as create_username,
update_user.username as update_username
from sys_router router
left join sys_user create_user on create_user.id = router.create_user
left join sys_user update_user on update_user.id = router.update_user
<where>
is_deleted = 0
role.is_deleted = 0
<if test="dto.title != null and dto.title != ''">
and title like CONCAT('%',#{dto.title},'%')
and router.title like CONCAT('%',#{dto.title},'%')
</if>
<if test="dto.visible != null">
and visible = #{dto.visible}
and router.visible = #{dto.visible}
</if>
</where>
</select>
<!-- 管理菜单列表不分页 -->
<select id="selectAllList" resultType="cn.bunny.dao.vo.system.router.RouterManageVo">
select
router.*,
create_user.username as create_username,
update_user.username as update_username
from sys_router router
left join sys_user create_user on create_user.id = router.create_user
left join sys_user update_user on update_user.id = router.update_user
<where>
router.is_deleted = 0
<if test="dto.title != null and dto.title != ''">
and router.title like CONCAT('%',#{dto.title},'%')
</if>
<if test="dto.visible != null">
and router.visible = #{dto.visible}
</if>
</where>
</select>

View File

@ -31,8 +31,14 @@
<!-- 分页查询用户信息内容 -->
<select id="selectListByPage" resultType="cn.bunny.dao.view.ViewUserDept">
select
user.*,user_dept.dept_id
from sys_user user left join sys_user_dept user_dept on user.id = user_dept.user_id
user.*,
user_dept.dept_id,
create_user.username as create_username,
update_user.username as update_username
from sys_user user
left join sys_user_dept user_dept on user.id = user_dept.user_id
left join sys_user create_user on create_user.id = user.create_user
left join sys_user update_user on update_user.id = user.update_user
<where>
user.is_deleted = 0
<if test="dto.username != null and dto.username != ''">