提交 4077215a 作者: zhenjie

角色权限配置优化

上级 adc05e79
...@@ -2,16 +2,15 @@ package com.mmc.iuav.user.controller; ...@@ -2,16 +2,15 @@ package com.mmc.iuav.user.controller;
import com.mmc.iuav.response.ResultBody; import com.mmc.iuav.response.ResultBody;
import com.mmc.iuav.user.model.dto.MenuInfoDTO; import com.mmc.iuav.user.model.dto.MenuInfoDTO;
import com.mmc.iuav.user.model.vo.RoleMenuInfoVO;
import com.mmc.iuav.user.service.MenuInfoService; import com.mmc.iuav.user.service.MenuInfoService;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse; import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses; import io.swagger.annotations.ApiResponses;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import javax.servlet.http.HttpServletRequest; import org.springframework.web.bind.annotation.RestController;
/** /**
* @author: zj * @author: zj
...@@ -31,17 +30,4 @@ public class MenuInfoController extends BaseController { ...@@ -31,17 +30,4 @@ public class MenuInfoController extends BaseController {
return menuInfoService.listMenuInfo(); return menuInfoService.listMenuInfo();
} }
@ApiOperation(value = "根据角色id获取权限")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = MenuInfoDTO.class)})
@GetMapping("listRoleMenuInfo")
public ResultBody listRoleMenuInfo(@RequestParam Integer roleId) {
return menuInfoService.listRoleMenuInfo(roleId);
}
@ApiOperation(value = "修改角色菜单权限")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("updateRoleMenuInfo")
public ResultBody updateRoleMenuInfo(HttpServletRequest request, @RequestBody RoleMenuInfoVO roleMenuInfoVO) {
return menuInfoService.updateRoleMenuInfo(roleMenuInfoVO, this.getUserLoginInfoFromRedis(request));
}
} }
...@@ -4,9 +4,11 @@ import com.mmc.iuav.group.Create; ...@@ -4,9 +4,11 @@ import com.mmc.iuav.group.Create;
import com.mmc.iuav.group.Page; import com.mmc.iuav.group.Page;
import com.mmc.iuav.group.Update; import com.mmc.iuav.group.Update;
import com.mmc.iuav.response.ResultBody; import com.mmc.iuav.response.ResultBody;
import com.mmc.iuav.user.model.dto.MenuInfoDTO;
import com.mmc.iuav.user.model.dto.RoleInfoDTO; import com.mmc.iuav.user.model.dto.RoleInfoDTO;
import com.mmc.iuav.user.model.qo.RoleInfoQO; import com.mmc.iuav.user.model.qo.RoleInfoQO;
import com.mmc.iuav.user.model.vo.RoleInfoVO; import com.mmc.iuav.user.model.vo.RoleInfoVO;
import com.mmc.iuav.user.model.vo.RoleMenuInfoVO;
import com.mmc.iuav.user.service.RoleService; import com.mmc.iuav.user.service.RoleService;
import io.swagger.annotations.*; import io.swagger.annotations.*;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
...@@ -60,5 +62,18 @@ public class RoleController extends BaseController { ...@@ -60,5 +62,18 @@ public class RoleController extends BaseController {
return ResultBody.success(roleService.listPageRoleInfo(param, this.getUserLoginInfoFromRedis(request))); return ResultBody.success(roleService.listPageRoleInfo(param, this.getUserLoginInfoFromRedis(request)));
} }
@ApiOperation(value = "根据角色id获取权限")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = MenuInfoDTO.class)})
@GetMapping("listRoleMenuInfo")
public ResultBody listRoleMenuInfo(@RequestParam Integer roleId) {
return roleService.listRoleMenuInfo(roleId);
}
@ApiOperation(value = "修改角色菜单权限")
@ApiResponses({@ApiResponse(code = 200, message = "OK", response = ResultBody.class)})
@PostMapping("updateRoleMenuInfo")
public ResultBody updateRoleMenuInfo(HttpServletRequest request, @RequestBody RoleMenuInfoVO roleMenuInfoVO) {
return roleService.updateRoleMenuInfo(roleMenuInfoVO, this.getUserLoginInfoFromRedis(request));
}
} }
...@@ -2,7 +2,6 @@ package com.mmc.iuav.user.dao; ...@@ -2,7 +2,6 @@ package com.mmc.iuav.user.dao;
import com.mmc.iuav.user.entity.MenuInfoDO; import com.mmc.iuav.user.entity.MenuInfoDO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
...@@ -12,11 +11,7 @@ import java.util.List; ...@@ -12,11 +11,7 @@ import java.util.List;
*/ */
@Mapper @Mapper
public interface MenuInfoDao { public interface MenuInfoDao {
List<MenuInfoDO> listMenuInfo();
List<MenuInfoDO> listRoleMenuInfo(Integer roleId);
void batchAddMenuIds(Integer roleId, @Param("addMenuIds") List<Integer> addMenuIds); List<MenuInfoDO> listMenuInfo();
void batchDeleteMenuIds(Integer roleId, @Param("deleteMenuIds") List<Integer> deleteMenuIds);
} }
package com.mmc.iuav.user.dao; package com.mmc.iuav.user.dao;
import com.mmc.iuav.user.entity.MenuInfoDO;
import com.mmc.iuav.user.entity.RoleInfoDO; import com.mmc.iuav.user.entity.RoleInfoDO;
import com.mmc.iuav.user.model.qo.RoleInfoQO; import com.mmc.iuav.user.model.qo.RoleInfoQO;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
...@@ -34,6 +35,10 @@ public interface RoleDao { ...@@ -34,6 +35,10 @@ public interface RoleDao {
Integer countNotDelUserAccountByRole(Integer id); Integer countNotDelUserAccountByRole(Integer id);
List<MenuInfoDO> listRoleMenuInfo(Integer roleId);
void batchAddMenuIds(Integer roleId, List<Integer> addMenuIds);
void batchDeleteMenuIds(Integer roleId, List<Integer> deleteMenuIds);
} }
...@@ -18,14 +18,37 @@ import java.util.Date; ...@@ -18,14 +18,37 @@ import java.util.Date;
public class MenuInfoDO implements Serializable { public class MenuInfoDO implements Serializable {
private static final long serialVersionUID = -4992870152816350664L; private static final long serialVersionUID = -4992870152816350664L;
private Integer id; private Integer id;
/**
* 父级id
*/
private Integer pid; private Integer pid;
/**
* 菜单名
*/
private String menuName; private String menuName;
private String portType; /**
* 菜单类型:0菜单,1按钮
*/
private String domType; private String domType;
/**
* 菜单路径
*/
private String pathInfo; private String pathInfo;
/**
* 菜单图标
*/
private String icon; private String icon;
/**
* 序号
*/
private Integer sort; private Integer sort;
/**
* 创建时间
*/
private Date createTime; private Date createTime;
/**
* 更新时间
*/
private Date updateTime; private Date updateTime;
public MenuInfoDTO buildMenuInfoDTO() { public MenuInfoDTO buildMenuInfoDTO() {
......
package com.mmc.iuav.user.service; package com.mmc.iuav.user.service;
import com.mmc.iuav.response.ResultBody; import com.mmc.iuav.response.ResultBody;
import com.mmc.iuav.user.model.dto.LoginSuccessDTO;
import com.mmc.iuav.user.model.vo.RoleMenuInfoVO;
/** /**
* @author: zj * @author: zj
* @Date: 2023/7/11 14:13 * @Date: 2023/7/11 14:13
*/ */
public interface MenuInfoService { public interface MenuInfoService {
ResultBody updateRoleMenuInfo(RoleMenuInfoVO roleMenuInfoVO, LoginSuccessDTO userLoginInfoFromRedis);
ResultBody listMenuInfo(); ResultBody listMenuInfo();
ResultBody listRoleMenuInfo(Integer roleId);
} }
...@@ -5,6 +5,7 @@ import com.mmc.iuav.response.ResultBody; ...@@ -5,6 +5,7 @@ import com.mmc.iuav.response.ResultBody;
import com.mmc.iuav.user.model.dto.LoginSuccessDTO; import com.mmc.iuav.user.model.dto.LoginSuccessDTO;
import com.mmc.iuav.user.model.qo.RoleInfoQO; import com.mmc.iuav.user.model.qo.RoleInfoQO;
import com.mmc.iuav.user.model.vo.RoleInfoVO; import com.mmc.iuav.user.model.vo.RoleInfoVO;
import com.mmc.iuav.user.model.vo.RoleMenuInfoVO;
/** /**
...@@ -21,5 +22,7 @@ public interface RoleService { ...@@ -21,5 +22,7 @@ public interface RoleService {
PageResult listPageRoleInfo(RoleInfoQO param, LoginSuccessDTO userLoginInfoFromRedis); PageResult listPageRoleInfo(RoleInfoQO param, LoginSuccessDTO userLoginInfoFromRedis);
ResultBody listRoleMenuInfo(Integer roleId);
ResultBody updateRoleMenuInfo(RoleMenuInfoVO roleMenuInfoVO, LoginSuccessDTO userLoginInfoFromRedis);
} }
...@@ -2,18 +2,12 @@ package com.mmc.iuav.user.service.impl; ...@@ -2,18 +2,12 @@ package com.mmc.iuav.user.service.impl;
import com.mmc.iuav.response.ResultBody; import com.mmc.iuav.response.ResultBody;
import com.mmc.iuav.user.dao.MenuInfoDao; import com.mmc.iuav.user.dao.MenuInfoDao;
import com.mmc.iuav.user.dao.RoleDao;
import com.mmc.iuav.user.entity.MenuInfoDO; import com.mmc.iuav.user.entity.MenuInfoDO;
import com.mmc.iuav.user.entity.RoleInfoDO;
import com.mmc.iuav.user.model.dto.LoginSuccessDTO;
import com.mmc.iuav.user.model.dto.MenuInfoDTO; import com.mmc.iuav.user.model.dto.MenuInfoDTO;
import com.mmc.iuav.user.model.vo.RoleMenuInfoVO;
import com.mmc.iuav.user.service.MenuInfoService; import com.mmc.iuav.user.service.MenuInfoService;
import com.mmc.iuav.user.util.MenuTreeUtil; import com.mmc.iuav.user.util.MenuTreeUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.CollectionUtils;
import java.util.List; import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
...@@ -27,31 +21,6 @@ public class MenuInfoServiceImpl implements MenuInfoService { ...@@ -27,31 +21,6 @@ public class MenuInfoServiceImpl implements MenuInfoService {
@Autowired @Autowired
private MenuInfoDao menuInfoDao; private MenuInfoDao menuInfoDao;
@Autowired
private RoleDao roleDao;
@Transactional
@Override
public ResultBody updateRoleMenuInfo(RoleMenuInfoVO roleMenuInfoVO, LoginSuccessDTO loginSuccessDTO) {
// 判断该角色的菜单是否可以修改
RoleInfoDO roleInfo = roleDao.getRoleInfo(roleMenuInfoVO.getRoleId());
if (!CollectionUtils.isEmpty(roleMenuInfoVO.getMenuInfoIds())) {
List<MenuInfoDO> menuInfoDOList = menuInfoDao.listRoleMenuInfo(roleMenuInfoVO.getRoleId());
List<Integer> existMenuIds = menuInfoDOList.stream().map(MenuInfoDO::getId).collect(Collectors.toList());
// 新添加的权限
List<Integer> addMenuIds = roleMenuInfoVO.getMenuInfoIds().stream().filter(v -> !existMenuIds.contains(v)).collect(Collectors.toList());
// 需删除的权限
List<Integer> deleteMenuIds = existMenuIds.stream().filter(v -> !roleMenuInfoVO.getMenuInfoIds().contains(v)).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(addMenuIds)) {
menuInfoDao.batchAddMenuIds(roleMenuInfoVO.getRoleId(), addMenuIds);
}
if (!CollectionUtils.isEmpty(deleteMenuIds)) {
menuInfoDao.batchDeleteMenuIds(roleMenuInfoVO.getRoleId(), deleteMenuIds);
}
}
return ResultBody.success();
}
@Override @Override
public ResultBody listMenuInfo() { public ResultBody listMenuInfo() {
List<MenuInfoDO> menuInfoDOList = menuInfoDao.listMenuInfo(); List<MenuInfoDO> menuInfoDOList = menuInfoDao.listMenuInfo();
...@@ -59,10 +28,4 @@ public class MenuInfoServiceImpl implements MenuInfoService { ...@@ -59,10 +28,4 @@ public class MenuInfoServiceImpl implements MenuInfoService {
return ResultBody.success(MenuTreeUtil.buildTreePCMenu(menuInfoDTOS)); return ResultBody.success(MenuTreeUtil.buildTreePCMenu(menuInfoDTOS));
} }
@Override
public ResultBody listRoleMenuInfo(Integer roleId) {
List<MenuInfoDO> menuInfoDOList = menuInfoDao.listRoleMenuInfo(roleId);
List<MenuInfoDTO> menuInfoDTOS = menuInfoDOList.stream().map(MenuInfoDO::buildMenuInfoDTO).collect(Collectors.toList());
return ResultBody.success(MenuTreeUtil.buildTreePCMenu(menuInfoDTOS));
}
} }
...@@ -5,14 +5,20 @@ import com.mmc.iuav.page.PageResult; ...@@ -5,14 +5,20 @@ import com.mmc.iuav.page.PageResult;
import com.mmc.iuav.response.ResultBody; import com.mmc.iuav.response.ResultBody;
import com.mmc.iuav.response.ResultEnum; import com.mmc.iuav.response.ResultEnum;
import com.mmc.iuav.user.dao.RoleDao; import com.mmc.iuav.user.dao.RoleDao;
import com.mmc.iuav.user.entity.MenuInfoDO;
import com.mmc.iuav.user.entity.RoleInfoDO; import com.mmc.iuav.user.entity.RoleInfoDO;
import com.mmc.iuav.user.model.dto.LoginSuccessDTO; import com.mmc.iuav.user.model.dto.LoginSuccessDTO;
import com.mmc.iuav.user.model.dto.MenuInfoDTO;
import com.mmc.iuav.user.model.qo.RoleInfoQO; import com.mmc.iuav.user.model.qo.RoleInfoQO;
import com.mmc.iuav.user.model.vo.RoleInfoVO; import com.mmc.iuav.user.model.vo.RoleInfoVO;
import com.mmc.iuav.user.model.vo.RoleMenuInfoVO;
import com.mmc.iuav.user.service.RoleService; import com.mmc.iuav.user.service.RoleService;
import com.mmc.iuav.user.util.MenuTreeUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import java.util.List;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/** /**
...@@ -76,5 +82,31 @@ public class RoleServiceImpl implements RoleService { ...@@ -76,5 +82,31 @@ public class RoleServiceImpl implements RoleService {
}).collect(Collectors.toList())); }).collect(Collectors.toList()));
} }
@Override
public ResultBody listRoleMenuInfo(Integer roleId) {
List<MenuInfoDO> menuInfoDOList = roleDao.listRoleMenuInfo(roleId);
List<MenuInfoDTO> menuInfoDTOS = menuInfoDOList.stream().map(MenuInfoDO::buildMenuInfoDTO).collect(Collectors.toList());
return ResultBody.success(MenuTreeUtil.buildTreePCMenu(menuInfoDTOS));
}
@Override
public ResultBody updateRoleMenuInfo(RoleMenuInfoVO roleMenuInfoVO, LoginSuccessDTO userLoginInfoFromRedis) {
// 判断该角色的菜单是否可以修改
if (!CollectionUtils.isEmpty(roleMenuInfoVO.getMenuInfoIds())) {
List<MenuInfoDO> menuInfoDOList = roleDao.listRoleMenuInfo(roleMenuInfoVO.getRoleId());
List<Integer> existMenuIds = menuInfoDOList.stream().map(MenuInfoDO::getId).collect(Collectors.toList());
// 新添加的权限
List<Integer> addMenuIds = roleMenuInfoVO.getMenuInfoIds().stream().filter(v -> !existMenuIds.contains(v)).collect(Collectors.toList());
// 需删除的权限
List<Integer> deleteMenuIds = existMenuIds.stream().filter(v -> !roleMenuInfoVO.getMenuInfoIds().contains(v)).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(addMenuIds)) {
roleDao.batchAddMenuIds(roleMenuInfoVO.getRoleId(), addMenuIds);
}
if (!CollectionUtils.isEmpty(deleteMenuIds)) {
roleDao.batchDeleteMenuIds(roleMenuInfoVO.getRoleId(), deleteMenuIds);
}
}
return ResultBody.success();
}
} }
...@@ -9,8 +9,8 @@ import java.util.List; ...@@ -9,8 +9,8 @@ import java.util.List;
* @author zj * @author zj
*/ */
public class MenuTreeUtil { public class MenuTreeUtil {
public final static Integer SXTB_PC_MENU_PID = 1; public final static Integer IUAV_PC_MENU_PID = 1;
public final static String SXTB_PC_MENU_NAME = "云享飞管理后台"; public final static String IUAV_PC_MENU_NAME = "云享飞管理后台";
public static void builderTree(List<MenuInfoDTO> treeEntityList, MenuInfoDTO pTreeEntity) { public static void builderTree(List<MenuInfoDTO> treeEntityList, MenuInfoDTO pTreeEntity) {
List<MenuInfoDTO> childMenus = new ArrayList<MenuInfoDTO>(); List<MenuInfoDTO> childMenus = new ArrayList<MenuInfoDTO>();
...@@ -46,8 +46,8 @@ public class MenuTreeUtil { ...@@ -46,8 +46,8 @@ public class MenuTreeUtil {
*/ */
public static MenuInfoDTO buildTreePCMenu(List<MenuInfoDTO> treeEntityList) { public static MenuInfoDTO buildTreePCMenu(List<MenuInfoDTO> treeEntityList) {
MenuInfoDTO parent = new MenuInfoDTO(); MenuInfoDTO parent = new MenuInfoDTO();
parent.setId(MenuTreeUtil.SXTB_PC_MENU_PID); parent.setId(MenuTreeUtil.IUAV_PC_MENU_PID);
parent.setMenuName(SXTB_PC_MENU_NAME); parent.setMenuName(IUAV_PC_MENU_NAME);
MenuTreeUtil.builderTree(treeEntityList, parent); MenuTreeUtil.builderTree(treeEntityList, parent);
return parent; return parent;
} }
......
...@@ -3,39 +3,6 @@ ...@@ -3,39 +3,6 @@
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd"> "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.mmc.iuav.user.dao.MenuInfoDao"> <mapper namespace="com.mmc.iuav.user.dao.MenuInfoDao">
<resultMap id="menuInfoResultMap" type="com.mmc.iuav.user.entity.MenuInfoDO">
<id property="id" column="id"/>
<result property="pid" column="pid"/>
<result property="menuName" column="menu_name"/>
<result property="portType" column="port_type"/>
<result property="domType" column="dom_type"/>
<result property="pathInfo" column="path_info"/>
<result property="icon" column="icon"/>
<result property="sort" column="sort"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
</resultMap>
<insert id="batchAddMenuIds">
insert into menu_role_rel
(
role_id,menu_id,create_time
)
values
<foreach collection="addMenuIds" item="menuId" separator=",">
(
#{roleId},#{menuId},NOW()
)
</foreach>
</insert>
<delete id="batchDeleteMenuIds">
delete from menu_role_rel where role_id = #{roleId} and menu_id in
<foreach collection="deleteMenuIds" item="menuId" open="(" separator=","
close=")">
#{menuId}
</foreach>
</delete>
<select id="listMenuInfo" resultType="com.mmc.iuav.user.entity.MenuInfoDO"> <select id="listMenuInfo" resultType="com.mmc.iuav.user.entity.MenuInfoDO">
select m.id,m.pid,m.menu_name,m.dom_type,m.path_info select m.id,m.pid,m.menu_name,m.dom_type,m.path_info
...@@ -43,12 +10,4 @@ ...@@ -43,12 +10,4 @@
order by m.sort ASC order by m.sort ASC
</select> </select>
<select id="listRoleMenuInfo" resultType="com.mmc.iuav.user.entity.MenuInfoDO">
select m.id,m.pid,m.menu_name,m.dom_type,m.path_info
from menu_info m
inner join menu_role_rel mr on mr.menu_id=m.id
where mr.role_id = #{roleId}
order by m.sort ASC
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -69,6 +69,18 @@ ...@@ -69,6 +69,18 @@
values (#{roleNo}, #{roleName}, #{userAccountId}, #{remark}, NOW(), NOW()) values (#{roleNo}, #{roleName}, #{userAccountId}, #{remark}, NOW(), NOW())
</insert> </insert>
<insert id="batchAddMenuIds">
insert into menu_role_rel
(
role_id,menu_id,create_time
)
values
<foreach collection="addMenuIds" item="menuId" separator=",">
(
#{roleId},#{menuId},NOW()
)
</foreach>
</insert>
<update id="updateRoleInfo" <update id="updateRoleInfo"
parameterType="com.mmc.iuav.user.entity.RoleInfoDO"> parameterType="com.mmc.iuav.user.entity.RoleInfoDO">
...@@ -96,6 +108,14 @@ ...@@ -96,6 +108,14 @@
where id = #{id} where id = #{id}
</delete> </delete>
<delete id="batchDeleteMenuIds">
delete from menu_role_rel where role_id = #{roleId} and menu_id in
<foreach collection="deleteMenuIds" item="menuId" open="(" separator=","
close=")">
#{menuId}
</foreach>
</delete>
<select id="getRoleInfo" resultMap="roleInfoResultMap" <select id="getRoleInfo" resultMap="roleInfoResultMap"
parameterType="int"> parameterType="int">
select r.id, select r.id,
...@@ -155,5 +175,12 @@ ...@@ -155,5 +175,12 @@
AND ua.is_deleted = 0 AND ua.is_deleted = 0
</select> </select>
<select id="listRoleMenuInfo" resultType="com.mmc.iuav.user.entity.MenuInfoDO">
select m.id,m.pid,m.menu_name,m.dom_type,m.path_info
from menu_info m
inner join menu_role_rel mr on mr.menu_id=m.id
where mr.role_id = #{roleId}
order by m.sort ASC
</select>
</mapper> </mapper>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论