Parcourir la source

update 优化 为部门角色岗位用户增加一些常用查询方法

疯狂的狮子Li il y a 1 an
Parent
commit
df3eedf79f

+ 19 - 0
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteDeptService.java

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

+ 25 - 0
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/RemoteUserService.java

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

+ 37 - 0
ruoyi-api/ruoyi-api-system/src/main/java/org/dromara/system/api/domain/vo/RemoteDeptVo.java

@@ -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;
+
+}

+ 5 - 0
ruoyi-common/ruoyi-common-mybatis/src/main/java/org/dromara/common/mybatis/core/page/PageQuery.java

@@ -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;
+    }
+
 }
 }

+ 7 - 0
ruoyi-common/ruoyi-common-satoken/src/main/java/org/dromara/common/satoken/utils/LoginHelper.java

@@ -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));
+    }
+
     /**
     /**
      * 获取用户账户
      * 获取用户账户
      */
      */

+ 31 - 2
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteDeptServiceImpl.java

@@ -1,11 +1,16 @@
 package org.dromara.system.dubbo;
 package org.dromara.system.dubbo;
 
 
-import org.dromara.system.api.RemoteDeptService;
-import org.dromara.system.service.ISysDeptService;
+import cn.hutool.core.bean.BeanUtil;
 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);
+    }
+
 }
 }

+ 73 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/dubbo/RemoteUserServiceImpl.java

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

+ 7 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/ISysDeptService.java

@@ -131,4 +131,11 @@ public interface ISysDeptService {
      * @return 结果
      * @return 结果
      */
      */
     int deleteDeptById(Long deptId);
     int deleteDeptById(Long deptId);
+
+    /**
+     * 查询部门(简单查询)
+     *
+     * @return 部门列表
+     */
+    List<SysDeptVo> selectDeptsSimple();
 }
 }

+ 12 - 0
ruoyi-modules/ruoyi-system/src/main/java/org/dromara/system/service/impl/SysDeptServiceImpl.java

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