系统菜单搜索优化

master
rouchen 2024-04-12 23:16:02 +08:00
parent c1668d0569
commit 028ad38f45
4 changed files with 37 additions and 3 deletions

View File

@ -8,6 +8,7 @@ import com.muyu.common.log.annotation.Log;
import com.muyu.common.log.enums.BusinessType;
import com.muyu.common.security.annotation.RequiresPermissions;
import com.muyu.common.security.utils.SecurityUtils;
import com.muyu.common.system.domain.SysUser;
import com.muyu.system.domain.SysMenu;
import com.muyu.system.domain.resp.RoleMenuTreeResp;
import com.muyu.system.service.SysMenuService;
@ -15,7 +16,9 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
*
@ -35,10 +38,12 @@ public class SysMenuController extends BaseController {
@GetMapping("/list")
public Result list (SysMenu menu) {
Long userId = SecurityUtils.getUserId();
List<SysMenu> menus = menuService.selectMenuList(menu, userId);
return success(menus);
List<SysMenu> sysMenus = menuService.selectMenuList(menu, userId);
return success(sysMenus);
}
/**
*
*/

View File

@ -135,4 +135,6 @@ public interface SysMenuMapper extends BaseMapper<SysMenu> {
* @return
*/
public SysMenu checkMenuNameUnique (@Param("menuName") String menuName, @Param("parentId") Long parentId);
}

View File

@ -158,4 +158,6 @@ public interface SysMenuService extends IService<SysMenu> {
* @return
*/
public boolean checkMenuNameUnique (SysMenu menu);
}

View File

@ -60,17 +60,40 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
*/
@Override
public List<SysMenu> selectMenuList (SysMenu menu, Long userId) {
List<SysMenu> allSysMenu=null;
List<SysMenu> menuList = null;
boolean admin = SysUser.isAdmin(userId);
// 管理员显示所有菜单信息
if (SysUser.isAdmin(userId)) {
if (admin) {
menuList = menuMapper.selectMenuList(menu);
} else {
menu.getParams().put("userId", userId);
menuList = menuMapper.selectMenuListByUserId(menu);
}
if(menuList.size()==1){
SysMenu sysMenu = menuList.get(0);
//调用查询ParentId父类id
this.selectMenuParentId1(menuList,sysMenu);
SysMenu sysMenu1 = new SysMenu();
sysMenu1.setPerms(menu.getPerms());
allSysMenu = admin ?menuMapper.selectMenuList(null):menuMapper.selectMenuListByUserId(sysMenu1);
List<SysMenu> childList = this.getChildList(allSysMenu, sysMenu);
menuList.addAll(childList);
}
return menuList;
}
private void selectMenuParentId1(List<SysMenu> list,SysMenu menu) {
if(menu.getParentId().equals(0L)){
return;
}else {
SysMenu sysMenu = this.selectMenuById(menu.getParentId());
list.add(sysMenu);
selectMenuParentId1(list,sysMenu);
}
}
/**
* ID
*
@ -321,6 +344,8 @@ public class SysMenuServiceImpl extends ServiceImpl<SysMenuMapper, SysMenu> impl
return UserConstants.UNIQUE;
}
/**
*
*