package com.takensoft.cms.menu.web; import com.takensoft.cms.author.vo.AuthorVO; import com.takensoft.cms.codeManage.service.CodeManageService; import com.takensoft.cms.codeManage.vo.CodeManageVO; import com.takensoft.cms.dept.vo.DeptVO; import com.takensoft.cms.menu.service.MenuService; import com.takensoft.cms.menu.vo.MenuVO; import com.takensoft.common.HierachyVO; import com.takensoft.common.message.MessageCode; import com.takensoft.common.util.ResponseData; import com.takensoft.common.util.ResponseUtil; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpHeaders; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import java.nio.charset.Charset; import java.util.HashMap; import java.util.List; /** * @author takensoft * @since 2024.04.01 * @modification * since | author | description * 2024.04.01 | takensoft | 최초 등록 * * 메뉴 정보 관련 컨트롤러 */ @RestController @RequiredArgsConstructor @Slf4j @RequestMapping(value = "/admin/menu") public class MenuController { private final ResponseUtil resUtil; private final MenuService menuService; private final CodeManageService codeManageService; /** * @author takensoft * @since 2024.04.08 * @param menuVO * @return * @throws Exception * * 메뉴 등록 */ @PostMapping(value = "/saveProc.json") public ResponseEntity SaveProc(@RequestBody MenuVO menuVO) throws Exception { // 메뉴 등록 int result = menuService.menuSave(menuVO); // 응답 처리 if(result > 0) { return resUtil.successRes(result, MessageCode.COMMON_SUCCESS); } else { return resUtil.errorRes(MessageCode.COMMON_INSERT_FAIL); } } /** * @author takensoft * @since 2024.04.08 * @param * @return * @throws Exception * * 메뉴 목록 조회 (관리자 페이지용) */ @GetMapping(value = "/findAll.json") public ResponseEntity findAll() throws Exception { // Tree용 List hierachyList = menuService.findByTopNode(); // 메뉴타입 List codeList = codeManageService.findByChildCdCache("menuGroup"); HashMap result = new HashMap<>(); result.put("hierachyList", hierachyList); result.put("newMenu", new MenuVO()); result.put("codeList", codeList); // 응답 처리 return resUtil.successRes(result, MessageCode.COMMON_SUCCESS); } /** * @author takensoft * @since 2024.04.08 * @param menuVO * @return * @throws Exception * * 메뉴 상세 조회 (관리자 페이지용) */ @PostMapping("/findByMenu.json") public ResponseEntity findByMenu(@RequestBody MenuVO menuVO) throws Exception { // 메뉴 조회 MenuVO result = menuService.findByMenu(menuVO.getMenuId()); // 응답 처리 return resUtil.successRes(result, MessageCode.COMMON_SUCCESS); } /** * @author takensoft * @since 2024.04.08 * @param menuVO * @return * @throws Exception * * 메뉴 정보 수정 */ @PostMapping(value = "/updateProc.json") public ResponseEntity updateProc(@RequestBody MenuVO menuVO) throws Exception { // 메뉴 등록 int result = menuService.MenuUpdate(menuVO); // 응답 처리 HttpHeaders headers = new HttpHeaders(); headers.setContentType(new MediaType("application", "json", Charset.forName("UTF-8"))); ResponseData responseData = new ResponseData(); if(result > 0) { return resUtil.successRes(result, MessageCode.COMMON_SUCCESS); } else { return resUtil.errorRes(MessageCode.COMMON_UPDATE_FAIL); } } /** * @author 박정하 * @since 2024.04.29 * @param menuVO * @return * @throws Exception * * 메뉴 정보 삭제 */ @PostMapping(value = "/deleteProc.json") public ResponseEntity deleteProc(@RequestBody MenuVO menuVO) throws Exception { // 메뉴 삭제 int result = menuService.menuDelete(menuVO); // 응답 처리 HttpHeaders headers = new HttpHeaders(); headers.setContentType(new MediaType("application", "json", Charset.forName("UTF-8"))); ResponseData responseData = new ResponseData(); if(result > 0) { return resUtil.successRes(result, MessageCode.COMMON_SUCCESS); } else { return resUtil.errorRes(MessageCode.COMMON_DELETE_FAIL); } } /** * @author 박정하 * @since 2024.05.10 * @param menuList * @return * @throws Exception * * 메뉴 목록 수정 */ @PostMapping(value = "/updateListProc.json") public ResponseEntity updateListProc(@RequestBody List menuList) throws Exception { // 메뉴 목록 수정 int result = menuService.updateList(menuList); // 응답 처리 HttpHeaders headers = new HttpHeaders(); headers.setContentType(new MediaType("application", "json", Charset.forName("UTF-8"))); ResponseData responseData = new ResponseData(); if(result > 0) { return resUtil.successRes(result, MessageCode.COMMON_SUCCESS); } else { return resUtil.errorRes(MessageCode.COMMON_UPDATE_FAIL); } } }