Browse Source

👣 重构底层多租户

master
wangxiang 3 years ago
parent
commit
d82b0ecf03
  1. 15
      kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/handler/KiccTenantLineHandler.java
  2. 2
      kicc-common/kicc-common-data/src/main/java/com/cloud/kicc/common/data/util/TenantContextHolder.java
  3. 8
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java
  4. 6
      kicc-ui/src/api/platform/system/controller/user.ts
  5. 14
      kicc-ui/src/hooks/web/useTenant.ts
  6. 9
      kicc-ui/src/layouts/default/setting/components/TenantSelect.vue

15
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; 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;
}
} }

2
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 @UtilityClass
public class TenantContextHolder { public class TenantContextHolder {
private final AtomicReference<String> contextHolder = new AtomicReference(""); private final AtomicReference<String> contextHolder = new AtomicReference();
public void setTenant(String tenantIds) { public void setTenant(String tenantIds) {
contextHolder.set(tenantIds); contextHolder.set(tenantIds);

8
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(); return R.ok();
} }
@SysLog("重置当前用户多租户")
@GetMapping("/resetTenant")
@PreAuthorize("@pms.hasPermission('user_edit')")
public R resetTenant() {
TenantContextHolder.setTenant(SecurityUtils.getUser().getTenantId());
return R.ok();
}
} }

6
kicc-ui/src/api/platform/system/controller/user.ts

@ -17,7 +17,8 @@ enum Api {
updatePwd = '/system_proxy/system/user/updatePwd', updatePwd = '/system_proxy/system/user/updatePwd',
resetPwd='/system_proxy/system/user/resetPwd', resetPwd='/system_proxy/system/user/resetPwd',
changeStatus='/system_proxy/system/user/changeStatus', 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 changeTenant = (tenantIds: string[]) => defHttp.get({ url: `${Api.changeTenant}/${tenantIds}` });
/** 还原用户多租户 */
export const resetTenant = () => defHttp.get({ url: Api.resetTenant });

14
kicc-ui/src/hooks/web/useTenant.ts

@ -5,7 +5,7 @@
* @create: 2022/4/8 * @create: 2022/4/8
*/ */
import { useUserStore } from '/@/store/modules/user'; 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() { export function useTenant() {
const userStore = useUserStore(); const userStore = useUserStore();
@ -23,8 +23,18 @@ export function useTenant() {
return tenantIds; return tenantIds;
} }
// 重置多租户信息
async function resetTenantEnv(reload = true) {
// 更改当前后端系统中的全局多租户数据
await resetTenant();
// 更改当前前端系统中的全局多租户数据
await userStore.getUserInfoAction();
reload && location.reload();
}
return { return {
userStore, userStore,
changeTenantEnv changeTenantEnv,
resetTenantEnv
}; };
} }

9
kicc-ui/src/layouts/default/setting/components/TenantSelect.vue

@ -30,7 +30,7 @@
<ACol :span="12"> <ACol :span="12">
<a-button type="warning" <a-button type="warning"
block block
@click="()=>{}" @click="handleResetTenantEnv"
> >
<Icon icon="ant-design:redo-outlined"/>还原 <Icon icon="ant-design:redo-outlined"/>还原
</a-button> </a-button>
@ -61,7 +61,7 @@
const AFormItem = Form.Item; const AFormItem = Form.Item;
const formElRef = ref(); const formElRef = ref();
const { changeTenantEnv } = useTenant(); const { changeTenantEnv, resetTenantEnv } = useTenant();
const state = reactive<FormState>({ const state = reactive<FormState>({
options: [], options: [],
modelRef: { modelRef: {
@ -90,4 +90,9 @@
await changeTenantEnv(formData.tenantIds); await changeTenantEnv(formData.tenantIds);
} }
/** 处理重置多租户 */
async function handleResetTenantEnv() {
await resetTenantEnv();
}
</script> </script>

Loading…
Cancel
Save