메뉴 조회 쿼리 수정.
parent
3026b45af8
commit
a32565bd83
|
|
@ -81,12 +81,10 @@ public class CommonAop {
|
||||||
MenuVO menuVO = new MenuVO();
|
MenuVO menuVO = new MenuVO();
|
||||||
menuVO.setUserId(loginUserVO.getUserid());
|
menuVO.setUserId(loginUserVO.getUserid());
|
||||||
menuVO.setUserType(loginUserVO.getType());
|
menuVO.setUserType(loginUserVO.getType());
|
||||||
List<MenuVO> mainMenuList = menuService
|
List<MenuVO> mainMenuList = menuService.selectMainMenuList(menuVO);
|
||||||
.selectMainMenuList(menuVO);
|
|
||||||
model.addAttribute("mainMenuList", mainMenuList);
|
model.addAttribute("mainMenuList", mainMenuList);
|
||||||
|
|
||||||
List<MenuVO> topSubMenuList = menuService
|
List<MenuVO> topSubMenuList = menuService.selectTopSubMenuList(menuVO);
|
||||||
.selectTopSubMenuList(menuVO);
|
|
||||||
|
|
||||||
model.addAttribute("topSubMenuList", topSubMenuList);
|
model.addAttribute("topSubMenuList", topSubMenuList);
|
||||||
|
|
||||||
|
|
@ -114,12 +112,8 @@ public class CommonAop {
|
||||||
|
|
||||||
default:
|
default:
|
||||||
if (req.getParameter("category") != null
|
if (req.getParameter("category") != null
|
||||||
&& !req.getParameter("category")
|
&& !req.getParameter("category").equals(" ")) {
|
||||||
.equals(" ")) {
|
qryCate = "category=" + req.getParameter("category");
|
||||||
qryCate = "category="
|
|
||||||
+ req.getParameter("category");
|
|
||||||
// url = url + "/" +
|
|
||||||
// req.getParameter("category");
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -130,19 +124,14 @@ public class CommonAop {
|
||||||
menu.put("boardId", boardId);
|
menu.put("boardId", boardId);
|
||||||
menu.put("query", qryCate);
|
menu.put("query", qryCate);
|
||||||
|
|
||||||
HashMap<String, Object> menuInfo = menuService
|
HashMap<String, Object> menuInfo = menuService.getMenuInfo(menu);
|
||||||
.getMenuInfo(menu);
|
menuVO.setId(Integer.parseInt(menuInfo.get("ID").toString()));
|
||||||
menuVO.setId(Integer
|
|
||||||
.parseInt(menuInfo.get("ID").toString()));
|
|
||||||
menuInfo.put("userId", loginUserVO.getUserid());
|
menuInfo.put("userId", loginUserVO.getUserid());
|
||||||
|
|
||||||
List<MenuVO> currAndHigherMenuList = menuService
|
List<MenuVO> currAndHigherMenuList = menuService.selectListWithHigher(menuVO);
|
||||||
.selectListWithHigher(menuVO);
|
model.addAttribute("currAndHigherMenuList", currAndHigherMenuList);
|
||||||
model.addAttribute("currAndHigherMenuList",
|
|
||||||
currAndHigherMenuList);
|
|
||||||
model.addAttribute("menu", menuInfo);
|
model.addAttribute("menu", menuInfo);
|
||||||
model.addAttribute("subMenu",
|
model.addAttribute("subMenu", menuService.getSubmenu(menuInfo));
|
||||||
menuService.getSubmenu(menuInfo));
|
|
||||||
|
|
||||||
addUserLog(req, menu);
|
addUserLog(req, menu);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -34,16 +34,14 @@ public class MenuServiceImpl implements MenuService {
|
||||||
LoginUserVO loginUserVO = UserUtil.getMemberInfo();
|
LoginUserVO loginUserVO = UserUtil.getMemberInfo();
|
||||||
|
|
||||||
menuVO.setDepth(1);
|
menuVO.setDepth(1);
|
||||||
|
menuVO.setMaxLevel(2);
|
||||||
menuVO.setMenuPosition(MenuPosition.TOP);
|
menuVO.setMenuPosition(MenuPosition.TOP);
|
||||||
List<MenuVO> list = menuMapper.selectListWithConnectBy(menuVO);
|
List<MenuVO> list = menuMapper.selectListWithConnectBy(menuVO);
|
||||||
List<MenuVO> menuList = new ArrayList<MenuVO>();
|
List<MenuVO> menuList = new ArrayList<MenuVO>();
|
||||||
|
|
||||||
MenuVO prevMenu = null;
|
for (MenuVO currVO: list) {
|
||||||
for (int i = 0; i < list.size(); i++) {
|
|
||||||
MenuVO currVO = list.get(i);
|
|
||||||
if (currVO.getDepth() == 0) {
|
if (currVO.getDepth() == 0) {
|
||||||
prevMenu = currVO;
|
menuList.add(currVO);
|
||||||
menuList.add(prevMenu);
|
|
||||||
} else if (currVO.getDepth() == 1) {
|
} else if (currVO.getDepth() == 1) {
|
||||||
|
|
||||||
// 견문 메뉴 권한
|
// 견문 메뉴 권한
|
||||||
|
|
@ -56,8 +54,13 @@ public class MenuServiceImpl implements MenuService {
|
||||||
if (loginUserVO.getAuthManage() <= 0 && !UserUtil.isAdmin() && "관리기능".equals(currVO.getName())) {
|
if (loginUserVO.getAuthManage() <= 0 && !UserUtil.isAdmin() && "관리기능".equals(currVO.getName())) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
for(MenuVO menu: menuList){
|
||||||
prevMenu.getSubMenu().add(currVO);
|
if(menu.getId()==currVO.getParent()){
|
||||||
|
menu.getSubMenu().add(currVO);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -67,6 +70,7 @@ public class MenuServiceImpl implements MenuService {
|
||||||
@Override
|
@Override
|
||||||
public List<MenuVO> selectTopSubMenuList(final MenuVO menuVO) {
|
public List<MenuVO> selectTopSubMenuList(final MenuVO menuVO) {
|
||||||
menuVO.setDepth(0);
|
menuVO.setDepth(0);
|
||||||
|
menuVO.setMaxLevel(1);
|
||||||
menuVO.setMenuPosition(MenuPosition.TOP_SUB);
|
menuVO.setMenuPosition(MenuPosition.TOP_SUB);
|
||||||
return menuMapper.selectListWithConnectBy(menuVO);
|
return menuMapper.selectListWithConnectBy(menuVO);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,17 @@ public class MenuVO {
|
||||||
*/
|
*/
|
||||||
private int userType;
|
private int userType;
|
||||||
|
|
||||||
/**
|
private int maxLevel;
|
||||||
|
|
||||||
|
public int getMaxLevel() {
|
||||||
|
return maxLevel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMaxLevel(int maxLevel) {
|
||||||
|
this.maxLevel = maxLevel;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
* @return the id
|
* @return the id
|
||||||
*/
|
*/
|
||||||
public final int getId() {
|
public final int getId() {
|
||||||
|
|
|
||||||
|
|
@ -33,36 +33,64 @@
|
||||||
</select>
|
</select>
|
||||||
|
|
||||||
<select id="selectListWithConnectBy" parameterType="menuVO" resultMap="menuResult">
|
<select id="selectListWithConnectBy" parameterType="menuVO" resultMap="menuResult">
|
||||||
<![CDATA[
|
with recursive menu(
|
||||||
SELECT
|
level,
|
||||||
LEVEL,
|
ID,
|
||||||
M.ID, M.NAME, M.ENG_NAME, M.PARENT, M.DEPTH,
|
NAME,
|
||||||
M.MENU_POSITION, M.VISIBLE, M.SUB_VISIBLE, M.ROLE_LEVEL,
|
ENG_NAME,
|
||||||
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,
|
PARENT,
|
||||||
COALESCE(M.URL, (SELECT URL FROM T_MENU WHERE ID = (SELECT MIN(ID) FROM T_MENU WHERE PARENT = M.ID))) AS URL,
|
DEPTH,
|
||||||
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,
|
MENU_POSITION,
|
||||||
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,
|
VISIBLE,
|
||||||
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
|
SUB_VISIBLE,
|
||||||
FROM
|
ROLE_LEVEL,
|
||||||
T_MENU M
|
URL_GROUP,
|
||||||
WHERE
|
URL,
|
||||||
M.VISIBLE = 'Y'
|
URL_QUERY,
|
||||||
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)
|
BOARD_ID,
|
||||||
]]>
|
WINDOW_TARGET
|
||||||
<if test="menuPosition != null and menuPosition != ''"><![CDATA[
|
) as (
|
||||||
AND M.MENU_POSITION = #{menuPosition}
|
select
|
||||||
]]></if>
|
1,
|
||||||
<if test="depth != null"><![CDATA[
|
M.ID, M.NAME, M.ENG_NAME, M.PARENT, M.DEPTH,
|
||||||
AND M.DEPTH <= #{depth}
|
M.MENU_POSITION, M.VISIBLE, M.SUB_VISIBLE, M.ROLE_LEVEL,
|
||||||
]]></if>
|
M.URL_GROUP,
|
||||||
<![CDATA[
|
M.URL,
|
||||||
START WITH
|
M.URL_QUERY,
|
||||||
M.DEPTH = 0
|
M.BOARD_ID,
|
||||||
CONNECT BY PRIOR
|
M.WINDOW_TARGET
|
||||||
M.ID = M.PARENT
|
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>
|
||||||
|
<!---->
|
||||||
<select id="Menu.getMenuInfo" parameterType="map" resultType="map">
|
<select id="Menu.getMenuInfo" parameterType="map" resultType="map">
|
||||||
<![CDATA[
|
<![CDATA[
|
||||||
SELECT * FROM (
|
SELECT * FROM (
|
||||||
|
|
|
||||||
|
|
@ -163,16 +163,16 @@
|
||||||
<a href="#" style="cursor:default;"><c:out value="${main.name}" /></a>
|
<a href="#" style="cursor:default;"><c:out value="${main.name}" /></a>
|
||||||
<div class="submenu">
|
<div class="submenu">
|
||||||
<ul>
|
<ul>
|
||||||
<c:choose>
|
<c:choose>
|
||||||
<c:when test="${fn:length(main.subMenu) > 0}">
|
<c:when test="${fn:length(main.subMenu) > 0}">
|
||||||
<c:forEach items="${main.subMenu}" var="sub">
|
<c:forEach items="${main.subMenu}" var="sub">
|
||||||
<li><a href="<c:url value="${sub.uri}" />"><c:out value="${sub.name}" /></a></li>
|
<li><a href="<c:url value="${sub.uri}" />"><c:out value="${sub.name}" /></a></li>
|
||||||
</c:forEach>
|
</c:forEach>
|
||||||
</c:when>
|
</c:when>
|
||||||
<c:otherwise>
|
<c:otherwise>
|
||||||
<li><a href="<c:url value="${main.uri}" />"><c:out value="${main.name}" /></a></li>
|
<li><a href="<c:url value="${main.uri}" />"><c:out value="${main.name}" /></a></li>
|
||||||
</c:otherwise>
|
</c:otherwise>
|
||||||
</c:choose>
|
</c:choose>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue