|
|
@@ -23,8 +23,9 @@ import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.ArrayList;
|
|
|
-import java.util.Collection;
|
|
|
import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* <p>
|
|
|
@@ -87,38 +88,46 @@ public class SysUserTenantServiceImpl extends AbstractCrudService<SysUserTenantM
|
|
|
* 根据用户查询企业下拉框
|
|
|
*/
|
|
|
@Override
|
|
|
- @Transactional
|
|
|
+ @Transactional(readOnly = true)
|
|
|
public List<SysTenant> getTenantByUser(Long userId) {
|
|
|
LambdaQueryWrapper<SysUserTenant> queryWrapper = Wrappers.lambdaQuery();
|
|
|
queryWrapper.eq(SysUserTenant::getUserId, userId);
|
|
|
List<SysUserTenant> userTenants = this.list(queryWrapper);
|
|
|
- List<Integer> tenantIdList = new ArrayList<>();
|
|
|
- List<SysTenant> tenantList = new ArrayList<>();
|
|
|
- List<SysTenantConfig> tenantConfigList = new ArrayList<>();
|
|
|
+ if (CollectionUtils.isEmpty(userTenants)) {
|
|
|
+ return new ArrayList<>();
|
|
|
+ }
|
|
|
+
|
|
|
+ List<Integer> tenantIdList = userTenants.stream()
|
|
|
+ .map(SysUserTenant::getTenantId)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+
|
|
|
+ // 租户列表(仅启用状态)
|
|
|
LambdaQueryWrapper<SysTenant> queryWrapper1 = Wrappers.lambdaQuery();
|
|
|
+ queryWrapper1.in(SysTenant::getId, tenantIdList).eq(SysTenant::getStatus, 0);
|
|
|
+ List<SysTenant> tenantList = sysTenantService.list(queryWrapper1);
|
|
|
+ if (CollectionUtils.isEmpty(tenantList)) {
|
|
|
+ return tenantList;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 租户配置(用于 logo)
|
|
|
LambdaQueryWrapper<SysTenantConfig> queryWrapper2 = Wrappers.lambdaQuery();
|
|
|
- if (CollectionUtils.isNotEmpty(userTenants)) {
|
|
|
- for (int i = 0; i < userTenants.size(); i++) {
|
|
|
- tenantIdList.add(userTenants.get(i).getTenantId());
|
|
|
+ queryWrapper2.in(SysTenantConfig::getTenantId, tenantIdList);
|
|
|
+ List<SysTenantConfig> tenantConfigList = sysTenantConfigMapper.selectList(queryWrapper2);
|
|
|
+
|
|
|
+ // 用 Map 做 O(1) 查找,避免嵌套循环
|
|
|
+ Map<Integer, SysUserTenant> tenantIdToUserTenant = userTenants.stream()
|
|
|
+ .collect(Collectors.toMap(SysUserTenant::getTenantId, ut -> ut, (a, b) -> a));
|
|
|
+ Map<Integer, SysTenantConfig> tenantIdToConfig = tenantConfigList.stream()
|
|
|
+ .collect(Collectors.toMap(SysTenantConfig::getTenantId, c -> c, (a, b) -> a));
|
|
|
+
|
|
|
+ for (SysTenant tenant : tenantList) {
|
|
|
+ SysUserTenant ut = tenantIdToUserTenant.get(tenant.getId());
|
|
|
+ if (ut != null) {
|
|
|
+ tenant.setIsDefault(ut.getIsDefault());
|
|
|
}
|
|
|
- queryWrapper1.in(SysTenant::getId, tenantIdList)
|
|
|
- .eq(SysTenant::getStatus, 0);
|
|
|
- tenantList = sysTenantService.list(queryWrapper1);
|
|
|
- queryWrapper2.in(SysTenantConfig::getTenantId, tenantIdList);
|
|
|
- tenantConfigList = sysTenantConfigMapper.selectList(queryWrapper2);
|
|
|
- if (CollectionUtils.isNotEmpty(tenantList)) {
|
|
|
- for (int k = 0; k < tenantList.size(); k++) {
|
|
|
- for (int j = 0; j < userTenants.size(); j++) {
|
|
|
- if (userTenants.get(j).getTenantId().equals(tenantList.get(k).getId())){
|
|
|
- tenantList.get(k).setIsDefault(userTenants.get(j).getIsDefault());
|
|
|
- }
|
|
|
- }
|
|
|
- for (int l = 0; l < tenantConfigList.size(); l++) {
|
|
|
- if (tenantConfigList.get(l).getTenantId().equals(tenantList.get(k).getId())){
|
|
|
- tenantList.get(k).setTenantLogo(tenantConfigList.get(l).getMiddleLogo());
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
+ SysTenantConfig config = tenantIdToConfig.get(tenant.getId());
|
|
|
+ if (config != null) {
|
|
|
+ tenant.setTenantLogo(config.getMiddleLogo());
|
|
|
}
|
|
|
}
|
|
|
return tenantList;
|