|
@@ -1,11 +1,15 @@
|
|
package com.ruoyi.system.service.impl;
|
|
package com.ruoyi.system.service.impl;
|
|
|
|
|
|
|
|
+import cn.hutool.core.util.ObjectUtil;
|
|
import com.baomidou.dynamic.datasource.annotation.DS;
|
|
import com.baomidou.dynamic.datasource.annotation.DS;
|
|
|
|
+import com.baomidou.dynamic.datasource.toolkit.DynamicDataSourceContextHolder;
|
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.Wrappers;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
import com.ruoyi.common.annotation.DataScope;
|
|
import com.ruoyi.common.annotation.DataScope;
|
|
import com.ruoyi.common.annotation.TenantIgnore;
|
|
import com.ruoyi.common.annotation.TenantIgnore;
|
|
import com.ruoyi.common.constant.BaseSourceConstant;
|
|
import com.ruoyi.common.constant.BaseSourceConstant;
|
|
import com.ruoyi.common.constant.UserConstants;
|
|
import com.ruoyi.common.constant.UserConstants;
|
|
|
|
+import com.ruoyi.common.core.domain.entity.SysDept;
|
|
import com.ruoyi.common.core.domain.entity.SysRole;
|
|
import com.ruoyi.common.core.domain.entity.SysRole;
|
|
import com.ruoyi.common.core.domain.entity.SysUser;
|
|
import com.ruoyi.common.core.domain.entity.SysUser;
|
|
import com.ruoyi.common.exception.ServiceException;
|
|
import com.ruoyi.common.exception.ServiceException;
|
|
@@ -18,6 +22,7 @@ import com.ruoyi.system.domain.SysUserPost;
|
|
import com.ruoyi.system.domain.SysUserRole;
|
|
import com.ruoyi.system.domain.SysUserRole;
|
|
import com.ruoyi.system.mapper.*;
|
|
import com.ruoyi.system.mapper.*;
|
|
import com.ruoyi.system.service.ISysConfigService;
|
|
import com.ruoyi.system.service.ISysConfigService;
|
|
|
|
+import com.ruoyi.system.service.ISysDeptService;
|
|
import com.ruoyi.system.service.ISysUserService;
|
|
import com.ruoyi.system.service.ISysUserService;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.Logger;
|
|
import org.slf4j.LoggerFactory;
|
|
import org.slf4j.LoggerFactory;
|
|
@@ -28,8 +33,7 @@ import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.util.CollectionUtils;
|
|
import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
import javax.validation.Validator;
|
|
import javax.validation.Validator;
|
|
-import java.util.ArrayList;
|
|
|
|
-import java.util.List;
|
|
|
|
|
|
+import java.util.*;
|
|
import java.util.stream.Collectors;
|
|
import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -55,6 +59,8 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
private SysUserPostMapper userPostMapper;
|
|
private SysUserPostMapper userPostMapper;
|
|
@Autowired
|
|
@Autowired
|
|
private ISysConfigService configService;
|
|
private ISysConfigService configService;
|
|
|
|
+ @Autowired
|
|
|
|
+ private ISysDeptService sysDeptService;
|
|
|
|
|
|
/**
|
|
/**
|
|
* 根据条件分页查询用户列表
|
|
* 根据条件分页查询用户列表
|
|
@@ -501,4 +507,56 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
|
|
return baseMapper.getListByRoleId(roleId);
|
|
return baseMapper.getListByRoleId(roleId);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public List<SysUser> getAuthUserList() {
|
|
|
|
+ DynamicDataSourceContextHolder.push(BaseSourceConstant.BASE);
|
|
|
|
+
|
|
|
|
+ Long userId = SecurityUtils.getUserId();
|
|
|
|
+
|
|
|
|
+ List<SysDept> sysDeptList = sysDeptService.list(Wrappers.<SysDept>lambdaQuery()
|
|
|
|
+ .and(q -> q.eq(SysDept::getDirectorId, userId).or().eq(SysDept::getLeaderId, userId)));
|
|
|
|
+
|
|
|
|
+ if (sysDeptList.size() == 0) {
|
|
|
|
+ SysUser sysUser = getById(userId);
|
|
|
|
+ sysUser.setPassword(null);
|
|
|
|
+ return Collections.singletonList(sysUser);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ Set<Long> deptSet = new HashSet<>();
|
|
|
|
+ List<SysDept> list = sysDeptService.list();
|
|
|
|
+ Map<Long, List<SysDept>> parentDeptMap = list.stream().collect(Collectors.groupingBy(SysDept::getParentId));
|
|
|
|
+
|
|
|
|
+ for (SysDept sysDept : sysDeptList) {
|
|
|
|
+ Long deptId = sysDept.getDeptId();
|
|
|
|
+
|
|
|
|
+ if (Objects.equals(sysDept.getDirectorId(), userId)) {
|
|
|
|
+ subordinateDeptId(deptId, deptSet, parentDeptMap);
|
|
|
|
+ } else {
|
|
|
|
+ deptSet.add(deptId);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ List<SysUser> sysUserList = list(Wrappers.<SysUser>lambdaQuery()
|
|
|
|
+ .and(q -> q.in(SysUser::getDeptId, deptSet).or().eq(SysUser::getUserId, userId)));
|
|
|
|
+
|
|
|
|
+ sysUserList.forEach(item -> item.setPassword(null));
|
|
|
|
+
|
|
|
|
+ DynamicDataSourceContextHolder.poll();
|
|
|
|
+ return sysUserList;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ private void subordinateDeptId(Long deptId, Set<Long> deptSet, Map<Long, List<SysDept>> parentDeptMap) {
|
|
|
|
+ deptSet.add(deptId);
|
|
|
|
+
|
|
|
|
+ // 获取子部门
|
|
|
|
+ List<SysDept> sysDeptList = parentDeptMap.get(deptId);
|
|
|
|
+ if (ObjectUtil.isEmpty(sysDeptList)) {
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for (SysDept sysDept : sysDeptList) {
|
|
|
|
+ subordinateDeptId(sysDept.getDeptId(), deptSet, parentDeptMap);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
}
|
|
}
|