Browse Source

👣 重构底层多租户

master
wangxiang 3 years ago
parent
commit
8daa5bca53
  1. 6
      kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java
  2. 2
      kicc-ui/src/api/platform/core/entity/user.ts
  3. 4
      kicc-ui/src/api/platform/system/controller/user.ts
  4. 9
      kicc-ui/src/layouts/default/setting/SettingDrawer.tsx
  5. 39
      kicc-ui/src/layouts/default/setting/components/TenantSelect.vue
  6. 1
      kicc-ui/src/layouts/default/setting/components/index.ts
  7. 1
      kicc-ui/src/locales/lang/en/layout.ts
  8. 1
      kicc-ui/src/locales/lang/zh-CN/layout.ts
  9. 1
      kicc-ui/src/store/modules/user.ts

6
kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/UserController.java

@ -206,10 +206,10 @@ public class UserController {
} }
@SysLog("用户多租户更改") @SysLog("用户多租户更改")
@PutMapping("/changeTenement") @PutMapping("/changeTenant")
@PreAuthorize("@pms.hasPermission('user_edit')") @PreAuthorize("@pms.hasPermission('user_edit')")
public R changeTenement(String[] TenantIds) { public R changeTenant(String[] tenantIds) {
SecurityUtils.getUser().setTenantId(String.join(",", TenantIds)); SecurityUtils.getUser().setTenantId(String.join(",", tenantIds));
return R.ok(); return R.ok();
} }

2
kicc-ui/src/api/platform/core/entity/user.ts

@ -67,6 +67,8 @@ export interface User extends CommonEntity {
tenantId: string; tenantId: string;
// 指定登录后首页跳转 // 指定登录后首页跳转
homePath?: string; homePath?: string;
// 前端项目配置多租户选择集合
tenantIds: string[];
[key: string]: any; [key: string]: any;
} }

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

