diff --git a/kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/handler/KiccTenantLineHandler.java b/kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/handler/KiccTenantLineHandler.java index 03e681b3..e2d52a0e 100644 --- a/kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/handler/KiccTenantLineHandler.java +++ b/kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/handler/KiccTenantLineHandler.java @@ -62,19 +62,4 @@ public class KiccTenantLineHandler implements TenantLineHandler { return StrUtil.isNotBlank(TenantContextHolder.getTenant()) ? new TenantLikeExpression(TenantContextHolder.getTenant()): null; } - /** - * 获取用户 - * 如果当前不存在用户,正常情况多租户拼接查询会报错 - */ - protected 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; - } - } diff --git a/kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/util/TenantContextHolder.java b/kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/util/TenantContextHolder.java index 307dbfd8..5f7fef56 100644 --- a/kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/util/TenantContextHolder.java +++ b/kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/util/TenantContextHolder.java @@ -22,7 +22,7 @@ import java.util.concurrent.atomic.AtomicReference; @UtilityClass public class TenantContextHolder { - private final AtomicReference contextHolder = new AtomicReference(""); + private final AtomicReference contextHolder = new AtomicReference(); public void setTenant(String tenantIds) { contextHolder.set(tenantIds); diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java index 7c125e12..163b4333 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java @@ -215,4 +215,12 @@ public class UserController { return R.ok(); } + @SysLog("重置当前用户多租户") + @GetMapping("/resetTenant") + @PreAuthorize("@pms.hasPermission('user_edit')") + public R resetTenant() { + TenantContextHolder.setTenant(SecurityUtils.getUser().getTenantId()); + return R.ok(); + } + } diff --git a/kicc-ui/src/api/platform/system/controller/user.ts b/kicc-ui/src/api/platform/system/controller/user.ts index 672dcfbe..46c35cd1 100644 --- a/kicc-ui/src/api/platform/system/controller/user.ts +++ b/kicc-ui/src/api/platform/system/controller/user.ts @@ -17,7 +17,8 @@ enum Api { updatePwd = '/system_proxy/system/user/updatePwd', resetPwd='/system_proxy/system/user/resetPwd', changeStatus='/system_proxy/system/user/changeStatus', - changeTenant='/system_proxy/system/user/changeTenant' + changeTenant='/system_proxy/system/user/changeTenant', + resetTenant='/system_proxy/system/user/resetTenant' } /** 查询用户列表 */ @@ -46,3 +47,6 @@ export const changeStatus = (id: string, status: string) => defHttp.put({ url: A /** 修改用户多租户 */ export const changeTenant = (tenantIds: string[]) => defHttp.get({ url: `${Api.changeTenant}/${tenantIds}` }); + +/** 还原用户多租户 */ +export const resetTenant = () => defHttp.get({ url: Api.resetTenant }); diff --git a/kicc-ui/src/hooks/web/useTenant.ts b/kicc-ui/src/hooks/web/useTenant.ts index f7c65126..5e8b4a79 100644 --- a/kicc-ui/src/hooks/web/useTenant.ts +++ b/kicc-ui/src/hooks/web/useTenant.ts @@ -5,7 +5,7 @@ * @create: 2022/4/8 */ import { useUserStore } from '/@/store/modules/user'; -import { changeTenant } from '/@/api/platform/system/controller/user'; +import { changeTenant, resetTenant } from '/@/api/platform/system/controller/user'; export function useTenant() { const userStore = useUserStore(); @@ -23,8 +23,18 @@ export function useTenant() { return tenantIds; } + // 重置多租户信息 + async function resetTenantEnv(reload = true) { + // 更改当前后端系统中的全局多租户数据 + await resetTenant(); + // 更改当前前端系统中的全局多租户数据 + await userStore.getUserInfoAction(); + reload && location.reload(); + } + return { userStore, - changeTenantEnv + changeTenantEnv, + resetTenantEnv }; } diff --git a/kicc-ui/src/layouts/default/setting/components/TenantSelect.vue b/kicc-ui/src/layouts/default/setting/components/TenantSelect.vue index 1aac8293..f418fe83 100644 --- a/kicc-ui/src/layouts/default/setting/components/TenantSelect.vue +++ b/kicc-ui/src/layouts/default/setting/components/TenantSelect.vue @@ -30,7 +30,7 @@ 还原 @@ -61,7 +61,7 @@ const AFormItem = Form.Item; const formElRef = ref(); - const { changeTenantEnv } = useTenant(); + const { changeTenantEnv, resetTenantEnv } = useTenant(); const state = reactive({ options: [], modelRef: { @@ -90,4 +90,9 @@ await changeTenantEnv(formData.tenantIds); } + /** 处理重置多租户 */ + async function handleResetTenantEnv() { + await resetTenantEnv(); + } +