refactor(system): 优化用户关联业务租户查询逻辑
This commit is contained in:
parent
cba7f368a7
commit
e3dfb9b98f
@ -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) {
|
||||
|
@ -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()
|
||||
|
Loading…
x
Reference in New Issue
Block a user