From a3dd4ca5ab3948e89bb0a4b0c12624ccf29fc0d9 Mon Sep 17 00:00:00 2001 From: yinzuomei Date: Tue, 19 Nov 2019 18:21:52 +0800 Subject: [PATCH] =?UTF-8?q?=20=E8=A7=92=E8=89=B2=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E6=94=B9=E9=80=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/elink/esua/epdc/dto/SysRoleDTO.java | 4 ++ .../epdc/controller/AppMenuController.java | 11 +++- .../epdc/controller/SysRoleController.java | 7 +++ .../com/elink/esua/epdc/dao/AppMenuDao.java | 18 ++++++- .../elink/esua/epdc/dao/AppRoleMenuDao.java | 21 ++++++-- .../elink/esua/epdc/entity/AppMenuEntity.java | 14 +++++- .../esua/epdc/service/AppMenuService.java | 11 +++- .../esua/epdc/service/AppRoleMenuService.java | 43 ++++++++++++---- .../epdc/service/impl/AppMenuServiceImpl.java | 28 ++++++++++- .../service/impl/AppRoleMenuServiceImpl.java | 50 ++++++++++++++++++- .../epdc/service/impl/SysRoleServiceImpl.java | 8 +++ .../src/main/resources/mapper/AppMenuDao.xml | 43 +++++++++++++++- .../main/resources/mapper/AppRoleMenuDao.xml | 8 ++- 13 files changed, 243 insertions(+), 23 deletions(-) diff --git a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/SysRoleDTO.java b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/SysRoleDTO.java index ec29b3a51..306b2ebc6 100644 --- a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/SysRoleDTO.java +++ b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/SysRoleDTO.java @@ -68,4 +68,8 @@ public class SysRoleDTO implements Serializable { */ private List deptIdList; + /** + * app菜单ID列表 + */ + private List appMenuIdList; } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/AppMenuController.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/AppMenuController.java index 81dda8e8d..0835a0927 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/AppMenuController.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/AppMenuController.java @@ -18,13 +18,14 @@ package com.elink.esua.epdc.controller; import com.elink.esua.epdc.commons.tools.exception.ErrorCode; +import com.elink.esua.epdc.commons.tools.security.user.UserDetail; import com.elink.esua.epdc.commons.tools.utils.ExcelUtils; import com.elink.esua.epdc.commons.tools.utils.Result; import com.elink.esua.epdc.commons.tools.validator.AssertUtils; import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; import com.elink.esua.epdc.commons.tools.validator.group.AddGroup; -import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup; import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup; +import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup; import com.elink.esua.epdc.dto.AppMenuDTO; import com.elink.esua.epdc.excel.AppMenuExcel; import com.elink.esua.epdc.service.AppMenuService; @@ -106,4 +107,10 @@ public class AppMenuController { ExcelUtils.exportExcelToTarget(response, null, list, AppMenuExcel.class); } -} \ No newline at end of file + @GetMapping("select") + public Result> select(UserDetail userDetail) { + List list = appMenuService.getUserMenuList(userDetail, null); + + return new Result>().ok(list); + } +} diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysRoleController.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysRoleController.java index 4bd004de1..dcf0b1f25 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysRoleController.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysRoleController.java @@ -18,6 +18,7 @@ package com.elink.esua.epdc.controller; import com.elink.esua.epdc.commons.tools.validator.group.DefaultGroup; import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup; import com.elink.esua.epdc.dto.SysRoleDTO; + import com.elink.esua.epdc.service.AppRoleMenuService; import com.elink.esua.epdc.service.SysRoleDataScopeService; import com.elink.esua.epdc.service.SysRoleMenuService; import com.elink.esua.epdc.service.SysRoleService; @@ -49,6 +50,8 @@ public class SysRoleController { private SysRoleMenuService sysRoleMenuService; @Autowired private SysRoleDataScopeService sysRoleDataScopeService; + @Autowired + private AppRoleMenuService appRoleMenuService; @GetMapping("page") @ApiOperation("分页") @@ -86,6 +89,10 @@ public class SysRoleController { List deptIdList = sysRoleDataScopeService.getDeptIdList(id); data.setDeptIdList(deptIdList); + //查询角色对应app菜单权限 + List appMenuIdList = appRoleMenuService.getAppMenuIdList(id); + data.setAppMenuIdList(appMenuIdList); + return new Result().ok(data); } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/AppMenuDao.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/AppMenuDao.java index db0dc964e..9f577d5c7 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/AppMenuDao.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/AppMenuDao.java @@ -52,4 +52,20 @@ public interface AppMenuDao extends BaseDao { * @return */ AppMenuDTO selectByIdDIY(@Param("id") String id, @Param("language") String language); -} \ No newline at end of file + /** + * 查询所有菜单列表 + * + * @param type 菜单类型 + * @param language 语言 + */ + List getMenuList(@Param("type") Integer type, @Param("language") String language); + + /** + * 查询用户菜单列表 + * + * @param userId 用户ID + * @param type 菜单类型 + * @param language 语言 + */ + List getUserMenuList(@Param("userId") Long userId, @Param("type") Integer type, @Param("language") String language); +} diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/AppRoleMenuDao.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/AppRoleMenuDao.java index 568ef8e95..94d76079b 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/AppRoleMenuDao.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/AppRoleMenuDao.java @@ -21,13 +21,28 @@ import com.elink.esua.epdc.commons.mybatis.dao.BaseDao; import com.elink.esua.epdc.entity.AppRoleMenuEntity; import org.apache.ibatis.annotations.Mapper; +import java.util.List; + /** * 角色菜单关系 * - * @author work@yujt.net.cn + * @author work@yujt.net.cn * @since v1.0.0 2019-11-19 */ @Mapper public interface AppRoleMenuDao extends BaseDao { - -} \ No newline at end of file + /** + * 根据角色id,删除角色数据权限关系 + * + * @param roleId 角色id + */ + void deleteByRoleId(Long roleId); + + /** + * 根据角色ID,获取菜单ID列表 + * + * @param id + * @return + */ + List getAppMenuIdList(Long id); +} diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/AppMenuEntity.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/AppMenuEntity.java index d4b730baa..91905c464 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/AppMenuEntity.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/AppMenuEntity.java @@ -46,6 +46,12 @@ public class AppMenuEntity extends BaseEntity { */ private Long pid; + /** + * 菜单名称 + */ + @TableField(exist = false) + private String name; + /** * 菜单URL */ @@ -89,6 +95,12 @@ public class AppMenuEntity extends BaseEntity { @TableField(fill = FieldFill.INSERT_UPDATE) private Date updateDate; + /** + * 上级菜单名称 + */ + @TableField(exist = false) + private String parentName; + /** * 菜单编码 */ @@ -104,4 +116,4 @@ public class AppMenuEntity extends BaseEntity { */ private String templateId; -} \ No newline at end of file +} diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/AppMenuService.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/AppMenuService.java index f02bed2ef..20983df72 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/AppMenuService.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/AppMenuService.java @@ -19,6 +19,7 @@ package com.elink.esua.epdc.service; import com.elink.esua.epdc.commons.mybatis.service.BaseService; import com.elink.esua.epdc.commons.tools.page.PageData; +import com.elink.esua.epdc.commons.tools.security.user.UserDetail; import com.elink.esua.epdc.dto.AppMenuDTO; import com.elink.esua.epdc.entity.AppMenuEntity; @@ -123,4 +124,12 @@ public interface AppMenuService extends BaseService { * @date 2019/11/19 14:30 */ boolean hasChileMenu(Long id); -} \ No newline at end of file + + /** + * 用户app端菜单列表 + * + * @param userDetail 用户信息 + * @param type 菜单类型 + */ + List getUserMenuList(UserDetail userDetail, Integer type); +} diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/AppRoleMenuService.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/AppRoleMenuService.java index b1dac5a2f..2080c9c3a 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/AppRoleMenuService.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/AppRoleMenuService.java @@ -83,13 +83,36 @@ public interface AppRoleMenuService extends BaseService { */ void update(AppRoleMenuDTO dto); - /** - * 批量删除 - * - * @param ids - * @return void - * @author generator - * @date 2019-11-19 - */ - void delete(String[] ids); -} \ No newline at end of file + /** + * 批量删除 + * + * @param ids + * @return void + * @author generator + * @date 2019-11-19 + */ + void delete(String[] ids); + + /** + * 保存或修改 + * + * @param roleId 角色ID + * @param appMenuIdList 菜单ID列表 + */ + void saveOrUpdate(Long roleId, List appMenuIdList); + + /** + * 根据角色id,删除角色数据权限关系 + * + * @param roleId 角色id + */ + void deleteByRoleId(Long roleId); + + /** + * 根据角色ID,获取菜单ID列表 + * + * @param id + * @return + */ + List getAppMenuIdList(Long id); +} diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/AppMenuServiceImpl.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/AppMenuServiceImpl.java index 22aed7f0a..87f95f540 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/AppMenuServiceImpl.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/AppMenuServiceImpl.java @@ -22,10 +22,12 @@ import com.baomidou.mybatisplus.core.metadata.IPage; import com.elink.esua.epdc.commons.mybatis.enums.DelFlagEnum; import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl; import com.elink.esua.epdc.commons.tools.constant.Constant; +import com.elink.esua.epdc.commons.tools.constant.FieldConstant; import com.elink.esua.epdc.commons.tools.constant.NumConstant; +import com.elink.esua.epdc.commons.tools.enums.SuperAdminEnum; import com.elink.esua.epdc.commons.tools.page.PageData; +import com.elink.esua.epdc.commons.tools.security.user.UserDetail; import com.elink.esua.epdc.commons.tools.utils.ConvertUtils; -import com.elink.esua.epdc.commons.tools.constant.FieldConstant; import com.elink.esua.epdc.commons.tools.utils.HttpContextUtils; import com.elink.esua.epdc.commons.tools.utils.TreeUtils; import com.elink.esua.epdc.dao.AppMenuDao; @@ -129,4 +131,26 @@ public class AppMenuServiceImpl extends BaseServiceImpl NumConstant.ZERO; } -} \ No newline at end of file + + /** + * 用户app端菜单列表 + * + * @param userDetail 用户信息 + * @param type 菜单类型 + */ + @Override + public List getUserMenuList(UserDetail userDetail, Integer type) { + List menuList; + + //系统管理员,拥有最高权限 + if (userDetail.getSuperAdmin() == SuperAdminEnum.YES.value()) { + menuList = baseDao.getMenuList(type, HttpContextUtils.getLanguage()); + } else { + menuList = baseDao.getUserMenuList(userDetail.getId(), type, HttpContextUtils.getLanguage()); + } + + List dtoList = ConvertUtils.sourceToTarget(menuList, AppMenuDTO.class); + + return TreeUtils.build(dtoList); + } +} diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/AppRoleMenuServiceImpl.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/AppRoleMenuServiceImpl.java index 6d7722cb2..c3caee4b4 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/AppRoleMenuServiceImpl.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/AppRoleMenuServiceImpl.java @@ -17,6 +17,7 @@ package com.elink.esua.epdc.service.impl; +import cn.hutool.core.collection.CollUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl; @@ -101,4 +102,51 @@ public class AppRoleMenuServiceImpl extends BaseServiceImpl appMenuIdList) { + //先删除角色菜单权限关系 + deleteByRoleId(roleId); + + //角色没有一个菜单权限的情况 + if (CollUtil.isEmpty(appMenuIdList)) { + return; + } + + //保存角色菜单权限关系 + for (Long menuId : appMenuIdList) { + AppRoleMenuEntity appRoleMenuEntity = new AppRoleMenuEntity(); + appRoleMenuEntity.setMenuId(menuId); + appRoleMenuEntity.setRoleId(roleId); + + //保存 + insert(appRoleMenuEntity); + } + } + + /** + * 根据角色id,删除角色数据权限关系 + * + * @param roleId 角色id + */ + @Override + public void deleteByRoleId(Long roleId) { + baseDao.deleteByRoleId(roleId); + } + + /** + * 根据角色ID,获取菜单ID列表 + * + * @param id + * @return + */ + @Override + public List getAppMenuIdList(Long id) { + return baseDao.getAppMenuIdList(id); + } +} diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysRoleServiceImpl.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysRoleServiceImpl.java index 0d2263c76..3af61d653 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysRoleServiceImpl.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysRoleServiceImpl.java @@ -46,6 +46,8 @@ public class SysRoleServiceImpl extends BaseServiceImpl page(Map params) { @@ -103,6 +105,9 @@ public class SysRoleServiceImpl extends BaseServiceImpl - \ No newline at end of file + + + + diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/AppRoleMenuDao.xml b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/AppRoleMenuDao.xml index 924801dca..4ca2df30e 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/AppRoleMenuDao.xml +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/AppRoleMenuDao.xml @@ -11,5 +11,11 @@ + + delete from sys_app_role_menu where role_id = #{value} + - \ No newline at end of file + +