From a1969a1bb417792bcc8e406ad97f635f9adac9fe Mon Sep 17 00:00:00 2001 From: wangxiang <1827945911@qq.com> Date: Mon, 25 Apr 2022 17:38:23 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=9F=20=E6=9E=84=E5=BB=BA=E5=B9=B3?= =?UTF-8?q?=E5=8F=B0=E4=B8=9A=E5=8A=A1=E6=A8=A1=E5=9D=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../system/controller/MenuController.java | 15 +++-- .../system/controller/RoleController.java | 6 +- .../kicc/system/service/MenuService.java | 7 +++ .../system/service/impl/MenuServiceImpl.java | 5 ++ .../src/api/model/{baseModel.ts => index.ts} | 5 ++ kicc-ui/src/api/system/menu.ts | 11 +++- kicc-ui/src/api/system/model/clientModel.ts | 2 +- kicc-ui/src/api/system/model/departModel.ts | 2 +- kicc-ui/src/api/system/model/dictModel.ts | 2 +- kicc-ui/src/api/system/model/logModel.ts | 2 +- kicc-ui/src/api/system/model/menuModel.ts | 2 +- kicc-ui/src/api/system/model/roleModel.ts | 2 +- kicc-ui/src/api/system/model/userModel.ts | 2 +- kicc-ui/src/api/system/role.ts | 4 +- .../src/views/system/client/ClientDrawer.vue | 4 +- kicc-ui/src/views/system/dict/DictDrawer.vue | 4 +- kicc-ui/src/views/system/log/LogDrawer.vue | 4 +- kicc-ui/src/views/system/role/RoleDrawer.vue | 12 ++-- kicc-ui/src/views/system/role/index.vue | 61 +++++++++++-------- kicc-ui/src/views/system/role/role.data.ts | 12 ++-- 20 files changed, 106 insertions(+), 58 deletions(-) rename kicc-ui/src/api/model/{baseModel.ts => index.ts} (90%) diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/MenuController.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/MenuController.java index 39dbdad5..dab17140 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/MenuController.java +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/MenuController.java @@ -2,14 +2,15 @@ package com.cloud.kicc.system.controller; import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; -import com.cloud.kicc.system.api.entity.Menu; -import com.cloud.kicc.system.api.entity.RoleMenu; -import com.cloud.kicc.system.service.MenuService; -import com.cloud.kicc.system.service.RoleMenuService; import com.cloud.kicc.common.core.api.R; import com.cloud.kicc.common.core.constant.AppConstants; import com.cloud.kicc.common.log.annotation.SysLog; import com.cloud.kicc.common.security.util.SecurityUtils; +import com.cloud.kicc.system.api.entity.Menu; +import com.cloud.kicc.system.api.entity.RoleMenu; +import com.cloud.kicc.system.api.vo.ResultVo; +import com.cloud.kicc.system.service.MenuService; +import com.cloud.kicc.system.service.RoleMenuService; import io.swagger.annotations.ApiOperation; import lombok.AllArgsConstructor; import org.springframework.security.access.prepost.PreAuthorize; @@ -101,4 +102,10 @@ public class MenuController { return R.ok(); } + @GetMapping("/roleMenuTree/{roleId}") + public R roleMenuTree(@PathVariable String roleId) { + List menuList = menuService.list(new LambdaQueryWrapper().eq(Menu::getHideMenu, "0").orderByAsc(Menu::getSort)); + return R.ok(new ResultVo().setResult(menuList).setExtend(menuService.selectMenusByRoleId(roleId))); + } + } diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/RoleController.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/RoleController.java index de3691a0..9d5beceb 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/RoleController.java +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/controller/RoleController.java @@ -13,6 +13,8 @@ import com.cloud.kicc.common.core.constant.AppConstants; import com.cloud.kicc.common.core.util.PinyinUtil; import com.cloud.kicc.common.log.annotation.SysLog; import com.cloud.kicc.system.api.entity.Role; +import com.cloud.kicc.system.api.entity.RoleMenu; +import com.cloud.kicc.system.service.RoleMenuService; import com.cloud.kicc.system.service.RoleService; import lombok.AllArgsConstructor; import org.springframework.security.access.prepost.PreAuthorize; @@ -34,11 +36,12 @@ import java.util.Arrays; public class RoleController { private final RoleService roleService; + private final RoleMenuService roleMenuService; private LambdaQueryWrapper getQueryWrapper(Role role) { return new LambdaQueryWrapper() .like(StrUtil.isNotBlank(role.getName()), Role::getName, role.getName()) - .eq(StrUtil.isNotBlank(role.getCode()), Role::getCode, role.getCode()); + .eq(StrUtil.isNotBlank(role.getStatus()), Role::getStatus, role.getStatus()); } @GetMapping("/list") @@ -90,6 +93,7 @@ public class RoleController { if(ArrayUtil.contains(id, "1510536230140129280")){ return R.error("不允许删除管理员角色"); } + roleMenuService.remove(new LambdaQueryWrapper().in(RoleMenu::getRoleId, Arrays.asList(id))); roleService.removeByIds(Arrays.asList(id)); return R.ok(); } diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/MenuService.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/MenuService.java index 8dc0b928..9e410f7d 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/MenuService.java +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/MenuService.java @@ -30,6 +30,13 @@ public interface MenuService extends IService { */ List selectPermsByRoleId(String roleId); + /** + * 通过角色编号查询菜单编号 + * + * @param roleId 角色ID + * @return 菜单编号 + */ + List selectMenusByRoleId(String roleId); /** * 构建树 diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/MenuServiceImpl.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/MenuServiceImpl.java index 9d791f70..a42a17af 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/MenuServiceImpl.java +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/MenuServiceImpl.java @@ -38,6 +38,11 @@ public class MenuServiceImpl extends ServiceImpl implements Me return baseMapper.selectPermsByRoleId(roleId); } + @Override + public List selectMenusByRoleId(String roleId) { + return baseMapper.selectMenusByRoleId(roleId); + } + @Override public List buildMenuRoute(List menus) { List menuVoList = menus.stream().map(menu -> { diff --git a/kicc-ui/src/api/model/baseModel.ts b/kicc-ui/src/api/model/index.ts similarity index 90% rename from kicc-ui/src/api/model/baseModel.ts rename to kicc-ui/src/api/model/index.ts index 7842482c..07f3ba1c 100644 --- a/kicc-ui/src/api/model/baseModel.ts +++ b/kicc-ui/src/api/model/index.ts @@ -50,3 +50,8 @@ export interface TreeEntity { children: T[] } +/** 结果集模型 */ +export interface ResultVo { + result: T; + extend: T; +} diff --git a/kicc-ui/src/api/system/menu.ts b/kicc-ui/src/api/system/menu.ts index 3cff129a..ca150bf0 100644 --- a/kicc-ui/src/api/system/menu.ts +++ b/kicc-ui/src/api/system/menu.ts @@ -1,4 +1,5 @@ import { MenuDto, Menu, MenuVo } from './model/menuModel'; +import { ResultVo } from '../model'; import { defHttp } from '/@/utils/http/axios'; enum Api { @@ -6,7 +7,8 @@ enum Api { add = 'system_proxy/system/menu/save', get = 'system_proxy/system/menu', edit = 'system_proxy/system/menu/update', - del = 'system_proxy/system/menu/remove' + del = 'system_proxy/system/menu/remove', + roleMenuIds = 'system_proxy/system/menu/roleMenuTree' } // 查询菜单列表 @@ -19,7 +21,10 @@ export const addMenu = (params: Partial) => defHttp.post({ url: Api.add, d export const editMenu = (params: Partial) => defHttp.put({ url: Api.edit, data: params }); // 查询菜单详细 -export const getMenu = (params: { id: String }) => defHttp.get({ url: `${Api.get}/${params.id}` }); +export const getMenu = (id: string) => defHttp.get({ url: `${Api.get}/${id}` }); // 删除菜单 -export const delMenu = (params: { id: String }) => defHttp.delete({ url: `${Api.del}/${params.id}` }); +export const delMenu = (id: string) => defHttp.delete({ url: `${Api.del}/${id}` }); + +// 通过角色编号查询菜单编号 +export const getRoleMenuIds = (roleId : string) => defHttp.get({ url: `${Api.roleMenuIds}/${roleId}`}); diff --git a/kicc-ui/src/api/system/model/clientModel.ts b/kicc-ui/src/api/system/model/clientModel.ts index e4840ffa..777706d5 100644 --- a/kicc-ui/src/api/system/model/clientModel.ts +++ b/kicc-ui/src/api/system/model/clientModel.ts @@ -1,5 +1,5 @@ // 引入基础包 -import { Page, R } from '/@/api/model/baseModel'; +import { Page, R } from '/@/api/model'; // 定义查询参数 export type ClientParams = Page & { diff --git a/kicc-ui/src/api/system/model/departModel.ts b/kicc-ui/src/api/system/model/departModel.ts index cf2400b4..a1ff90d3 100644 --- a/kicc-ui/src/api/system/model/departModel.ts +++ b/kicc-ui/src/api/system/model/departModel.ts @@ -1,5 +1,5 @@ // 引入基础包 -import { Page, R } from '/@/api/model/baseModel'; +import { Page, R } from '/@/api/model'; // 定义查询参数 export type DepartVO = Page & { diff --git a/kicc-ui/src/api/system/model/dictModel.ts b/kicc-ui/src/api/system/model/dictModel.ts index 418f59d5..7241e4d0 100644 --- a/kicc-ui/src/api/system/model/dictModel.ts +++ b/kicc-ui/src/api/system/model/dictModel.ts @@ -1,5 +1,5 @@ // 引入基础包 -import { Page, R } from '/@/api/model/baseModel'; +import { Page, R } from '/@/api/model'; // 定义查询参数 export type DictVO = Page & { diff --git a/kicc-ui/src/api/system/model/logModel.ts b/kicc-ui/src/api/system/model/logModel.ts index 1c5f8c91..22b60c66 100644 --- a/kicc-ui/src/api/system/model/logModel.ts +++ b/kicc-ui/src/api/system/model/logModel.ts @@ -1,5 +1,5 @@ // 引入基础包 -import { Page, R } from '/@/api/model/baseModel'; +import { Page, R } from '/@/api/model'; // 定义查询参数 export type LogParams = Page & { diff --git a/kicc-ui/src/api/system/model/menuModel.ts b/kicc-ui/src/api/system/model/menuModel.ts index eb3fc04f..5da65555 100644 --- a/kicc-ui/src/api/system/model/menuModel.ts +++ b/kicc-ui/src/api/system/model/menuModel.ts @@ -1,5 +1,5 @@ // 引入基础包 -import { Page, R, CommonEntity } from '/@/api/model/baseModel'; +import { Page, R, CommonEntity } from '/@/api/model'; // 查询参数 export type MenuDto = Page & Menu; diff --git a/kicc-ui/src/api/system/model/roleModel.ts b/kicc-ui/src/api/system/model/roleModel.ts index e3110b70..c0d7c3c9 100644 --- a/kicc-ui/src/api/system/model/roleModel.ts +++ b/kicc-ui/src/api/system/model/roleModel.ts @@ -1,5 +1,5 @@ // 引入基础包 -import { CommonEntity, Page, R } from '/@/api/model/baseModel'; +import { CommonEntity, Page, R } from '/@/api/model'; // 查询参数 export type RoleDto = Page & Role; diff --git a/kicc-ui/src/api/system/model/userModel.ts b/kicc-ui/src/api/system/model/userModel.ts index decd0539..b13c6b00 100644 --- a/kicc-ui/src/api/system/model/userModel.ts +++ b/kicc-ui/src/api/system/model/userModel.ts @@ -1,5 +1,5 @@ // 引入基础包 -import { Page, R } from '/@/api/model/baseModel'; +import { Page, R } from '/@/api/model'; // 定义查询参数 export type UserVO = Page & { diff --git a/kicc-ui/src/api/system/role.ts b/kicc-ui/src/api/system/role.ts index bab2a48b..69fae6a1 100644 --- a/kicc-ui/src/api/system/role.ts +++ b/kicc-ui/src/api/system/role.ts @@ -20,10 +20,10 @@ export const addRole = (params: Partial) => defHttp.post({ url: Api.add, d export const editRole = (params: Partial) => defHttp.put({ url: Api.edit, data: params }); // 查询角色详细 -export const getRole = (params: { id: String }) => defHttp.get({ url: `${Api.get}/${params.id}` }); +export const getRole = (id: string) => defHttp.get({ url: `${Api.get}/${id}` }); // 删除角色 -export const delRole = (params: { id: String }) => defHttp.delete({ url: `${Api.del}/${params.id}` }); +export const delRole = (id: string) => defHttp.delete({ url: `${Api.del}/${id}` }); // 修改角色状态 export const changeStatus = (id: string, status: string) => defHttp.put({ url: Api.changeStatus, data: { id: id, status: status } }); diff --git a/kicc-ui/src/views/system/client/ClientDrawer.vue b/kicc-ui/src/views/system/client/ClientDrawer.vue index 3c83ad29..d1d4c0ab 100644 --- a/kicc-ui/src/views/system/client/ClientDrawer.vue +++ b/kicc-ui/src/views/system/client/ClientDrawer.vue @@ -16,7 +16,7 @@ import { formSchema } from './client.data'; import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; import { TreeItem } from '/@/components/Tree'; - import { getMenuList } from '/@/api/system/role'; + //import { getMenuList } from '/@/api/system/role'; import { set } from '/@/api/system/client'; const emit = defineEmits(['success', 'register']); @@ -35,7 +35,7 @@ setDrawerProps({ confirmLoading: false }); // 需要在setFieldsValue之前先填充treeData,否则Tree组件可能会报key not exist警告 if (unref(treeData).length === 0) { - treeData.value = (await getMenuList()) as any as TreeItem[]; + //treeData.value = (await getMenuList()) as any as TreeItem[]; } isUpdate.value = !!data?.isUpdate; diff --git a/kicc-ui/src/views/system/dict/DictDrawer.vue b/kicc-ui/src/views/system/dict/DictDrawer.vue index 87d6ed3c..bd7358ce 100644 --- a/kicc-ui/src/views/system/dict/DictDrawer.vue +++ b/kicc-ui/src/views/system/dict/DictDrawer.vue @@ -16,7 +16,7 @@ import { formSchema } from './dict.data'; import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; import { TreeItem } from '/@/components/Tree'; - import { getMenuList } from '/@/api/system/role'; + //import { getMenuList } from '/@/api/system/role'; import { set } from '/@/api/system/dict'; const emit = defineEmits(['success', 'register']); @@ -34,7 +34,7 @@ setDrawerProps({ confirmLoading: false }); // 需要在setFieldsValue之前先填充treeData,否则Tree组件可能会报key not exist警告 if (unref(treeData).length === 0) { - treeData.value = (await getMenuList()) as any as TreeItem[]; + //treeData.value = (await getMenuList()) as any as TreeItem[]; } isUpdate.value = !!data?.isUpdate; diff --git a/kicc-ui/src/views/system/log/LogDrawer.vue b/kicc-ui/src/views/system/log/LogDrawer.vue index ef9871cd..dc8a8bd1 100644 --- a/kicc-ui/src/views/system/log/LogDrawer.vue +++ b/kicc-ui/src/views/system/log/LogDrawer.vue @@ -27,7 +27,7 @@ import { formSchema } from './log.data'; import { BasicDrawer, useDrawerInner } from '/@/components/Drawer'; import { BasicTree, TreeItem } from '/@/components/Tree'; - import { getMenuList } from '/@/api/system/role'; + //import { getMenuList } from '/@/api/system/role'; const emit = defineEmits(['success', 'register']); const isUpdate = ref(true); @@ -44,7 +44,7 @@ setDrawerProps({ confirmLoading: false }); // 需要在setFieldsValue之前先填充treeData,否则Tree组件可能会报key not exist警告 if (unref(treeData).length === 0) { - treeData.value = (await getMenuList()) as any as TreeItem[]; + //treeData.value = (await getMenuList()) as any as TreeItem[]; } isUpdate.value = !!data?.isUpdate; diff --git a/kicc-ui/src/views/system/role/RoleDrawer.vue b/kicc-ui/src/views/system/role/RoleDrawer.vue index abcd9125..d82bb4ee 100644 --- a/kicc-ui/src/views/system/role/RoleDrawer.vue +++ b/kicc-ui/src/views/system/role/RoleDrawer.vue @@ -23,12 +23,12 @@ * Copyright © 2020-2022 entfrm All rights reserved. * author entfrm开发团队-王翔 */ - import { unref, reactive } from 'vue'; + import { reactive } from 'vue'; import { BasicForm, useForm } from '/@/components/Form/index'; import { formSchema } from './role.data'; import { BasicDrawer, DrawerProps, useDrawerInner } from '/@/components/Drawer'; import { BasicTree, TreeItem } from '/@/components/Tree'; - import { listMenu } from '/@/api/system/menu'; + import { listMenu, getRoleMenuIds } from '/@/api/system/menu'; import { addRole, editRole, getRole } from '/@/api/system/role'; import { listToTree } from "/@/utils/helper/treeHelper"; @@ -56,13 +56,15 @@ state.tag = data._tag; const roleId = data.record?.id; const props: Partial = { confirmLoading: false }; - switch (unref(state.tag)) { + switch (state.tag) { case 'add': props.title = '新增角色'; break; case 'edit': props.title = '编辑角色'; - await setFieldsValue(await getRole({ id: roleId }) || {}); + const result = await getRoleMenuIds(roleId); + const role = await getRole(roleId) || {}; + await setFieldsValue(Object.assign(role, { menuIds: result.extend })); break; } setDrawerProps(props); @@ -72,7 +74,7 @@ try { const formData = await validate(); setDrawerProps({ confirmLoading: true }); - switch (unref(state.tag)) { + switch (state.tag) { case 'add': await addRole(formData); break; diff --git a/kicc-ui/src/views/system/role/index.vue b/kicc-ui/src/views/system/role/index.vue index f1cb9bd4..df44c84f 100644 --- a/kicc-ui/src/views/system/role/index.vue +++ b/kicc-ui/src/views/system/role/index.vue @@ -1,20 +1,23 @@