메뉴 조회 쿼리 수정.

master
강석 최 2022-04-04 17:57:12 +09:00
parent 3026b45af8
commit a32565bd83
5 changed files with 99 additions and 68 deletions

View File

@ -81,12 +81,10 @@ public class CommonAop {
MenuVO menuVO = new MenuVO();
menuVO.setUserId(loginUserVO.getUserid());
menuVO.setUserType(loginUserVO.getType());
List<MenuVO> mainMenuList = menuService
.selectMainMenuList(menuVO);
List<MenuVO> mainMenuList = menuService.selectMainMenuList(menuVO);
model.addAttribute("mainMenuList", mainMenuList);
List<MenuVO> topSubMenuList = menuService
.selectTopSubMenuList(menuVO);
List<MenuVO> topSubMenuList = menuService.selectTopSubMenuList(menuVO);
model.addAttribute("topSubMenuList", topSubMenuList);
@ -114,12 +112,8 @@ public class CommonAop {
default:
if (req.getParameter("category") != null
&& !req.getParameter("category")
.equals(" ")) {
qryCate = "category="
+ req.getParameter("category");
// url = url + "/" +
// req.getParameter("category");
&& !req.getParameter("category").equals(" ")) {
qryCate = "category=" + req.getParameter("category");
}
break;
}
@ -130,19 +124,14 @@ public class CommonAop {
menu.put("boardId", boardId);
menu.put("query", qryCate);
HashMap<String, Object> menuInfo = menuService
.getMenuInfo(menu);
menuVO.setId(Integer
.parseInt(menuInfo.get("ID").toString()));
HashMap<String, Object> menuInfo = menuService.getMenuInfo(menu);
menuVO.setId(Integer.parseInt(menuInfo.get("ID").toString()));
menuInfo.put("userId", loginUserVO.getUserid());
List<MenuVO> currAndHigherMenuList = menuService
.selectListWithHigher(menuVO);
model.addAttribute("currAndHigherMenuList",
currAndHigherMenuList);
List<MenuVO> currAndHigherMenuList = menuService.selectListWithHigher(menuVO);
model.addAttribute("currAndHigherMenuList", currAndHigherMenuList);
model.addAttribute("menu", menuInfo);
model.addAttribute("subMenu",
menuService.getSubmenu(menuInfo));
model.addAttribute("subMenu", menuService.getSubmenu(menuInfo));
addUserLog(req, menu);
}

View File

@ -34,16 +34,14 @@ public class MenuServiceImpl implements MenuService {
LoginUserVO loginUserVO = UserUtil.getMemberInfo();
menuVO.setDepth(1);
menuVO.setMaxLevel(2);
menuVO.setMenuPosition(MenuPosition.TOP);
List<MenuVO> list = menuMapper.selectListWithConnectBy(menuVO);
List<MenuVO> menuList = new ArrayList<MenuVO>();
MenuVO prevMenu = null;
for (int i = 0; i < list.size(); i++) {
MenuVO currVO = list.get(i);
for (MenuVO currVO: list) {
if (currVO.getDepth() == 0) {
prevMenu = currVO;
menuList.add(prevMenu);
menuList.add(currVO);
} else if (currVO.getDepth() == 1) {
// 견문 메뉴 권한
@ -56,8 +54,13 @@ public class MenuServiceImpl implements MenuService {
if (loginUserVO.getAuthManage() <= 0 && !UserUtil.isAdmin() && "관리기능".equals(currVO.getName())) {
continue;
}
for(MenuVO menu: menuList){
if(menu.getId()==currVO.getParent()){
menu.getSubMenu().add(currVO);
break;
}
}
prevMenu.getSubMenu().add(currVO);
}
}
@ -67,6 +70,7 @@ public class MenuServiceImpl implements MenuService {
@Override
public List<MenuVO> selectTopSubMenuList(final MenuVO menuVO) {
menuVO.setDepth(0);
menuVO.setMaxLevel(1);
menuVO.setMenuPosition(MenuPosition.TOP_SUB);
return menuMapper.selectListWithConnectBy(menuVO);
}

View File

@ -85,6 +85,16 @@ public class MenuVO {
*/
private int userType;
private int maxLevel;
public int getMaxLevel() {
return maxLevel;
}
public void setMaxLevel(int maxLevel) {
this.maxLevel = maxLevel;
}
/**
* @return the id
*/

View File

@ -33,36 +33,64 @@
</select>
<select id="selectListWithConnectBy" parameterType="menuVO" resultMap="menuResult">
<![CDATA[
SELECT
LEVEL,
with recursive menu(
level,
ID,
NAME,
ENG_NAME,
PARENT,
DEPTH,
MENU_POSITION,
VISIBLE,
SUB_VISIBLE,
ROLE_LEVEL,
URL_GROUP,
URL,
URL_QUERY,
BOARD_ID,
WINDOW_TARGET
) as (
select
1,
M.ID, M.NAME, M.ENG_NAME, M.PARENT, M.DEPTH,
M.MENU_POSITION, M.VISIBLE, M.SUB_VISIBLE, M.ROLE_LEVEL,
COALESCE(M.URL_GROUP, (SELECT URL_GROUP FROM T_MENU WHERE ID = (SELECT MIN(ID) FROM T_MENU WHERE PARENT = M.ID))) AS URL_GROUP,
COALESCE(M.URL, (SELECT URL FROM T_MENU WHERE ID = (SELECT MIN(ID) FROM T_MENU WHERE PARENT = M.ID))) AS URL,
COALESCE(M.URL_QUERY, (SELECT URL_QUERY FROM T_MENU WHERE ID = (SELECT MIN(ID) FROM T_MENU WHERE PARENT = M.ID))) AS URL_QUERY,
COALESCE(M.BOARD_ID, (SELECT BOARD_ID FROM T_MENU WHERE ID = (SELECT MIN(ID) FROM T_MENU WHERE PARENT = M.ID))) AS BOARD_ID,
COALESCE(M.WINDOW_TARGET, (SELECT WINDOW_TARGET FROM T_MENU WHERE ID = (SELECT MIN(ID) FROM T_MENU WHERE PARENT = M.ID))) AS WINDOW_TARGET
FROM
T_MENU M
WHERE
M.VISIBLE = 'Y'
M.URL_GROUP,
M.URL,
M.URL_QUERY,
M.BOARD_ID,
M.WINDOW_TARGET
FROM T_MENU M
WHERE M.VISIBLE = 'Y'
AND M.ROLE_LEVEL >= COALESCE((SELECT ROLE_LEVEL FROM T_SSO_AUTH_CODE AC, TAGENT A WHERE AC.CODE_ID = A.USEGRADE AND A.USERID = #{userId}), 17)
]]>
<if test="menuPosition != null and menuPosition != ''"><![CDATA[
AND M.MENU_POSITION = #{menuPosition}
]]></if>
<if test="depth != null"><![CDATA[
AND M.DEPTH <= #{depth}
]]></if>
<![CDATA[
START WITH
M.DEPTH = 0
CONNECT BY PRIOR
M.ID = M.PARENT
]]>
AND M.DEPTH = 0
union all
select
b.level+1,
M.ID, M.NAME, M.ENG_NAME, M.PARENT, M.DEPTH,
M.MENU_POSITION, M.VISIBLE, M.SUB_VISIBLE, M.ROLE_LEVEL,
COALESCE(M.URL_GROUP, c.URL_GROUP) AS URL_GROUP,
COALESCE(M.URL, c.URL) AS URL,
COALESCE(M.URL_QUERY, c.URL_QUERY) AS URL_QUERY,
COALESCE(M.BOARD_ID, c.BOARD_ID) AS BOARD_ID,
COALESCE(M.WINDOW_TARGET, c.WINDOW_TARGET) AS WINDOW_TARGET
FROM T_MENU M inner join menu b on M.parent = b.id
left outer join (select id, parent, url_group, url, url_query, board_id, window_target
from t_menu a
where a.id in (select min(id) id
from t_menu
group by parent )) c
on m.id = c.parent
where M.VISIBLE = 'Y'
AND M.ROLE_LEVEL >= COALESCE((SELECT ROLE_LEVEL FROM T_SSO_AUTH_CODE AC, TAGENT A WHERE AC.CODE_ID = A.USEGRADE AND A.USERID = #{userId}), 17)
AND M.MENU_POSITION = #{menuPosition}
)
select *
from menu
where level &lt;= ${maxLevel}
order by level, id
</select>
<!---->
<select id="Menu.getMenuInfo" parameterType="map" resultType="map">
<![CDATA[
SELECT * FROM (