mirror of
https://gitee.com/dromara/RuoYi-Cloud-Plus.git
synced 2025-11-28 01:00:05 +08:00
update 优化 为部门角色岗位用户增加一些常用查询方法
This commit is contained in:
@@ -1,5 +1,9 @@
|
|||||||
package org.dromara.system.api;
|
package org.dromara.system.api;
|
||||||
|
|
||||||
|
import org.dromara.system.api.domain.vo.RemoteDeptVo;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 部门服务
|
* 部门服务
|
||||||
*
|
*
|
||||||
@@ -15,4 +19,19 @@ public interface RemoteDeptService {
|
|||||||
*/
|
*/
|
||||||
String selectDeptNameByIds(String deptIds);
|
String selectDeptNameByIds(String deptIds);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据部门ID查询部门负责人
|
||||||
|
*
|
||||||
|
* @param deptId 部门ID,用于指定需要查询的部门
|
||||||
|
* @return 返回该部门的负责人ID
|
||||||
|
*/
|
||||||
|
Long selectDeptLeaderById(Long deptId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询部门
|
||||||
|
*
|
||||||
|
* @return 部门列表
|
||||||
|
*/
|
||||||
|
List<RemoteDeptVo> selectDeptsByList();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -131,4 +131,29 @@ public interface RemoteUserService {
|
|||||||
* @return 用户ids
|
* @return 用户ids
|
||||||
*/
|
*/
|
||||||
List<Long> selectUserIdsByRoleIds(List<Long> roleIds);
|
List<Long> selectUserIdsByRoleIds(List<Long> roleIds);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过角色ID查询用户
|
||||||
|
*
|
||||||
|
* @param roleIds 角色ids
|
||||||
|
* @return 用户
|
||||||
|
*/
|
||||||
|
List<RemoteUserVo> selectUsersByRoleIds(List<Long> roleIds);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过部门ID查询用户
|
||||||
|
*
|
||||||
|
* @param deptIds 部门ids
|
||||||
|
* @return 用户
|
||||||
|
*/
|
||||||
|
List<RemoteUserVo> selectUsersByDeptIds(List<Long> deptIds);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过岗位ID查询用户
|
||||||
|
*
|
||||||
|
* @param postIds 岗位ids
|
||||||
|
* @return 用户
|
||||||
|
*/
|
||||||
|
List<RemoteUserVo> selectUsersByPostIds(List<Long> postIds);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,37 @@
|
|||||||
|
package org.dromara.system.api.domain.vo;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
|
||||||
|
import java.io.Serial;
|
||||||
|
import java.io.Serializable;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 部门
|
||||||
|
*
|
||||||
|
* @author AprilWind
|
||||||
|
*/
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
public class RemoteDeptVo implements Serializable {
|
||||||
|
|
||||||
|
@Serial
|
||||||
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 部门ID
|
||||||
|
*/
|
||||||
|
private Long deptId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 父部门ID
|
||||||
|
*/
|
||||||
|
private Long parentId;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 部门名称
|
||||||
|
*/
|
||||||
|
private String deptName;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -121,4 +121,9 @@ public class PageQuery implements Serializable {
|
|||||||
return (pageNum - 1) * pageSize;
|
return (pageNum - 1) * pageSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public PageQuery(Integer pageSize, Integer pageNum) {
|
||||||
|
this.pageSize = pageSize;
|
||||||
|
this.pageNum = pageNum;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -88,6 +88,13 @@ public class LoginHelper {
|
|||||||
return Convert.toLong(getExtra(USER_KEY));
|
return Convert.toLong(getExtra(USER_KEY));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取用户id
|
||||||
|
*/
|
||||||
|
public static String getUserIdStr() {
|
||||||
|
return Convert.toStr(getExtra(USER_KEY));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取用户账户
|
* 获取用户账户
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,11 +1,16 @@
|
|||||||
package org.dromara.system.dubbo;
|
package org.dromara.system.dubbo;
|
||||||
|
|
||||||
import org.dromara.system.api.RemoteDeptService;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
import org.dromara.system.service.ISysDeptService;
|
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.dubbo.config.annotation.DubboService;
|
import org.apache.dubbo.config.annotation.DubboService;
|
||||||
|
import org.dromara.system.api.RemoteDeptService;
|
||||||
|
import org.dromara.system.api.domain.vo.RemoteDeptVo;
|
||||||
|
import org.dromara.system.domain.vo.SysDeptVo;
|
||||||
|
import org.dromara.system.service.ISysDeptService;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 部门服务
|
* 部门服务
|
||||||
*
|
*
|
||||||
@@ -28,4 +33,28 @@ public class RemoteDeptServiceImpl implements RemoteDeptService {
|
|||||||
public String selectDeptNameByIds(String deptIds) {
|
public String selectDeptNameByIds(String deptIds) {
|
||||||
return sysDeptService.selectDeptNameByIds(deptIds);
|
return sysDeptService.selectDeptNameByIds(deptIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据部门ID查询部门负责人
|
||||||
|
*
|
||||||
|
* @param deptId 部门ID,用于指定需要查询的部门
|
||||||
|
* @return 返回该部门的负责人ID
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Long selectDeptLeaderById(Long deptId) {
|
||||||
|
SysDeptVo vo = sysDeptService.selectDeptById(deptId);
|
||||||
|
return vo.getLeader();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询部门
|
||||||
|
*
|
||||||
|
* @return 部门列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<RemoteDeptVo> selectDeptsByList() {
|
||||||
|
List<SysDeptVo> list = sysDeptService.selectDeptsSimple();
|
||||||
|
return BeanUtil.copyToList(list, RemoteDeptVo.class);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,16 +1,19 @@
|
|||||||
package org.dromara.system.dubbo;
|
package org.dromara.system.dubbo;
|
||||||
|
|
||||||
import cn.hutool.core.bean.BeanUtil;
|
import cn.hutool.core.bean.BeanUtil;
|
||||||
|
import cn.hutool.core.collection.CollUtil;
|
||||||
import cn.hutool.core.lang.Opt;
|
import cn.hutool.core.lang.Opt;
|
||||||
import cn.hutool.core.util.ObjectUtil;
|
import cn.hutool.core.util.ObjectUtil;
|
||||||
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.apache.dubbo.config.annotation.DubboService;
|
import org.apache.dubbo.config.annotation.DubboService;
|
||||||
|
import org.dromara.common.core.constant.SystemConstants;
|
||||||
import org.dromara.common.core.enums.UserStatus;
|
import org.dromara.common.core.enums.UserStatus;
|
||||||
import org.dromara.common.core.exception.ServiceException;
|
import org.dromara.common.core.exception.ServiceException;
|
||||||
import org.dromara.common.core.exception.user.UserException;
|
import org.dromara.common.core.exception.user.UserException;
|
||||||
import org.dromara.common.core.utils.DateUtils;
|
import org.dromara.common.core.utils.DateUtils;
|
||||||
import org.dromara.common.core.utils.MapstructUtils;
|
import org.dromara.common.core.utils.MapstructUtils;
|
||||||
|
import org.dromara.common.core.utils.StreamUtils;
|
||||||
import org.dromara.common.core.utils.StringUtils;
|
import org.dromara.common.core.utils.StringUtils;
|
||||||
import org.dromara.common.mybatis.helper.DataPermissionHelper;
|
import org.dromara.common.mybatis.helper.DataPermissionHelper;
|
||||||
import org.dromara.common.tenant.helper.TenantHelper;
|
import org.dromara.common.tenant.helper.TenantHelper;
|
||||||
@@ -22,16 +25,22 @@ import org.dromara.system.api.model.PostDTO;
|
|||||||
import org.dromara.system.api.model.RoleDTO;
|
import org.dromara.system.api.model.RoleDTO;
|
||||||
import org.dromara.system.api.model.XcxLoginUser;
|
import org.dromara.system.api.model.XcxLoginUser;
|
||||||
import org.dromara.system.domain.SysUser;
|
import org.dromara.system.domain.SysUser;
|
||||||
|
import org.dromara.system.domain.SysUserPost;
|
||||||
|
import org.dromara.system.domain.SysUserRole;
|
||||||
import org.dromara.system.domain.bo.SysUserBo;
|
import org.dromara.system.domain.bo.SysUserBo;
|
||||||
import org.dromara.system.domain.vo.SysDeptVo;
|
import org.dromara.system.domain.vo.SysDeptVo;
|
||||||
import org.dromara.system.domain.vo.SysPostVo;
|
import org.dromara.system.domain.vo.SysPostVo;
|
||||||
import org.dromara.system.domain.vo.SysRoleVo;
|
import org.dromara.system.domain.vo.SysRoleVo;
|
||||||
import org.dromara.system.domain.vo.SysUserVo;
|
import org.dromara.system.domain.vo.SysUserVo;
|
||||||
import org.dromara.system.mapper.SysUserMapper;
|
import org.dromara.system.mapper.SysUserMapper;
|
||||||
|
import org.dromara.system.mapper.SysUserPostMapper;
|
||||||
|
import org.dromara.system.mapper.SysUserRoleMapper;
|
||||||
import org.dromara.system.service.*;
|
import org.dromara.system.service.*;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户服务
|
* 用户服务
|
||||||
@@ -50,6 +59,8 @@ public class RemoteUserServiceImpl implements RemoteUserService {
|
|||||||
private final ISysDeptService deptService;
|
private final ISysDeptService deptService;
|
||||||
private final ISysPostService postService;
|
private final ISysPostService postService;
|
||||||
private final SysUserMapper userMapper;
|
private final SysUserMapper userMapper;
|
||||||
|
private final SysUserRoleMapper userRoleMapper;
|
||||||
|
private final SysUserPostMapper userPostMapper;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 通过用户名查询用户信息
|
* 通过用户名查询用户信息
|
||||||
@@ -314,4 +325,66 @@ public class RemoteUserServiceImpl implements RemoteUserService {
|
|||||||
return userService.selectUserIdsByRoleIds(roleIds);
|
return userService.selectUserIdsByRoleIds(roleIds);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过角色ID查询用户
|
||||||
|
*
|
||||||
|
* @param roleIds 角色ids
|
||||||
|
* @return 用户
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<RemoteUserVo> selectUsersByRoleIds(List<Long> roleIds) {
|
||||||
|
if (CollUtil.isEmpty(roleIds)) {
|
||||||
|
return List.of();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 通过角色ID获取用户角色信息
|
||||||
|
List<SysUserRole> userRoles = userRoleMapper.selectList(
|
||||||
|
new LambdaQueryWrapper<SysUserRole>().in(SysUserRole::getRoleId, roleIds));
|
||||||
|
|
||||||
|
// 获取用户ID列表
|
||||||
|
Set<Long> userIds = StreamUtils.toSet(userRoles, SysUserRole::getUserId);
|
||||||
|
|
||||||
|
return selectListByIds(new ArrayList<>(userIds));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过部门ID查询用户
|
||||||
|
*
|
||||||
|
* @param deptIds 部门ids
|
||||||
|
* @return 用户
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<RemoteUserVo> selectUsersByDeptIds(List<Long> deptIds) {
|
||||||
|
if (CollUtil.isEmpty(deptIds)) {
|
||||||
|
return List.of();
|
||||||
|
}
|
||||||
|
List<SysUserVo> list = userMapper.selectVoList(new LambdaQueryWrapper<SysUser>()
|
||||||
|
.select(SysUser::getUserId, SysUser::getUserName, SysUser::getNickName, SysUser::getEmail, SysUser::getPhonenumber)
|
||||||
|
.eq(SysUser::getStatus, SystemConstants.NORMAL)
|
||||||
|
.in(SysUser::getDeptId, deptIds));
|
||||||
|
return BeanUtil.copyToList(list, RemoteUserVo.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通过岗位ID查询用户
|
||||||
|
*
|
||||||
|
* @param postIds 岗位ids
|
||||||
|
* @return 用户
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<RemoteUserVo> selectUsersByPostIds(List<Long> postIds) {
|
||||||
|
if (CollUtil.isEmpty(postIds)) {
|
||||||
|
return List.of();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 通过岗位ID获取用户岗位信息
|
||||||
|
List<SysUserPost> userPosts = userPostMapper.selectList(
|
||||||
|
new LambdaQueryWrapper<SysUserPost>().in(SysUserPost::getPostId, postIds));
|
||||||
|
|
||||||
|
// 获取用户ID列表
|
||||||
|
Set<Long> userIds = StreamUtils.toSet(userPosts, SysUserPost::getUserId);
|
||||||
|
|
||||||
|
return selectListByIds(new ArrayList<>(userIds));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -131,4 +131,11 @@ public interface ISysDeptService {
|
|||||||
* @return 结果
|
* @return 结果
|
||||||
*/
|
*/
|
||||||
int deleteDeptById(Long deptId);
|
int deleteDeptById(Long deptId);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询部门(简单查询)
|
||||||
|
*
|
||||||
|
* @return 部门列表
|
||||||
|
*/
|
||||||
|
List<SysDeptVo> selectDeptsSimple();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -356,4 +356,16 @@ public class SysDeptServiceImpl implements ISysDeptService {
|
|||||||
return baseMapper.deleteById(deptId);
|
return baseMapper.deleteById(deptId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询部门(简单查询)
|
||||||
|
*
|
||||||
|
* @return 部门列表
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public List<SysDeptVo> selectDeptsSimple() {
|
||||||
|
return baseMapper.selectDeptList(new LambdaQueryWrapper<SysDept>()
|
||||||
|
.select(SysDept::getDeptId, SysDept::getDeptName, SysDept::getParentId)
|
||||||
|
.eq(SysDept::getStatus, SystemConstants.NORMAL));
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user