Browse Source

角色管理改造

dev
尹作梅 6 years ago
parent
commit
a3dd4ca5ab
  1. 4
      esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/SysRoleDTO.java
  2. 9
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/AppMenuController.java
  3. 7
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/controller/SysRoleController.java
  4. 16
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/AppMenuDao.java
  5. 17
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/dao/AppRoleMenuDao.java
  6. 12
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/entity/AppMenuEntity.java
  7. 9
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/AppMenuService.java
  8. 41
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/AppRoleMenuService.java
  9. 26
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/AppMenuServiceImpl.java
  10. 48
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/AppRoleMenuServiceImpl.java
  11. 8
      esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysRoleServiceImpl.java
  12. 41
      esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/AppMenuDao.xml
  13. 6
      esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/AppRoleMenuDao.xml

4
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<Long> deptIdList; private List<Long> deptIdList;
/**
* app菜单ID列表
*/
private List<Long> appMenuIdList;
} }

9
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; package com.elink.esua.epdc.controller;
import com.elink.esua.epdc.commons.tools.exception.ErrorCode; 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.ExcelUtils;
import com.elink.esua.epdc.commons.tools.utils.Result; 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.AssertUtils;
import com.elink.esua.epdc.commons.tools.validator.ValidatorUtils; 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.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.DefaultGroup;
import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup;
import com.elink.esua.epdc.dto.AppMenuDTO; import com.elink.esua.epdc.dto.AppMenuDTO;
import com.elink.esua.epdc.excel.AppMenuExcel; import com.elink.esua.epdc.excel.AppMenuExcel;
import com.elink.esua.epdc.service.AppMenuService; import com.elink.esua.epdc.service.AppMenuService;
@ -106,4 +107,10 @@ public class AppMenuController {
ExcelUtils.exportExcelToTarget(response, null, list, AppMenuExcel.class); ExcelUtils.exportExcelToTarget(response, null, list, AppMenuExcel.class);
} }
@GetMapping("select")
public Result<List<AppMenuDTO>> select(UserDetail userDetail) {
List<AppMenuDTO> list = appMenuService.getUserMenuList(userDetail, null);
return new Result<List<AppMenuDTO>>().ok(list);
}
} }

7
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.DefaultGroup;
import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup; import com.elink.esua.epdc.commons.tools.validator.group.UpdateGroup;
import com.elink.esua.epdc.dto.SysRoleDTO; 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.SysRoleDataScopeService;
import com.elink.esua.epdc.service.SysRoleMenuService; import com.elink.esua.epdc.service.SysRoleMenuService;
import com.elink.esua.epdc.service.SysRoleService; import com.elink.esua.epdc.service.SysRoleService;
@ -49,6 +50,8 @@ public class SysRoleController {
private SysRoleMenuService sysRoleMenuService; private SysRoleMenuService sysRoleMenuService;
@Autowired @Autowired
private SysRoleDataScopeService sysRoleDataScopeService; private SysRoleDataScopeService sysRoleDataScopeService;
@Autowired
private AppRoleMenuService appRoleMenuService;
@GetMapping("page") @GetMapping("page")
@ApiOperation("分页") @ApiOperation("分页")
@ -86,6 +89,10 @@ public class SysRoleController {
List<Long> deptIdList = sysRoleDataScopeService.getDeptIdList(id); List<Long> deptIdList = sysRoleDataScopeService.getDeptIdList(id);
data.setDeptIdList(deptIdList); data.setDeptIdList(deptIdList);
//查询角色对应app菜单权限
List<Long> appMenuIdList = appRoleMenuService.getAppMenuIdList(id);
data.setAppMenuIdList(appMenuIdList);
return new Result<SysRoleDTO>().ok(data); return new Result<SysRoleDTO>().ok(data);
} }

16
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<AppMenuEntity> {
* @return * @return
*/ */
AppMenuDTO selectByIdDIY(@Param("id") String id, @Param("language") String language); AppMenuDTO selectByIdDIY(@Param("id") String id, @Param("language") String language);
/**
* 查询所有菜单列表
*
* @param type 菜单类型
* @param language 语言
*/
List<AppMenuEntity> getMenuList(@Param("type") Integer type, @Param("language") String language);
/**
* 查询用户菜单列表
*
* @param userId 用户ID
* @param type 菜单类型
* @param language 语言
*/
List<AppMenuEntity> getUserMenuList(@Param("userId") Long userId, @Param("type") Integer type, @Param("language") String language);
} }

