From 11f1503d1e859884fbe02279cd656dec495f1fb2 Mon Sep 17 00:00:00 2001 From: dyhj625 Date: Thu, 27 Feb 2025 13:07:25 +0900 Subject: [PATCH] =?UTF-8?q?=ED=9C=B4=EA=B0=80=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/api/BoardController.java | 18 +++++++++--- .../controller/api/VacationController.java | 16 +++++++++-- .../localhost/mapper/localbordMapper.java | 23 ++++++++++----- .../localhost/mapper/localvacaMapper.java | 14 ++++++++++ .../localhost/service/localbordService.java | 28 +++++++++++++++---- .../localhost/service/localvacaService.java | 25 +++++++++++------ src/main/resources/mapper/localbordMapper.xml | 14 +++++----- 7 files changed, 103 insertions(+), 35 deletions(-) diff --git a/src/main/java/io/company/localhost/controller/api/BoardController.java b/src/main/java/io/company/localhost/controller/api/BoardController.java index ef5fc4b..f67a083 100644 --- a/src/main/java/io/company/localhost/controller/api/BoardController.java +++ b/src/main/java/io/company/localhost/controller/api/BoardController.java @@ -9,15 +9,18 @@ * =========================================================== * DATE AUTHOR NOTE * ----------------------------------------------------------- - * 24.01.02 서지희 최초 생성 + * 25.01.07 서지희 최초 생성 * *************************************************************/ package io.company.localhost.controller.api; +import java.io.File; import java.math.BigInteger; +import java.util.ArrayList; import java.util.List; +import org.springframework.http.HttpStatus; import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.web.bind.annotation.*; @@ -104,9 +107,13 @@ public class BoardController { if (board == null) { throw new NotFoundHandler("게시물 ID " + boardId + "을(를) 찾을 수 없습니다."); } + // 📌 첨부파일 목록 추가 + List attachments = boardService.selectAttachments(boardId); + board.put("attachments", attachments != null ? attachments : new ArrayList<>()); + return ApiResponse.ok(board); } - + /** * 게시물 삭제 * @ReqMap map 수정 데이터 (LOCBRDSEQ) @@ -228,13 +235,16 @@ public class BoardController { /** * 댓글/대댓글 삭제 - * @ReqMap map 수정 데이터 (LOCCMTSEQ) + * @param commentId 댓글 ID * @return 삭제 결과 메시지 */ @Member @ParameterCheck @DeleteMapping("/comment/{commentId}") - public ApiResponse deleteComment(@ReqMap MapDto map) { + public ApiResponse deleteComment(@PathVariable("commentId") Long commentId) { + MapDto map = new MapDto(); + map.put("LOCCMTSEQ", commentId); + boardService.deleteComment(map); return ApiResponse.ok("댓글이 삭제되었습니다."); } diff --git a/src/main/java/io/company/localhost/controller/api/VacationController.java b/src/main/java/io/company/localhost/controller/api/VacationController.java index 6817454..001fdec 100644 --- a/src/main/java/io/company/localhost/controller/api/VacationController.java +++ b/src/main/java/io/company/localhost/controller/api/VacationController.java @@ -1,6 +1,18 @@ +/************************************************************ + * + * @packageName : io.company.localhost.controller.api + * @fileName : VacationController.java + * @author : 서지희 + * @date : 25.02.06 + * @description : 게시판 + * + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- + * 25.02.06 서지희 최초 생성 + * + *************************************************************/ package io.company.localhost.controller.api; -import java.time.LocalDate; -import java.time.temporal.ChronoUnit; import java.util.List; import java.util.Map; diff --git a/src/main/java/io/company/localhost/mapper/localbordMapper.java b/src/main/java/io/company/localhost/mapper/localbordMapper.java index 9b0e346..053345c 100644 --- a/src/main/java/io/company/localhost/mapper/localbordMapper.java +++ b/src/main/java/io/company/localhost/mapper/localbordMapper.java @@ -1,12 +1,21 @@ +/************************************************************ + * + * @packageName : io.company.localhost.mapper + * @fileName : localbordMapper.java + * @author : 서지희 + * @date : 25.01.07 + * @description : + * + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- + * 25.01.07 서지희 최초 생성 + * + *************************************************************/ package io.company.localhost.mapper; import java.util.List; -import java.util.Map; - import org.apache.ibatis.annotations.Mapper; -import org.apache.ibatis.annotations.Param; -import org.apache.ibatis.annotations.ResultType; - import io.company.localhost.common.dto.MapDto; @Mapper @@ -57,10 +66,10 @@ public interface localbordMapper { void updateComment(MapDto map); // 대댓글인지 확인 - boolean selectIsReply(MapDto map); + int selectIsReply(MapDto map); // 댓글에 대댓글이 있는지 확인 - boolean selectHasReplies(MapDto map); + int selectHasReplies(MapDto map); // 댓글 내용만 삭제 처리 (대댓글 유지) void updateSoftDeleteComment(MapDto map); diff --git a/src/main/java/io/company/localhost/mapper/localvacaMapper.java b/src/main/java/io/company/localhost/mapper/localvacaMapper.java index f6488c7..c90a248 100644 --- a/src/main/java/io/company/localhost/mapper/localvacaMapper.java +++ b/src/main/java/io/company/localhost/mapper/localvacaMapper.java @@ -1,3 +1,17 @@ +/************************************************************ + * + * @packageName : io.company.localhost.mapper + * @fileName : localvacaMapper.java + * @author : 서지희 + * @date : 25.02.06 + * @description : + * + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- + * 25.02.06 서지희 최초 생성 + * + *************************************************************/ package io.company.localhost.mapper; import java.util.List; diff --git a/src/main/java/io/company/localhost/service/localbordService.java b/src/main/java/io/company/localhost/service/localbordService.java index 8e0b1a4..19ed18e 100644 --- a/src/main/java/io/company/localhost/service/localbordService.java +++ b/src/main/java/io/company/localhost/service/localbordService.java @@ -1,10 +1,21 @@ +/************************************************************ + * + * @packageName : io.company.localhost.service + * @fileName : localbordService.java + * @author : 서지희 + * @date : 25.01.07 + * @description : + * + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- + * 25.01.07 서지희 최초 생성 + * + *************************************************************/ package io.company.localhost.service; -import java.io.ByteArrayInputStream; import java.math.BigInteger; -import java.nio.charset.StandardCharsets; import java.util.List; -import java.util.Map; import java.util.UUID; import io.company.localhost.utils.BlobUtil; @@ -153,21 +164,26 @@ public class localbordService { } public void deleteComment(MapDto map) { - boolean isReply = boardMapper.selectIsReply(map); + // 댓글이 대댓글인지 확인 + boolean isReply = boardMapper.selectIsReply(map) > 0; if (isReply) { + // 대댓글이면 바로 삭제 boardMapper.deleteReply(map); } else { - boolean hasReplies = boardMapper.selectHasReplies(map); + // 댓글에 대댓글이 있는지 확인 + boolean hasReplies = boardMapper.selectHasReplies(map) > 0; if (hasReplies) { + // 대댓글이 있는 경우, '삭제된 댓글입니다.'로 변경 (소프트 삭제) boardMapper.updateSoftDeleteComment(map); } else { + // 대댓글이 없는 경우, 완전 삭제 boardMapper.deleteComment(map); } } } - + public String selectCommentPassword(int commentId) { return boardMapper.selectCommentPassword(commentId); } diff --git a/src/main/java/io/company/localhost/service/localvacaService.java b/src/main/java/io/company/localhost/service/localvacaService.java index 05c7a48..5b6dd27 100644 --- a/src/main/java/io/company/localhost/service/localvacaService.java +++ b/src/main/java/io/company/localhost/service/localvacaService.java @@ -1,3 +1,17 @@ +/************************************************************ + * + * @packageName : io.company.localhost.service + * @fileName : localvacaService.java + * @author : 서지희 + * @date : 25.02.06 + * @description : + * + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- + * 25.02.06 서지희 최초 생성 + * + *************************************************************/ package io.company.localhost.service; import java.net.URLDecoder; @@ -47,9 +61,7 @@ public class localvacaService { return localvacaMapper.selectVacations(year, month); } - /** - * 🔹 특정 연월에 대한 공휴일 데이터 조회 - */ + public List selectHolidays(int year, int month) { // ✅ ServiceKey를 디코딩해서 사용 String decodedServiceKey = URLDecoder.decode(serviceKey, StandardCharsets.UTF_8); @@ -155,9 +167,7 @@ public class localvacaService { return dto; } - /** - * 내 연차 사용 내역 조회 (사용한 연차 & 받은 연차) - */ + public Map> selectUserVacationHistory(Long userId, int year) { List usedVacations = localvacaMapper.selectUsedVacations(userId,year); List receivedVacations = localvacaMapper.selectReceivedVacations(userId,year); @@ -169,9 +179,6 @@ public class localvacaService { return history; } - /** - * 사원별 남은 연차 개수 조회 - */ public List selectEmployeeRemainingVacation() { List employeeVacations = localvacaMapper.selectEmployeeRemainingVacation(); diff --git a/src/main/resources/mapper/localbordMapper.xml b/src/main/resources/mapper/localbordMapper.xml index 04f1409..968b4f7 100644 --- a/src/main/resources/mapper/localbordMapper.xml +++ b/src/main/resources/mapper/localbordMapper.xml @@ -199,16 +199,16 @@ - + SELECT COUNT(1) FROM localcomt + WHERE LOCCMTSEQ = #{LOCCMTSEQ} AND LOCCMTPNT IS NOT NULL - + - + SELECT COUNT(1) FROM localcomt WHERE LOCCMTPNT = #{LOCCMTSEQ} - +