From 342e418e51b3def39438591bf86103c6aa1c1c43 Mon Sep 17 00:00:00 2001 From: b2baccline <23131013+b2baccline@users.noreply.github.com> Date: Fri, 9 Apr 2021 21:37:10 +0800 Subject: [PATCH] =?UTF-8?q?:hammer:=20SysPermission=20=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E4=B8=BA=20SysMenu=EF=BC=8C=E5=87=8F=E5=B0=91=E4=BA=86?= =?UTF-8?q?=E5=A4=A7=E9=83=A8=E5=88=86=E7=9A=84=E9=85=8D=E7=BD=AE=E5=B1=9E?= =?UTF-8?q?=E6=80=A7=EF=BC=8C=E8=BD=AC=E4=BA=A4=E7=94=B1=E5=89=8D=E7=AB=AF?= =?UTF-8?q?=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sys/controller/SysMenuController.java | 120 ++++++++++++++++ .../controller/SysPermissionController.java | 118 ---------------- .../sys/controller/SysRoleController.java | 17 +-- .../sys/converter/SysMenuConverter.java | 33 +++++ .../sys/converter/SysPermissionConverter.java | 25 ---- .../modules/sys/mapper/SysMenuMapper.java | 50 +++++++ .../sys/mapper/SysPermissionMapper.java | 42 ------ ...sionMapper.java => SysRoleMenuMapper.java} | 12 +- .../modules/sys/model/entity/SysMenu.java | 122 ++++++++++++++++ .../sys/model/entity/SysPermission.java | 130 ----------------- ...ysRolePermission.java => SysRoleMenu.java} | 12 +- .../admin/modules/sys/model/qo/SysMenuQO.java | 42 ++++++ .../modules/sys/model/vo/PermissionVO.java | 133 ------------------ .../admin/modules/sys/model/vo/RouterVO.java | 83 ----------- .../modules/sys/model/vo/SysMenuPageVO.java | 110 +++++++++++++++ .../modules/sys/model/vo/SysMenuRouterVO.java | 84 +++++++++++ .../modules/sys/service/SysMenuService.java | 30 ++++ .../sys/service/SysPermissionService.java | 32 ----- ...onService.java => SysRoleMenuService.java} | 12 +- .../sys/service/impl/SysMenuServiceImpl.java | 64 +++++++++ .../impl/SysPermissionServiceImpl.java | 62 -------- ...eImpl.java => SysRoleMenuServiceImpl.java} | 24 ++-- .../sys/service/impl/SysRoleServiceImpl.java | 6 +- .../sys/service/impl/SysUserServiceImpl.java | 12 +- .../resources/mapper/sys/PermissionMapper.xml | 38 ----- .../resources/mapper/sys/SysMenuMapper.xml | 75 ++++++++++ doc/update_sql/0.1.0.sql | 74 ++++++++++ 27 files changed, 852 insertions(+), 710 deletions(-) create mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/controller/SysMenuController.java delete mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/controller/SysPermissionController.java create mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/converter/SysMenuConverter.java delete mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/converter/SysPermissionConverter.java create mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/mapper/SysMenuMapper.java delete mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/mapper/SysPermissionMapper.java rename ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/mapper/{SysRolePermissionMapper.java => SysRoleMenuMapper.java} (58%) create mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/entity/SysMenu.java delete mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/entity/SysPermission.java rename ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/entity/{SysRolePermission.java => SysRoleMenu.java} (76%) create mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/qo/SysMenuQO.java delete mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/vo/PermissionVO.java delete mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/vo/RouterVO.java create mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/vo/SysMenuPageVO.java create mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/vo/SysMenuRouterVO.java create mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/SysMenuService.java delete mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/SysPermissionService.java rename ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/{SysRolePermissionService.java => SysRoleMenuService.java} (67%) create mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/impl/SysMenuServiceImpl.java delete mode 100644 ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/impl/SysPermissionServiceImpl.java rename ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/impl/{SysRolePermissionServiceImpl.java => SysRoleMenuServiceImpl.java} (61%) delete mode 100644 ballcat-admin/ballcat-admin-core/src/main/resources/mapper/sys/PermissionMapper.xml create mode 100644 ballcat-admin/ballcat-admin-core/src/main/resources/mapper/sys/SysMenuMapper.xml create mode 100644 doc/update_sql/0.1.0.sql diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/controller/SysMenuController.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/controller/SysMenuController.java new file mode 100644 index 00000000..e9a5678c --- /dev/null +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/controller/SysMenuController.java @@ -0,0 +1,120 @@ +package com.hccake.ballcat.admin.modules.sys.controller; + +import cn.hutool.core.collection.CollectionUtil; +import com.hccake.ballcat.admin.constants.SysPermissionConst; +import com.hccake.ballcat.admin.modules.sys.converter.SysMenuConverter; +import com.hccake.ballcat.admin.modules.sys.model.entity.SysMenu; +import com.hccake.ballcat.admin.modules.sys.model.qo.SysMenuQO; +import com.hccake.ballcat.admin.modules.sys.model.vo.SysMenuRouterVO; +import com.hccake.ballcat.admin.modules.sys.service.SysMenuService; +import com.hccake.ballcat.admin.oauth.SysUserDetails; +import com.hccake.ballcat.admin.oauth.domain.UserResources; +import com.hccake.ballcat.admin.oauth.util.SecurityUtils; +import com.hccake.ballcat.commom.log.operation.annotation.CreateOperationLogging; +import com.hccake.ballcat.commom.log.operation.annotation.DeleteOperationLogging; +import com.hccake.ballcat.commom.log.operation.annotation.UpdateOperationLogging; +import com.hccake.ballcat.common.model.result.BaseResultCode; +import com.hccake.ballcat.common.model.result.R; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +import lombok.RequiredArgsConstructor; +import org.springframework.security.access.prepost.PreAuthorize; +import org.springframework.web.bind.annotation.*; + +import java.util.*; +import java.util.stream.Collectors; + +/** + * 菜单权限 + * + * @author hccake 2021-04-06 17:59:51 + */ +@RestController +@RequiredArgsConstructor +@RequestMapping("/sys/sysmenu") +@Api(value = "sysmenu", tags = "菜单权限管理") +public class SysMenuController { + + private final SysMenuService sysMenuService; + + /** + * 返回当前用户的路由集合 + * @return 当前用户的路由 + */ + @ApiOperation(value = "动态路由", notes = "动态路由") + @GetMapping("/router") + public R> getUserPermission() { + + // 获取角色Code + SysUserDetails sysUserDetails = SecurityUtils.getSysUserDetails(); + UserResources userResources = sysUserDetails.getUserResources(); + Collection roleCodes = userResources.getRoles(); + if (CollectionUtil.isEmpty(roleCodes)) { + return R.ok(new ArrayList<>()); + } + + // 获取符合条件的权限 + Set all = new HashSet<>(); + roleCodes.forEach(roleCode -> all.addAll(sysMenuService.listByRoleCode(roleCode))); + + // 筛选出菜单 + List menuVOList = all.stream() + .filter(menuVo -> SysPermissionConst.Type.BUTTON.getValue() != menuVo.getType()) + .sorted(Comparator.comparingInt(SysMenu::getSort)).map(SysMenuConverter.INSTANCE::poToRouterVo) + .collect(Collectors.toList()); + + return R.ok(menuVOList); + } + + /** + * 查询菜单列表 + * @param sysMenuQO 菜单权限查询对象 + * @return R 通用返回体 + */ + @ApiOperation(value = "查询菜单列表", notes = "查询菜单列表") + @GetMapping("/list") + @PreAuthorize("@per.hasPermission('sys:sysmenu:read')") + public R> getSysMenuPage(SysMenuQO sysMenuQO) { + return R.ok(sysMenuService.listOrderBySort(sysMenuQO)); + } + + /** + * 新增菜单权限 + * @param sysMenu 菜单权限 + * @return R 通用返回体 + */ + @ApiOperation(value = "新增菜单权限", notes = "新增菜单权限") + @CreateOperationLogging(msg = "新增菜单权限") + @PostMapping + @PreAuthorize("@per.hasPermission('sys:sysmenu:add')") + public R save(@RequestBody SysMenu sysMenu) { + return sysMenuService.save(sysMenu) ? R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "新增菜单权限失败"); + } + + /** + * 修改菜单权限 + * @param sysMenu 菜单权限 + * @return R 通用返回体 + */ + @ApiOperation(value = "修改菜单权限", notes = "修改菜单权限") + @UpdateOperationLogging(msg = "修改菜单权限") + @PutMapping + @PreAuthorize("@per.hasPermission('sys:sysmenu:edit')") + public R updateById(@RequestBody SysMenu sysMenu) { + return sysMenuService.updateById(sysMenu) ? R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "修改菜单权限失败"); + } + + /** + * 通过id删除菜单权限 + * @param id id + * @return R 通用返回体 + */ + @ApiOperation(value = "通过id删除菜单权限", notes = "通过id删除菜单权限") + @DeleteOperationLogging(msg = "通过id删除菜单权限") + @DeleteMapping("/{id}") + @PreAuthorize("@per.hasPermission('sys:sysmenu:del')") + public R removeById(@PathVariable Integer id) { + return sysMenuService.removeById(id) ? R.ok() : R.failed(BaseResultCode.UPDATE_DATABASE_ERROR, "通过id删除菜单权限失败"); + } + +} \ No newline at end of file diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/controller/SysPermissionController.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/controller/SysPermissionController.java deleted file mode 100644 index c0124aee..00000000 --- a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/controller/SysPermissionController.java +++ /dev/null @@ -1,118 +0,0 @@ -package com.hccake.ballcat.admin.modules.sys.controller; - -import cn.hutool.core.collection.CollectionUtil; -import com.hccake.ballcat.admin.constants.SysPermissionConst; -import com.hccake.ballcat.admin.modules.sys.converter.SysPermissionConverter; -import com.hccake.ballcat.admin.modules.sys.model.entity.SysPermission; -import com.hccake.ballcat.admin.modules.sys.model.vo.PermissionVO; -import com.hccake.ballcat.admin.modules.sys.model.vo.RouterVO; -import com.hccake.ballcat.admin.modules.sys.service.SysPermissionService; -import com.hccake.ballcat.admin.oauth.SysUserDetails; -import com.hccake.ballcat.admin.oauth.domain.UserResources; -import com.hccake.ballcat.admin.oauth.util.SecurityUtils; -import com.hccake.ballcat.commom.log.operation.annotation.CreateOperationLogging; -import com.hccake.ballcat.commom.log.operation.annotation.DeleteOperationLogging; -import com.hccake.ballcat.commom.log.operation.annotation.UpdateOperationLogging; -import com.hccake.ballcat.common.model.result.R; -import io.swagger.annotations.Api; -import io.swagger.annotations.ApiOperation; -import lombok.RequiredArgsConstructor; -import org.springframework.security.access.prepost.PreAuthorize; -import org.springframework.web.bind.annotation.*; - -import javax.validation.Valid; -import java.util.*; -import java.util.stream.Collectors; - -/** - * @author hccake - * @date 2019/09/17 - */ -@RestController -@RequestMapping("/syspermission") -@Api(value = "syspermission", tags = "权限管理模块") -@RequiredArgsConstructor -public class SysPermissionController { - - private final SysPermissionService sysPermissionService; - - /** - * 返回当前用户的路由集合 - * @return 当前用户的路由 - */ - @ApiOperation(value = "动态路由", notes = "动态路由") - @GetMapping("/router") - public R> getUserPermission() { - - // 获取角色Code - SysUserDetails sysUserDetails = SecurityUtils.getSysUserDetails(); - UserResources userResources = sysUserDetails.getUserResources(); - Collection roleCodes = userResources.getRoles(); - if (CollectionUtil.isEmpty(roleCodes)) { - return R.ok(new ArrayList<>()); - } - - // 获取符合条件的权限 - Set all = new HashSet<>(); - roleCodes.forEach(roleCode -> all.addAll(sysPermissionService.listVOByRoleCode(roleCode))); - - // 筛选出菜单 - List routerVOList = all.stream() - .filter(menuVo -> SysPermissionConst.Type.MENU.getValue() == menuVo.getType() - || SysPermissionConst.Type.DIRECTORY.getValue() == menuVo.getType()) - .sorted(Comparator.comparingInt(PermissionVO::getSort)).map(SysPermissionConverter.INSTANCE::toRouter) - .collect(Collectors.toList()); - - return R.ok(routerVOList); - } - - /** - * 所有的权限集合 - */ - @GetMapping(value = "/list") - @PreAuthorize("@per.hasPermission('sys:syspermission:read')") - public R> getTree() { - return R.ok(sysPermissionService.listOrderBySort()); - } - - /** - * 通过ID查询权限的详细信息 - * @param id 权限ID - * @return 权限详细信息 - */ - @GetMapping("/{id}") - @PreAuthorize("@per.hasPermission('sys:syspermission:read')") - public R getById(@PathVariable Integer id) { - return R.ok(sysPermissionService.getById(id)); - } - - @ApiOperation(value = "新增权限", notes = "新增权限") - @CreateOperationLogging(msg = "新增权限") - @PostMapping - @PreAuthorize("@per.hasPermission('sys:syspermission:add')") - public R save(@Valid @RequestBody SysPermission sysMenu) { - return R.ok(sysPermissionService.save(sysMenu)); - } - - /** - * 更新权限 - * @param sysPermission 权限 - * @return R - */ - @ApiOperation(value = "修改权限", notes = "修改权限") - @UpdateOperationLogging(msg = "修改权限") - @PutMapping - @PreAuthorize("@per.hasPermission('sys:syspermission:edit')") - public R update(@Valid @RequestBody SysPermission sysPermission) { - return R.ok(sysPermissionService.updateById(sysPermission)); - } - - @ApiOperation(value = "通过id删除权限", notes = "通过id删除权限") - @DeleteOperationLogging(msg = "通过id删除权限") - @DeleteMapping("/{id}") - @PreAuthorize("@per.hasPermission('sys:syspermission:del')") - public R removeById(@PathVariable Integer id) { - return R.ok(sysPermissionService.removeById(id)); - } - -} diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/controller/SysRoleController.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/controller/SysRoleController.java index 59fba72b..72b1853b 100644 --- a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/controller/SysRoleController.java +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/controller/SysRoleController.java @@ -3,14 +3,14 @@ package com.hccake.ballcat.admin.modules.sys.controller; import com.hccake.ballcat.admin.constants.SysRoleConst; import com.hccake.ballcat.admin.modules.sys.converter.SysRoleConverter; import com.hccake.ballcat.admin.modules.sys.model.dto.SysRoleUpdateDTO; +import com.hccake.ballcat.admin.modules.sys.model.entity.SysMenu; import com.hccake.ballcat.admin.modules.sys.model.entity.SysRole; import com.hccake.ballcat.admin.modules.sys.model.qo.RoleBindUserQO; import com.hccake.ballcat.admin.modules.sys.model.qo.SysRoleQO; -import com.hccake.ballcat.admin.modules.sys.model.vo.PermissionVO; import com.hccake.ballcat.admin.modules.sys.model.vo.RoleBindUserVO; import com.hccake.ballcat.admin.modules.sys.model.vo.SysRolePageVO; -import com.hccake.ballcat.admin.modules.sys.service.SysPermissionService; -import com.hccake.ballcat.admin.modules.sys.service.SysRolePermissionService; +import com.hccake.ballcat.admin.modules.sys.service.SysMenuService; +import com.hccake.ballcat.admin.modules.sys.service.SysRoleMenuService; import com.hccake.ballcat.admin.modules.sys.service.SysRoleService; import com.hccake.ballcat.admin.modules.sys.service.SysUserRoleService; import com.hccake.ballcat.commom.log.operation.annotation.CreateOperationLogging; @@ -42,11 +42,11 @@ public class SysRoleController { private final SysRoleService sysRoleService; - private final SysPermissionService sysPermissionService; + private final SysMenuService sysMenuService; private final SysUserRoleService sysUserRoleService; - private final SysRolePermissionService sysRolePermissionService; + private final SysRoleMenuService sysRoleMenuService; /** * 分页查询角色信息 @@ -134,7 +134,7 @@ public class SysRoleController { @UpdateOperationLogging(msg = "更新角色权限") @PreAuthorize("@per.hasPermission('sys:sysrole:grant')") public R savePermissionIds(@PathVariable String roleCode, @RequestBody Integer[] permissionIds) { - return R.ok(sysRolePermissionService.saveRolePermissions(roleCode, permissionIds)); + return R.ok(sysRoleMenuService.saveRoleMenus(roleCode, permissionIds)); } /** @@ -144,8 +144,9 @@ public class SysRoleController { */ @GetMapping("/permission/code/{roleCode}") public R> getPermissionIds(@PathVariable String roleCode) { - return R.ok(sysPermissionService.listVOByRoleCode(roleCode).stream().map(PermissionVO::getId) - .collect(Collectors.toList())); + List sysMenus = sysMenuService.listByRoleCode(roleCode); + List menuIds = sysMenus.stream().map(SysMenu::getId).collect(Collectors.toList()); + return R.ok(menuIds); } /** diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/converter/SysMenuConverter.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/converter/SysMenuConverter.java new file mode 100644 index 00000000..92910dfd --- /dev/null +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/converter/SysMenuConverter.java @@ -0,0 +1,33 @@ +package com.hccake.ballcat.admin.modules.sys.converter; + +import com.hccake.ballcat.admin.modules.sys.model.entity.SysMenu; +import com.hccake.ballcat.admin.modules.sys.model.vo.SysMenuRouterVO; +import com.hccake.ballcat.admin.modules.sys.model.vo.SysMenuPageVO; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +/** + * 菜单权限模型转换器 + * + * @author hccake 2021-04-06 17:59:51 + */ +@Mapper +public interface SysMenuConverter { + + SysMenuConverter INSTANCE = Mappers.getMapper(SysMenuConverter.class); + + /** + * PO 转 PageVO + * @param sysMenu 菜单权限实体 + * @return SysMenuPageVO 菜单权限PageVO + */ + SysMenuPageVO poToPageVo(SysMenu sysMenu); + + /** + * PO 转 VO + * @param sysMenu 菜单权限实体 + * @return SysMenuVO + */ + SysMenuRouterVO poToRouterVo(SysMenu sysMenu); + +} diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/converter/SysPermissionConverter.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/converter/SysPermissionConverter.java deleted file mode 100644 index b64e4393..00000000 --- a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/converter/SysPermissionConverter.java +++ /dev/null @@ -1,25 +0,0 @@ -package com.hccake.ballcat.admin.modules.sys.converter; - -import com.hccake.ballcat.admin.modules.sys.model.vo.RouterVO; -import com.hccake.ballcat.admin.modules.sys.model.vo.PermissionVO; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -/** - * @author Hccake - * @version 1.0 - * @date 2019/9/17 15:26 - */ -@Mapper -public interface SysPermissionConverter { - - SysPermissionConverter INSTANCE = Mappers.getMapper(SysPermissionConverter.class); - - /** - * 转换permissionVO为Router - * @param permissionVO 权限VO - * @return Router 路由对象 - */ - RouterVO toRouter(PermissionVO permissionVO); - -} diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/mapper/SysMenuMapper.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/mapper/SysMenuMapper.java new file mode 100644 index 00000000..58980164 --- /dev/null +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/mapper/SysMenuMapper.java @@ -0,0 +1,50 @@ +package com.hccake.ballcat.admin.modules.sys.mapper; + +import com.baomidou.mybatisplus.core.toolkit.Wrappers; +import com.hccake.ballcat.admin.modules.sys.model.entity.SysMenu; +import com.hccake.ballcat.admin.modules.sys.model.qo.SysMenuQO; +import com.hccake.extend.mybatis.plus.conditions.query.LambdaQueryWrapperX; +import com.hccake.extend.mybatis.plus.mapper.ExtendMapper; +import com.hccake.extend.mybatis.plus.toolkit.WrappersX; + +import java.io.Serializable; +import java.util.List; + +/** + * 菜单权限 + * + * @author hccake 2021-04-01 22:08:13 + */ +public interface SysMenuMapper extends ExtendMapper { + + /** + * 查询权限集合,并按sort排序(升序) + * @param sysMenuQO 查询条件 + * @return List + */ + default List listOrderBySort(SysMenuQO sysMenuQO) { + LambdaQueryWrapperX wrapper = WrappersX.lambdaQueryX(SysMenu.class) + .likeIfPresent(SysMenu::getId, sysMenuQO.getId()).likeIfPresent(SysMenu::getTitle, sysMenuQO.getTitle()) + .likeIfPresent(SysMenu::getPermission, sysMenuQO.getPermission()) + .likeIfPresent(SysMenu::getPath, sysMenuQO.getPath()); + wrapper.orderByAsc(SysMenu::getSort); + return this.selectList(wrapper); + } + + /** + * 根据角色标识查询对应的菜单 + * @param roleCode 角色标识 + * @return List + */ + List listByRoleCode(String roleCode); + + /** + * 查询指定权限的下级权限总数 + * @param id 权限ID + * @return 下级权限总数 + */ + default Integer countSubMenu(Serializable id) { + return this.selectCount(Wrappers.query().lambda().eq(SysMenu::getParentId, id)); + } + +} \ No newline at end of file diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/mapper/SysPermissionMapper.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/mapper/SysPermissionMapper.java deleted file mode 100644 index 4c7f24ac..00000000 --- a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/mapper/SysPermissionMapper.java +++ /dev/null @@ -1,42 +0,0 @@ -package com.hccake.ballcat.admin.modules.sys.mapper; - -import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.hccake.ballcat.admin.modules.sys.model.entity.SysPermission; -import com.hccake.ballcat.admin.modules.sys.model.vo.PermissionVO; -import com.hccake.extend.mybatis.plus.mapper.ExtendMapper; - -import java.io.Serializable; -import java.util.List; - -/** - * 菜单权限表 Mapper 接口 - * - * @author hccake - */ -public interface SysPermissionMapper extends ExtendMapper { - - /** - * 查询指定权限的下级权限总数 - * @param id 权限ID - * @return 下级权限总数 - */ - default Integer countSubPermission(Serializable id) { - return this.selectCount(Wrappers.query().lambda().eq(SysPermission::getParentId, id)); - } - - /** - * 查询权限集合,并按sort排序(升序) - * @return List - */ - default List listOrderBySort() { - return this.selectList(Wrappers.lambdaQuery().orderByAsc(SysPermission::getSort)); - } - - /** - * 通过角色ID查询权限 - * @param roleCode 角色ID - * @return 指定角色拥有的权限列表 - */ - List listVOByRoleCode(String roleCode); - -} diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/mapper/SysRolePermissionMapper.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/mapper/SysRoleMenuMapper.java similarity index 58% rename from ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/mapper/SysRolePermissionMapper.java rename to ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/mapper/SysRoleMenuMapper.java index d2942ee2..6580c442 100644 --- a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/mapper/SysRolePermissionMapper.java +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/mapper/SysRoleMenuMapper.java @@ -1,7 +1,7 @@ package com.hccake.ballcat.admin.modules.sys.mapper; import com.baomidou.mybatisplus.core.toolkit.Wrappers; -import com.hccake.ballcat.admin.modules.sys.model.entity.SysRolePermission; +import com.hccake.ballcat.admin.modules.sys.model.entity.SysRoleMenu; import com.hccake.extend.mybatis.plus.mapper.ExtendMapper; import java.io.Serializable; @@ -14,14 +14,14 @@ import java.io.Serializable; * @author hccake * @since 2017-10-29 */ -public interface SysRolePermissionMapper extends ExtendMapper { +public interface SysRoleMenuMapper extends ExtendMapper { /** * 根据权限ID删除角色权限关联关系 - * @param permissionId 权限ID + * @param menuId 权限ID */ - default void deleteByPermissionId(Serializable permissionId) { - this.delete(Wrappers.query().lambda().eq(SysRolePermission::getPermissionId, permissionId)); + default void deleteByMenuId(Serializable menuId) { + this.delete(Wrappers.query().lambda().eq(SysRoleMenu::getMenuId, menuId)); } /** @@ -29,7 +29,7 @@ public interface SysRolePermissionMapper extends ExtendMapper * @param roleCode 角色标识 */ default void deleteByRoleCode(String roleCode) { - this.delete(Wrappers.query().lambda().eq(SysRolePermission::getRoleCode, roleCode)); + this.delete(Wrappers.query().lambda().eq(SysRoleMenu::getRoleCode, roleCode)); } } diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/entity/SysMenu.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/entity/SysMenu.java new file mode 100644 index 00000000..92f00c7d --- /dev/null +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/entity/SysMenu.java @@ -0,0 +1,122 @@ +package com.hccake.ballcat.admin.modules.sys.model.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 菜单权限 + * + * @author hccake 2021-04-06 17:59:51 + */ +@Data +@TableName("sys_menu") +@ApiModel(value = "菜单权限") +public class SysMenu { + + private static final long serialVersionUID = 1L; + + /** + * 菜单ID + */ + @TableId + @ApiModelProperty(value = "菜单ID") + private Integer id; + + /** + * 父级ID + */ + @ApiModelProperty(value = "父级ID") + private Integer parentId; + + /** + * 菜单名称 + */ + @ApiModelProperty(value = "菜单名称") + private String title; + + /** + * 菜单图标 + */ + @ApiModelProperty(value = "菜单图标") + private String icon; + + /** + * 授权标识 + */ + @ApiModelProperty(value = "授权标识") + private String permission; + + /** + * 路由地址 + */ + @ApiModelProperty(value = "路由地址") + private String path; + + /** + * 打开方式 (1组件 2内链 3外链) + */ + @ApiModelProperty(value = "打开方式 (1组件 2内链 3外链)") + private Integer targetType; + + /** + * 定位标识 (打开方式为组件时其值为组件相对路径,其他为URL地址) + */ + @ApiModelProperty(value = "定位标识 (打开方式为组件时其值为组件相对路径,其他为URL地址)") + private String uri; + + /** + * 显示排序 + */ + @ApiModelProperty(value = "显示排序") + private Integer sort; + + /** + * 组件缓存:0-开启,1-关闭 + */ + @ApiModelProperty(value = "组件缓存:0-开启,1-关闭") + private Integer keepAlive; + + /** + * 隐藏菜单: 0-否,1-是 + */ + @ApiModelProperty(value = "隐藏菜单: 0-否,1-是") + private Integer hidden; + + /** + * 菜单类型 (0目录,1菜单,2按钮) + */ + @ApiModelProperty(value = "菜单类型 (0目录,1菜单,2按钮)") + private Integer type; + + /** + * 备注信息 + */ + @ApiModelProperty(value = "备注信息") + private String remarks; + + /** + * 逻辑删除标识,未删除为 0,已删除为删除时间 + */ + @TableLogic + @ApiModelProperty(value = "逻辑删除标识,未删除为 0,已删除为删除时间") + private Long deleted; + + /** + * 创建时间 + */ + @TableField(fill = FieldFill.INSERT) + @ApiModelProperty(value = "创建时间") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @TableField(fill = FieldFill.INSERT_UPDATE) + @ApiModelProperty(value = "更新时间") + private LocalDateTime updateTime; + +} diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/entity/SysPermission.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/entity/SysPermission.java deleted file mode 100644 index 087c2b98..00000000 --- a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/entity/SysPermission.java +++ /dev/null @@ -1,130 +0,0 @@ -package com.hccake.ballcat.admin.modules.sys.model.entity; - -import com.baomidou.mybatisplus.annotation.*; -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.time.LocalDateTime; - -/** - * 菜单 - * - * @author ballcat code generator - * @date 2019-10-14 17:42:23 - */ -@Data -@ApiModel(value = "菜单") -@TableName("sys_permission") -public class SysPermission { - - private static final long serialVersionUID = 1L; - - /** - * 菜单ID - */ - @TableId(type = IdType.INPUT) - @ApiModelProperty(value = "菜单ID") - private Integer id; - - /** - * 菜单标题 - */ - @ApiModelProperty(value = "菜单标题") - private String title; - - /** - * 菜单权限标识 - */ - @ApiModelProperty(value = "菜单权限标识") - private String code; - - /** - * 路由URL - */ - @ApiModelProperty(value = "路由URL") - private String path; - - /** - * 路由名称 - */ - @ApiModelProperty(value = "路由名称") - private String routerName; - - /** - * component地址 - */ - @ApiModelProperty(value = "component地址") - private String component; - - /** - * 重定向地址 - */ - @ApiModelProperty(value = "重定向地址") - private String redirect; - - /** - * 链接跳转目标 - */ - @ApiModelProperty(value = "链接跳转目标") - private String target; - - /** - * 父菜单ID - */ - @ApiModelProperty(value = "父菜单ID") - private Integer parentId; - - /** - * 图标 - */ - @ApiModelProperty(value = "图标") - private String icon; - - /** - * 排序值 - */ - @ApiModelProperty(value = "排序值") - private Integer sort; - - /** - * 0-开启,1- 关闭 - */ - @ApiModelProperty(value = "0-开启,1- 关闭") - private Integer keepAlive; - - /** - * 是否隐藏路由: 0否,1是 - */ - @ApiModelProperty(value = "是否隐藏路由: 0否,1是") - private Integer hidden; - - /** - * 菜单类型 (0菜单 1按钮) - */ - @ApiModelProperty(value = "菜单类型 (0菜单 1按钮)") - private Integer type; - - /** - * 逻辑删除标识,已删除:0,未删除:删除时间戳 - */ - @TableLogic - @TableField(fill = FieldFill.INSERT) - @ApiModelProperty(value = "逻辑删除标识,已删除:0,未删除:删除时间戳") - private Long deleted; - - /** - * 创建时间 - */ - @ApiModelProperty(value = "创建时间") - @TableField(fill = FieldFill.INSERT) - private LocalDateTime createTime; - - /** - * 更新时间 - */ - @ApiModelProperty(value = "更新时间") - @TableField(fill = FieldFill.INSERT_UPDATE) - private LocalDateTime updateTime; - -} diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/entity/SysRolePermission.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/entity/SysRoleMenu.java similarity index 76% rename from ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/entity/SysRolePermission.java rename to ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/entity/SysRoleMenu.java index 53156d52..2cd6f959 100644 --- a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/entity/SysRolePermission.java +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/entity/SysRoleMenu.java @@ -14,18 +14,18 @@ import lombok.Data; * @date 2019-10-14 17:42:23 */ @Data -@TableName("sys_role_permission") +@TableName("sys_role_menu") @ApiModel(value = "角色菜单") -public class SysRolePermission { +public class SysRoleMenu { private static final long serialVersionUID = 1L; - public SysRolePermission() { + public SysRoleMenu() { } - public SysRolePermission(String roleCode, Integer permissionId) { + public SysRoleMenu(String roleCode, Integer menuId) { this.roleCode = roleCode; - this.permissionId = permissionId; + this.menuId = menuId; } @TableId(type = IdType.AUTO) @@ -41,6 +41,6 @@ public class SysRolePermission { * 权限ID */ @ApiModelProperty(value = "菜单id") - private Integer permissionId; + private Integer menuId; } diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/qo/SysMenuQO.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/qo/SysMenuQO.java new file mode 100644 index 00000000..e25c295f --- /dev/null +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/qo/SysMenuQO.java @@ -0,0 +1,42 @@ +package com.hccake.ballcat.admin.modules.sys.model.qo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 菜单权限 查询对象 + * + * @author hccake 2021-04-06 17:59:51 + */ +@Data +@ApiModel(value = "菜单权限查询对象") +public class SysMenuQO { + + private static final long serialVersionUID = 1L; + + /** + * 菜单ID + */ + @ApiModelProperty(value = "菜单ID") + private Integer id; + + /** + * 菜单名称 + */ + @ApiModelProperty(value = "菜单名称") + private String title; + + /** + * 授权标识 + */ + @ApiModelProperty(value = "授权标识") + private String permission; + + /** + * 路由地址 + */ + @ApiModelProperty(value = "路由地址") + private String path; + +} \ No newline at end of file diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/vo/PermissionVO.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/vo/PermissionVO.java deleted file mode 100644 index cfc14346..00000000 --- a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/vo/PermissionVO.java +++ /dev/null @@ -1,133 +0,0 @@ -package com.hccake.ballcat.admin.modules.sys.model.vo; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -import java.time.LocalDateTime; - -/** - * @author Hccake - * @version 1.0 - * @date 2019/10/15 14:19 - */ -@Data -@ApiModel(value = "权限VO") -public class PermissionVO { - - /** - * 菜单ID - */ - @ApiModelProperty(value = "菜单ID") - private Integer id; - - /** - * 菜单标题 - */ - @ApiModelProperty(value = "菜单标题") - private String title; - - /** - * 菜单权限标识 - */ - @ApiModelProperty(value = "菜单权限标识") - private String code; - - /** - * 路由URL - */ - @ApiModelProperty(value = "路由URL") - private String path; - - /** - * 路由名称 - */ - @ApiModelProperty(value = "路由名称") - private String routerName; - - /** - * component地址 - */ - @ApiModelProperty(value = "component地址") - private String component; - - /** - * 重定向地址 - */ - @ApiModelProperty(value = "重定向地址") - private String redirect; - - /** - * 链接跳转目标 - */ - @ApiModelProperty(value = "链接跳转目标") - private String target; - - /** - * 父菜单ID - */ - @ApiModelProperty(value = "父菜单ID") - private Integer parentId; - - /** - * 图标 - */ - @ApiModelProperty(value = "图标") - private String icon; - - /** - * 排序值 - */ - @ApiModelProperty(value = "排序值") - private Integer sort; - - /** - * 0-开启,1- 关闭 - */ - @ApiModelProperty(value = "0-开启,1- 关闭") - private Integer keepAlive; - - /** - * 是否隐藏路由: 0否,1是 - */ - @ApiModelProperty(value = "是否隐藏路由: 0否,1是") - private Integer hidden; - - /** - * 菜单类型 (0菜单 1按钮) - */ - @ApiModelProperty(value = "菜单类型 (0菜单 1按钮)") - private Integer type; - - /** - * 创建时间 - */ - @ApiModelProperty(value = "创建时间") - private LocalDateTime createTime; - - /** - * 更新时间 - */ - @ApiModelProperty(value = "更新时间") - private LocalDateTime updateTime; - - @Override - public int hashCode() { - return id.hashCode(); - } - - /** - * permissionId 相同则相同 - * @param obj - * @return - */ - @Override - public boolean equals(Object obj) { - if (obj instanceof PermissionVO) { - Integer permissionId = ((PermissionVO) obj).getId(); - return id.equals(permissionId); - } - return super.equals(obj); - } - -} diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/vo/RouterVO.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/vo/RouterVO.java deleted file mode 100644 index 57c5230e..00000000 --- a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/vo/RouterVO.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.hccake.ballcat.admin.modules.sys.model.vo; - -import io.swagger.annotations.ApiModel; -import io.swagger.annotations.ApiModelProperty; -import lombok.Data; - -/** - * 前端路由视图对象 - * - * @author hccake - * @date 2021-03-22 - */ -@Data -@ApiModel(value = "前端路由视图对象") -public class RouterVO { - - /** - * 菜单ID - */ - @ApiModelProperty(value = "菜单id") - private Integer id; - - /** - * 父菜单ID - */ - @ApiModelProperty(value = "父菜单id") - private Integer parentId; - - /** - * 菜单图标 - */ - @ApiModelProperty(value = "图标") - private String icon; - - /** - * 菜单名称 - */ - @ApiModelProperty(value = "标题") - private String title; - - /** - * 前端路由标识路径 - */ - @ApiModelProperty(value = "前端路由名称") - private String routerName; - - /** - * 前端路由标识路径 - */ - @ApiModelProperty(value = "前端路由标识路径") - private String path; - - /** - * 菜单权限标识 - */ - @ApiModelProperty(value = "前端路由组件") - private String component; - - /** - * 重定向地址 - */ - @ApiModelProperty(value = "重定向地址") - private String redirect; - - /** - * 链接跳转目标 - */ - @ApiModelProperty(value = "链接跳转目标") - private String target; - - /** - * 路由缓冲 - */ - @ApiModelProperty(value = "开启路由缓冲") - private Integer keepAlive; - - /** - * 是否隐藏路由: 0否,1是 - */ - @ApiModelProperty(value = "是否隐藏路由: 0否,1是") - private Integer hidden; - -} diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/vo/SysMenuPageVO.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/vo/SysMenuPageVO.java new file mode 100644 index 00000000..b15ab027 --- /dev/null +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/vo/SysMenuPageVO.java @@ -0,0 +1,110 @@ +package com.hccake.ballcat.admin.modules.sys.model.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.time.LocalDateTime; + +/** + * 菜单权限分页视图对象 + * + * @author hccake 2021-04-06 17:59:51 + */ +@Data +@ApiModel(value = "菜单权限分页视图对象") +public class SysMenuPageVO { + + private static final long serialVersionUID = 1L; + + /** + * 菜单ID + */ + @ApiModelProperty(value = "菜单ID") + private Integer id; + + /** + * 父级ID + */ + @ApiModelProperty(value = "父级ID") + private Integer parentId; + + /** + * 菜单名称 + */ + @ApiModelProperty(value = "菜单名称") + private String title; + + /** + * 菜单图标 + */ + @ApiModelProperty(value = "菜单图标") + private String icon; + + /** + * 授权标识 + */ + @ApiModelProperty(value = "授权标识") + private String permission; + + /** + * 路由地址 + */ + @ApiModelProperty(value = "路由地址") + private String path; + + /** + * 打开方式 (1组件 2内链 3外链) + */ + @ApiModelProperty(value = "打开方式 (1组件 2内链 3外链)") + private Integer targetType; + + /** + * 定位标识 (打开方式为组件时其值为组件相对路径,其他为URL地址) + */ + @ApiModelProperty(value = "定位标识 (打开方式为组件时其值为组件相对路径,其他为URL地址)") + private String uri; + + /** + * 显示排序 + */ + @ApiModelProperty(value = "显示排序") + private Integer sort; + + /** + * 组件缓存:0-开启,1-关闭 + */ + @ApiModelProperty(value = "组件缓存:0-开启,1-关闭") + private Integer keepAlive; + + /** + * 隐藏菜单: 0-否,1-是 + */ + @ApiModelProperty(value = "隐藏菜单: 0-否,1-是") + private Integer hidden; + + /** + * 菜单类型 (0目录,1菜单,2按钮) + */ + @ApiModelProperty(value = "菜单类型 (0目录,1菜单,2按钮)") + private Integer type; + + /** + * 备注信息 + */ + @ApiModelProperty(value = "备注信息") + private String remarks; + + /** + * 创建时间 + */ + @ApiModelProperty(value = "创建时间") + private LocalDateTime createTime; + + /** + * 更新时间 + */ + @ApiModelProperty(value = "更新时间") + private LocalDateTime updateTime; + +} \ No newline at end of file diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/vo/SysMenuRouterVO.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/vo/SysMenuRouterVO.java new file mode 100644 index 00000000..afb526f2 --- /dev/null +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/model/vo/SysMenuRouterVO.java @@ -0,0 +1,84 @@ +package com.hccake.ballcat.admin.modules.sys.model.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 菜单权限视图对象 + * + * @author hccake 2021-04-06 17:59:51 + */ +@Data +@ApiModel(value = "菜单权限视图对象") +public class SysMenuRouterVO { + + private static final long serialVersionUID = 1L; + + /** + * 菜单ID + */ + @ApiModelProperty(value = "菜单ID") + private Integer id; + + /** + * 父级ID + */ + @ApiModelProperty(value = "父级ID") + private Integer parentId; + + /** + * 菜单名称 + */ + @ApiModelProperty(value = "菜单名称") + private String title; + + /** + * 菜单图标 + */ + @ApiModelProperty(value = "菜单图标") + private String icon; + + /** + * 路由地址 + */ + @ApiModelProperty(value = "路由地址") + private String path; + + /** + * 打开方式 (1组件 2内链 3外链) + */ + @ApiModelProperty(value = "打开方式 (1组件 2内链 3外链)") + private Integer targetType; + + /** + * 定位标识 (打开方式为组件时其值为组件相对路径,其他为URL地址) + */ + @ApiModelProperty(value = "定位标识 (打开方式为组件时其值为组件相对路径,其他为URL地址)") + private String uri; + + /** + * 组件缓存:0-开启,1-关闭 + */ + @ApiModelProperty(value = "组件缓存:0-开启,1-关闭") + private Integer keepAlive; + + /** + * 隐藏菜单: 0-否,1-是 + */ + @ApiModelProperty(value = "隐藏菜单: 0-否,1-是") + private Integer hidden; + + /** + * 菜单类型 (0目录,1菜单,2按钮) + */ + @ApiModelProperty(value = "菜单类型 (0目录,1菜单,2按钮)") + private Integer type; + + /** + * 备注信息 + */ + @ApiModelProperty(value = "备注信息") + private String remarks; + +} \ No newline at end of file diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/SysMenuService.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/SysMenuService.java new file mode 100644 index 00000000..e2d4d2ce --- /dev/null +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/SysMenuService.java @@ -0,0 +1,30 @@ +package com.hccake.ballcat.admin.modules.sys.service; + +import com.hccake.ballcat.admin.modules.sys.model.entity.SysMenu; +import com.hccake.ballcat.admin.modules.sys.model.qo.SysMenuQO; +import com.hccake.extend.mybatis.plus.service.ExtendService; + +import java.util.List; + +/** + * 菜单权限 + * + * @author hccake 2021-04-06 17:59:51 + */ +public interface SysMenuService extends ExtendService { + + /** + * 查询权限集合,并按sort排序(升序) + * @param sysMenuQO 查询条件 + * @return List + */ + List listOrderBySort(SysMenuQO sysMenuQO); + + /** + * 根据角色标识查询对应的菜单 + * @param roleCode 角色标识 + * @return List + */ + List listByRoleCode(String roleCode); + +} \ No newline at end of file diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/SysPermissionService.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/SysPermissionService.java deleted file mode 100644 index bdca34f2..00000000 --- a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/SysPermissionService.java +++ /dev/null @@ -1,32 +0,0 @@ -package com.hccake.ballcat.admin.modules.sys.service; - -import com.hccake.ballcat.admin.modules.sys.model.entity.SysPermission; -import com.hccake.ballcat.admin.modules.sys.model.vo.PermissionVO; -import com.hccake.extend.mybatis.plus.service.ExtendService; - -import java.util.List; - -/** - *

- * 菜单权限表 服务类 - *

- * - * @author hccake - * @since 2017-10-29 - */ -public interface SysPermissionService extends ExtendService { - - /** - * 通过角色编号查询URL 权限 - * @param roleCode 角色Code - * @return 菜单列表 - */ - List listVOByRoleCode(String roleCode); - - /** - * 查询权限集合,并按sort排序(升序) - * @return List - */ - List listOrderBySort(); - -} diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/SysRolePermissionService.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/SysRoleMenuService.java similarity index 67% rename from ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/SysRolePermissionService.java rename to ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/SysRoleMenuService.java index d032dc1b..19c4bb9d 100644 --- a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/SysRolePermissionService.java +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/SysRoleMenuService.java @@ -1,6 +1,6 @@ package com.hccake.ballcat.admin.modules.sys.service; -import com.hccake.ballcat.admin.modules.sys.model.entity.SysRolePermission; +import com.hccake.ballcat.admin.modules.sys.model.entity.SysRoleMenu; import com.hccake.extend.mybatis.plus.service.ExtendService; import java.io.Serializable; @@ -13,21 +13,21 @@ import java.io.Serializable; * @author hccake * @since 2017-10-29 */ -public interface SysRolePermissionService extends ExtendService { +public interface SysRoleMenuService extends ExtendService { /** * 更新角色菜单 * @param roleCode 角色 - * @param permissionIds 权限ID数组 + * @param menuIds 权限ID数组 * @return 更新角色权限关联关系是否成功 */ - Boolean saveRolePermissions(String roleCode, Integer[] permissionIds); + Boolean saveRoleMenus(String roleCode, Integer[] menuIds); /** * 根据权限ID删除角色权限关联数据 - * @param permissionId 权限ID + * @param menuId 权限ID */ - void deleteByPermissionId(Serializable permissionId); + void deleteByMenuId(Serializable menuId); /** * 根据角色标识删除角色权限关联关系 diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/impl/SysMenuServiceImpl.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/impl/SysMenuServiceImpl.java new file mode 100644 index 00000000..9da911cd --- /dev/null +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/impl/SysMenuServiceImpl.java @@ -0,0 +1,64 @@ +package com.hccake.ballcat.admin.modules.sys.service.impl; + +import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; +import com.hccake.ballcat.admin.modules.sys.mapper.SysMenuMapper; +import com.hccake.ballcat.admin.modules.sys.model.entity.SysMenu; +import com.hccake.ballcat.admin.modules.sys.model.qo.SysMenuQO; +import com.hccake.ballcat.admin.modules.sys.service.SysMenuService; +import com.hccake.ballcat.admin.modules.sys.service.SysRoleMenuService; +import com.hccake.ballcat.common.core.exception.BusinessException; +import com.hccake.ballcat.common.model.result.BaseResultCode; +import com.hccake.extend.mybatis.plus.service.impl.ExtendServiceImpl; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.io.Serializable; +import java.util.List; + +/** + * 菜单权限 + * + * @author hccake 2021-04-06 17:59:51 + */ +@Service +@RequiredArgsConstructor +public class SysMenuServiceImpl extends ExtendServiceImpl implements SysMenuService { + + private final SysRoleMenuService sysRoleMenuService; + + /** + * 查询权限集合,并按sort排序(升序) + * @param sysMenuQO 查询条件 + * @return List + */ + @Override + public List listOrderBySort(SysMenuQO sysMenuQO) { + return baseMapper.listOrderBySort(sysMenuQO); + } + + /** + * 根据角色标识查询对应的菜单 + * @param roleCode 角色标识 + * @return List + */ + @Override + public List listByRoleCode(String roleCode) { + return baseMapper.listByRoleCode(roleCode); + } + + @Override + @Transactional(rollbackFor = Exception.class) + public boolean removeById(Serializable id) { + // 查询当前权限是否有子权限 + Integer subMenu = baseMapper.countSubMenu(id); + if (subMenu != null && subMenu > 0) { + throw new BusinessException(BaseResultCode.LOGIC_CHECK_ERROR.getCode(), "菜单含有下级不能删除"); + } + // 删除角色权限关联数据 + sysRoleMenuService.deleteByMenuId(id); + // 删除当前菜单及其子菜单 + return SqlHelper.retBool(baseMapper.deleteById(id)); + } + +} diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/impl/SysPermissionServiceImpl.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/impl/SysPermissionServiceImpl.java deleted file mode 100644 index 358b9087..00000000 --- a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/impl/SysPermissionServiceImpl.java +++ /dev/null @@ -1,62 +0,0 @@ -package com.hccake.ballcat.admin.modules.sys.service.impl; - -import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; -import com.hccake.ballcat.admin.modules.sys.mapper.SysPermissionMapper; -import com.hccake.ballcat.admin.modules.sys.model.entity.SysPermission; -import com.hccake.ballcat.admin.modules.sys.model.vo.PermissionVO; -import com.hccake.ballcat.admin.modules.sys.service.SysPermissionService; -import com.hccake.ballcat.admin.modules.sys.service.SysRolePermissionService; -import com.hccake.ballcat.common.core.exception.BusinessException; -import com.hccake.ballcat.common.model.result.BaseResultCode; -import com.hccake.extend.mybatis.plus.service.impl.ExtendServiceImpl; -import lombok.RequiredArgsConstructor; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.io.Serializable; -import java.util.List; - -/** - *

- * 菜单权限表 服务实现类 - *

- * - * @author hccake - * @since 2017-10-29 - */ -@Service -@RequiredArgsConstructor -public class SysPermissionServiceImpl extends ExtendServiceImpl - implements SysPermissionService { - - private final SysRolePermissionService sysRolePermissionService; - - @Override - public List listVOByRoleCode(String roleCode) { - return baseMapper.listVOByRoleCode(roleCode); - } - - /** - * 查询权限集合,并按sort排序(升序) - * @return List - */ - @Override - public List listOrderBySort() { - return baseMapper.listOrderBySort(); - } - - @Override - @Transactional(rollbackFor = Exception.class) - public boolean removeById(Serializable id) { - // 查询当前权限是否有子权限 - Integer subPermissionNum = baseMapper.countSubPermission(id); - if (subPermissionNum != null && subPermissionNum > 0) { - throw new BusinessException(BaseResultCode.LOGIC_CHECK_ERROR.getCode(), "菜单含有下级不能删除"); - } - // 删除角色权限关联数据 - sysRolePermissionService.deleteByPermissionId(id); - // 删除当前菜单及其子菜单 - return SqlHelper.retBool(baseMapper.deleteById(id)); - } - -} diff --git a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/impl/SysRolePermissionServiceImpl.java b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/impl/SysRoleMenuServiceImpl.java similarity index 61% rename from ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/impl/SysRolePermissionServiceImpl.java rename to ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/impl/SysRoleMenuServiceImpl.java index 653ef5d9..fe4cbf4e 100644 --- a/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/impl/SysRolePermissionServiceImpl.java +++ b/ballcat-admin/ballcat-admin-core/src/main/java/com/hccake/ballcat/admin/modules/sys/service/impl/SysRoleMenuServiceImpl.java @@ -2,9 +2,9 @@ package com.hccake.ballcat.admin.modules.sys.service.impl; import com.baomidou.mybatisplus.extension.toolkit.SqlHelper; -import com.hccake.ballcat.admin.modules.sys.mapper.SysRolePermissionMapper; -import com.hccake.ballcat.admin.modules.sys.model.entity.SysRolePermission; -import com.hccake.ballcat.admin.modules.sys.service.SysRolePermissionService; +import com.hccake.ballcat.admin.modules.sys.mapper.SysRoleMenuMapper; +import com.hccake.ballcat.admin.modules.sys.model.entity.SysRoleMenu; +import com.hccake.ballcat.admin.modules.sys.service.SysRoleMenuService; import com.hccake.extend.mybatis.plus.service.impl.ExtendServiceImpl; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -22,25 +22,25 @@ import java.util.stream.Collectors; * @author hccake */ @Service -public class SysRolePermissionServiceImpl extends ExtendServiceImpl - implements SysRolePermissionService { +public class SysRoleMenuServiceImpl extends ExtendServiceImpl + implements SysRoleMenuService { /** * @param roleCode 角色 - * @param permissionIds 权限ID集合 + * @param menuIds 权限ID集合 * @return boolean */ @Override @Transactional(rollbackFor = Exception.class) - public Boolean saveRolePermissions(String roleCode, Integer[] permissionIds) { + public Boolean saveRoleMenus(String roleCode, Integer[] menuIds) { // 1、先删除旧数据 baseMapper.deleteByRoleCode(roleCode); - if (permissionIds == null || permissionIds.length == 0) { + if (menuIds == null || menuIds.length == 0) { return Boolean.TRUE; } // 2、再批量插入新数据 - List list = Arrays.stream(permissionIds).map(id -> new SysRolePermission(roleCode, id)) + List list = Arrays.stream(menuIds).map(menuId -> new SysRoleMenu(roleCode, menuId)) .collect(Collectors.toList()); int i = baseMapper.insertBatchSomeColumn(list); return SqlHelper.retBool(i); @@ -48,11 +48,11 @@ public class SysRolePermissionServiceImpl extends ExtendServiceImpl implements SysRoleService { - private final SysRolePermissionService sysRolePermissionService; + private final SysRoleMenuService sysRoleMenuService; /** * 查询系统角色列表 @@ -52,7 +52,7 @@ public class SysRoleServiceImpl extends ExtendServiceImpl permissions = new HashSet<>(); - roles.forEach(code -> { - List permissionList = sysPermissionService.listVOByRoleCode(code).stream() - .map(PermissionVO::getCode).filter(StrUtil::isNotEmpty).collect(Collectors.toList()); + for (String roleCode : roles) { + List permissionList = sysMenuService.listByRoleCode(roleCode).stream().map(SysMenu::getPermission) + .filter(StrUtil::isNotEmpty).collect(Collectors.toList()); permissions.addAll(permissionList); - }); + } userInfoDTO.setPermissions(new ArrayList<>(permissions)); return userInfoDTO; } diff --git a/ballcat-admin/ballcat-admin-core/src/main/resources/mapper/sys/PermissionMapper.xml b/ballcat-admin/ballcat-admin-core/src/main/resources/mapper/sys/PermissionMapper.xml deleted file mode 100644 index 04d78665..00000000 --- a/ballcat-admin/ballcat-admin-core/src/main/resources/mapper/sys/PermissionMapper.xml +++ /dev/null @@ -1,38 +0,0 @@ - - - - - - sp.id, - sp.title, - sp.code, - sp.path, - sp.router_name, - sp.component, - sp.redirect, - sp.target, - sp.parent_id, - sp.icon, - sp.sort, - sp.keep_alive, - sp.hidden, - sp.type, - sp.deleted, - sp.create_time, - sp.update_time - - - - - diff --git a/ballcat-admin/ballcat-admin-core/src/main/resources/mapper/sys/SysMenuMapper.xml b/ballcat-admin/ballcat-admin-core/src/main/resources/mapper/sys/SysMenuMapper.xml new file mode 100644 index 00000000..a35bc178 --- /dev/null +++ b/ballcat-admin/ballcat-admin-core/src/main/resources/mapper/sys/SysMenuMapper.xml @@ -0,0 +1,75 @@ + + + + + + + + + + + + + + + + + + + + + + + + + id, + parent_id, + title, + icon, + permission, + path, + target_type, + uri, + sort, + keep_alive, + hidden, + type, + remarks, + deleted, + create_time, + update_time + + + + sm.id, + sm.parent_id, + sm.title, + sm.icon, + sm.permission, + sm.path, + sm.target_type, + sm.uri, + sm.sort, + sm.keep_alive, + sm.hidden, + sm.type, + sm.remarks, + sm.deleted, + sm.create_time, + sm.update_time + + + + + \ No newline at end of file diff --git a/doc/update_sql/0.1.0.sql b/doc/update_sql/0.1.0.sql new file mode 100644 index 00000000..a38f2bc5 --- /dev/null +++ b/doc/update_sql/0.1.0.sql @@ -0,0 +1,74 @@ +-- 新建菜单表 +CREATE TABLE `sys_menu` ( + `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '菜单ID', + `parent_id` int(11) NOT NULL DEFAULT '0' COMMENT '父级ID', + `title` varchar(32) DEFAULT NULL COMMENT '菜单名称', + `icon` varchar(32) DEFAULT NULL COMMENT '菜单图标', + `permission` varchar(32) DEFAULT NULL COMMENT '授权标识', + `path` varchar(128) DEFAULT NULL COMMENT '路由地址', + `target_type` tinyint(1) DEFAULT '1' COMMENT '打开方式 (1组件 2内链 3外链)', + `uri` varchar(128) DEFAULT '' COMMENT '定位标识 (打开方式为组件时其值为组件相对路径,其他为URL地址)', + `sort` int(11) DEFAULT '1' COMMENT '显示排序', + `keep_alive` tinyint(1) DEFAULT '0' COMMENT '组件缓存:0-开启,1-关闭', + `hidden` tinyint(1) DEFAULT '0' COMMENT '隐藏菜单: 0-否,1-是', + `type` tinyint(1) DEFAULT '0' COMMENT '菜单类型 (0目录,1菜单,2按钮)', + `remarks` varchar(50) DEFAULT NULL COMMENT '备注信息', + `deleted` bigint(20) DEFAULT NULL COMMENT '逻辑删除标识,未删除为 0,已删除为删除时间', + `create_time` datetime DEFAULT NULL COMMENT '创建时间', + `update_time` datetime DEFAULT NULL COMMENT '更新时间', + PRIMARY KEY (`id`) USING BTREE +) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COMMENT='菜单权限'; + +-- 权限表数据到菜单表数据的转换 +INSERT INTO `sys_menu` ( + `id`, + `parent_id`, + `title`, + `icon`, + `permission`, + `path`, + `target_type`, + `uri`, + `sort`, + `keep_alive`, + `hidden`, + `type`, + `deleted`, + `create_time`, + `update_time` +) ( + SELECT + `id`, + `parent_id`, + `title`, + `icon`, + `code` AS `permission`, + SUBSTRING_INDEX( `path`, '/', - 1 ), + CASE + `target` + WHEN '_blank' THEN + 2 ELSE 1 + END AS `target_type`, + CASE + `type` + WHEN 1 THEN + `component` ELSE NULL + END AS `uri`, + `sort`, + `keep_alive`, + `hidden`, + `type`, + `deleted`, + `create_time`, + `update_time` + FROM + sys_permission +) + +-- 角色权限关联表修改 +RENAME TABLE `sys_role_permission` TO `sys_role_menu`; +ALTER TABLE `sys_role_menu` + CHANGE COLUMN `permission_id` `menu_id` int(11) NOT NULL COMMENT '菜单ID' AFTER `role_code`; + +-- 删除权限表 +DROP TABLE `sys_permission`;