refactor(system): 优化用户关联业务租户查询逻辑

This commit is contained in:
huk 2025-09-08 15:57:42 +08:00
parent cba7f368a7
commit e3dfb9b98f
2 changed files with 16 additions and 6 deletions

View File

@ -12,6 +12,7 @@ import lombok.RequiredArgsConstructor;
import org.dromara.common.core.constant.SystemConstants;
import org.dromara.common.core.domain.R;
import org.dromara.common.core.domain.model.LoginUser;
import org.dromara.common.core.enums.TenantType;
import org.dromara.common.core.utils.StreamUtils;
import org.dromara.common.core.utils.StringUtils;
import org.dromara.common.encrypt.annotation.ApiEncrypt;
@ -312,6 +313,9 @@ public class SysUserController extends BaseController {
/**
* 查询用户关联业务的指定类型租户
* @param userId 用户id
* @param type 租户类型 {@link TenantType}
*
*/
@GetMapping("/tenantList/{userId}/{type}")
public R<List<SysUserTenantVO>> getUserTenantList(@PathVariable("userId") Long userId, @PathVariable("type") int type) {

View File

@ -1,5 +1,6 @@
package org.dromara.system.service.impl;
import cn.hutool.core.collection.CollUtil;
import lombok.RequiredArgsConstructor;
import org.dromara.common.core.enums.TenantType;
import org.dromara.common.satoken.utils.LoginHelper;
@ -15,8 +16,10 @@ import org.dromara.system.domain.SysUserTenant;
import org.dromara.system.mapper.SysUserTenantMapper;
import org.dromara.system.service.ISysUserTenantService;
import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
@Service
@RequiredArgsConstructor
@ -35,12 +38,15 @@ public class SysUserTenantServiceImpl extends ServiceImpl<SysUserTenantMapper, S
public List<SysUserTenantVO> getUserTenantList(Long userId, int type) {
// 租户管理员可查当前租户下所有部门创建的指定类型租户
if (LoginHelper.isTenantAdmin()) {
List<SysDept> sysDepts = sysDeptMapper.selectListByParentId(LoginHelper.getDeptId());
List<Long> deptIdList = sysDepts.stream()
.map(SysDept::getDeptId)
.filter(Objects::nonNull)
.toList();
deptIdList.add(LoginHelper.getDeptId());
ArrayList<Long> deptIdList = CollUtil.newArrayList(LoginHelper.getDeptId());
Optional.ofNullable(sysDeptMapper.selectListByParentId(LoginHelper.getDeptId()))
.ifPresent(sysDepts -> {
List<Long> list = sysDepts.stream()
.map(SysDept::getDeptId)
.filter(Objects::nonNull)
.toList();
deptIdList.addAll(list);
});
List<SysTenant> sysTenants = sysTenantMapper.selectByTenantTypeAndCreateDept(type, deptIdList);
return sysTenants.stream().map(
sysTenant -> SysUserTenantVO.builder().userId(userId).tenantId(sysTenant.getTenantId()).tenantName(sysTenant.getStoreName()).build()