【7.3.2】【cache】缓存前缀加上对租户的判断处理

pull/41/head
fengshuonan 2022-11-07 20:41:18 +08:00
parent 5f4050658a
commit cd0e0b3416
4 changed files with 44 additions and 4 deletions

View File

@ -1,4 +1,4 @@
package cn.stylefeng.roses.kernel.validator.api.validators.unique.constants;
package cn.stylefeng.roses.kernel.rule.constants;
/**
*

View File

@ -0,0 +1,19 @@
package cn.stylefeng.roses.kernel.rule.tenant;
/**
*
*
* @author fengshuonan
* @date 2022/11/7 20:16
*/
public interface TenantPrefixApi {
/**
*
*
* @author fengshuonan
* @date 2022/11/7 20:29
*/
String getTenantPrefix();
}

View File

@ -24,7 +24,11 @@
*/
package cn.stylefeng.roses.kernel.cache.api;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.extra.spring.SpringUtil;
import cn.stylefeng.roses.kernel.rule.constants.TenantConstants;
import cn.stylefeng.roses.kernel.rule.tenant.TenantPrefixApi;
import java.util.Collection;
import java.util.Map;
@ -147,10 +151,27 @@ public interface CacheOperatorApi<T> {
* @date 2021/7/30 21:18
*/
default String calcKey(String keyParam) {
// 用户的租户前缀
String tenantPrefix = "";
try {
TenantPrefixApi tenantPrefixApi = SpringUtil.getBean(TenantPrefixApi.class);
if (tenantPrefixApi != null) {
tenantPrefix = tenantPrefixApi.getTenantPrefix();
}
} catch (Exception e) {
// 如果找不到这个bean则没有加载多租户插件
}
// 如果租户前缀为空,则设置为主租户的编码
if (ObjectUtil.isEmpty(tenantPrefix)) {
tenantPrefix = TenantConstants.MASTER_DATASOURCE_NAME;
}
if (StrUtil.isBlank(keyParam)) {
return getCommonKeyPrefix();
return tenantPrefix + ":" + getCommonKeyPrefix();
} else {
return getCommonKeyPrefix() + keyParam.toUpperCase();
return tenantPrefix + ":" + getCommonKeyPrefix() + keyParam.toUpperCase();
}
}

View File

@ -30,10 +30,10 @@ import cn.stylefeng.roses.kernel.auth.api.context.LoginContext;
import cn.stylefeng.roses.kernel.auth.api.pojo.login.LoginUser;
import cn.stylefeng.roses.kernel.db.api.DbOperatorApi;
import cn.stylefeng.roses.kernel.db.api.context.DbOperatorContext;
import cn.stylefeng.roses.kernel.rule.constants.TenantConstants;
import cn.stylefeng.roses.kernel.validator.api.exception.ParamValidateException;
import cn.stylefeng.roses.kernel.validator.api.exception.enums.ValidatorExceptionEnum;
import cn.stylefeng.roses.kernel.validator.api.pojo.UniqueValidateParam;
import cn.stylefeng.roses.kernel.validator.api.validators.unique.constants.TenantConstants;
/**
*