17
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 com.elink.esua.epdc.entity.AppRoleMenuEntity;
import org.apache.ibatis.annotations.Mapper; 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 * @since v1.0.0 2019-11-19
*/ */
@Mapper @Mapper
public interface AppRoleMenuDao extends BaseDao<AppRoleMenuEntity> { public interface AppRoleMenuDao extends BaseDao<AppRoleMenuEntity> {
/**
* 根据角色id删除角色数据权限关系
*
* @param roleId 角色id
*/
void deleteByRoleId(Long roleId);
/**
* 根据角色ID获取菜单ID列表
*
* @param id
* @return
*/
List<Long> getAppMenuIdList(Long id);
} }

12
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; private Long pid;
/**
* 菜单名称
*/
@TableField(exist = false)
private String name;
/** /**
* 菜单URL * 菜单URL
*/ */
@ -89,6 +95,12 @@ public class AppMenuEntity extends BaseEntity {
@TableField(fill = FieldFill.INSERT_UPDATE) @TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateDate; private Date updateDate;
/**
* 上级菜单名称
*/
@TableField(exist = false)
private String parentName;
/** /**
* 菜单编码 * 菜单编码
*/ */

9
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.mybatis.service.BaseService;
import com.elink.esua.epdc.commons.tools.page.PageData; 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.dto.AppMenuDTO;
import com.elink.esua.epdc.entity.AppMenuEntity; import com.elink.esua.epdc.entity.AppMenuEntity;
@ -123,4 +124,12 @@ public interface AppMenuService extends BaseService<AppMenuEntity> {
* @date 2019/11/19 14:30 * @date 2019/11/19 14:30
*/ */
boolean hasChileMenu(Long id); boolean hasChileMenu(Long id);
/**
* 用户app端菜单列表
*
* @param userDetail 用户信息
* @param type 菜单类型
*/
List<AppMenuDTO> getUserMenuList(UserDetail userDetail, Integer type);
} }

41
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<AppRoleMenuEntity> {
*/ */
void update(AppRoleMenuDTO dto); void update(AppRoleMenuDTO dto);
/** /**
* 批量删除 * 批量删除
* *
* @param ids * @param ids
* @return void * @return void
* @author generator * @author generator
* @date 2019-11-19 * @date 2019-11-19
*/ */
void delete(String[] ids); void delete(String[] ids);
/**
* 保存或修改
*
* @param roleId 角色ID
* @param appMenuIdList 菜单ID列表
*/
void saveOrUpdate(Long roleId, List<Long> appMenuIdList);
/**
* 根据角色id删除角色数据权限关系
*
* @param roleId 角色id
*/
void deleteByRoleId(Long roleId);
/**
* 根据角色ID获取菜单ID列表
*
* @param id
* @return
*/
List<Long> getAppMenuIdList(Long id);
} }

26
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.enums.DelFlagEnum;
import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl; 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.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.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.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.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.HttpContextUtils;
import com.elink.esua.epdc.commons.tools.utils.TreeUtils; import com.elink.esua.epdc.commons.tools.utils.TreeUtils;
import com.elink.esua.epdc.dao.AppMenuDao; import com.elink.esua.epdc.dao.AppMenuDao;
@ -129,4 +131,26 @@ public class AppMenuServiceImpl extends BaseServiceImpl<AppMenuDao, AppMenuEntit
Integer selectCount = baseDao.selectCount(wrapper); Integer selectCount = baseDao.selectCount(wrapper);
return selectCount > NumConstant.ZERO; return selectCount > NumConstant.ZERO;
} }
/**
* 用户app端菜单列表
*
* @param userDetail 用户信息
* @param type 菜单类型
*/
@Override
public List<AppMenuDTO> getUserMenuList(UserDetail userDetail, Integer type) {
List<AppMenuEntity> menuList;
//系统管理员,拥有最高权限
if (userDetail.getSuperAdmin() == SuperAdminEnum.YES.value()) {
menuList = baseDao.getMenuList(type, HttpContextUtils.getLanguage());
} else {
menuList = baseDao.getUserMenuList(userDetail.getId(), type, HttpContextUtils.getLanguage());
}
List<AppMenuDTO> dtoList = ConvertUtils.sourceToTarget(menuList, AppMenuDTO.class);
return TreeUtils.build(dtoList);
}
} }