@ -17,7 +17,7 @@ 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',
changeTenement='/system_proxy/system/user/changeTenement' changeTenant='/system_proxy/system/user/changeTenant'
} }
/** 查询用户列表 */ /** 查询用户列表 */
@ -45,4 +45,4 @@ export const resetPwd = (params: Partial<User>) => defHttp.put({ url: Api.resetP
export const changeStatus = (id: string, status: string) => defHttp.put({ url: Api.changeStatus, data: { id: id, status: status } }); export const changeStatus = (id: string, status: string) => defHttp.put({ url: Api.changeStatus, data: { id: id, status: status } });
/** 修改用户多租户 */ /** 修改用户多租户 */
export const changeTenement = (tenementId: string) => defHttp.put({ url: Api.changeTenement, params: { tenementId } }); export const changeTenant = (tenantIds: string) => defHttp.put({ url: Api.changeTenant, params: { tenantIds } });

9
kicc-ui/src/layouts/default/setting/SettingDrawer.tsx

@ -8,6 +8,7 @@ import {
SwitchItem, SwitchItem,
SelectItem, SelectItem,
InputNumberItem, InputNumberItem,
TenantSelect
} from './components'; } from './components';
import { AppDarkModeToggle } from '/@/components/Application'; import { AppDarkModeToggle } from '/@/components/Application';
import { MenuTypeEnum, TriggerEnum } from '/@/enums/menuEnum'; import { MenuTypeEnum, TriggerEnum } from '/@/enums/menuEnum';
@ -127,6 +128,12 @@ export default defineComponent({
); );
} }
function renderTenantManage() {
return (
<TenantSelect/>
);
}
function renderMainTheme() { function renderMainTheme() {
return ( return (
<ThemeColorPicker <ThemeColorPicker
@ -404,6 +411,8 @@ export default defineComponent({
{renderHeaderTheme()} {renderHeaderTheme()}
<Divider>{() => t('layout.setting.sidebarTheme')}</Divider> <Divider>{() => t('layout.setting.sidebarTheme')}</Divider>
{renderSiderTheme()} {renderSiderTheme()}
<Divider>{() => t('layout.setting.tenantManage')}</Divider>
{renderTenantManage()}
<Divider>{() => t('layout.setting.interfaceFunction')}</Divider> <Divider>{() => t('layout.setting.interfaceFunction')}</Divider>
{renderFeatures()} {renderFeatures()}
<Divider>{() => t('layout.setting.interfaceDisplay')}</Divider> <Divider>{() => t('layout.setting.interfaceDisplay')}</Divider>

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

@ -0,0 +1,39 @@
<template>
<Select v-model:value="state.value"
:options="state.options"
:filterOption="filterOption"
mode="multiple"
placeholder="请选择多租户"
style="width:100%"
@blur="handleBlur"
/>
</template>
<script lang="ts" setup>
import { reactive, onMounted } from 'vue';
import { listTenant } from '/@/api/platform/system/controller/tenant';
import { useUserStore } from '/@/store/modules/user';
import { Select } from 'ant-design-vue';
const state = reactive<any>({
value: [],
options: []
});
onMounted(async () => {
const result = await listTenant();
const userStore = useUserStore();
state.value = userStore.getUserInfo.tenantIds;
state.options = result.data.map(tenant => ({
value: tenant.code,
label: tenant.name
}));
});
function filterOption(input: string, option: any) {
return option.label.toLowerCase().indexOf(input.toLowerCase()) >= 0;
}
function handleBlur() {
}
</script>

1
kicc-ui/src/layouts/default/setting/components/index.ts

@ -6,3 +6,4 @@ export const SettingFooter = createAsyncComponent(() => import('./SettingFooter.
export const SwitchItem = createAsyncComponent(() => import('./SwitchItem.vue')); export const SwitchItem = createAsyncComponent(() => import('./SwitchItem.vue'));
export const SelectItem = createAsyncComponent(() => import('./SelectItem.vue')); export const SelectItem = createAsyncComponent(() => import('./SelectItem.vue'));
export const InputNumberItem = createAsyncComponent(() => import('./InputNumberItem.vue')); export const InputNumberItem = createAsyncComponent(() => import('./InputNumberItem.vue'));
export const TenantSelect = createAsyncComponent(() => import('./TenantSelect.vue'));

1
kicc-ui/src/locales/lang/en/layout.ts

@ -69,6 +69,7 @@ export default {
sysTheme: 'System theme', sysTheme: 'System theme',
headerTheme: 'Header theme', headerTheme: 'Header theme',
sidebarTheme: 'Menu theme', sidebarTheme: 'Menu theme',
tenantManage: 'Tenant Manage',
menuDrag: 'Drag Sidebar', menuDrag: 'Drag Sidebar',
menuSearch: 'Menu search', menuSearch: 'Menu search',

1
kicc-ui/src/locales/lang/zh-CN/layout.ts

@ -69,6 +69,7 @@ export default {
sysTheme: '系统主题', sysTheme: '系统主题',
headerTheme: '顶栏主题', headerTheme: '顶栏主题',
sidebarTheme: '菜单主题', sidebarTheme: '菜单主题',
tenantManage: '多租户管理',
menuDrag: '侧边菜单拖拽', menuDrag: '侧边菜单拖拽',
menuSearch: '菜单搜索', menuSearch: '菜单搜索',

1
kicc-ui/src/store/modules/user.ts

@ -135,6 +135,7 @@ export const useUserStore = defineStore({
async getUserInfoAction(): Promise<User> { async getUserInfoAction(): Promise<User> {
const userInfo = await getUserInfo(); const userInfo = await getUserInfo();
userInfo.avatar || (userInfo.avatar = defaultAvatar); userInfo.avatar || (userInfo.avatar = defaultAvatar);
userInfo.tenantIds = String(userInfo.tenantId).split(',');
// 存储用户扩展信息,便于鉴权 // 存储用户扩展信息,便于鉴权
this.setUserInfo(userInfo); this.setUserInfo(userInfo);
this.setRoleIds(userInfo.roleIds); this.setRoleIds(userInfo.roleIds);

Loading…
Cancel
Save