菜单权限控制
This commit is contained in:
@@ -1,7 +1,15 @@
|
|||||||
package com.cool.store.dao;
|
package com.cool.store.dao;
|
||||||
|
|
||||||
|
import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils;
|
||||||
|
import com.cool.store.entity.SysRoleMenuDO;
|
||||||
|
import com.cool.store.mapper.SysRoleMenuMapper;
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
|
import javax.annotation.Resource;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Objects;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author zhangchenbiao
|
* @author zhangchenbiao
|
||||||
* @date 2023-05-19 03:01
|
* @date 2023-05-19 03:01
|
||||||
@@ -9,4 +17,20 @@ import org.springframework.stereotype.Repository;
|
|||||||
@Repository
|
@Repository
|
||||||
public class SysRoleMenuDAO {
|
public class SysRoleMenuDAO {
|
||||||
|
|
||||||
|
@Resource
|
||||||
|
private SysRoleMenuMapper sysRoleMenuMapper;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取菜单
|
||||||
|
* @param roleId
|
||||||
|
* @param platform
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public List<SysRoleMenuDO> getRoleMenuByRoleId(String roleId, String platform){
|
||||||
|
if(Objects.isNull(roleId) || StringUtils.isBlank(platform)){
|
||||||
|
return Lists.newArrayList();
|
||||||
|
}
|
||||||
|
return sysRoleMenuMapper.getRoleMenuByRoleId(roleId, platform);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -3,6 +3,8 @@ package com.cool.store.mapper;
|
|||||||
import com.cool.store.entity.SysRoleMenuDO;
|
import com.cool.store.entity.SysRoleMenuDO;
|
||||||
import org.apache.ibatis.annotations.Param;
|
import org.apache.ibatis.annotations.Param;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author zhangchenbiao
|
* @author zhangchenbiao
|
||||||
* @date 2023-05-19 03:01
|
* @date 2023-05-19 03:01
|
||||||
@@ -22,4 +24,12 @@ public interface SysRoleMenuMapper {
|
|||||||
* dateTime:2023-05-19 03:01
|
* dateTime:2023-05-19 03:01
|
||||||
*/
|
*/
|
||||||
int updateByPrimaryKeySelective(@Param("record") SysRoleMenuDO record);
|
int updateByPrimaryKeySelective(@Param("record") SysRoleMenuDO record);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 根据角色获取菜单
|
||||||
|
* @param roleId
|
||||||
|
* @param platform
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
List<SysRoleMenuDO> getRoleMenuByRoleId(@Param("roleId")String roleId, @Param("platform")String platform);
|
||||||
}
|
}
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
<resultMap id="BaseResultMap" type="com.cool.store.entity.SysRoleMenuDO">
|
<resultMap id="BaseResultMap" type="com.cool.store.entity.SysRoleMenuDO">
|
||||||
<id column="id" jdbcType="BIGINT" property="id"/>
|
<id column="id" jdbcType="BIGINT" property="id"/>
|
||||||
<result column="menu_id" jdbcType="BIGINT" property="menuId"/>
|
<result column="menu_id" jdbcType="BIGINT" property="menuId"/>
|
||||||
<result column="role_id" jdbcType="BIGINT" property="roleId"/>
|
<result column="role_id" jdbcType="VARCHAR" property="roleId"/>
|
||||||
<result column="platform" jdbcType="VARCHAR" property="platform"/>
|
<result column="platform" jdbcType="VARCHAR" property="platform"/>
|
||||||
</resultMap>
|
</resultMap>
|
||||||
<sql id="Base_Column_List">
|
<sql id="Base_Column_List">
|
||||||
@@ -50,4 +50,13 @@
|
|||||||
</set>
|
</set>
|
||||||
where id = #{record.id}
|
where id = #{record.id}
|
||||||
</update>
|
</update>
|
||||||
|
|
||||||
|
<select id="getRoleMenuByRoleId" resultMap="BaseResultMap">
|
||||||
|
select
|
||||||
|
<include refid="Base_Column_List"/>
|
||||||
|
from
|
||||||
|
sys_role_menu
|
||||||
|
where
|
||||||
|
role_id=#{roleId} and platform=#{platform}
|
||||||
|
</select>
|
||||||
</mapper>
|
</mapper>
|
||||||
@@ -25,7 +25,7 @@ public class SysRoleMenuDO implements Serializable {
|
|||||||
private Long menuId;
|
private Long menuId;
|
||||||
|
|
||||||
@ApiModelProperty("角色id")
|
@ApiModelProperty("角色id")
|
||||||
private Long roleId;
|
private String roleId;
|
||||||
|
|
||||||
@ApiModelProperty("菜单类型")
|
@ApiModelProperty("菜单类型")
|
||||||
private String platform;
|
private String platform;
|
||||||
|
|||||||
@@ -2,14 +2,20 @@ package com.cool.store.service.impl;
|
|||||||
|
|
||||||
import com.cool.store.constants.CommonConstants;
|
import com.cool.store.constants.CommonConstants;
|
||||||
import com.cool.store.dao.SysMenuDAO;
|
import com.cool.store.dao.SysMenuDAO;
|
||||||
|
import com.cool.store.dao.SysRoleMenuDAO;
|
||||||
import com.cool.store.entity.SysMenuDO;
|
import com.cool.store.entity.SysMenuDO;
|
||||||
|
import com.cool.store.entity.SysRoleMenuDO;
|
||||||
|
import com.cool.store.enums.MenuTypeEnum;
|
||||||
import com.cool.store.enums.PlatFormTypeEnum;
|
import com.cool.store.enums.PlatFormTypeEnum;
|
||||||
import com.cool.store.service.MenuService;
|
import com.cool.store.service.MenuService;
|
||||||
import com.cool.store.vo.menu.MenuTreeVO;
|
import com.cool.store.vo.menu.MenuTreeVO;
|
||||||
|
import org.apache.commons.collections4.CollectionUtils;
|
||||||
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
|
|
||||||
import javax.annotation.Resource;
|
import javax.annotation.Resource;
|
||||||
import java.util.List;
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author zhangchenbiao
|
* @author zhangchenbiao
|
||||||
@@ -22,11 +28,35 @@ public class MenuServiceImpl implements MenuService {
|
|||||||
|
|
||||||
@Resource
|
@Resource
|
||||||
private SysMenuDAO sysMenuDAO;
|
private SysMenuDAO sysMenuDAO;
|
||||||
|
@Resource
|
||||||
|
private SysRoleMenuDAO sysRoleMenuDAO;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<MenuTreeVO> getUserMenus(String userId, String roleId) {
|
public List<MenuTreeVO> getUserMenus(String userId, String roleId) {
|
||||||
List<SysMenuDO> menuList= sysMenuDAO.selectMenuAll(null, PlatFormTypeEnum.PC.getCode());
|
List<SysMenuDO> menuList= sysMenuDAO.selectMenuAll(null, PlatFormTypeEnum.PC.getCode());
|
||||||
|
List<SysRoleMenuDO> roleMenuList = sysRoleMenuDAO.getRoleMenuByRoleId(roleId, PlatFormTypeEnum.PC.getCode());
|
||||||
|
List<Long> anthMenuIdList = menuList.stream().filter(o -> MenuTypeEnum.AUTH.getCode().equals(o.getMenuType())).map(SysMenuDO::getId).collect(Collectors.toList());
|
||||||
|
List<Long> roleMenuIdList = roleMenuList.stream().map(SysRoleMenuDO::getMenuId).filter(anthMenuIdList::contains).collect(Collectors.toList());
|
||||||
|
Set<Long> authMenuSet = new HashSet<>();
|
||||||
|
//1倒推菜单列表 2.转换成树`
|
||||||
|
if (CollectionUtils.isEmpty(roleMenuIdList)) {
|
||||||
|
return new ArrayList<>();
|
||||||
|
}
|
||||||
|
authMenuSet.addAll(roleMenuIdList);
|
||||||
|
Map<Long, Long> idMap = menuList.stream().filter(a -> a.getId() != null && a.getParentId() != null).collect(Collectors.toMap(SysMenuDO::getId, SysMenuDO::getParentId));
|
||||||
|
for (Long menuId : roleMenuIdList) {
|
||||||
|
getParentNode(menuId, idMap, authMenuSet);
|
||||||
|
}
|
||||||
|
menuList = menuList.stream().filter(data -> authMenuSet.contains(data.getId())).collect(Collectors.toList());
|
||||||
//根据角色获取菜单
|
//根据角色获取菜单
|
||||||
return MenuTreeVO.dealMenuTree(CommonConstants.ZERO_LONG, menuList);
|
return MenuTreeVO.dealMenuTree(CommonConstants.ZERO_LONG, menuList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void getParentNode(Long menuId, Map<Long, Long> idMap, Set<Long> authMenuList) {
|
||||||
|
Long parentId = idMap.get(menuId);
|
||||||
|
authMenuList.add(parentId);
|
||||||
|
if (parentId!=null&&parentId != 0) {
|
||||||
|
getParentNode(parentId, idMap, authMenuList);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ public class SignValidateFilter implements Filter {
|
|||||||
"/partner/mini/program/doc.html","/partner/mini/program/v2/api-docs","/**/test/**",
|
"/partner/mini/program/doc.html","/partner/mini/program/v2/api-docs","/**/test/**",
|
||||||
"/partner/mini/program/oss/getUploadFileConfig",
|
"/partner/mini/program/oss/getUploadFileConfig",
|
||||||
"/partner/mini/program/v1/partnerManage/partner/getIdentityCardInfo",
|
"/partner/mini/program/v1/partnerManage/partner/getIdentityCardInfo",
|
||||||
"/**/swagger*/**", "/**/webjars/**","/partner/mini/program/v1/partnerManage/openArea/areaApplyQuery");
|
"/**/swagger*/**", "/**/webjars/**","/partner/mini/program/v1/partnerManage/openArea/areaApplyQuery", "/partner/mini/program/interview/appointment/submit");
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user