package com.takensoft.cms.bbs.web; import com.takensoft.cms.bbs.service.CmntService; import com.takensoft.cms.bbs.vo.CmntVO; 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.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import java.nio.charset.Charset; import java.util.HashMap; import java.util.List; import java.util.Map; /** * @author 방선주 * @since 2024.05.27 * @modification * since | author | description * 2024.05.27 | 방선주 | 최초 등록 * * 게시판 댓글 관련 Controller */ @RestController @RequiredArgsConstructor @Slf4j @RequestMapping(value="/sys/cmnt") public class CmntController { private final CmntService cmntService; private final ResponseUtil resUtil; /** * @author 방선주 * @since 2024.05.27 * @param cmntVO * @return * @throws Exception * * 댓글 등록 */ @PostMapping("/saveProc.json") public ResponseEntity saveProc(@RequestBody CmntVO cmntVO) throws Exception { // 응답 처리 HttpHeaders headers = new HttpHeaders(); headers.setContentType(new MediaType("application", "json", Charset.forName("UTF-8"))); ResponseData responseData = new ResponseData(); // 댓글 등록 HashMap result = cmntService.saveCmnt(cmntVO); int insertResult = (int) result.get("result"); if(insertResult > 0) { return resUtil.successRes(result, MessageCode.COMMON_SUCCESS); } else if (insertResult == -1) { responseData.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value()); responseData.setStatusText(HttpStatus.INTERNAL_SERVER_ERROR); responseData.setMessage("아래의 금지어가 포함되어 있습니다.\n* " + result.get("word")); return new ResponseEntity<>(responseData, headers, HttpStatus.INTERNAL_SERVER_ERROR); } else if (insertResult == -2){ responseData.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value()); responseData.setStatusText(HttpStatus.INTERNAL_SERVER_ERROR); responseData.setMessage("로그인 후 이용 가능합니다."); return new ResponseEntity<>(responseData, headers, HttpStatus.INTERNAL_SERVER_ERROR); } else { return resUtil.errorRes(MessageCode.COMMON_INSERT_FAIL); } } /** * @author 방선주 * @since 2024.05.27 * @param cmntVO * @return * @throws Exception * * 댓글 목록 조회 */ @PostMapping("/findCmntList.json") public ResponseEntity findCmntList(@RequestBody CmntVO cmntVO) throws Exception { // 댓글 목록 조회 List cmntList = cmntService.findCmntList(cmntVO.getBbsId()); Map result = new HashMap(); result.put("cmntList", cmntList); // 응답처리 return resUtil.successRes(result, MessageCode.COMMON_SUCCESS); } /** * @author 방선주 * @since 2024.05.27 * @param cmntVO * @return * @throws Exception * * 댓글 수정 */ @PostMapping("/updateProc.json") public ResponseEntity updateProc(@RequestBody CmntVO cmntVO) throws Exception { // 응답 처리 HttpHeaders headers = new HttpHeaders(); headers.setContentType(new MediaType("application", "json", Charset.forName("UTF-8"))); ResponseData responseData = new ResponseData(); // 댓글 수정 HashMap result = cmntService.updateCmnt(cmntVO); int updateResult = (int) result.get("result"); // 응답처리 if(updateResult > 0) { return resUtil.successRes(result, MessageCode.COMMON_SUCCESS); } else if (updateResult == -1){ responseData.setStatus(HttpStatus.INTERNAL_SERVER_ERROR.value()); responseData.setStatusText(HttpStatus.INTERNAL_SERVER_ERROR); responseData.setMessage("아래의 금지어가 포함되어 있습니다.\n* " + result.get("word")); return new ResponseEntity<>(responseData, headers, HttpStatus.INTERNAL_SERVER_ERROR); } else { return resUtil.errorRes(MessageCode.COMMON_UPDATE_FAIL); } } /** * @author 방선주 * @since 2024.05.27 * @param cmntVO * @return * @throws Exception * * 댓글 삭제 */ @PostMapping("/deleteProc.json") public ResponseEntity deleteProc(@RequestBody CmntVO cmntVO) throws Exception { // 댓글 삭제 처리 (댓글 삭제는 업데이트로 처리 useYn = 'N') int result = cmntService.deleteCmnt(cmntVO); // 응답처리 return resUtil.successRes(result, MessageCode.COMMON_SUCCESS); } }