feat: 菜单查询增加过滤逻辑

This commit is contained in:
qiufeng
2022-11-08 23:32:34 +08:00
parent 0869ada5ce
commit 3cfc19664c
6 changed files with 60 additions and 5 deletions
@@ -57,7 +57,7 @@ public class SsoMenuController {
@GetMapping("/tree")
public Result<List<MenuTree>> queryMenuTree(ReqSsoMenu reqSsoMenu) {
//TODO 过滤查询需要递归查询上级树节点,后期优化
List<SsoMenu> list = ssoMenuService.list(buildQueryCondition(reqSsoMenu));
List<SsoMenu> list = ssoMenuService.queryMenu(reqSsoMenu);
List<MenuTree> menuTrees = new ArrayList<>();
buildMenuTree("", list, menuTrees);
return Result.ok(menuTrees, "菜单权限表-查询成功!");
@@ -1,7 +1,11 @@
package cn.com.mfish.oauth.mapper;
import cn.com.mfish.oauth.entity.SsoMenu;
import cn.com.mfish.oauth.req.ReqSsoMenu;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* @Description: 菜单权限表
@@ -11,4 +15,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
*/
public interface SsoMenuMapper extends BaseMapper<SsoMenu> {
int insertMenu(SsoMenu ssoMenu);
Integer queryMaxLevel(@Param("reqSsoMenu") ReqSsoMenu reqSsoMenu);
List<SsoMenu> queryMenu(@Param("reqSsoMenu") ReqSsoMenu reqSsoMenu, @Param("levels") List<Integer> levels);
}
@@ -21,7 +21,8 @@
select
<trim suffixOverrides=",">
#{id}, #{parentId}, #{clientId},
CONCAT(pcode,LPAD(SUBSTR(IFNULL((SELECT max( menu_code ) FROM sso_menu WHERE parent_id = #{parentId} ), 0),(lvl-1)*5+1)+ 1, 5, 0 )),
CONCAT(pcode,LPAD(SUBSTR(IFNULL((SELECT max( menu_code ) FROM sso_menu WHERE parent_id = #{parentId} ),
0),(lvl-1)*5+1)+ 1, 5, 0 )),
lvl,
<if test="menuName != null">#{menuName},</if>
<if test="menuIcon != null">#{menuIcon},</if>
@@ -39,4 +40,31 @@
from (select IFNULL(menu_code,'') pcode,IFNULL(menu_level,0)+1 lvl from (SELECT '' FROM dual) d left join
sso_menu on id = #{parentId}) t
</insert>
<sql id="reqCondition">
<if test="reqSsoMenu.clientId!=null">and client_id = #{reqSsoMenu.clientId}</if>
<if test="reqSsoMenu.menuName != null">and menu_name like concat('%',#{reqSsoMenu.menuName},'%')</if>
<if test="reqSsoMenu.menuType!=null">and menu_type = #{reqSsoMenu.menuType}</if>
<if test="reqSsoMenu.isVisible!=null">and is_visible = #{reqSsoMenu.isVisible}</if>
</sql>
<select id="queryMaxLevel" resultType="java.lang.Integer">
select max(menu_level) from sso_menu
<where>
<include refid="reqCondition"/>
</where>
</select>
<select id="queryMenu" resultType="cn.com.mfish.oauth.entity.SsoMenu">
SELECT * FROM sso_menu
<where>
<include refid="reqCondition"/>
</where>
<foreach collection="levels" item="value">
UNION ALL SELECT * FROM sso_menu WHERE menu_code IN (SELECT DISTINCT SUBSTR(menu_code, 1,(menu_level-#{value})*5) FROM
sso_menu
<where>
<include refid="reqCondition"/>
</where>
)
</foreach>
order by menu_type, menu_sort
</select>
</mapper>
@@ -1,8 +1,11 @@
package cn.com.mfish.oauth.service;
import cn.com.mfish.oauth.entity.SsoMenu;
import cn.com.mfish.oauth.req.ReqSsoMenu;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;
/**
* @Description: 菜单权限表
* @Author: mfish
@@ -11,4 +14,6 @@ import com.baomidou.mybatisplus.extension.service.IService;
*/
public interface SsoMenuService extends IService<SsoMenu> {
boolean insertMenu(SsoMenu ssoMenu);
List<SsoMenu> queryMenu(ReqSsoMenu reqSsoMenu);
}
@@ -140,7 +140,7 @@ public class OAuth2ServiceImpl implements OAuth2Service {
public UserInfo getUserInfo(String userId) throws InvocationTargetException, IllegalAccessException {
SSOUser user = userService.getUserById(userId);
if (user == null) {
throw new OAuthValidateException("错误:未获取到用户信息!");
throw new OAuthValidateException("错误:未获取到用户信息!userId:" + userId);
}
UserInfo userInfo = new UserInfo();
BeanUtils.copyProperties(user, userInfo);
@@ -3,12 +3,14 @@ package cn.com.mfish.oauth.service.impl;
import cn.com.mfish.common.core.utils.StringUtils;
import cn.com.mfish.oauth.entity.SsoMenu;
import cn.com.mfish.oauth.mapper.SsoMenuMapper;
import cn.com.mfish.oauth.req.ReqSsoMenu;
import cn.com.mfish.oauth.service.SsoMenuService;
import org.springframework.stereotype.Service;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.List;
/**
* @Description: 菜单权限表
@@ -21,9 +23,21 @@ public class SsoMenuServiceImpl extends ServiceImpl<SsoMenuMapper, SsoMenu> impl
@Override
public boolean insertMenu(SsoMenu ssoMenu) {
if(StringUtils.isEmpty(ssoMenu.getParentId())){
if (StringUtils.isEmpty(ssoMenu.getParentId())) {
ssoMenu.setParentId("");
}
return baseMapper.insertMenu(ssoMenu) == 1;
}
@Override
public List<SsoMenu> queryMenu(ReqSsoMenu reqSsoMenu) {
Integer level = baseMapper.queryMaxLevel(reqSsoMenu);
List<Integer> list = new ArrayList<>();
if (level != null) {
for (int i = 1; i < level; i++) {
list.add(i);
}
}
return baseMapper.queryMenu(reqSsoMenu, list);
}
}