From b09f4cda2fbf34498aab76b37d0f4b6d81f2c95b Mon Sep 17 00:00:00 2001 From: dyhj625 Date: Tue, 18 Feb 2025 16:05:00 +0900 Subject: [PATCH 01/10] =?UTF-8?q?=E3=85=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/api/BoardController.java | 26 ++++++++-- .../localhost/mapper/localbordMapper.java | 5 +- .../localhost/service/localbordService.java | 5 ++ src/main/resources/mapper/localbordMapper.xml | 16 ++++++- src/main/resources/mapper/localvacaMapper.xml | 47 ++++++++++--------- 5 files changed, 70 insertions(+), 29 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 a631ae9..5b23b91 100644 --- a/src/main/java/io/company/localhost/controller/api/BoardController.java +++ b/src/main/java/io/company/localhost/controller/api/BoardController.java @@ -167,15 +167,33 @@ public class BoardController { /** * 댓글/대댓글 조회 * @ReqMap map 수정 데이터 (LOCBRDSEQ) - * @return 댓글과 대댓글의 계층 구조 데이터 + * @return 댓글 */ @Member @ParameterCheck @GetMapping("/{boardId}/comments") - public ApiResponse> getComments(@ReqMap MapDto map) { - return ApiResponse.ok(boardService.selectComments(map)); - } + public ApiResponse> selectComments(@ReqMap MapDto map) { + // 댓글조회 + PageInfo comments = boardService.selectComments(map); + + return ApiResponse.ok(comments); + } + + /** + * 대댓글 조회 + * @ReqMap map 수정 데이터 (LOCBRDSEQ) + * @return 대댓글 + */ + @Member + @ParameterCheck + @GetMapping("/{boardId}/reply") + public ApiResponse> getComments(@ReqMap MapDto map) { + List replies = boardService.selectReply(map); + + return ApiResponse.ok(replies); + } + /** * 댓글/대댓글 작성 * @param boardId 게시물 ID diff --git a/src/main/java/io/company/localhost/mapper/localbordMapper.java b/src/main/java/io/company/localhost/mapper/localbordMapper.java index 6a31b84..f0f2f3a 100644 --- a/src/main/java/io/company/localhost/mapper/localbordMapper.java +++ b/src/main/java/io/company/localhost/mapper/localbordMapper.java @@ -43,8 +43,11 @@ public interface localbordMapper { // 기존 반응 업데이트 void updateReaction(MapDto map); - // 댓글/대댓글 조회 + // 댓글 조회 List selectComments(MapDto map); + + //대댓글 조회 + List selectReply(MapDto map); // 댓글/대댓글 작성 void insertCommentOrReply(MapDto map); diff --git a/src/main/java/io/company/localhost/service/localbordService.java b/src/main/java/io/company/localhost/service/localbordService.java index 29a552a..c17a15a 100644 --- a/src/main/java/io/company/localhost/service/localbordService.java +++ b/src/main/java/io/company/localhost/service/localbordService.java @@ -119,6 +119,11 @@ public class localbordService { return PageUtil.redefineNavigation(new PageInfo<>(result, size)); } + + public List selectReply(MapDto map) { + + return boardMapper.selectComments(map); + } public void insertCommentOrReply(MapDto map) { if (map.get("LOCCMTPNT") == null) { diff --git a/src/main/resources/mapper/localbordMapper.xml b/src/main/resources/mapper/localbordMapper.xml index 9c986f8..b899e36 100644 --- a/src/main/resources/mapper/localbordMapper.xml +++ b/src/main/resources/mapper/localbordMapper.xml @@ -132,7 +132,7 @@ VALUES (#{LOCBRDSEQ}, #{LOCCMTSEQ}, #{MEMBERSEQ}, #{LOCGOBGOD}, #{LOCGOBBAD}) - + + + + diff --git a/src/main/resources/mapper/localvacaMapper.xml b/src/main/resources/mapper/localvacaMapper.xml index 2aceeee..be4183c 100644 --- a/src/main/resources/mapper/localvacaMapper.xml +++ b/src/main/resources/mapper/localvacaMapper.xml @@ -16,28 +16,31 @@ - + + + + - - From b4c49fbe5885dc6c0ae4c678b45248add5fb45a0 Mon Sep 17 00:00:00 2001 From: dyhj625 Date: Thu, 20 Feb 2025 10:36:05 +0900 Subject: [PATCH 02/10] =?UTF-8?q?=EB=8C=93=EA=B8=80=20=EC=A2=8B=EC=95=84?= =?UTF-8?q?=EC=9A=94/=EC=8B=AB=EC=96=B4=EC=9A=94=20=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 | 2 +- .../localhost/mapper/localbordMapper.java | 5 ++++- .../localhost/service/localbordService.java | 22 ++++++++++++++++--- src/main/resources/mapper/localbordMapper.xml | 7 +++--- src/main/resources/mapper/localvacaMapper.xml | 2 +- 5 files changed, 29 insertions(+), 9 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 5b23b91..7b6bbf1 100644 --- a/src/main/java/io/company/localhost/controller/api/BoardController.java +++ b/src/main/java/io/company/localhost/controller/api/BoardController.java @@ -165,7 +165,7 @@ public class BoardController { } /** - * 댓글/대댓글 조회 + * 댓글 조회 * @ReqMap map 수정 데이터 (LOCBRDSEQ) * @return 댓글 */ diff --git a/src/main/java/io/company/localhost/mapper/localbordMapper.java b/src/main/java/io/company/localhost/mapper/localbordMapper.java index f0f2f3a..ecff3e1 100644 --- a/src/main/java/io/company/localhost/mapper/localbordMapper.java +++ b/src/main/java/io/company/localhost/mapper/localbordMapper.java @@ -5,6 +5,7 @@ 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; @@ -89,7 +90,8 @@ public interface localbordMapper { MapDto selectCountBoardReactions(Long boardId); // 댓글 좋아요/싫어요 개수 - List selectCountCommentReactions(Long boardId); + @ResultType(MapDto.class) + MapDto selectCountCommentReactions(Long commentId); // 첨부파일 가져오기 List selectAttachments(Long boardId); @@ -97,5 +99,6 @@ public interface localbordMapper { //댓글id 확인 MapDto selectCommentById(int commentId); + } diff --git a/src/main/java/io/company/localhost/service/localbordService.java b/src/main/java/io/company/localhost/service/localbordService.java index c17a15a..2998478 100644 --- a/src/main/java/io/company/localhost/service/localbordService.java +++ b/src/main/java/io/company/localhost/service/localbordService.java @@ -111,12 +111,12 @@ public class localbordService { } public PageInfo selectComments(MapDto map) { - int page = map.getString("page") != null ? Integer.parseInt(map.getString("page")) : 1; + int page = map.getString("page") != null ? Integer.parseInt(map.getString("page")) : 1; int size = map.getString("size") != null ? Integer.parseInt(map.getString("size")) : 10; PageHelper.startPage(page, size); List result = boardMapper.selectComments(map); - + enrichCommentsWithAdditionalData(result); // 댓글 데이터 보강 return PageUtil.redefineNavigation(new PageInfo<>(result, size)); } @@ -177,7 +177,7 @@ public class localbordService { return boardMapper.selectCountBoardReactions(boardId); } - public List selectCountCommentReactions(Long boardId) { + public MapDto selectCountCommentReactions(Long boardId) { return boardMapper.selectCountCommentReactions(boardId); } @@ -306,4 +306,20 @@ public class localbordService { } } + private void enrichCommentsWithAdditionalData(List comments) { + for (MapDto comment : comments) { + Object idObject = comment.get("LOCCMTSEQ"); + if (idObject instanceof Number) { + long commentId = ((Number) idObject).longValue(); + + MapDto reactions = boardMapper.selectCountCommentReactions(commentId); + comment.put("likeCount", reactions != null ? reactions.getOrDefault("likeCount", 0) : 0); + comment.put("dislikeCount", reactions != null ? reactions.getOrDefault("dislikeCount", 0) : 0); + + Object content = comment.get("content"); + comment.put("content", content); + } + } + } + } \ No newline at end of file diff --git a/src/main/resources/mapper/localbordMapper.xml b/src/main/resources/mapper/localbordMapper.xml index b899e36..94c319c 100644 --- a/src/main/resources/mapper/localbordMapper.xml +++ b/src/main/resources/mapper/localbordMapper.xml @@ -252,14 +252,15 @@ - SELECT LOCCMTSEQ, COALESCE(SUM(CASE WHEN LOCGOBGOD = 'T' THEN 1 ELSE 0 END), 0) AS likeCount, COALESCE(SUM(CASE WHEN LOCGOBBAD = 'T' THEN 1 ELSE 0 END), 0) AS dislikeCount FROM localgorb - WHERE LOCBRDSEQ = #{boardId} - GROUP BY LOCCMTSEQ + WHERE LOCCMTSEQ = #{commentId} + LIMIT 1 + diff --git a/src/main/resources/mapper/localvacaMapper.xml b/src/main/resources/mapper/localvacaMapper.xml index be4183c..879936b 100644 --- a/src/main/resources/mapper/localvacaMapper.xml +++ b/src/main/resources/mapper/localvacaMapper.xml @@ -10,7 +10,7 @@ From 1e1b313a6e8b042bcd2e3d8e33879838f8985593 Mon Sep 17 00:00:00 2001 From: dyhj625 Date: Thu, 20 Feb 2025 10:47:15 +0900 Subject: [PATCH 03/10] =?UTF-8?q?=EB=8C=80=EB=8C=93=EA=B8=80=20=EC=88=98?= =?UTF-8?q?=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/io/company/localhost/mapper/localbordMapper.java | 1 - src/main/resources/mapper/localbordMapper.xml | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/main/java/io/company/localhost/mapper/localbordMapper.java b/src/main/java/io/company/localhost/mapper/localbordMapper.java index ecff3e1..9b0e346 100644 --- a/src/main/java/io/company/localhost/mapper/localbordMapper.java +++ b/src/main/java/io/company/localhost/mapper/localbordMapper.java @@ -90,7 +90,6 @@ public interface localbordMapper { MapDto selectCountBoardReactions(Long boardId); // 댓글 좋아요/싫어요 개수 - @ResultType(MapDto.class) MapDto selectCountCommentReactions(Long commentId); // 첨부파일 가져오기 diff --git a/src/main/resources/mapper/localbordMapper.xml b/src/main/resources/mapper/localbordMapper.xml index 94c319c..2bc1946 100644 --- a/src/main/resources/mapper/localbordMapper.xml +++ b/src/main/resources/mapper/localbordMapper.xml @@ -152,7 +152,7 @@ m.MEMBERNAM AS author FROM localcomt c LEFT JOIN netmember m ON c.MEMBERSEQ = m.MEMBERSEQ - WHERE LOCBRDSEQ = #{LOCBRDSEQ} and LOCCMTPNT != 1 + WHERE LOCCMTPNT = #{LOCCMTPNT} and LOCCMTPNT != 1 ORDER BY LOCCMTPNT ASC, LOCCMTUDT ASC From 96c5a349c74856daedb946f41c78b08f8250fec2 Mon Sep 17 00:00:00 2001 From: khj0414 Date: Thu, 20 Feb 2025 11:11:53 +0900 Subject: [PATCH 04/10] =?UTF-8?q?=EC=84=B1=EA=B3=B5=EC=8B=9C=20=EB=A9=94?= =?UTF-8?q?=EC=8B=9C=EC=A7=80=EB=A7=8C=20=EB=B0=98=ED=99=98=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EB=A9=94=EC=86=8C=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/io/company/localhost/common/dto/ApiResponse.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/main/java/io/company/localhost/common/dto/ApiResponse.java b/src/main/java/io/company/localhost/common/dto/ApiResponse.java index 920e105..8919aa2 100644 --- a/src/main/java/io/company/localhost/common/dto/ApiResponse.java +++ b/src/main/java/io/company/localhost/common/dto/ApiResponse.java @@ -47,4 +47,7 @@ public class ApiResponse { public static ApiResponse error(HttpStatus status, String message) { return new ApiResponse<>(status, message, null); } + public static ApiResponse okMessage(String message) { + return new ApiResponse<>(HttpStatus.OK, message, null); + } } \ No newline at end of file From 68b8a26322bded4baf2fb9d63461a8e118683dee Mon Sep 17 00:00:00 2001 From: khj0414 Date: Thu, 20 Feb 2025 11:16:48 +0900 Subject: [PATCH 05/10] =?UTF-8?q?=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/api/VoteBoardController.java | 15 ++++++++++ .../controller/api/worddictController.java | 17 +++++++++++ .../common/ImageUploadController.java | 2 +- .../localhost/mapper/commoncodMapper.java | 2 ++ .../localhost/mapper/localvoteMapper.java | 2 ++ .../localhost/mapper/worddictyMapper.java | 2 ++ .../localhost/service/commoncodService.java | 5 ++++ .../localhost/service/localvoteService.java | 9 +++++- .../localhost/service/worddictyService.java | 7 +++-- src/main/resources/mapper/VotMemberMapper.xml | 29 +++++++++++++++---- src/main/resources/mapper/VotRecordMapper.xml | 15 ---------- src/main/resources/mapper/commoncodMapper.xml | 9 +++++- src/main/resources/mapper/localvoteMapper.xml | 14 +++++++++ src/main/resources/mapper/worddictyMapper.xml | 10 +++++++ 14 files changed, 113 insertions(+), 25 deletions(-) diff --git a/src/main/java/io/company/localhost/controller/api/VoteBoardController.java b/src/main/java/io/company/localhost/controller/api/VoteBoardController.java index 13cfbb0..f33a200 100644 --- a/src/main/java/io/company/localhost/controller/api/VoteBoardController.java +++ b/src/main/java/io/company/localhost/controller/api/VoteBoardController.java @@ -2,6 +2,7 @@ package io.company.localhost.controller.api; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PatchMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -76,5 +77,19 @@ public class VoteBoardController { return ApiResponse.ok(localvoteservice.insertCheckedNums(map)); } + /** + * 투표 종료 + * @param endVoteId 투표번호 + * @return + */ + @Member + @PatchMapping("updateEndData") + public ApiResponse updateEndData(@AuthenticationPrincipal MemberVo memberVo,@ReqMap MapDto map) { + + Long userId = AuthUtil.getUser().getId(); + map.put("userId", userId); + return ApiResponse.ok(localvoteservice.updateEndData(map)); + } + } diff --git a/src/main/java/io/company/localhost/controller/api/worddictController.java b/src/main/java/io/company/localhost/controller/api/worddictController.java index 764588d..365139a 100644 --- a/src/main/java/io/company/localhost/controller/api/worddictController.java +++ b/src/main/java/io/company/localhost/controller/api/worddictController.java @@ -14,8 +14,10 @@ *************************************************************/ package io.company.localhost.controller.api; +//import java.util.Arrays; import java.util.List; +import org.springframework.http.HttpStatus; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PatchMapping; @@ -96,6 +98,9 @@ public class worddictController { @PostMapping("insertCategory") public ApiResponse insertCategory(@ReqMap MapDto map) { Long result = commoncodservice.insertCategory(map); + if(result == -1) { + return ApiResponse.okMessage("이미 존재하는 카테고리명입니다."); + } return ApiResponse.ok(result); } /** @@ -135,4 +140,16 @@ public class worddictController { return ApiResponse.ok(result); } + /** + * 용어 삭제 + * @param idList 게시판 아이디 리스트 + * @return + */ + @Member + @PatchMapping("deleteword") + public ApiResponse updateword(@AuthenticationPrincipal MemberVo memberVo,@ReqMap MapDto map) { + return ApiResponse.ok(worddictyservice.updateword(map)); + } + + } diff --git a/src/main/java/io/company/localhost/controller/common/ImageUploadController.java b/src/main/java/io/company/localhost/controller/common/ImageUploadController.java index b32d3bf..b4002a3 100644 --- a/src/main/java/io/company/localhost/controller/common/ImageUploadController.java +++ b/src/main/java/io/company/localhost/controller/common/ImageUploadController.java @@ -50,7 +50,7 @@ public class ImageUploadController { */ @ParameterCheck @PostMapping("/upload") - public ApiResponse uploadImage(@RequestParam("file") MultipartFile file) throws IOException { + public ApiResponse uploadImage(@ReqMap MultipartFile file) throws IOException { if (file.isEmpty()) { return ApiResponse.error(HttpStatus.BAD_REQUEST, "File is empty"); diff --git a/src/main/java/io/company/localhost/mapper/commoncodMapper.java b/src/main/java/io/company/localhost/mapper/commoncodMapper.java index 9f255cc..00184da 100644 --- a/src/main/java/io/company/localhost/mapper/commoncodMapper.java +++ b/src/main/java/io/company/localhost/mapper/commoncodMapper.java @@ -40,4 +40,6 @@ public interface commoncodMapper { List selectYearCategories(); List selectCategories(); + + Long selectcheckCategoryExists(MapDto map); } diff --git a/src/main/java/io/company/localhost/mapper/localvoteMapper.java b/src/main/java/io/company/localhost/mapper/localvoteMapper.java index dadea29..2d93447 100644 --- a/src/main/java/io/company/localhost/mapper/localvoteMapper.java +++ b/src/main/java/io/company/localhost/mapper/localvoteMapper.java @@ -15,5 +15,7 @@ public interface localvoteMapper { List getVoteList(MapDto map); + Long updateEndData(MapDto map); + } diff --git a/src/main/java/io/company/localhost/mapper/worddictyMapper.java b/src/main/java/io/company/localhost/mapper/worddictyMapper.java index 369be30..4360921 100644 --- a/src/main/java/io/company/localhost/mapper/worddictyMapper.java +++ b/src/main/java/io/company/localhost/mapper/worddictyMapper.java @@ -33,6 +33,8 @@ public interface worddictyMapper { int getTotal(MapDto map); + Long updateword(MapDto map); + diff --git a/src/main/java/io/company/localhost/service/commoncodService.java b/src/main/java/io/company/localhost/service/commoncodService.java index edf2cbb..06711ab 100644 --- a/src/main/java/io/company/localhost/service/commoncodService.java +++ b/src/main/java/io/company/localhost/service/commoncodService.java @@ -19,6 +19,7 @@ import java.util.List; import org.springframework.stereotype.Service; import io.company.localhost.common.dto.MapDto; +import io.company.localhost.common.exception.NotFoundHandler; import io.company.localhost.mapper.commoncodMapper; import lombok.RequiredArgsConstructor; @@ -33,6 +34,10 @@ public class commoncodService { } public Long insertCategory(MapDto map) { + Long count = commoncodmapper.selectcheckCategoryExists(map); + if(count > 0) { + return -1L; + } return commoncodmapper.insertCategory(map); } diff --git a/src/main/java/io/company/localhost/service/localvoteService.java b/src/main/java/io/company/localhost/service/localvoteService.java index cdf3ddb..e4ccbc5 100644 --- a/src/main/java/io/company/localhost/service/localvoteService.java +++ b/src/main/java/io/company/localhost/service/localvoteService.java @@ -31,7 +31,10 @@ public class localvoteService { Long result = 0L; - int voteIdInt = (int) map.get("voteId"); + int voteIdInt = 0 ; + if(map.get("voteId") != null) { + voteIdInt = (int) map.get("voteId"); + } if(voteIdInt != 0) { result = votdetailmapper.insertdetail(map); }else { @@ -87,5 +90,9 @@ public class localvoteService { return result; } + public Long updateEndData(MapDto map) { + return localvotemapper.updateEndData(map); + } + } diff --git a/src/main/java/io/company/localhost/service/worddictyService.java b/src/main/java/io/company/localhost/service/worddictyService.java index 56b131e..c19987a 100644 --- a/src/main/java/io/company/localhost/service/worddictyService.java +++ b/src/main/java/io/company/localhost/service/worddictyService.java @@ -58,8 +58,6 @@ public class worddictyService { return processedList; } - - public Long insertWord(MapDto map) { return worddictymapper.insertWord(map); } @@ -77,6 +75,11 @@ public class worddictyService { } + public Long updateword(MapDto map) { + return worddictymapper.updateword(map); + } + + diff --git a/src/main/resources/mapper/VotMemberMapper.xml b/src/main/resources/mapper/VotMemberMapper.xml index c1985a2..ef68c2f 100644 --- a/src/main/resources/mapper/VotMemberMapper.xml +++ b/src/main/resources/mapper/VotMemberMapper.xml @@ -12,11 +12,30 @@ diff --git a/src/main/resources/mapper/VotRecordMapper.xml b/src/main/resources/mapper/VotRecordMapper.xml index c18361c..8e00221 100644 --- a/src/main/resources/mapper/VotRecordMapper.xml +++ b/src/main/resources/mapper/VotRecordMapper.xml @@ -23,20 +23,5 @@ ,#{userId} ,now() ) - - - - diff --git a/src/main/resources/mapper/commoncodMapper.xml b/src/main/resources/mapper/commoncodMapper.xml index 4e37197..d12930e 100644 --- a/src/main/resources/mapper/commoncodMapper.xml +++ b/src/main/resources/mapper/commoncodMapper.xml @@ -112,5 +112,12 @@ AND CMNCODODR != 0 - + diff --git a/src/main/resources/mapper/localvoteMapper.xml b/src/main/resources/mapper/localvoteMapper.xml index 0ae28f4..ad4af19 100644 --- a/src/main/resources/mapper/localvoteMapper.xml +++ b/src/main/resources/mapper/localvoteMapper.xml @@ -28,11 +28,25 @@ ,DATE_FORMAT(a.LOCVOTRDT, '%Y-%m-%d %H:%i') AS formatted_LOCVOTRDT ,DATE_FORMAT(a.LOCVOTEDT, '%Y-%m-%d %H:%i') AS formatted_LOCVOTEDT ,b.* + ,c.CMNCODNAM usercolor from localvote a LEFT JOIN netmember b on a.LOCVOTREG = b.MEMBERSEQ + left join + commoncod c + on + b.MEMBERCOL = c.CMNCODVAL + order by + a.LOCVOTRDT desc + + UPDATE + localvote + SET + LOCVOTDDT = now() + WHERE LOCVOTSEQ = #{endVoteId} + diff --git a/src/main/resources/mapper/worddictyMapper.xml b/src/main/resources/mapper/worddictyMapper.xml index 91bbda7..da376f2 100644 --- a/src/main/resources/mapper/worddictyMapper.xml +++ b/src/main/resources/mapper/worddictyMapper.xml @@ -236,4 +236,14 @@ where WRDDICSEQ = #{WRDDICSEQ} + + UPDATE + worddicty + SET + WRDDICEDT = now() + WHERE WRDDICSEQ IN + + #{id} + + From 7c7ddb6eca4d3d3724f4d756b1dff4b92a7cd2dd Mon Sep 17 00:00:00 2001 From: khj0414 Date: Thu, 20 Feb 2025 11:17:20 +0900 Subject: [PATCH 06/10] =?UTF-8?q?=ED=95=84=EC=9A=94=EC=97=86=EB=8A=94impor?= =?UTF-8?q?t=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../io/company/localhost/controller/api/worddictController.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/io/company/localhost/controller/api/worddictController.java b/src/main/java/io/company/localhost/controller/api/worddictController.java index 365139a..606710d 100644 --- a/src/main/java/io/company/localhost/controller/api/worddictController.java +++ b/src/main/java/io/company/localhost/controller/api/worddictController.java @@ -17,7 +17,6 @@ package io.company.localhost.controller.api; //import java.util.Arrays; import java.util.List; -import org.springframework.http.HttpStatus; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PatchMapping; From 16a2f1ce82dcf8132b3941f6901709d27244ae53 Mon Sep 17 00:00:00 2001 From: khj0414 Date: Thu, 20 Feb 2025 11:19:02 +0900 Subject: [PATCH 07/10] Merge branch 'khj' into main --- .../localhost/controller/common/ImageUploadController.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/company/localhost/controller/common/ImageUploadController.java b/src/main/java/io/company/localhost/controller/common/ImageUploadController.java index b4002a3..b32d3bf 100644 --- a/src/main/java/io/company/localhost/controller/common/ImageUploadController.java +++ b/src/main/java/io/company/localhost/controller/common/ImageUploadController.java @@ -50,7 +50,7 @@ public class ImageUploadController { */ @ParameterCheck @PostMapping("/upload") - public ApiResponse uploadImage(@ReqMap MultipartFile file) throws IOException { + public ApiResponse uploadImage(@RequestParam("file") MultipartFile file) throws IOException { if (file.isEmpty()) { return ApiResponse.error(HttpStatus.BAD_REQUEST, "File is empty"); From ab66477be27708459604a59b429173f3d5f0d3d6 Mon Sep 17 00:00:00 2001 From: khj0414 Date: Thu, 20 Feb 2025 14:59:27 +0900 Subject: [PATCH 08/10] =?UTF-8?q?=ED=88=AC=ED=91=9C=20=EC=A1=B0=ED=9A=8C?= =?UTF-8?q?=20=EC=BF=BC=EB=A6=AC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/resources/mapper/worddictyMapper.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/resources/mapper/worddictyMapper.xml b/src/main/resources/mapper/worddictyMapper.xml index da376f2..8dcd672 100644 --- a/src/main/resources/mapper/worddictyMapper.xml +++ b/src/main/resources/mapper/worddictyMapper.xml @@ -178,6 +178,7 @@ m2.MEMBERCOL = cu.CMNCODVAL -- 수정자 색상 where 1=1 + and w.WRDDICEDT IS NULL order by w.WRDDICRDT desc From e2ef67a3d9bb91af711a0f5502917deef8f9f31e Mon Sep 17 00:00:00 2001 From: dyhj625 Date: Thu, 20 Feb 2025 16:19:52 +0900 Subject: [PATCH 09/10] =?UTF-8?q?=ED=9C=B4=EA=B0=80=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../company/localhost/common/dto/MapDto.java | 32 ++++++++++- .../controller/api/VacationController.java | 56 ++++++++++++++----- .../localhost/mapper/localvacaMapper.java | 2 + .../localhost/service/localvacaService.java | 9 ++- src/main/resources/mapper/localvacaMapper.xml | 8 ++- 5 files changed, 89 insertions(+), 18 deletions(-) diff --git a/src/main/java/io/company/localhost/common/dto/MapDto.java b/src/main/java/io/company/localhost/common/dto/MapDto.java index ec17348..2b6e6d5 100644 --- a/src/main/java/io/company/localhost/common/dto/MapDto.java +++ b/src/main/java/io/company/localhost/common/dto/MapDto.java @@ -20,7 +20,11 @@ import org.springframework.util.ObjectUtils; import java.io.Serial; import java.math.BigDecimal; import java.math.BigInteger; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; import java.util.Map; +import java.util.stream.Collectors; public class MapDto extends ListOrderedMap { @@ -74,6 +78,32 @@ public class MapDto extends ListOrderedMap { } return null; } - + + public List getList(String key, Class clazz) { + Object value = this.get(key); + if (value == null) { + return Collections.emptyList(); + } + if (!(value instanceof List)) { + throw new IllegalArgumentException("Value for key " + key + " is not a List"); + } + List list = (List) value; + List result = new ArrayList<>(); + for (Object item : list) { + if (item == null) { + continue; // null인 항목은 건너뜁니다. + } + if (clazz.isInstance(item)) { + result.add(clazz.cast(item)); + } else if (clazz.equals(Long.class) && item instanceof Integer) { + result.add(clazz.cast(Long.valueOf((Integer) item))); + } else if (item instanceof Map && clazz.equals(MapDto.class)) { + result.add(clazz.cast(new MapDto((Map) item))); + } else { + throw new ClassCastException("Cannot cast " + item.getClass() + " to " + clazz); + } + } + return result; + } } 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 ef61e70..041cf3f 100644 --- a/src/main/java/io/company/localhost/controller/api/VacationController.java +++ b/src/main/java/io/company/localhost/controller/api/VacationController.java @@ -33,24 +33,52 @@ public class VacationController { @Member @ParameterCheck @PostMapping - public ApiResponse saveVacations(@RequestBody List map) { - Long user = AuthUtil.getUser().getId(); - for (MapDto request : map) { - String date = request.getString("date"); - String type = request.getString("type"); - Object receiverId = request.get("receiverId"); - - if ( date == null || type == null) { - throw new IllegalArgumentException("요청 데이터에 누락된 값이 있습니다: " + request); + public ApiResponse saveVacations(@RequestBody List list) { + Long user = AuthUtil.getUser().getId(); + for (MapDto request : list) { + String date = request.getString("date"); + String type = request.getString("type"); + Object receiverId = request.get("receiverId"); + request.put("employeeId", user); + + if (date == null || type == null) { + throw new IllegalArgumentException("요청 데이터에 누락된 값이 있습니다: " + request); + } + + // count 필드가 있으면, 해당 값만큼 반복해서 insert + Integer count = request.getInt("count"); + if (count == null || count < 1) { + count = 1; + } + for (int i = 0; i < count; i++) { + localVacaService.insertVacation(request); + } } - request.put("employeeId", user); - // 데이터 저장 - localVacaService.insertVacation(request); + return ApiResponse.ok("모든 휴가가 성공적으로 저장되었습니다."); } - return ApiResponse.ok("모든 휴가가 성공적으로 저장되었습니다."); + @Member + @ParameterCheck + @PostMapping("/batchUpdate") + public ApiResponse batchUpdateVacations(@ReqMap MapDto map) { + Long user = AuthUtil.getUser().getId(); + List addRequests = map.getList("add", MapDto.class); + List deleteIds = map.getList("delete", Long.class); + + if (addRequests != null) { + for (MapDto addRequest : addRequests) { + addRequest.put("employeeId", user); + localVacaService.insertVacation(addRequest); + } + } + if (deleteIds != null) { + for (Long deleteId : deleteIds) { + localVacaService.deleteVacation(deleteId); + } + } + return ApiResponse.ok("휴가 변경이 성공적으로 처리되었습니다."); } - + /** * 특정 연월에 대한 휴가 데이터 조회 */ diff --git a/src/main/java/io/company/localhost/mapper/localvacaMapper.java b/src/main/java/io/company/localhost/mapper/localvacaMapper.java index 6b4779e..00b8fb1 100644 --- a/src/main/java/io/company/localhost/mapper/localvacaMapper.java +++ b/src/main/java/io/company/localhost/mapper/localvacaMapper.java @@ -12,6 +12,8 @@ import io.company.localhost.common.dto.MapDto; public interface localvacaMapper { void insertVacation(MapDto map); + void deleteVacation(Long vacationId); + List findVacations(@Param("year") int year, @Param("month") int month); List getUsedVacations(@Param("userId") Long userId); diff --git a/src/main/java/io/company/localhost/service/localvacaService.java b/src/main/java/io/company/localhost/service/localvacaService.java index 39ebedd..bdc2350 100644 --- a/src/main/java/io/company/localhost/service/localvacaService.java +++ b/src/main/java/io/company/localhost/service/localvacaService.java @@ -34,8 +34,13 @@ public class localvacaService { @Value("${api.public-holiday.key}") private String serviceKey; - public void insertVacation(MapDto map) { - localvacaMapper.insertVacation(map); + public void insertVacation(MapDto vacation) { + // 필요한 경우 데이터 검증/전처리 후 매퍼 호출 + localvacaMapper.insertVacation(vacation); + } + + public void deleteVacation(Long vacationId) { + localvacaMapper.deleteVacation(vacationId); } public List getVacationList(int year, int month) { diff --git a/src/main/resources/mapper/localvacaMapper.xml b/src/main/resources/mapper/localvacaMapper.xml index 879936b..88a948d 100644 --- a/src/main/resources/mapper/localvacaMapper.xml +++ b/src/main/resources/mapper/localvacaMapper.xml @@ -8,9 +8,15 @@ VALUES (#{employeeId}, #{date}, #{type}, NOW(), #{receiverId}) + + + DELETE FROM localvaca + WHERE LOCVACSEQ = #{vacationId} + + From 51c2eb8f01e74b38ce577f08d1f28d3420e89289 Mon Sep 17 00:00:00 2001 From: nevermoregb Date: Fri, 21 Feb 2025 09:04:27 +0900 Subject: [PATCH 10/10] =?UTF-8?q?=EB=8C=80=EB=8C=93=EA=B8=80=20mapper=20?= =?UTF-8?q?=EB=A7=A4=ED=95=91=20=EC=88=98=EC=A0=95(=EA=B8=B0=EC=A1=B4:boar?= =?UTF-8?q?dMapper.selectCommets=20->=20boardMapper.selectREply)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/io/company/localhost/service/localbordService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/io/company/localhost/service/localbordService.java b/src/main/java/io/company/localhost/service/localbordService.java index 2998478..298d3ba 100644 --- a/src/main/java/io/company/localhost/service/localbordService.java +++ b/src/main/java/io/company/localhost/service/localbordService.java @@ -122,7 +122,7 @@ public class localbordService { public List selectReply(MapDto map) { - return boardMapper.selectComments(map); + return boardMapper.selectReply(map); } public void insertCommentOrReply(MapDto map) {