diff --git a/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/Role.java b/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/Role.java index 67030278..8116943f 100644 --- a/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/Role.java +++ b/kicc-platform/kicc-platform-api/kicc-system-api/src/main/java/com/cloud/kicc/system/api/entity/Role.java @@ -52,23 +52,8 @@ public class Role extends CommonEntity { */ private String status; - /** 用户是否存在此角色标识 默认不存在 */ - @TableField(exist = false) - private boolean flag = false; - - @TableField(exist = false) - private List roles; - - /** 角色组 */ - @TableField(exist = false) - private String[] roleIds; - /** 菜单组 */ @TableField(exist = false) private String[] menuIds; - /** 机构(数据权限) */ - @TableField(exist = false) - private String[] deptIds; - } 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 06266ce7..de3691a0 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 @@ -3,16 +3,17 @@ package com.cloud.kicc.system.controller; import cn.hutool.core.util.ArrayUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; -import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; -import com.cloud.kicc.system.api.entity.Role; -import com.cloud.kicc.system.service.RoleService; import com.cloud.kicc.common.core.api.R; 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.service.RoleService; import lombok.AllArgsConstructor; import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.web.bind.annotation.*; @@ -34,10 +35,10 @@ public class RoleController { private final RoleService roleService; - private QueryWrapper getQueryWrapper(Role role) { - return new QueryWrapper() - .like(StrUtil.isNotBlank(role.getName()), "name", role.getName()) - .eq(StrUtil.isNotBlank(role.getCode()), "code", role.getCode()); + 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()); } @GetMapping("/list") @@ -75,7 +76,9 @@ public class RoleController { @PutMapping("/changeStatus") @PreAuthorize("@pms.hasPermission('role_edit')") public R changeStatus(@RequestBody Role role) { - roleService.update(new UpdateWrapper().eq("id", role.getId()).set("status", role.getStatus())); + roleService.update(new LambdaUpdateWrapper() + .eq(Role::getId, role.getId()) + .set(Role::getStatus, role.getStatus())); return R.ok(); } @@ -83,7 +86,8 @@ public class RoleController { @DeleteMapping("/remove/{id:[\\w,]+}") @PreAuthorize("@pms.hasPermission('role_del')") public R remove(@PathVariable String[] id) { - if(ArrayUtil.contains(id, "1")){ + // todo: 防止管理员角色删除,暂时处理手段 + if(ArrayUtil.contains(id, "1510536230140129280")){ return R.error("不允许删除管理员角色"); } roleService.removeByIds(Arrays.asList(id)); diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/RoleMapper.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/RoleMapper.java index d54441a5..983eaad8 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/RoleMapper.java +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/mapper/RoleMapper.java @@ -14,6 +14,7 @@ import java.util.List; * @Date: 2022/2/24 */ public interface RoleMapper extends BaseMapper { + /** * 根据用户ID查询角色 * diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/RoleService.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/RoleService.java index cee1dc85..d92634ae 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/RoleService.java +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/RoleService.java @@ -23,14 +23,6 @@ public interface RoleService extends IService { */ boolean insertRole(Role role); - /** - * 修改数据权限信息 - * - * @param role 角色信息 - * @return 结果 - */ - boolean updatePerms(Role role); - /** * 修改角色信息 * @@ -47,11 +39,4 @@ public interface RoleService extends IService { */ List selectMyRolesByUserId(String userId); - /** - * 根据用户ID查询角色 - * - * @param userId 用户ID - * @return 角色列表 - */ - List selectRolesByUserId(String userId); } diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/RoleServiceImpl.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/RoleServiceImpl.java index 90486ada..5ddd9621 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/RoleServiceImpl.java +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/RoleServiceImpl.java @@ -1,6 +1,7 @@ package com.cloud.kicc.system.service.impl; import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.cloud.kicc.system.api.entity.Dept; @@ -31,89 +32,29 @@ import java.util.List; @AllArgsConstructor public class RoleServiceImpl extends ServiceImpl implements RoleService { - private final RoleDeptService roleDeptService; private final RoleMenuService roleMenuService; - private final DeptService deptService; - /** - * 新增保存角色信息 - * - * @param role 角色信息 - * @return 结果 - */ @Override - @Transactional + @Transactional(rollbackFor = Exception.class) public boolean insertRole(Role role) { // 新增角色信息 baseMapper.insert(role); return insertRoleMenu(role); } - /** - * 修改数据权限信息 - * - * @param role 角色信息 - * @return 结果 - */ - @Override - public boolean updatePerms(Role role) { - // 修改角色信息 - baseMapper.updateById(role); - // 删除角色与部门关联 - roleDeptService.remove(new QueryWrapper().eq("role_id", role.getId())); - // 新增角色和部门信息(数据权限) - return insertRoleDept(role); - } - - /** - * 新增角色部门信息(数据权限) - * - * @param role 角色对象 - */ - public boolean insertRoleDept(Role role) { - boolean rows = true; - // 新增角色与部门(数据权限)管理 - List list = new ArrayList(); - for (String deptId : role.getDeptIds()) { - Dept dept = deptService.getById(deptId); - if (dept != null) { - RoleDept rd = new RoleDept(); - rd.setRoleId(role.getId()); - rd.setDeptId(deptId); - list.add(rd); - } - } - if (list.size() > 0) { - rows = roleDeptService.saveBatch(list); - } - return rows; - } - - - /** - * 修改保存角色信息 - * - * @param role 角色信息 - * @return 结果 - */ @Override public boolean updateRoleMenu(Role role) { // 修改角色信息 baseMapper.updateById(role); // 删除角色与菜单关联 - roleMenuService.remove(new QueryWrapper().eq("role_id", role.getId())); + roleMenuService.remove(new LambdaQueryWrapper().eq(RoleMenu::getRoleId, role.getId())); return insertRoleMenu(role); } - /** - * 新增角色菜单信息 - * - * @param role 角色对象 - */ public boolean insertRoleMenu(Role role) { boolean rows = true; // 新增用户与角色管理 - List list = new ArrayList(); + List list = new ArrayList(); for (String menuId : role.getMenuIds()) { RoleMenu rm = new RoleMenu(); rm.setRoleId(role.getId()); @@ -126,39 +67,9 @@ public class RoleServiceImpl extends ServiceImpl implements Ro return rows; } - /** - * 根据用户ID查询角色 - * - * @param userId 用户ID - * @return 角色列表 - */ @Override public List selectMyRolesByUserId(String userId) { return baseMapper.selectRolesByUserId(userId); } - /** - * 根据用户ID查询角色 - * - * @param userId 用户ID - * @return 角色列表 - */ - @Override - public List selectRolesByUserId(String userId) { - List roles = baseMapper.selectList(new QueryWrapper<>()); - if (StrUtil.isEmptyIfStr(userId)) { - return roles; - } else { - List userRoles = baseMapper.selectRolesByUserId(userId); - for (Role role : roles) { - for (Role userRole : userRoles) { - if (role.getId() == userRole.getId()) { - role.setFlag(true); - break; - } - } - } - return roles; - } - } } diff --git a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/UserServiceImpl.java b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/UserServiceImpl.java index 44bb376f..bf06e0c9 100644 --- a/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/UserServiceImpl.java +++ b/kicc-platform/kicc-platform-biz/kicc-system-biz/src/main/java/com/cloud/kicc/system/service/impl/UserServiceImpl.java @@ -64,7 +64,7 @@ public class UserServiceImpl extends ServiceImpl implements Us @Override public User getUserAuthority(User user) { // 设置角色列表 - List roleList = roleService.selectRolesByUserId(user.getId()); + List roleList = roleService.selectMyRolesByUserId(user.getId()); // 设置角色列表 (ID) List roleIds = roleList.stream().map(Role::getId).collect(Collectors.toList()); user.setRoleIds(ArrayUtil.toArray(roleIds, String.class)); diff --git a/kicc-ui/src/api/model/baseModel.ts b/kicc-ui/src/api/model/baseModel.ts index 4bcc9045..7842482c 100644 --- a/kicc-ui/src/api/model/baseModel.ts +++ b/kicc-ui/src/api/model/baseModel.ts @@ -1,5 +1,5 @@ -/** 对应后端的Page */ +/** 分页模型 */ export interface Page { size: number; current: number; @@ -7,10 +7,46 @@ export interface Page { [key: string]: any; } -/** 对应后端的R */ +/** 响应信息主体 */ export interface R { code: number; msg: string; total: number; data: T; } + +/** 扩展安全框架用户信息 */ +export interface KiccUser { + tenantId: string; + id: string; + deptId: string; + phone: string; + [key: string]: any; +} + +/** 基础模型 */ +export interface BaseEntity { + tenantId: string; + currentUser: KiccUser; + sqlFilter: string; +} + +/** 通用模型 */ +export interface CommonEntity { + createById: string; + createByName: string; + createTime: string; + updateById: string; + updateByName: string; + updateTime: string; + remarks: string; +} + +/** 树结构模型 */ +export interface TreeEntity { + parentId: string; + name: string; + sort: number; + children: T[] +} + diff --git a/kicc-ui/src/api/system/menu.ts b/kicc-ui/src/api/system/menu.ts index 57a7b8c3..3cff129a 100644 --- a/kicc-ui/src/api/system/menu.ts +++ b/kicc-ui/src/api/system/menu.ts @@ -10,13 +10,13 @@ enum Api { } // 查询菜单列表 -export const listMenu = (params?: MenuDto) => defHttp.get({ url: Api.list, params }); +export const listMenu = (params?: Partial) => defHttp.get({ url: Api.list, params }); // 新增菜单 -export const addMenu = (params: Menu) => defHttp.post({ url: Api.add, data: params }); +export const addMenu = (params: Partial) => defHttp.post({ url: Api.add, data: params }); // 修改菜单 -export const editMenu = (params: Menu) => defHttp.put({ url: Api.edit, data: params }); +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}` }); diff --git a/kicc-ui/src/api/system/model/menuModel.ts b/kicc-ui/src/api/system/model/menuModel.ts index 9aac9b32..eb3fc04f 100644 --- a/kicc-ui/src/api/system/model/menuModel.ts +++ b/kicc-ui/src/api/system/model/menuModel.ts @@ -1,11 +1,11 @@ // 引入基础包 -import { Page, R } from '/@/api/model/baseModel'; +import { Page, R, CommonEntity } from '/@/api/model/baseModel'; // 查询参数 export type MenuDto = Page & Menu; // 菜单对象 -export interface Menu { +export interface Menu extends CommonEntity { id: string; name: string; parentId: string; diff --git a/kicc-ui/src/api/system/model/roleModel.ts b/kicc-ui/src/api/system/model/roleModel.ts index 75a9f240..e3110b70 100644 --- a/kicc-ui/src/api/system/model/roleModel.ts +++ b/kicc-ui/src/api/system/model/roleModel.ts @@ -1,23 +1,16 @@ // 引入基础包 -import { Page, R } from '/@/api/model/baseModel'; +import { CommonEntity, Page, R } from '/@/api/model/baseModel'; // 查询参数 export type RoleDto = Page & Role; // 角色对象 -export interface Role { +export interface Role extends CommonEntity { id: string; name: string; code: string; sort: string; status: string; - createById: string; - createByName: string; - createTime: string; - updateById: string; - updateByName: string; - updateTime: string; - remarks: string; [key: string]: any; } diff --git a/kicc-ui/src/api/system/role.ts b/kicc-ui/src/api/system/role.ts index 9e337495..611442d9 100644 --- a/kicc-ui/src/api/system/role.ts +++ b/kicc-ui/src/api/system/role.ts @@ -1,4 +1,4 @@ -import { Role, RoleVo, RoleDto } from './model/roleModel'; +import { Role, RoleDto } from './model/roleModel'; import { defHttp } from '/@/utils/http/axios'; enum Api { @@ -11,13 +11,13 @@ enum Api { } // 查询角色列表 -export const listRole = (params?: RoleDto) => defHttp.get({ url: Api.list, params }); +export const listRole = (params?: Partial) => defHttp.get({ url: Api.list, params }); // 新增角色 -export const addRole = (params: Role) => defHttp.post({ url: Api.add, data: params }); +export const addRole = (params: Partial) => defHttp.post({ url: Api.add, data: params }); // 修改角色 -export const editRole = (params: Role) => defHttp.put({ url: Api.edit, data: params }); +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}` }); @@ -26,4 +26,4 @@ export const getRole = (params: { id: String }) => defHttp.get({ url: `${A export const delRole = (params: { id: String }) => defHttp.delete({ url: `${Api.del}/${params.id}` }); // 修改角色状态 -export const roleSetStatus = (params: Role) => defHttp.post({ url: Api.changeStatus, data: params }); +export const changeStatus = (params: Partial) => defHttp.post({ url: Api.changeStatus, data: params }); diff --git a/kicc-ui/src/views/system/menu/MenuModal.vue b/kicc-ui/src/views/system/menu/MenuModal.vue index 7f53b36d..22fe3dfc 100644 --- a/kicc-ui/src/views/system/menu/MenuModal.vue +++ b/kicc-ui/src/views/system/menu/MenuModal.vue @@ -1,6 +1,6 @@