mirror of
https://github.com/mfish-qf/mfish-nocode.git
synced 2026-09-01 15:09:52 +08:00
feat: 菜单查询增加过滤逻辑
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user