Compare commits
2 Commits
e1b715188d
...
cc718b8df3
| Author | SHA1 | Date |
|---|---|---|
|
|
cc718b8df3 | |
|
|
e23f997e8d |
|
|
@ -187,6 +187,26 @@
|
||||||
.menuList .result .list_item > div:nth-child(7) {width: 100px;}
|
.menuList .result .list_item > div:nth-child(7) {width: 100px;}
|
||||||
.menuList .result .list_item > div:nth-child(8) {width: 100px;}
|
.menuList .result .list_item > div:nth-child(8) {width: 100px;}
|
||||||
|
|
||||||
|
/* 사이트관리 > 환경설정 > 메뉴관리 */
|
||||||
|
.menuList .head > span:nth-child(1) {width: 100px;}
|
||||||
|
.menuList .head > span:nth-child(2) {width: 150px;}
|
||||||
|
.menuList .head > span:nth-child(3) {width: 100px;}
|
||||||
|
.menuList .head > span:nth-child(4) {width: 60px;}
|
||||||
|
.menuList .head > span:nth-child(5) {width: 60px;}
|
||||||
|
.menuList .head > span:nth-child(6) {width: 60px;}
|
||||||
|
.menuList .head > span:nth-child(7) {width: 60px;}
|
||||||
|
.menuList .head > span:nth-child(8) {width: 60px;}
|
||||||
|
.menuList .head > span:nth-child(9) {width: 100px;}
|
||||||
|
.menuList .result .list_item > div:nth-child(1) {width: 100px;}
|
||||||
|
.menuList .result .list_item > div:nth-child(2) {width: 150px;}
|
||||||
|
.menuList .result .list_item > div:nth-child(3) {width: 100px;}
|
||||||
|
.menuList .result .list_item > div:nth-child(4) {width: 60px;}
|
||||||
|
.menuList .result .list_item > div:nth-child(5) {width: 60px;}
|
||||||
|
.menuList .result .list_item > div:nth-child(6) {width: 60px;}
|
||||||
|
.menuList .result .list_item > div:nth-child(7) {width: 60px;}
|
||||||
|
.menuList .result .list_item > div:nth-child(8) {width: 60px;}
|
||||||
|
.menuList .result .list_item > div:nth-child(9) {width: 100px;}
|
||||||
|
|
||||||
/* 사이트소개 */
|
/* 사이트소개 */
|
||||||
.SITE_INTRO .ds_1 .t_1 {margin-top: 52px; color: #000; font-size: 26px; font-weight: 500; text-align: center;}
|
.SITE_INTRO .ds_1 .t_1 {margin-top: 52px; color: #000; font-size: 26px; font-weight: 500; text-align: center;}
|
||||||
.SITE_INTRO .ds_1 .li_1 {position: relative; margin-top: 34px; font-size: 0; text-align: center;}
|
.SITE_INTRO .ds_1 .li_1 {position: relative; margin-top: 34px; font-size: 0; text-align: center;}
|
||||||
|
|
|
||||||
|
|
@ -1,11 +1,98 @@
|
||||||
import React from 'react';
|
import React, {useCallback, useEffect, useState} from 'react';
|
||||||
|
import { default as EgovLeftNav } from 'components/leftmenu/EgovLeftNavAdmin';
|
||||||
|
import {Link} from "react-router-dom";
|
||||||
|
import URL from "constants/url";
|
||||||
|
import * as EgovNet from "api/egovFetch";
|
||||||
|
|
||||||
|
|
||||||
function MenuAuthMgt(props) {
|
function MenuAuthMgt(props) {
|
||||||
|
const [listTag, setListTag] = useState([]);
|
||||||
|
|
||||||
|
const retrieveList = useCallback(() => {
|
||||||
|
EgovNet.requestFetch(
|
||||||
|
'/admin/config/menu-auth-mgt',
|
||||||
|
{
|
||||||
|
method: "GET"
|
||||||
|
},
|
||||||
|
(resp) => {
|
||||||
|
let mutListTag = [];
|
||||||
|
|
||||||
|
setListTag([]);
|
||||||
|
// 리스트 항목 구성
|
||||||
|
resp.result.menuList.forEach(function (item, index) {
|
||||||
|
mutListTag.push(
|
||||||
|
<div className={"list_item"} key={"userListDiv_"+index}>
|
||||||
|
<div>{item.menuId}</div>
|
||||||
|
<div>{item.menuTitle}</div>
|
||||||
|
<div>{item.menuGroup}</div>
|
||||||
|
<div>{item.menuLevel}</div>
|
||||||
|
<div>{item.menuSort}</div>
|
||||||
|
<div>{item.menuUrl}</div>
|
||||||
|
<div>{item.menuTypeValue}</div>
|
||||||
|
<div>
|
||||||
|
<button className={"btn btn_blue_h31 px-1"} onClick={()=>{editMenu(item)}}>수정</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
);
|
||||||
|
});
|
||||||
|
if(!mutListTag.length) mutListTag.push(<p className="no_data" key="0">검색된 결과가 없습니다.</p>); // 게시판 목록 초기값
|
||||||
|
setListTag(mutListTag);
|
||||||
|
},
|
||||||
|
function (resp) {
|
||||||
|
console.log("err response : ", resp);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
},[]);
|
||||||
|
|
||||||
|
function editMenu(menu){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
useEffect(()=>{
|
||||||
|
/*retrieveList();*/
|
||||||
|
}, [])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div className="container">
|
<div className="container">
|
||||||
MenuAuthMgt
|
<div className="c_wrap">
|
||||||
|
<div className="location">
|
||||||
|
<ul>
|
||||||
|
<li><Link to={URL.MAIN} className="home">Home</Link></li>
|
||||||
|
<li>사이트관리</li>
|
||||||
|
<li>환경설정</li>
|
||||||
|
<li><Link to={URL.ADMIN_MENU_AUTH}>메뉴 권한 관리</Link></li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div className="layout">
|
||||||
|
{/* <!-- Navigation --> */}
|
||||||
|
<EgovLeftNav/>
|
||||||
|
<div className="contents NOTICE_LIST" id="contents">
|
||||||
|
{/* <!-- 본문 --> */}
|
||||||
|
|
||||||
|
<div className="top_tit">
|
||||||
|
<h1 className="tit_1">메뉴 관리</h1>
|
||||||
|
</div>
|
||||||
|
<h2 className="tit_2"></h2>
|
||||||
|
|
||||||
|
<div className="board_list menuList">
|
||||||
|
<div className="head">
|
||||||
|
<span>메뉴 코드</span>
|
||||||
|
<span>메뉴 이름</span>
|
||||||
|
<span>부모 메뉴</span>
|
||||||
|
<span>레벨1</span>
|
||||||
|
<span>레벨2</span>
|
||||||
|
<span>레벨3</span>
|
||||||
|
<span>레벨4</span>
|
||||||
|
<span>레벨5</span>
|
||||||
|
<span></span>
|
||||||
|
</div>
|
||||||
|
<div className="result">
|
||||||
|
{listTag}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,7 @@ function MenuMgt({}) {
|
||||||
const handleShow = () => setShow(true);
|
const handleShow = () => setShow(true);
|
||||||
|
|
||||||
const retrieveList = useCallback(() => {
|
const retrieveList = useCallback(() => {
|
||||||
|
handleClose()
|
||||||
EgovNet.requestFetch(
|
EgovNet.requestFetch(
|
||||||
'/admin/config/menu-mgt',
|
'/admin/config/menu-mgt',
|
||||||
{
|
{
|
||||||
|
|
@ -38,7 +39,7 @@ function MenuMgt({}) {
|
||||||
<div>{item.menuLevel}</div>
|
<div>{item.menuLevel}</div>
|
||||||
<div>{item.menuSort}</div>
|
<div>{item.menuSort}</div>
|
||||||
<div>{item.menuUrl}</div>
|
<div>{item.menuUrl}</div>
|
||||||
<div>{item.menuTypeCd}</div>
|
<div>{item.menuTypeValue}</div>
|
||||||
<div>
|
<div>
|
||||||
<button className={"btn btn_blue_h31 px-1"} onClick={()=>{editMenu(item)}}>수정</button>
|
<button className={"btn btn_blue_h31 px-1"} onClick={()=>{editMenu(item)}}>수정</button>
|
||||||
</div>
|
</div>
|
||||||
|
|
@ -56,7 +57,7 @@ function MenuMgt({}) {
|
||||||
|
|
||||||
function editMenu(menu){
|
function editMenu(menu){
|
||||||
handleShow();
|
handleShow();
|
||||||
setModalBody(<MenuModal savedInfo={menu}/>)
|
setModalBody(<MenuModal savedInfo={menu} reloadFunction={retrieveList}/>)
|
||||||
}
|
}
|
||||||
|
|
||||||
useEffect(()=>{
|
useEffect(()=>{
|
||||||
|
|
@ -71,7 +72,7 @@ function MenuMgt({}) {
|
||||||
<li><Link to={URL.MAIN} className="home">Home</Link></li>
|
<li><Link to={URL.MAIN} className="home">Home</Link></li>
|
||||||
<li>사이트관리</li>
|
<li>사이트관리</li>
|
||||||
<li>환경설정</li>
|
<li>환경설정</li>
|
||||||
<li><Link to={URL.ADMIN__USERS__LIST}>메뉴 관리</Link></li>
|
<li><Link to={URL.ADMIN_MENU}>메뉴 관리</Link></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div className="layout">
|
<div className="layout">
|
||||||
|
|
@ -87,9 +88,9 @@ function MenuMgt({}) {
|
||||||
|
|
||||||
<div className="board_list menuList">
|
<div className="board_list menuList">
|
||||||
<div className="head">
|
<div className="head">
|
||||||
<span>아이디</span>
|
<span>메뉴 코드</span>
|
||||||
<span>이름</span>
|
<span>메뉴 이름</span>
|
||||||
<span>그룹</span>
|
<span>부모 메뉴</span>
|
||||||
<span>레벨</span>
|
<span>레벨</span>
|
||||||
<span>정렬</span>
|
<span>정렬</span>
|
||||||
<span>URI</span>
|
<span>URI</span>
|
||||||
|
|
|
||||||
|
|
@ -1,18 +1,72 @@
|
||||||
import react from "react"
|
import React from "react";
|
||||||
import Modal from "react-bootstrap/Modal";
|
import Modal from "react-bootstrap/Modal";
|
||||||
import Form from "react-bootstrap/Form";
|
import Form from "react-bootstrap/Form";
|
||||||
import Row from "react-bootstrap/Row";
|
import Row from "react-bootstrap/Row";
|
||||||
import Col from "react-bootstrap/Col";
|
import Col from "react-bootstrap/Col";
|
||||||
import React from "react";
|
import SelectOption from "components/commonCode/SelectOption";
|
||||||
|
import * as EgovNet from "api/egovFetch";
|
||||||
|
import CODE from "constants/code";
|
||||||
|
|
||||||
function MenuModal({savedInfo}){
|
function MenuModal({savedInfo, reloadFunction}){
|
||||||
|
|
||||||
function editMenu(e){
|
function editMenu(e){
|
||||||
|
e.preventDefault();
|
||||||
|
e.stopPropagation();
|
||||||
|
const form = e.target;
|
||||||
|
const info = {
|
||||||
|
menuId: form.menuId.value,
|
||||||
|
menuTitle: form.menuTitle.value,
|
||||||
|
menuGroup: form.menuGroup.value,
|
||||||
|
menuLevel: form.menuLevel.value,
|
||||||
|
menuSort: form.menuSort.value,
|
||||||
|
menuUrl: form.menuUrl.value,
|
||||||
|
menuTypeCd: form.menuTypeCd.value,
|
||||||
|
}
|
||||||
|
EgovNet.requestFetch(
|
||||||
|
'/admin/config/menu-mgt',
|
||||||
|
{
|
||||||
|
method: "PUT",
|
||||||
|
headers: {
|
||||||
|
'Content-type': 'application/json'
|
||||||
|
},
|
||||||
|
body: JSON.stringify(info)
|
||||||
|
},
|
||||||
|
(resp) => {
|
||||||
|
if (Number(resp.resultCode) === Number(CODE.RCV_SUCCESS)) {
|
||||||
|
alert("저장되었습니다.")
|
||||||
|
reloadFunction();
|
||||||
|
}else if(Number(resp.resultCode) === Number(CODE.RCV_ERROR_AUTH)){
|
||||||
|
console.log("토큰 갱신중.")
|
||||||
|
}else{
|
||||||
|
alert(resp.result.resultMessage)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
function deleteMenu(menuId){
|
function deleteMenu(menuId){
|
||||||
|
if(window.confirm("삭제하시겠습니까?")) {
|
||||||
|
EgovNet.requestFetch(
|
||||||
|
'/admin/config/menu-mgt',
|
||||||
|
{
|
||||||
|
method: "DELETE",
|
||||||
|
headers: {
|
||||||
|
'Content-type': 'application/json'
|
||||||
|
},
|
||||||
|
body: JSON.stringify({menuId: menuId})
|
||||||
|
},
|
||||||
|
(resp) => {
|
||||||
|
if (Number(resp.resultCode) === Number(CODE.RCV_SUCCESS)) {
|
||||||
|
alert("삭제되었습니다.")
|
||||||
|
reloadFunction();
|
||||||
|
} else if (Number(resp.resultCode) === Number(CODE.RCV_ERROR_AUTH)) {
|
||||||
|
console.log("토큰 갱신중.")
|
||||||
|
} else {
|
||||||
|
alert(resp.result.resultMessage)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
@ -26,15 +80,15 @@ function MenuModal({savedInfo}){
|
||||||
<Form onSubmit={(e) =>{editMenu(e)}} noValidate>
|
<Form onSubmit={(e) =>{editMenu(e)}} noValidate>
|
||||||
<Form.Group as={Row} className="mb-3">
|
<Form.Group as={Row} className="mb-3">
|
||||||
<Form.Label column sm={3}>
|
<Form.Label column sm={3}>
|
||||||
아이디
|
메뉴 코드
|
||||||
</Form.Label>
|
</Form.Label>
|
||||||
<Col sm={9}>
|
<Col sm={9}>
|
||||||
<Form.Control type="text" name="menuId" placeholder="아이디" required defaultValue={savedInfo?.menuId}/>
|
<Form.Control type="text" name="menuId" placeholder="아이디" required defaultValue={savedInfo?.menuId} readOnly={savedInfo!==undefined}/>
|
||||||
</Col>
|
</Col>
|
||||||
</Form.Group>
|
</Form.Group>
|
||||||
<Form.Group as={Row} className="mb-3">
|
<Form.Group as={Row} className="mb-3">
|
||||||
<Form.Label column sm={3}>
|
<Form.Label column sm={3}>
|
||||||
이름
|
메뉴 이름
|
||||||
</Form.Label>
|
</Form.Label>
|
||||||
<Col sm={9}>
|
<Col sm={9}>
|
||||||
<Form.Control type="text" name="menuTitle" placeholder="이름" required defaultValue={savedInfo?.menuTitle} />
|
<Form.Control type="text" name="menuTitle" placeholder="이름" required defaultValue={savedInfo?.menuTitle} />
|
||||||
|
|
@ -42,7 +96,7 @@ function MenuModal({savedInfo}){
|
||||||
</Form.Group>
|
</Form.Group>
|
||||||
<Form.Group as={Row} className="mb-3">
|
<Form.Group as={Row} className="mb-3">
|
||||||
<Form.Label column sm={3}>
|
<Form.Label column sm={3}>
|
||||||
그룹
|
부모 메뉴
|
||||||
</Form.Label>
|
</Form.Label>
|
||||||
<Col sm={9}>
|
<Col sm={9}>
|
||||||
<Form.Control type="email" name="menuGroup" placeholder="그룹" required defaultValue={savedInfo?.menuGroup} />
|
<Form.Control type="email" name="menuGroup" placeholder="그룹" required defaultValue={savedInfo?.menuGroup} />
|
||||||
|
|
@ -53,7 +107,7 @@ function MenuModal({savedInfo}){
|
||||||
레벨
|
레벨
|
||||||
</Form.Label>
|
</Form.Label>
|
||||||
<Col sm={9}>
|
<Col sm={9}>
|
||||||
<Form.Control type="text" name="menuLevel" placeholder="레벨" required defaultValue={savedInfo?.menuLevel} />
|
<Form.Control type="number" min={"0"} name="menuLevel" placeholder="레벨" required defaultValue={savedInfo!==undefined?savedInfo.menuLevel:0} />
|
||||||
</Col>
|
</Col>
|
||||||
</Form.Group>
|
</Form.Group>
|
||||||
<Form.Group as={Row} className="mb-3">
|
<Form.Group as={Row} className="mb-3">
|
||||||
|
|
@ -61,7 +115,7 @@ function MenuModal({savedInfo}){
|
||||||
정렬
|
정렬
|
||||||
</Form.Label>
|
</Form.Label>
|
||||||
<Col sm={9}>
|
<Col sm={9}>
|
||||||
<Form.Control type="text" name="menuSort" placeholder="정렬" required defaultValue={savedInfo?.menuSort} />
|
<Form.Control type="number" min={"0"} name="menuSort" placeholder="정렬" required defaultValue={savedInfo!==undefined?savedInfo.menuSort:0} />
|
||||||
</Col>
|
</Col>
|
||||||
</Form.Group>
|
</Form.Group>
|
||||||
<Form.Group as={Row} className="mb-3">
|
<Form.Group as={Row} className="mb-3">
|
||||||
|
|
@ -77,7 +131,7 @@ function MenuModal({savedInfo}){
|
||||||
타입
|
타입
|
||||||
</Form.Label>
|
</Form.Label>
|
||||||
<Col sm={9}>
|
<Col sm={9}>
|
||||||
<Form.Control type="text" name="menuTypeCd" placeholder="타입" required defaultValue={savedInfo?.menuTypeCd} />
|
<SelectOption name={"menuTypeCd"} grpCd={"MNU_TYPE"} selectedValue={savedInfo?.menuTypeCd}/>
|
||||||
</Col>
|
</Col>
|
||||||
</Form.Group>
|
</Form.Group>
|
||||||
<Row className="mb-3">
|
<Row className="mb-3">
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package com.dbnt.kcscbackend.admin.config;
|
package com.dbnt.kcscbackend.admin.config;
|
||||||
|
|
||||||
|
import com.dbnt.kcscbackend.admin.config.entity.TcMenu;
|
||||||
import com.dbnt.kcscbackend.commonCode.entity.TcCodeGrp;
|
import com.dbnt.kcscbackend.commonCode.entity.TcCodeGrp;
|
||||||
import com.dbnt.kcscbackend.commonCode.entity.TcCodeItem;
|
import com.dbnt.kcscbackend.commonCode.entity.TcCodeItem;
|
||||||
import com.dbnt.kcscbackend.admin.config.service.AdminConfigService;
|
import com.dbnt.kcscbackend.admin.config.service.AdminConfigService;
|
||||||
|
|
@ -14,11 +15,14 @@ import io.swagger.v3.oas.annotations.tags.Tag;
|
||||||
import lombok.RequiredArgsConstructor;
|
import lombok.RequiredArgsConstructor;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
import org.springframework.security.core.annotation.AuthenticationPrincipal;
|
||||||
|
import org.springframework.validation.Errors;
|
||||||
|
import org.springframework.validation.FieldError;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
import org.springframework.web.bind.annotation.RequestMapping;
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestMethod;
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
|
import javax.validation.Valid;
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
@ -232,4 +236,70 @@ public class AdminConfigController extends BaseController {
|
||||||
resultVO.setResult(resultMap);
|
resultVO.setResult(resultMap);
|
||||||
return resultVO;
|
return resultVO;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Operation(
|
||||||
|
summary = "메뉴 저장",
|
||||||
|
description = "메뉴 저장",
|
||||||
|
tags = {"AdminConfigController"}
|
||||||
|
)
|
||||||
|
@ApiResponses(value = {
|
||||||
|
@ApiResponse(responseCode = "200", description = "저장 성공"),
|
||||||
|
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
|
||||||
|
})
|
||||||
|
@RequestMapping(method = RequestMethod.PUT, value = "/menu-mgt")
|
||||||
|
public ResultVO saveMenuMgt(@RequestBody @Valid TcMenu menu, Errors errors, @AuthenticationPrincipal LoginVO user){
|
||||||
|
ResultVO resultVO = new ResultVO();
|
||||||
|
if(user == null){
|
||||||
|
resultVO.setResultCode(ResponseCode.TOKEN_EXPIRED.getCode());
|
||||||
|
}else {
|
||||||
|
menu.setRoleGrpId(menu.getMenuTypeCd().equals("MNU_0000")?"ADMIN_USER":"ALL_USER");
|
||||||
|
if(errors.hasErrors()){
|
||||||
|
StringBuilder msg = new StringBuilder();
|
||||||
|
for(FieldError error: errors.getFieldErrors()){
|
||||||
|
msg.append(error.getDefaultMessage());
|
||||||
|
msg.append("\n");
|
||||||
|
}
|
||||||
|
resultVO.setResultCode(ResponseCode.INPUT_CHECK_ERROR.getCode());
|
||||||
|
resultVO.setResultMessage(msg.toString());
|
||||||
|
}else if (!user.getUserSe().equals("ACC_TP01")) {
|
||||||
|
resultVO.setResultCode(ResponseCode.AUTH_ERROR.getCode());
|
||||||
|
resultVO.setResultMessage(ResponseCode.AUTH_ERROR.getMessage());
|
||||||
|
} else {
|
||||||
|
adminConfigService.saveMenu(menu, user.getId());
|
||||||
|
resultVO.setResultCode(ResponseCode.SUCCESS.getCode());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return resultVO;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Operation(
|
||||||
|
summary = "메뉴 삭제",
|
||||||
|
description = "메뉴 삭제",
|
||||||
|
tags = {"AdminConfigController"}
|
||||||
|
)
|
||||||
|
@ApiResponses(value = {
|
||||||
|
@ApiResponse(responseCode = "200", description = "삭제 성공"),
|
||||||
|
@ApiResponse(responseCode = "403", description = "인가된 사용자가 아님")
|
||||||
|
})
|
||||||
|
@RequestMapping(method = RequestMethod.DELETE, value = "/menu-mgt")
|
||||||
|
public ResultVO removeMenuMgt(@RequestBody TcMenu menu, @AuthenticationPrincipal LoginVO user){
|
||||||
|
ResultVO resultVO = new ResultVO();
|
||||||
|
if(user == null){
|
||||||
|
resultVO.setResultCode(ResponseCode.TOKEN_EXPIRED.getCode());
|
||||||
|
}else {
|
||||||
|
if (!user.getUserSe().equals("ACC_TP01")) {
|
||||||
|
resultVO.setResultCode(ResponseCode.AUTH_ERROR.getCode());
|
||||||
|
resultVO.setResultMessage(ResponseCode.AUTH_ERROR.getMessage());
|
||||||
|
} else {
|
||||||
|
String result = adminConfigService.deleteMenu(menu.getMenuId(), user.getId());
|
||||||
|
if(result==null){
|
||||||
|
resultVO.setResultCode(ResponseCode.SUCCESS.getCode());
|
||||||
|
}else if(result.equals("notFind")){
|
||||||
|
resultVO.setResultCode(ResponseCode.SAVE_ERROR.getCode());
|
||||||
|
resultVO.setResultMessage("대상이 존재하지 않습니다.");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return resultVO;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,10 +7,8 @@ import org.hibernate.annotations.DynamicInsert;
|
||||||
import org.hibernate.annotations.DynamicUpdate;
|
import org.hibernate.annotations.DynamicUpdate;
|
||||||
import org.springframework.format.annotation.DateTimeFormat;
|
import org.springframework.format.annotation.DateTimeFormat;
|
||||||
|
|
||||||
import javax.persistence.Column;
|
import javax.persistence.*;
|
||||||
import javax.persistence.Entity;
|
import javax.validation.constraints.NotBlank;
|
||||||
import javax.persistence.Id;
|
|
||||||
import javax.persistence.Table;
|
|
||||||
import java.time.LocalDateTime;
|
import java.time.LocalDateTime;
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
|
|
@ -23,20 +21,24 @@ import java.time.LocalDateTime;
|
||||||
public class TcMenu {
|
public class TcMenu {
|
||||||
@Id
|
@Id
|
||||||
@Column(name = "menu_id")
|
@Column(name = "menu_id")
|
||||||
|
@NotBlank(message = "메뉴코드를 입력해주세요.")
|
||||||
private String menuId;
|
private String menuId;
|
||||||
@Column(name = "role_grp_id")
|
@Column(name = "role_grp_id")
|
||||||
private String roleGrpId;
|
private String roleGrpId;
|
||||||
@Column(name = "menu_title")
|
@Column(name = "menu_title")
|
||||||
|
@NotBlank(message = "메뉴이름을 입력해주세요.")
|
||||||
private String menuTitle;
|
private String menuTitle;
|
||||||
@Column(name = "menu_group")
|
@Column(name = "menu_group")
|
||||||
private String menuGroup;
|
private String menuGroup;
|
||||||
@Column(name = "menu_level")
|
@Column(name = "menu_level")
|
||||||
private String menuLevel;
|
private Integer menuLevel;
|
||||||
@Column(name = "menu_sort")
|
@Column(name = "menu_sort")
|
||||||
private String menuSort;
|
private Integer menuSort;
|
||||||
@Column(name = "menu_url")
|
@Column(name = "menu_url")
|
||||||
|
@NotBlank(message = "메뉴URI를 입력해주세요.")
|
||||||
private String menuUrl;
|
private String menuUrl;
|
||||||
@Column(name = "menu_type_cd")
|
@Column(name = "menu_type_cd")
|
||||||
|
@NotBlank(message = "타입을 선택해주세요.")
|
||||||
private String menuTypeCd;
|
private String menuTypeCd;
|
||||||
@Column(name = "frst_crt_id")
|
@Column(name = "frst_crt_id")
|
||||||
private String frstCrtId;
|
private String frstCrtId;
|
||||||
|
|
@ -50,4 +52,7 @@ public class TcMenu {
|
||||||
private LocalDateTime lastChgDt;
|
private LocalDateTime lastChgDt;
|
||||||
@Column(name = "use_yn")
|
@Column(name = "use_yn")
|
||||||
private String useYn;
|
private String useYn;
|
||||||
|
|
||||||
|
@Transient
|
||||||
|
private String menuTypeValue;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,13 @@
|
||||||
|
package com.dbnt.kcscbackend.admin.config.mapper;
|
||||||
|
|
||||||
|
import com.dbnt.kcscbackend.admin.config.entity.TcMenu;
|
||||||
|
import org.apache.ibatis.annotations.Mapper;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
@Mapper
|
||||||
|
public interface TcMenuMapper {
|
||||||
|
|
||||||
|
List<TcMenu> selectMenuList();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
@ -1,6 +1,7 @@
|
||||||
package com.dbnt.kcscbackend.admin.config.service;
|
package com.dbnt.kcscbackend.admin.config.service;
|
||||||
|
|
||||||
import com.dbnt.kcscbackend.admin.config.entity.TcMenu;
|
import com.dbnt.kcscbackend.admin.config.entity.TcMenu;
|
||||||
|
import com.dbnt.kcscbackend.admin.config.mapper.TcMenuMapper;
|
||||||
import com.dbnt.kcscbackend.admin.config.repository.TcMenuRepository;
|
import com.dbnt.kcscbackend.admin.config.repository.TcMenuRepository;
|
||||||
import com.dbnt.kcscbackend.commonCode.entity.TcCodeGrp;
|
import com.dbnt.kcscbackend.commonCode.entity.TcCodeGrp;
|
||||||
import com.dbnt.kcscbackend.commonCode.entity.TcCodeItem;
|
import com.dbnt.kcscbackend.commonCode.entity.TcCodeItem;
|
||||||
|
|
@ -11,6 +12,7 @@ import org.egovframe.rte.fdl.cmmn.EgovAbstractServiceImpl;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
|
|
||||||
|
import java.time.LocalDateTime;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@Service
|
@Service
|
||||||
|
|
@ -20,6 +22,7 @@ public class AdminConfigService extends EgovAbstractServiceImpl {
|
||||||
private final TcCodeGrpRepository codeGrpRepository;
|
private final TcCodeGrpRepository codeGrpRepository;
|
||||||
private final TcCodeItemRepository codeItemRepository;
|
private final TcCodeItemRepository codeItemRepository;
|
||||||
private final TcMenuRepository menuRepository;
|
private final TcMenuRepository menuRepository;
|
||||||
|
private final TcMenuMapper menuMapper;
|
||||||
|
|
||||||
public List<TcCodeGrp> selectCodeGrpList(){
|
public List<TcCodeGrp> selectCodeGrpList(){
|
||||||
return codeGrpRepository.findByUseYn("Y");
|
return codeGrpRepository.findByUseYn("Y");
|
||||||
|
|
@ -100,6 +103,41 @@ public class AdminConfigService extends EgovAbstractServiceImpl {
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<TcMenu> selectMenuList() {
|
public List<TcMenu> selectMenuList() {
|
||||||
return menuRepository.findByUseYnOrderByMenuIdAsc("Y");
|
return menuMapper.selectMenuList();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public void saveMenu(TcMenu menu, String userId) {
|
||||||
|
TcMenu savedMenu = menuRepository.findById(menu.getMenuId()).orElse(null);
|
||||||
|
if(savedMenu==null){
|
||||||
|
menu.setFrstCrtDt(LocalDateTime.now());
|
||||||
|
menu.setFrstCrtId(userId);
|
||||||
|
menu.setUseYn("Y");
|
||||||
|
menuRepository.save(menu);
|
||||||
|
}else{
|
||||||
|
savedMenu.setMenuTitle(menu.getMenuTitle());
|
||||||
|
savedMenu.setMenuGroup(menu.getMenuGroup());
|
||||||
|
savedMenu.setMenuLevel(menu.getMenuLevel());
|
||||||
|
savedMenu.setMenuSort(menu.getMenuSort());
|
||||||
|
savedMenu.setMenuUrl(menu.getMenuUrl());
|
||||||
|
savedMenu.setMenuTypeCd(menu.getMenuTypeCd());
|
||||||
|
savedMenu.setUseYn("Y");
|
||||||
|
savedMenu.setLastChgId(userId);
|
||||||
|
savedMenu.setLastChgDt(LocalDateTime.now());
|
||||||
|
menuRepository.save(savedMenu);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Transactional
|
||||||
|
public String deleteMenu(String menuId, String userId) {
|
||||||
|
TcMenu savedMenu = menuRepository.findById(menuId).orElse(null);
|
||||||
|
if(savedMenu==null){
|
||||||
|
return "notFind";
|
||||||
|
}else{
|
||||||
|
savedMenu.setUseYn("N");
|
||||||
|
savedMenu.setLastChgDt(LocalDateTime.now());
|
||||||
|
savedMenu.setLastChgId(userId);
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,27 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
|
||||||
|
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.dbnt.kcscbackend.admin.config.mapper.TcMenuMapper">
|
||||||
|
|
||||||
|
<select id="selectMenuList" resultType="TcMenu">
|
||||||
|
select a.menu_id,
|
||||||
|
a.menu_title,
|
||||||
|
a.role_grp_id,
|
||||||
|
a.menu_group,
|
||||||
|
a.menu_level,
|
||||||
|
a.menu_sort,
|
||||||
|
a.menu_url,
|
||||||
|
a.menu_type_cd,
|
||||||
|
a.use_yn,
|
||||||
|
a.frst_crt_id,
|
||||||
|
a.frst_crt_dt,
|
||||||
|
a.last_chg_id,
|
||||||
|
a.last_chg_dt,
|
||||||
|
b.item_nm as menu_type_value
|
||||||
|
from tc_menu a
|
||||||
|
inner join tc_code_item b on a.menu_type_cd = b.item_cd
|
||||||
|
where a.use_yn = 'Y'
|
||||||
|
order by menu_id asc
|
||||||
|
</select>
|
||||||
|
|
||||||
|
</mapper>
|
||||||
Loading…
Reference in New Issue