From 60c416f365d9f07fc4307c817a7e70d713aa5fe7 Mon Sep 17 00:00:00 2001 From: Stormeye Wu Date: Mon, 13 May 2019 12:04:50 +0800 Subject: [PATCH] =?UTF-8?q?[=E8=8F=9C=E5=8D=95=E6=9D=83=E9=99=90][?= =?UTF-8?q?=E4=BF=AE=E6=94=B9]:=E5=9F=BA=E7=A1=80api=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/sys/SysMenuController.java | 142 +++--------------- .../service/MallPermissionService.java | 9 +- .../impl/MallPermissionServiceImpl.java | 37 ++++- .../controller/sys/SysMenuController.java | 2 +- 4 files changed, 58 insertions(+), 132 deletions(-) diff --git a/mallinkAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java b/mallinkAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java index 89a601d9c..e2597e63e 100644 --- a/mallinkAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java +++ b/mallinkAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java @@ -55,7 +55,7 @@ public class SysMenuController extends BaseController { public ResultData nav(){ logger.debug("[" + getIpAddr() + "] MallPermissionController::nav"); MallUserInfo user = getUser(); - List menuList = mallPermissionService.getUserMenuList(user); + List menuList = mallPermissionService.getUserMenuList(user, 0L); Set permissions = mallUserInfoService.getUserPermissions(user); Map map = new HashMap<>(); map.put("menuList", menuList); @@ -74,53 +74,6 @@ public class SysMenuController extends BaseController { return new ResultData(Result.SUCCESS, "查询成功", menuList); } - @ApiOperation("添加菜单/权限") - @PostMapping("add") - //@RequiresPermissions("sys:menu:save") - @SystemControllerLog(description = "用户管理-权限添加") - public ResultData createPermission(MallPermission mallPermission) { - logger.debug("[" + getIpAddr() + "] MallPermissionController::createPermission"); - Assert.notNull(mallPermission.getName(), "用户名不能为空"); - // 数据校验 - verifyForm(mallPermission); - - mallPermissionService.saveOrUpdate(mallPermission); - return new ResultData(mallPermission.getId()); - } - - @ApiOperation("更新菜单/权限") - @PostMapping("update") - //@RequiresPermissions("sys:menu:update") - @SystemControllerLog(description = "用户管理-权限更新") - public ResultData updatePermission(MallPermission sysPermission) { - logger.debug("[" + getIpAddr() + "] MallPermissionController::updatePermission"); - // 数据校验 - verifyForm(sysPermission); - - mallPermissionService.saveOrUpdate(sysPermission); - return new ResultData(); - } - - @ApiOperation("删除菜单/权限") - @GetMapping("/del") - //@RequiresPermissions("sys:menu:delete") - @SystemControllerLog(description = "用户管理-权限删除") - public ResultData delete(Long id) { - logger.debug("[" + getIpAddr() + "] MallPermissionController::delete"); - if(id <= Constant.SYS_MENU_MAX) { - logger.error(ErrorCode.MENU_SYS_NOT_DEL.getMessage()); - return new ResultData(ErrorCode.MENU_SYS_NOT_DEL); - } - //判断是否有子菜单或按钮 - List menuList = mallPermissionService.getByParentId(id); - if(menuList.size() > 0){ - logger.error(ErrorCode.MENU_CHILD_NOT_DEL.getMessage()); - return new ResultData(ErrorCode.MENU_CHILD_NOT_DEL); - } - mallPermissionService.deleteById(id); - return new ResultData(Result.SUCCESS, "删除成功"); - } - @ApiOperation("菜单信息") @GetMapping("/findById") //@RequiresPermissions("sys:menu:info") @@ -130,85 +83,24 @@ public class SysMenuController extends BaseController { return new ResultData(Result.SUCCESS, "成功", mallPermissionService.getById(id)); } - @Autowired - private RequestMappingHandlerMapping requestMappingHandlerMapping; - - @ApiOperation("导出菜单") - @GetMapping("/export") - //@RequiresPermissions("sys:menu:import") - @SystemControllerLog(description = "用户管理-导出权限") - public ResultData export() { - logger.debug("[" + getIpAddr() + "] MallPermissionController::export"); - List resourceList = new ArrayList(); - //获取所有Controller的方法 - Map map = requestMappingHandlerMapping.getHandlerMethods(); - for (Map.Entry m : map.entrySet()) { - RequestMappingInfo info = m.getKey(); - HandlerMethod method = m.getValue(); - PatternsRequestCondition p = info.getPatternsCondition(); - //扫描Shiro的权限资源标签 - RequiresPermissions requiresPermissions = method.getMethod().getAnnotation(RequiresPermissions.class); - if (requiresPermissions != null) { - Map newSource = new HashMap(); - String[] strArr = requiresPermissions.value(); - newSource.put("permission", strArr[0]); - //扫描Swagger注解 - ApiOperation apiOperation = method.getMethod().getAnnotation(ApiOperation.class); - if (apiOperation != null) { - newSource.put("name", apiOperation.value()); - Set urls = p.getPatterns(); - newSource.put("url", urls.toArray()[0]); - } - resourceList.add(newSource); - } - } - - return new ResultData(resourceList); + @ApiOperation("获取父子菜单ID信息") + @GetMapping("/getMenuIdsById") + //@RequiresPermissions("sys:menu:info") + @SystemControllerLog(description = "用户管理-父子菜单查找") + public ResultData getMenuIdsById(Long parentId) { + logger.debug("[" + getIpAddr() + "] MallPermissionController::getMenusById"); + MallUserInfo user = getUser(); + return new ResultData(Result.SUCCESS, "成功", mallPermissionService.queryUserMenuIds(user, parentId)); } - /** - * 验证参数是否正确 - */ - private void verifyForm(MallPermission menu){ - if(StringUtils.isBlank(menu.getName())){ - throw new MallinkException(ErrorCode.MENU_NAME_EMPTY); - } - - if(menu.getParentId() == null){ - throw new MallinkException(ErrorCode.MENU_PARENT_EMPTY); - } - - //菜单 - if(menu.getResourceType().equals(EnumPermissionType.MENU.getCode())){ - if(StringUtils.isBlank(menu.getUrl())){ - throw new MallinkException(ErrorCode.MENU_URL_EMPTY); - } - } - - //上级菜单类型 - int parentType = EnumPermissionType.CATALOG.getCode(); - if(menu.getParentId() != 0){ - MallPermission parentMenu = mallPermissionService.getById(menu.getParentId()); - parentType = parentMenu.getResourceType(); - } - - //目录、菜单 - if(menu.getResourceType().equals(EnumPermissionType.CATALOG.getCode()) || - menu.getResourceType().equals(EnumPermissionType.MENU.getCode())){ - if(parentType != EnumPermissionType.CATALOG.getCode()){ - throw new MallinkException(ErrorCode.MENU_PARENT_NOT_CATEGORY); - } - return ; - } - - //按钮 - if(menu.getResourceType().equals(EnumPermissionType.BUTTON.getCode())){ - if(parentType != EnumPermissionType.MENU.getCode()){ - throw new MallinkException(ErrorCode.MENU_PARENT_NOT_MENU); - } - return ; - } + @ApiOperation("获取父子菜单信息") + @GetMapping("/getMenusById") + //@RequiresPermissions("sys:menu:info") + @SystemControllerLog(description = "用户管理-父子菜单查找") + public ResultData getMenusById(Long parentId) { + logger.debug("[" + getIpAddr() + "] MallPermissionController::getMenusById"); + MallUserInfo user = getUser(); + return new ResultData(Result.SUCCESS, "成功", mallPermissionService.getUserMenuList(user, parentId)); } - } diff --git a/mallinkService/src/main/java/com/iformall/service/MallPermissionService.java b/mallinkService/src/main/java/com/iformall/service/MallPermissionService.java index ceb39a974..59a39688d 100644 --- a/mallinkService/src/main/java/com/iformall/service/MallPermissionService.java +++ b/mallinkService/src/main/java/com/iformall/service/MallPermissionService.java @@ -35,7 +35,14 @@ public interface MallPermissionService { * @param userInfo * @return */ - List getUserMenuList(MallUserInfo userInfo); + List getUserMenuList(MallUserInfo userInfo, Long parentId); + + /** + * 用户菜单ID List + * @param userInfo + * @return + */ + List queryUserMenuIds(MallUserInfo userInfo, Long parentId); /** * 根据实体查询分页列表 diff --git a/mallinkService/src/main/java/com/iformall/service/impl/MallPermissionServiceImpl.java b/mallinkService/src/main/java/com/iformall/service/impl/MallPermissionServiceImpl.java index 254a3098e..c98ce4862 100644 --- a/mallinkService/src/main/java/com/iformall/service/impl/MallPermissionServiceImpl.java +++ b/mallinkService/src/main/java/com/iformall/service/impl/MallPermissionServiceImpl.java @@ -70,20 +70,40 @@ public class MallPermissionServiceImpl implements MallPermissionService { } @Override - public List getUserMenuList(MallUserInfo userInfo) { + public List queryUserMenuIds(MallUserInfo userInfo, Long parentId) { + List mpList = new ArrayList(); + if(userInfo.isFmSuperAdmin() || + userInfo.getIsAdmin().equals(EnumUserAdmin.ADMIN.getCode())) { + List mps = getAllMenuListByParentId(parentId, null); + mps.stream().forEach(mp->{ + mpList.add(mp.getId()); + }); + return mpList; + } else { + List menuIdList = mallUserInfoMapper.queryAllMenuId(userInfo.getId()); + List mps = getAllMenuListByParentId(parentId, menuIdList); + mps.stream().forEach(mp->{ + mpList.add(mp.getId()); + }); + return mpList; + } + } + + @Override + public List getUserMenuList(MallUserInfo userInfo, Long parentId) { if(userInfo.isFmSuperAdmin()) { // 富茂超级管理员,返回所有菜单 - return getAllMenuList(null); + return getAllMenuListByParentId(parentId, null); } else if(userInfo.getIsAdmin().equals(EnumUserAdmin.ADMIN.getCode())) { // 租户超管 String menus = wxMallMapper.queryMenusByTenantId(userInfo.getTenantId()); JSONArray menuIdList = JSON.parseArray(menus); - return getAllMenuList(menuIdList.toJavaList(Long.class)); + return getAllMenuListByParentId(0L, menuIdList.toJavaList(Long.class)); } else { //用户菜单列表 List menuIdList = mallUserInfoMapper.queryAllMenuId(userInfo.getId()); - return getAllMenuList(menuIdList); + return getAllMenuListByParentId(0L, menuIdList); } } @@ -91,8 +111,15 @@ public class MallPermissionServiceImpl implements MallPermissionService { * 获取所有菜单列表 */ private List getAllMenuList(List menuIdList){ + return getAllMenuListByParentId(0L, menuIdList); + } + + /** + * 获取所有菜单列表 + */ + private List getAllMenuListByParentId(Long parentId, List menuIdList){ //查询根菜单列表 - List menuList = queryListParentId(0L, menuIdList); + List menuList = queryListParentId(parentId, menuIdList); //递归获取子菜单 getMenuTreeList(menuList, menuIdList); diff --git a/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java b/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java index b5c7dfbbe..99e123e55 100644 --- a/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java +++ b/mallinkSysAdmin/src/main/java/com/iformall/controller/sys/SysMenuController.java @@ -62,7 +62,7 @@ public class SysMenuController extends BaseController { public ResultData nav(){ logger.debug("[" + getIpAddr() + "] MallPermissionController::nav"); MallUserInfo user = getUser(); - List menuList = mallPermissionService.getUserMenuList(user); + List menuList = mallPermissionService.getUserMenuList(user, 0L); Set permissions = mallUserInfoService.getUserPermissions(user); Map map = new HashMap<>(); map.put("menuList", menuList);