메뉴 조회 쿼리 수정.
parent
3026b45af8
commit
a32565bd83
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -85,7 +85,17 @@ 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
|
||||
*/
|
||||
public final int getId() {
|
||||
|
|
|
|||
|
|
@ -33,36 +33,64 @@
|
|||
</select>
|
||||
|
||||
<select id="selectListWithConnectBy" parameterType="menuVO" resultMap="menuResult">
|
||||
<![CDATA[
|
||||
SELECT
|
||||
LEVEL,
|
||||
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'
|
||||
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
|
||||
]]>
|
||||
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,
|
||||
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)
|
||||
AND M.MENU_POSITION = #{menuPosition}
|
||||
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 <= ${maxLevel}
|
||||
order by level, id
|
||||
</select>
|
||||
|
||||
<!---->
|
||||
<select id="Menu.getMenuInfo" parameterType="map" resultType="map">
|
||||
<![CDATA[
|
||||
SELECT * FROM (
|
||||
|
|
|
|||
|
|
@ -163,16 +163,16 @@
|
|||
<a href="#" style="cursor:default;"><c:out value="${main.name}" /></a>
|
||||
<div class="submenu">
|
||||
<ul>
|
||||
<c:choose>
|
||||
<c:when test="${fn:length(main.subMenu) > 0}">
|
||||
<c:forEach items="${main.subMenu}" var="sub">
|
||||
<li><a href="<c:url value="${sub.uri}" />"><c:out value="${sub.name}" /></a></li>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<li><a href="<c:url value="${main.uri}" />"><c:out value="${main.name}" /></a></li>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
<c:choose>
|
||||
<c:when test="${fn:length(main.subMenu) > 0}">
|
||||
<c:forEach items="${main.subMenu}" var="sub">
|
||||
<li><a href="<c:url value="${sub.uri}" />"><c:out value="${sub.name}" /></a></li>
|
||||
</c:forEach>
|
||||
</c:when>
|
||||
<c:otherwise>
|
||||
<li><a href="<c:url value="${main.uri}" />"><c:out value="${main.name}" /></a></li>
|
||||
</c:otherwise>
|
||||
</c:choose>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
|
|
|
|||
Loading…
Reference in New Issue