5 changed files with 86 additions and 8 deletions
@ -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