From a74b6fc8ed3f9d6155188b73a0ca41e0aac21702 Mon Sep 17 00:00:00 2001 From: common Date: Sat, 22 Feb 2025 00:31:43 +0900 Subject: [PATCH 1/7] 66 --- Jenkinsfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Jenkinsfile b/Jenkinsfile index 08400dd..b0ede86 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -31,7 +31,7 @@ pipeline { ping -n 3 127.0.0.1 > nul echo "copy" - copy /Y /B "build\\libs\\*-plain.war" "C:\\localhost-tomcat\\apache-tomcat-10.1.36-windows-x64\\apache-tomcat-10.1.36\\webapps\\ROOT.war" + copy /Y /B "%WORKSPACE%\\build\\libs\\*-plain.war" "C:\\localhost-tomcat\\apache-tomcat-10.1.36-windows-x64\\apache-tomcat-10.1.36\\webapps\\ROOT.war" ping -n 5 127.0.0.1 > nul echo "start" From 3192db220d0c0d2eb8a69ee9c52ff9ad1dffb4a2 Mon Sep 17 00:00:00 2001 From: dyhj625 Date: Mon, 24 Feb 2025 16:10:05 +0900 Subject: [PATCH 2/7] =?UTF-8?q?=EA=B2=8C=EC=8B=9C=ED=8C=90=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 --- .../company/localhost/controller/api/BoardController.java | 2 -- .../io/company/localhost/service/localbordService.java | 7 +++++-- 2 files changed, 5 insertions(+), 4 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 54605a3..d0257f8 100644 --- a/src/main/java/io/company/localhost/controller/api/BoardController.java +++ b/src/main/java/io/company/localhost/controller/api/BoardController.java @@ -203,8 +203,6 @@ public class BoardController { @ParameterCheck @PostMapping("/{LOCBRDSEQ}/comment") public ApiResponse addCommentOrReply(@ReqMap MapDto map) { - Long userId = AuthUtil.getUser().getId(); - map.put("MEMBERSEQ", userId); if (map.containsKey("LOCCMTPWD") && !map.getString("LOCCMTPWD").trim().isEmpty()) { // 빈 값 체크 String rawPassword = map.getString("LOCCMTPWD"); diff --git a/src/main/java/io/company/localhost/service/localbordService.java b/src/main/java/io/company/localhost/service/localbordService.java index ed4f2d0..7a4b954 100644 --- a/src/main/java/io/company/localhost/service/localbordService.java +++ b/src/main/java/io/company/localhost/service/localbordService.java @@ -134,8 +134,11 @@ public class localbordService { } public void insertCommentOrReply(MapDto map) { - if (map.get("LOCCMTPNT") == null) { - map.put("LOCCMTPNT", null); + if ("300102".equals(String.valueOf(map.get("LOCBRDTYP")))) { + map.put("MEMBERSEQ", null); + }else { + Long userId = AuthUtil.getUser().getId(); + map.put("MEMBERSEQ", userId); } boardMapper.insertCommentOrReply(map); } From 231b763f7c515ff9a0215433074c553e92774dbb Mon Sep 17 00:00:00 2001 From: dyhj625 Date: Tue, 25 Feb 2025 10:50:29 +0900 Subject: [PATCH 3/7] =?UTF-8?q?blob=20=EA=B3=B5=ED=86=B5=EC=9C=BC=EB=A1=9C?= =?UTF-8?q?=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../localhost/service/localbordService.java | 23 ++-------- .../io/company/localhost/utils/BlobUtil.java | 42 +++++++++++++++++++ 2 files changed, 45 insertions(+), 20 deletions(-) create mode 100644 src/main/java/io/company/localhost/utils/BlobUtil.java diff --git a/src/main/java/io/company/localhost/service/localbordService.java b/src/main/java/io/company/localhost/service/localbordService.java index 98b00c8..8e0b1a4 100644 --- a/src/main/java/io/company/localhost/service/localbordService.java +++ b/src/main/java/io/company/localhost/service/localbordService.java @@ -6,6 +6,7 @@ import java.nio.charset.StandardCharsets; import java.util.List; import java.util.Map; import java.util.UUID; +import io.company.localhost.utils.BlobUtil; import org.springframework.stereotype.Service; @@ -196,24 +197,6 @@ public class localbordService { return boardMapper.selectCountCommentReactions(boardId); } - private String procBlobToString(Object blob) { - try { - if (blob instanceof String) { - return (String) blob; // 이미 문자열이면 그대로 반환 - } else if (blob instanceof java.sql.Blob) { - java.sql.Blob sqlBlob = (java.sql.Blob) blob; - long blobLength = sqlBlob.length(); - byte[] blobBytes = sqlBlob.getBytes(1, (int) blobLength); - return new String(blobBytes, StandardCharsets.UTF_8); // SQL BLOB → 바이트 배열 → 문자열 변환 - } else { - throw new UnsupportedOperationException("Unsupported blob type: " + blob.getClass()); // 지원되지 않는 타입이면 예외 발생 - } - } catch (Exception e) { - throw new RuntimeException("Failed to convert Blob to String: " + e.getMessage(), e); // 변환 실패 시 예외 처리 - } - } - - private String procFirstImageUrl(String jsonContent) { try { // JSON 유효성 검사 @@ -292,7 +275,7 @@ public class localbordService { // Blob 데이터를 문자열로 변환 Object content = boardDetail.get("content"); if (content != null) { - String contentString = procBlobToString(content); // Blob을 문자열로 변환 + String contentString = BlobUtil.procBlobToString(content); // Blob을 문자열로 변환 boardDetail.put("content", contentString); // JSON 변환 가능 } } @@ -309,7 +292,7 @@ public class localbordService { post.put("dislikeCount", reactions.getOrDefault("dislikeCount", 0)); Object content = post.get("content"); - String contentString = procBlobToString(content); + String contentString = BlobUtil.procBlobToString(content); post.put("content", contentString); String firstImageUrl = procFirstImageUrl(contentString); diff --git a/src/main/java/io/company/localhost/utils/BlobUtil.java b/src/main/java/io/company/localhost/utils/BlobUtil.java new file mode 100644 index 0000000..4fea605 --- /dev/null +++ b/src/main/java/io/company/localhost/utils/BlobUtil.java @@ -0,0 +1,42 @@ +/************************************************************ + * + * @packageName : io.company.localhost.utils + * @fileName : BlobUtil.java + * @author : 서지희 + * @date : 25.02.25 + * @description : + * + * =========================================================== + * DATE AUTHOR NOTE + * ----------------------------------------------------------- + * 25.02.25 서지희 최초 생성 + * + *************************************************************/ +package io.company.localhost.utils; + +import java.nio.charset.StandardCharsets; +import java.sql.Blob; + +public class BlobUtil { + + private BlobUtil() { + // 객체 생성 방지 (유틸리티 클래스는 인스턴스를 만들 필요가 없음) + } + + public static String procBlobToString(Object blob) { + try { + if (blob instanceof String) { + return (String) blob; // 이미 문자열이면 그대로 반환 + } else if (blob instanceof Blob) { + Blob sqlBlob = (Blob) blob; + long blobLength = sqlBlob.length(); + byte[] blobBytes = sqlBlob.getBytes(1, (int) blobLength); + return new String(blobBytes, StandardCharsets.UTF_8); // SQL BLOB → 바이트 배열 → 문자열 변환 + } else { + throw new UnsupportedOperationException("Unsupported blob type: " + blob.getClass()); // 지원되지 않는 타입이면 예외 발생 + } + } catch (Exception e) { + throw new RuntimeException("Failed to convert Blob to String: " + e.getMessage(), e); // 변환 실패 시 예외 처리 + } + } +} From 17552d08675d6aba76550b390d2fc354dc4d28c2 Mon Sep 17 00:00:00 2001 From: khj0414 Date: Tue, 25 Feb 2025 13:20:13 +0900 Subject: [PATCH 4/7] =?UTF-8?q?=EC=9A=A9=EC=96=B4=EC=A7=91=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20BlobUtil=20=EC=B6=94=E3=85=8F=E3=84=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/api/worddictController.java | 2 +- .../localhost/service/worddictyService.java | 21 +++++++------------ 2 files changed, 8 insertions(+), 15 deletions(-) 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 3748e29..4e72679 100644 --- a/src/main/java/io/company/localhost/controller/api/worddictController.java +++ b/src/main/java/io/company/localhost/controller/api/worddictController.java @@ -89,7 +89,7 @@ public class worddictController { } /** * 용어 등록 - 카테고리 등록 - * @param WRDDICCAT 카테고리 코드값 ,WRDDICTTL 용어,WRDDICCON 내용 ,WRDDICRIK 링크 ,CMNCODNAM 추가 등록 카테고리 이름 + * @param WRDDICCAT 카테고리 코드값 ,WRDDICTTL 용어,WRDDICCON 내용 ,WRDDICRIK 링크 ,CMNCODNAM 추가 등록 카테고리 이름 * @return */ @Member diff --git a/src/main/java/io/company/localhost/service/worddictyService.java b/src/main/java/io/company/localhost/service/worddictyService.java index fddf11e..b794b46 100644 --- a/src/main/java/io/company/localhost/service/worddictyService.java +++ b/src/main/java/io/company/localhost/service/worddictyService.java @@ -23,6 +23,7 @@ import org.springframework.stereotype.Service; import io.company.localhost.common.dto.MapDto; import io.company.localhost.mapper.commoncodMapper; import io.company.localhost.mapper.worddictyMapper; +import io.company.localhost.utils.BlobUtil; import lombok.RequiredArgsConstructor; @Service @@ -32,9 +33,14 @@ public class worddictyService { private final worddictyMapper worddictymapper; private final commoncodMapper commoncodmapper; - public List getWordList(MapDto map) { List wordList = worddictymapper.getWordList(map); + for (MapDto word : wordList) { + Object content = word.get("WRDDICCON"); + // BlobUtil.procBlobToString으로 content 변환 + String contentString = BlobUtil.procBlobToString(content); + word.put("WRDDICCON", contentString); + } List processedList = new ArrayList<>(); // 데이터 가공 @@ -60,7 +66,6 @@ public class worddictyService { } return processedList; } - public Long insertWord(MapDto map) { if (map.containsKey("CMNCODNAM") && map.get("CMNCODNAM") != null) { @@ -68,28 +73,16 @@ public class worddictyService { } return worddictymapper.insertWord(map); } - public Long updateWord(MapDto map) { return worddictymapper.updateWord(map); } - public MapDto getWordDetail(MapDto map) { return worddictymapper.getWordDetail(map); } - public int getTotal(MapDto map) { return worddictymapper.getTotal(map); } - - public Long updateword(MapDto map) { return worddictymapper.updateword(map); } - - - - - - - } From ec5dd31c0dc8d62bb789d723e6ff3e8d829f0552 Mon Sep 17 00:00:00 2001 From: yoon Date: Tue, 25 Feb 2025 13:36:04 +0900 Subject: [PATCH 5/7] . --- src/main/resources/mapper/NetmemberMapper.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/resources/mapper/NetmemberMapper.xml b/src/main/resources/mapper/NetmemberMapper.xml index 7307fcf..f57d8cd 100644 --- a/src/main/resources/mapper/NetmemberMapper.xml +++ b/src/main/resources/mapper/NetmemberMapper.xml @@ -145,5 +145,4 @@ m.MEMBERLEA ="N" - From 54bb4d4cc973df8ebc317343d10b94fc5c5f84b0 Mon Sep 17 00:00:00 2001 From: yoon Date: Tue, 25 Feb 2025 13:37:02 +0900 Subject: [PATCH 6/7] . --- src/main/resources/mapper/NetprojctMapper.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/resources/mapper/NetprojctMapper.xml b/src/main/resources/mapper/NetprojctMapper.xml index a20e6c7..0c25047 100644 --- a/src/main/resources/mapper/NetprojctMapper.xml +++ b/src/main/resources/mapper/NetprojctMapper.xml @@ -92,5 +92,4 @@ WHERE PROJCTSEQ = #{projctSeq} - From 11f1503d1e859884fbe02279cd656dec495f1fb2 Mon Sep 17 00:00:00 2001 From: dyhj625 Date: Thu, 27 Feb 2025 13:07:25 +0900 Subject: [PATCH 7/7] =?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} - +