48
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; 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.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.metadata.IPage;
import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl; import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl;
@ -101,4 +102,51 @@ public class AppRoleMenuServiceImpl extends BaseServiceImpl<AppRoleMenuDao, AppR
baseDao.deleteBatchIds(Arrays.asList(ids)); baseDao.deleteBatchIds(Arrays.asList(ids));
} }
/**
* 保存或修改
*
* @param roleId 角色ID
* @param appMenuIdList 菜单ID列表
*/
@Override
public void saveOrUpdate(Long roleId, List<Long> 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<Long> getAppMenuIdList(Long id) {
return baseDao.getAppMenuIdList(id);
}
} }

8
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<SysRoleDao, SysRoleEntit
private SysRoleDataScopeService sysRoleDataScopeService; private SysRoleDataScopeService sysRoleDataScopeService;
@Autowired @Autowired
private SysDeptService sysDeptService; private SysDeptService sysDeptService;
@Autowired
private AppRoleMenuService appRoleMenuService;
@Override @Override
public PageData<SysRoleDTO> page(Map<String, Object> params) { public PageData<SysRoleDTO> page(Map<String, Object> params) {
@ -103,6 +105,9 @@ public class SysRoleServiceImpl extends BaseServiceImpl<SysRoleDao, SysRoleEntit
//保存角色数据权限关系 //保存角色数据权限关系
sysRoleDataScopeService.saveOrUpdate(entity.getId(), dto.getDeptIdList()); sysRoleDataScopeService.saveOrUpdate(entity.getId(), dto.getDeptIdList());
//保存角色与app菜单关系
appRoleMenuService.saveOrUpdate(entity.getId(), dto.getAppMenuIdList());
} }
@Override @Override
@ -118,6 +123,9 @@ public class SysRoleServiceImpl extends BaseServiceImpl<SysRoleDao, SysRoleEntit
//更新角色数据权限关系 //更新角色数据权限关系
sysRoleDataScopeService.saveOrUpdate(entity.getId(), dto.getDeptIdList()); sysRoleDataScopeService.saveOrUpdate(entity.getId(), dto.getDeptIdList());
//更新角色与app菜单关系
appRoleMenuService.saveOrUpdate(entity.getId(), dto.getAppMenuIdList());
} }
@Override @Override

41
esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/AppMenuDao.xml

@ -26,4 +26,45 @@
AND m.id = #{id} AND m.id = #{id}
</select> </select>
<select id="getMenuList" resultType="com.elink.esua.epdc.entity.AppMenuEntity">
select t1.*, (
SELECT
lang.field_value
FROM
sys_language lang
WHERE
lang.table_name = 'sys_app_menu'
AND lang.field_name = 'name'
AND lang.table_id = t1.id
AND lang.LANGUAGE = #{language}
) as name
from sys_app_menu t1
where t1.del_flag = 0
<if test="type != null">
and t1.type = #{type}
</if>
order by t1.sort asc
</select>
<select id="getUserMenuList" resultType="com.elink.esua.epdc.entity.AppMenuEntity">
select t3.*,(
SELECT
lang.field_value
FROM
sys_language lang
WHERE
lang.table_name = 'sys_app_menu'
AND lang.field_name = 'name'
AND lang.table_id = t3.id
AND lang.LANGUAGE = #{language}
) as name
from sys_role_user t1
left join sys_app_role_menu t2 on t1.role_id = t2.role_id
left join sys_app_menu t3 on t2.menu_id = t3.id
where t1.user_id = #{userId} and t3.del_flag = 0
<if test="type != null">
and t3.type = #{type}
</if>
order by t3.sort asc
</select>
</mapper> </mapper>

6
esua-epdc/epdc-admin/epdc-admin-server/src/main/resources/mapper/AppRoleMenuDao.xml

@ -11,5 +11,11 @@
<result property="createDate" column="create_date"/> <result property="createDate" column="create_date"/>
</resultMap> </resultMap>
<delete id="deleteByRoleId">
delete from sys_app_role_menu where role_id = #{value}
</delete>
<select id="getAppMenuIdList" resultType="long">
select menu_id from sys_app_role_menu where role_id = #{value}
</select>
</mapper> </mapper>
Loading…
Cancel
Save