wlzboy
2025-12-04 af8cab142a6b15c06e131a8474574dd5b00df982
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysUserController.java
@@ -31,6 +31,7 @@
import com.ruoyi.system.service.ISysPostService;
import com.ruoyi.system.service.ISysRoleService;
import com.ruoyi.system.service.ISysUserService;
import com.ruoyi.system.domain.vo.BranchUserQueryVO;
/**
 * 用户信息
@@ -56,7 +57,6 @@
    /**
     * 获取用户列表
     */
    @PreAuthorize("@ss.hasPermi('system:user:list')")
    @GetMapping("/list")
    public TableDataInfo list(SysUser user)
    {
@@ -253,4 +253,101 @@
    {
        return success(deptService.selectDeptTreeList(dept));
    }
    /**
     * 获取当前用户管理的分公司下的所有用户(小程序端专用)
     * 根据当前用户的oaOrderClass字段匹配分公司,返回这些分公司及其所有子部门的用户
     */
    @GetMapping("/branch/users")
    public AjaxResult listBranchUsers()
    {
        // 获取当前用户
        SysUser currentUser = userService.selectUserById(getUserId());
        if (currentUser == null) {
            return error("用户不存在");
        }
        // 获取当前用户管理的分公司ID列表
        String oaOrderClass = currentUser.getOaOrderClass();
        List<Long> branchDeptIds = new java.util.ArrayList<>();
        if (StringUtils.isNotEmpty(oaOrderClass)) {
            // 根据oaOrderClass查询匹配的分公司
            String[] orderCodes = oaOrderClass.split(",");
            SysDept queryDept = new SysDept();
            queryDept.setParentId(100L); // 只查询分公司
            List<SysDept> allBranches = deptService.selectDeptList(queryDept);
            for (SysDept branch : allBranches) {
                for (String code : orderCodes) {
                    // 匹配serviceOrderClass或dispatchOrderClass
                    if ((StringUtils.isNotEmpty(branch.getServiceOrderClass()) && branch.getServiceOrderClass().equals(code.trim()))
                        || (StringUtils.isNotEmpty(branch.getDispatchOrderClass()) && branch.getDispatchOrderClass().equals(code.trim()))) {
                        branchDeptIds.add(branch.getDeptId());
                        break;
                    }
                }
            }
        }
        // 如果没有找到匹配的分公司,使用当前用户所在部门
        if (branchDeptIds.isEmpty()) {
            Long userDeptId = currentUser.getDeptId();
            if (userDeptId != null) {
                // 查找用户所在部门的父级分公司
                SysDept userDept = deptService.selectDeptById(userDeptId);
                if (userDept != null) {
                    // 向上查找直到找到parent_id=100的分公司
                    while (userDept != null && userDept.getParentId() != 100L) {
                        userDept = deptService.selectDeptById(userDept.getParentId());
                    }
                    if (userDept != null && userDept.getParentId() == 100L) {
                        branchDeptIds.add(userDept.getDeptId());
                    }
                }
            }
        }
        // 如果还是没有找到,返回空列表
        if (branchDeptIds.isEmpty()) {
            return success(new java.util.ArrayList<>());
        }
        // 查询这些分公司及其所有子部门的用户
        List<SysUser> users = userService.selectUsersByBranchDeptIds(branchDeptIds);
        return success(users);
    }
    /**
     * 根据分公司ID列表获取用户(POST方式)
     */
    @PostMapping("/branch/users")
    public AjaxResult listUsersByBranchDepts(@RequestBody BranchUserQueryVO queryVO)
    {
        List<Long> branchDeptIds = queryVO.getBranchDeptIds();
        if (branchDeptIds == null || branchDeptIds.isEmpty()) {
            return success(new java.util.ArrayList<>());
        }
        // 查询这些分公司及其所有子部门的用户
        List<SysUser> users = userService.selectUsersByBranchDeptIds(branchDeptIds);
        return success(users);
    }
    /**
     * 根据oaUserId查询用户信息
     */
    @GetMapping("/oa-user/{oaUserId}")
    public AjaxResult getUserByOaUserId(@PathVariable Integer oaUserId)
    {
        SysUser user = userService.selectUserByOaUserId(oaUserId);
        if (user != null) {
            return success(user);
        } else {
            return error("未找到对应的用户信息");
        }
    }
}