package com.takensoft.cms.bbs.web; import com.takensoft.cms.bbs.service.CmntService; import com.takensoft.cms.bbs.vo.CmntVO; import com.takensoft.common.util.ResponseData; 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 * * 게시판 댓글 관련 Controller */ @RestController @RequiredArgsConstructor @Slf4j @RequestMapping(value="/sys/cmnt") public class CmntController { private final CmntService cmntService; /** * @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) { responseData.setStatus(HttpStatus.OK); responseData.setMessage("정상적으로 등록 처리되었습니다."); responseData.setData(result); return new ResponseEntity<>(responseData, headers, HttpStatus.OK); } else if (insertResult == -1) { responseData.setStatus(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); responseData.setMessage("로그인 후 이용 가능합니다."); return new ResponseEntity<>(responseData, headers, HttpStatus.INTERNAL_SERVER_ERROR); } else { responseData.setStatus(HttpStatus.INTERNAL_SERVER_ERROR); responseData.setMessage("등록에 실패하였습니다.\n담당자에게 문의하세요."); return new ResponseEntity<>(responseData, headers, HttpStatus.INTERNAL_SERVER_ERROR); } } /** * @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); // 응답처리 HttpHeaders headers = new HttpHeaders(); headers.setContentType(new MediaType("application", "json", Charset.forName("UTF-8"))); ResponseData responseData = new ResponseData(); responseData.setStatus(HttpStatus.OK); responseData.setMessage("정상적으로 조회가 처리되었습니다."); responseData.setData(result); return new ResponseEntity<>(responseData, headers, HttpStatus.OK); } /** * @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) { responseData.setStatus(HttpStatus.OK); responseData.setMessage("정상적으로 수정 처리되었습니다."); responseData.setData(result); return new ResponseEntity<>(responseData, headers, HttpStatus.OK); } else if (updateResult == -1){ responseData.setStatus(HttpStatus.INTERNAL_SERVER_ERROR); responseData.setMessage("아래의 금지어가 포함되어 있습니다.\n* " + result.get("word")); return new ResponseEntity<>(responseData, headers, HttpStatus.INTERNAL_SERVER_ERROR); } else { responseData.setStatus(HttpStatus.INTERNAL_SERVER_ERROR); responseData.setMessage("등록에 실패하였습니다.\n담당자에게 문의하세요."); return new ResponseEntity<>(responseData, headers, HttpStatus.INTERNAL_SERVER_ERROR); } } /** * @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); // 응답처리 HttpHeaders headers = new HttpHeaders(); headers.setContentType(new MediaType("application", "json", Charset.forName("UTF-8"))); ResponseData responseData = new ResponseData(); responseData.setStatus(HttpStatus.OK); responseData.setMessage("정상적으로 삭제가 처리되었습니다."); responseData.setData(result); return new ResponseEntity<>(responseData, headers, HttpStatus.OK); } }