5 changed files with 86 additions and 8 deletions
@ -0,0 +1,51 @@
@@ -0,0 +1,51 @@
|
||||
package com.cloud.kicc.common.data.util; |
||||
|
||||
import cn.hutool.core.util.ObjectUtil; |
||||
import cn.hutool.core.util.StrUtil; |
||||
import com.cloud.kicc.common.data.entity.KiccUser; |
||||
import com.cloud.kicc.common.data.override.TenantLikeExpression; |
||||
import lombok.experimental.UtilityClass; |
||||
import org.springframework.security.core.Authentication; |
||||
import org.springframework.security.core.context.SecurityContextHolder; |
||||
|
||||
import java.util.Optional; |
||||
import java.util.concurrent.atomic.AtomicReference; |
||||
|
||||
/** |
||||
*<p> |
||||
* 动态设置多租户 |
||||
*</p> |
||||
* |
||||
* @Author: entfrm开发团队-王翔 |
||||
* @Date: 2022/5/13 |
||||
*/ |
||||
@UtilityClass |
||||
public class TenantContextHolder { |
||||
|
||||
private final AtomicReference<String> contextHolder = new AtomicReference(""); |
||||
|
||||
public void setTenant(String tenantIds) { |
||||
contextHolder.set(tenantIds); |
||||
} |
||||
|
||||
public String getTenant() { |
||||
String tenantIds = ObjectUtil.isNotEmpty(getUser()) ? getUser().getTenantId() : null; |
||||
return StrUtil.isNotBlank(contextHolder.get()) ? contextHolder.get() : tenantIds; |
||||
} |
||||
|
||||
/** |
||||
* 获取用户 |
||||
* 如果当前不存在用户,正常情况多租户拼接查询会报错 |
||||
*/ |
||||
private KiccUser getUser() { |
||||
Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); |
||||
if (Optional.ofNullable(authentication).isPresent()) { |
||||
Object principal = authentication.getPrincipal(); |
||||
if (principal instanceof KiccUser) { |
||||
return (KiccUser) principal; |
||||
} |
||||
} |
||||
return null; |
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue