From b243294dca12299953874071d926b24e0f97350c Mon Sep 17 00:00:00 2001 From: Chan531 Date: Mon, 3 Mar 2025 17:53:38 +0900 Subject: [PATCH 01/22] =?UTF-8?q?[CHORE]=20dto=EB=AA=85=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 --- .../server/external/controller/FileHandlerController.java | 6 +++--- .../external/controller/docs/FileHandlerControllerDocs.java | 4 ++-- ...tPreSignedUrlResponse.java => PreSignedUrlResponse.java} | 6 +++--- .../tiki/server/external/service/FileHandlerService.java | 4 ++-- src/main/java/com/tiki/server/external/util/AwsHandler.java | 6 +++--- 5 files changed, 13 insertions(+), 13 deletions(-) rename src/main/java/com/tiki/server/external/dto/response/{PutObjectPreSignedUrlResponse.java => PreSignedUrlResponse.java} (61%) diff --git a/src/main/java/com/tiki/server/external/controller/FileHandlerController.java b/src/main/java/com/tiki/server/external/controller/FileHandlerController.java index f2293a30..78281252 100644 --- a/src/main/java/com/tiki/server/external/controller/FileHandlerController.java +++ b/src/main/java/com/tiki/server/external/controller/FileHandlerController.java @@ -17,7 +17,7 @@ import com.tiki.server.common.dto.SuccessResponse; import com.tiki.server.external.controller.docs.FileHandlerControllerDocs; import com.tiki.server.external.dto.request.S3DeleteRequest; -import com.tiki.server.external.dto.response.PutObjectPreSignedUrlResponse; +import com.tiki.server.external.dto.response.PreSignedUrlResponse; import lombok.RequiredArgsConstructor; @@ -31,9 +31,9 @@ public class FileHandlerController implements FileHandlerControllerDocs { @Override @ResponseStatus(HttpStatus.OK) @GetMapping("/upload") - public SuccessResponse getPreSignedUrl( + public SuccessResponse getPreSignedUrl( @RequestParam final String fileFormat) { - PutObjectPreSignedUrlResponse response = fileHandlerService.getUploadPreSignedUrl(fileFormat); + PreSignedUrlResponse response = fileHandlerService.getUploadPreSignedUrl(fileFormat); return SuccessResponse.success(PRESIGNED_URL_GET_SUCCESS.getMessage(), response); } diff --git a/src/main/java/com/tiki/server/external/controller/docs/FileHandlerControllerDocs.java b/src/main/java/com/tiki/server/external/controller/docs/FileHandlerControllerDocs.java index 20da8e8a..c6c1e387 100644 --- a/src/main/java/com/tiki/server/external/controller/docs/FileHandlerControllerDocs.java +++ b/src/main/java/com/tiki/server/external/controller/docs/FileHandlerControllerDocs.java @@ -6,7 +6,7 @@ import com.tiki.server.common.dto.ErrorResponse; import com.tiki.server.common.dto.SuccessResponse; import com.tiki.server.external.dto.request.S3DeleteRequest; -import com.tiki.server.external.dto.response.PutObjectPreSignedUrlResponse; +import com.tiki.server.external.dto.response.PreSignedUrlResponse; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; @@ -33,7 +33,7 @@ public interface FileHandlerControllerDocs { description = "S3 PRESIGNED URL 불러오기 실패", content = @Content(schema = @Schema(implementation = ErrorResponse.class)))} ) - SuccessResponse getPreSignedUrl( + SuccessResponse getPreSignedUrl( @Parameter( name = "fileFormat", description = "파일 형식", diff --git a/src/main/java/com/tiki/server/external/dto/response/PutObjectPreSignedUrlResponse.java b/src/main/java/com/tiki/server/external/dto/response/PreSignedUrlResponse.java similarity index 61% rename from src/main/java/com/tiki/server/external/dto/response/PutObjectPreSignedUrlResponse.java rename to src/main/java/com/tiki/server/external/dto/response/PreSignedUrlResponse.java index 4ce4abde..8cc6c9ef 100644 --- a/src/main/java/com/tiki/server/external/dto/response/PutObjectPreSignedUrlResponse.java +++ b/src/main/java/com/tiki/server/external/dto/response/PreSignedUrlResponse.java @@ -6,13 +6,13 @@ import lombok.Builder; @Builder(access = PRIVATE) -public record PutObjectPreSignedUrlResponse( +public record PreSignedUrlResponse( @NotNull String fileName, @NotNull String url ) { - public static PutObjectPreSignedUrlResponse of(final String fileName, final String url) { - return PutObjectPreSignedUrlResponse.builder() + public static PreSignedUrlResponse of(final String fileName, final String url) { + return PreSignedUrlResponse.builder() .fileName(fileName) .url(url) .build(); diff --git a/src/main/java/com/tiki/server/external/service/FileHandlerService.java b/src/main/java/com/tiki/server/external/service/FileHandlerService.java index f93abd31..ab227dbc 100644 --- a/src/main/java/com/tiki/server/external/service/FileHandlerService.java +++ b/src/main/java/com/tiki/server/external/service/FileHandlerService.java @@ -1,7 +1,7 @@ package com.tiki.server.external.service; import com.tiki.server.external.dto.request.S3DeleteRequest; -import com.tiki.server.external.dto.response.PutObjectPreSignedUrlResponse; +import com.tiki.server.external.dto.response.PreSignedUrlResponse; import com.tiki.server.external.util.AwsHandler; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; @@ -12,7 +12,7 @@ public class FileHandlerService { private final AwsHandler awsHandler; - public PutObjectPreSignedUrlResponse getUploadPreSignedUrl(final String fileFormat) { + public PreSignedUrlResponse getUploadPreSignedUrl(final String fileFormat) { return awsHandler.getUploadPreSignedUrl(fileFormat); } diff --git a/src/main/java/com/tiki/server/external/util/AwsHandler.java b/src/main/java/com/tiki/server/external/util/AwsHandler.java index 200bdcb4..67e8186e 100644 --- a/src/main/java/com/tiki/server/external/util/AwsHandler.java +++ b/src/main/java/com/tiki/server/external/util/AwsHandler.java @@ -12,7 +12,7 @@ import org.springframework.stereotype.Component; import com.tiki.server.external.config.AWSConfig; -import com.tiki.server.external.dto.response.PutObjectPreSignedUrlResponse; +import com.tiki.server.external.dto.response.PreSignedUrlResponse; import com.tiki.server.external.exception.ExternalException; import lombok.RequiredArgsConstructor; @@ -33,7 +33,7 @@ public class AwsHandler { @Value("${aws-property.bucket}") private String bucket; - public PutObjectPreSignedUrlResponse getUploadPreSignedUrl(final String fileFormat) { + public PreSignedUrlResponse getUploadPreSignedUrl(final String fileFormat) { try { String fileName = generateFileName(fileFormat); String key = FILE_SAVE_PREFIX + fileName; @@ -41,7 +41,7 @@ public PutObjectPreSignedUrlResponse getUploadPreSignedUrl(final String fileForm PutObjectRequest putObjectRequest = createPutObjectRequest(key); PutObjectPresignRequest putObjectPresignRequest = createPutObjectPresignRequest(putObjectRequest); String url = preSigner.presignPutObject(putObjectPresignRequest).url().toString(); - return PutObjectPreSignedUrlResponse.of(fileName, url); + return PreSignedUrlResponse.of(fileName, url); } catch (RuntimeException e) { throw new ExternalException(PRESIGNED_URL_GET_ERROR); } From c30db20f491ba885943db5897397714d0e03661a Mon Sep 17 00:00:00 2001 From: Chan531 Date: Mon, 3 Mar 2025 17:54:20 +0900 Subject: [PATCH 02/22] =?UTF-8?q?[CHORE]=20dto=EA=B0=92=20fileName?= =?UTF-8?q?=EC=97=90=EC=84=9C=20fileKey=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../server/external/dto/response/PreSignedUrlResponse.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/tiki/server/external/dto/response/PreSignedUrlResponse.java b/src/main/java/com/tiki/server/external/dto/response/PreSignedUrlResponse.java index 8cc6c9ef..db82b2b2 100644 --- a/src/main/java/com/tiki/server/external/dto/response/PreSignedUrlResponse.java +++ b/src/main/java/com/tiki/server/external/dto/response/PreSignedUrlResponse.java @@ -7,13 +7,13 @@ @Builder(access = PRIVATE) public record PreSignedUrlResponse( - @NotNull String fileName, + @NotNull String fileKey, @NotNull String url ) { - public static PreSignedUrlResponse of(final String fileName, final String url) { + public static PreSignedUrlResponse of(final String fileKey, final String url) { return PreSignedUrlResponse.builder() - .fileName(fileName) + .fileKey(fileKey) .url(url) .build(); } From 795052d37e859ddfece9a00a06a1fd7fa1397d07 Mon Sep 17 00:00:00 2001 From: Chan531 Date: Mon, 3 Mar 2025 17:56:05 +0900 Subject: [PATCH 03/22] =?UTF-8?q?[REFACTOR]=20=ED=8C=8C=EC=9D=BC=20?= =?UTF-8?q?=ED=82=A4=EB=A5=BC=20=EC=83=9D=EC=84=B1=ED=95=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EB=A9=94=EC=86=8C=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/tiki/server/external/util/AwsHandler.java | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/tiki/server/external/util/AwsHandler.java b/src/main/java/com/tiki/server/external/util/AwsHandler.java index 67e8186e..c573c04a 100644 --- a/src/main/java/com/tiki/server/external/util/AwsHandler.java +++ b/src/main/java/com/tiki/server/external/util/AwsHandler.java @@ -35,8 +35,7 @@ public class AwsHandler { public PreSignedUrlResponse getUploadPreSignedUrl(final String fileFormat) { try { - String fileName = generateFileName(fileFormat); - String key = FILE_SAVE_PREFIX + fileName; + String key = generateFileKey(fileFormat); S3Presigner preSigner = awsConfig.getS3PreSigner(); PutObjectRequest putObjectRequest = createPutObjectRequest(key); PutObjectPresignRequest putObjectPresignRequest = createPutObjectPresignRequest(putObjectRequest); @@ -99,7 +98,7 @@ private GetObjectPresignRequest createGetObjectPresignRequest(final GetObjectReq .build(); } - private String generateFileName(final String fileFormat) { - return UUID.randomUUID() + FILE_DELIMITER + fileFormat; + private String generateFileKey(final String fileFormat) { + return FILE_SAVE_PREFIX + UUID.randomUUID() + FILE_DELIMITER + fileFormat; } } From a25082e642704bbdbd2f31fb87e6ab89f49dbafa Mon Sep 17 00:00:00 2001 From: Chan531 Date: Mon, 3 Mar 2025 17:56:21 +0900 Subject: [PATCH 04/22] =?UTF-8?q?[CHORE]=20dto=20=ED=8C=8C=EB=9D=BC?= =?UTF-8?q?=EB=AF=B8=ED=84=B0=EB=A1=9C=20key=20=EC=A0=84=EB=8B=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/tiki/server/external/util/AwsHandler.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/tiki/server/external/util/AwsHandler.java b/src/main/java/com/tiki/server/external/util/AwsHandler.java index c573c04a..3a6f1c67 100644 --- a/src/main/java/com/tiki/server/external/util/AwsHandler.java +++ b/src/main/java/com/tiki/server/external/util/AwsHandler.java @@ -40,7 +40,7 @@ public PreSignedUrlResponse getUploadPreSignedUrl(final String fileFormat) { PutObjectRequest putObjectRequest = createPutObjectRequest(key); PutObjectPresignRequest putObjectPresignRequest = createPutObjectPresignRequest(putObjectRequest); String url = preSigner.presignPutObject(putObjectPresignRequest).url().toString(); - return PreSignedUrlResponse.of(fileName, url); + return PreSignedUrlResponse.of(key, url); } catch (RuntimeException e) { throw new ExternalException(PRESIGNED_URL_GET_ERROR); } From 27025492cedb3420fcb2d27235f2ad821b9232a6 Mon Sep 17 00:00:00 2001 From: Chan531 Date: Mon, 3 Mar 2025 17:58:26 +0900 Subject: [PATCH 05/22] =?UTF-8?q?[CHORE]=20=ED=8C=8C=EC=9D=BC=20=EC=83=9D?= =?UTF-8?q?=EC=84=B1=20dto=20fileUrl=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tiki/server/document/dto/request/DocumentCreateRequest.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/com/tiki/server/document/dto/request/DocumentCreateRequest.java b/src/main/java/com/tiki/server/document/dto/request/DocumentCreateRequest.java index 53a7f24a..2fec66dc 100644 --- a/src/main/java/com/tiki/server/document/dto/request/DocumentCreateRequest.java +++ b/src/main/java/com/tiki/server/document/dto/request/DocumentCreateRequest.java @@ -6,8 +6,6 @@ public record DocumentCreateRequest( @Schema(description = "파일 이름", example = "tiki.jpg") @NotNull String fileName, - @Schema(description = "파일 url", example = "https://.../tiki.jpg") - @NotNull String fileUrl, @Schema(description = "파일 key", example = "....jpg") @NotNull String fileKey, @Schema(description = "파일 용량 (단위 : byte)", example = "123") From 36b49d5ffef37ae6d3028ac5c68ee17c908feaf7 Mon Sep 17 00:00:00 2001 From: Chan531 Date: Mon, 3 Mar 2025 17:58:56 +0900 Subject: [PATCH 06/22] =?UTF-8?q?[REFACTOR]=20Document=20fileUrl=20?= =?UTF-8?q?=EC=BB=AC=EB=9F=BC=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/com/tiki/server/document/entity/Document.java | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/main/java/com/tiki/server/document/entity/Document.java b/src/main/java/com/tiki/server/document/entity/Document.java index dd5389f8..07ff732b 100644 --- a/src/main/java/com/tiki/server/document/entity/Document.java +++ b/src/main/java/com/tiki/server/document/entity/Document.java @@ -31,9 +31,6 @@ public class Document extends BaseTime { @Column(nullable = false) private String fileName; - @Column(nullable = false) - private String fileUrl; - @Column(nullable = false) private String fileKey; @@ -48,7 +45,6 @@ public class Document extends BaseTime { public static Document of(final DocumentCreateRequest request, final long teamId, final Long folderId) { return Document.builder() .fileName(request.fileName()) - .fileUrl(request.fileUrl()) .capacity(request.capacity()) .fileKey(request.fileKey()) .teamId(teamId) @@ -59,7 +55,6 @@ public static Document of(final DocumentCreateRequest request, final long teamId public static Document restore(final DeletedDocument deletedDocument) { return Document.builder() .fileName(deletedDocument.getFileName()) - .fileUrl(deletedDocument.getFileUrl()) .capacity(deletedDocument.getCapacity()) .fileKey(deletedDocument.getFileKey()) .teamId(deletedDocument.getTeamId()) From 5e387b0d73f243f84d398bc1ec8d76c656d578d0 Mon Sep 17 00:00:00 2001 From: Chan531 Date: Mon, 3 Mar 2025 17:59:08 +0900 Subject: [PATCH 07/22] =?UTF-8?q?[REFACTOR]=20DeletedDocument=20fileUrl=20?= =?UTF-8?q?=EC=BB=AC=EB=9F=BC=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/tiki/server/document/entity/DeletedDocument.java | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/main/java/com/tiki/server/document/entity/DeletedDocument.java b/src/main/java/com/tiki/server/document/entity/DeletedDocument.java index d50d5a38..e7e56e4b 100644 --- a/src/main/java/com/tiki/server/document/entity/DeletedDocument.java +++ b/src/main/java/com/tiki/server/document/entity/DeletedDocument.java @@ -30,9 +30,6 @@ public class DeletedDocument extends BaseTime { @Column(nullable = false) private String fileName; - @Column(nullable = false) - private String fileUrl; - @Column(nullable = false) private String fileKey; @@ -45,7 +42,6 @@ public class DeletedDocument extends BaseTime { public static DeletedDocument of(final Document document) { return DeletedDocument.builder() .fileName(document.getFileName()) - .fileUrl(document.getFileUrl()) .fileKey(document.getFileKey()) .teamId(document.getTeamId()) .capacity(document.getCapacity()) From 87d03f1f0c532fcf53595af017e8e6ede350aa3a Mon Sep 17 00:00:00 2001 From: Chan531 Date: Mon, 3 Mar 2025 18:04:07 +0900 Subject: [PATCH 08/22] =?UTF-8?q?[REFACTOR]=20=EB=B3=80=EC=88=98=EB=AA=85?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit List에서 복수형으로 수정 --- .../java/com/tiki/server/note/service/NoteService.java | 9 +++++---- .../dto/response/NoteFreeDetailGetServiceResponse.java | 8 ++++---- .../response/NoteTemplateDetailGetServiceResponse.java | 8 ++++---- 3 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/tiki/server/note/service/NoteService.java b/src/main/java/com/tiki/server/note/service/NoteService.java index 8b5c46ce..3c75dc1c 100644 --- a/src/main/java/com/tiki/server/note/service/NoteService.java +++ b/src/main/java/com/tiki/server/note/service/NoteService.java @@ -3,6 +3,7 @@ import com.tiki.server.common.entity.SortOrder; import com.tiki.server.common.util.ContentEncoder; import com.tiki.server.document.adapter.DocumentFinder; +import com.tiki.server.document.dto.response.DocumentResponse; import com.tiki.server.document.entity.Document; import com.tiki.server.memberteammanager.adapter.MemberTeamManagerFinder; import com.tiki.server.note.adapter.NoteDeleter; @@ -147,12 +148,12 @@ public NoteListGetServiceResponse getNote( public NoteDetailGetServiceResponse getNoteDetail(final long teamId, final long memberId, final long noteId) { memberTeamManagerFinder.findByMemberIdAndTeamId(memberId, teamId); Note note = noteFinder.findById(noteId); - List documentList = getDocumentListMappedByNote(noteId); - List timeBlockList = getTimeBlocksMappedByNote(noteId); + List documents = getDocumentListMappedByNote(noteId); + List timeBlocks = getTimeBlocksMappedByNote(noteId); String memberName = getMemberName(note.getMemberId(), teamId); return note.getNoteType() == NoteType.FREE - ? NoteFreeDetailGetServiceResponse.of(note, memberName, documentList, timeBlockList) - : NoteTemplateDetailGetServiceResponse.of(note, memberName, documentList, timeBlockList); + ? NoteFreeDetailGetServiceResponse.of(note, memberName, documents, timeBlocks) + : NoteTemplateDetailGetServiceResponse.of(note, memberName, documents, timeBlocks); } private String getMemberName(final Long noteMemberId, final long teamId) { diff --git a/src/main/java/com/tiki/server/note/service/dto/response/NoteFreeDetailGetServiceResponse.java b/src/main/java/com/tiki/server/note/service/dto/response/NoteFreeDetailGetServiceResponse.java index 2266832f..704086ba 100644 --- a/src/main/java/com/tiki/server/note/service/dto/response/NoteFreeDetailGetServiceResponse.java +++ b/src/main/java/com/tiki/server/note/service/dto/response/NoteFreeDetailGetServiceResponse.java @@ -29,8 +29,8 @@ public record NoteFreeDetailGetServiceResponse( public static NoteFreeDetailGetServiceResponse of( final Note note, final String author, - final List documentList, - final List timeBlockList + final List documents, + final List timeBlocks ) { return new NoteFreeDetailGetServiceResponse( note.getId(), @@ -41,8 +41,8 @@ public static NoteFreeDetailGetServiceResponse of( note.getEndDate(), note.isComplete(), ContentDecoder.decodeNoteFree(note.getContents()), - documentList.stream().map(DocumentTagGetServiceResponse::from).toList(), - timeBlockList.stream().map(TimeBlockTagServiceResponse::from).toList() + documents.stream().map(DocumentTagGetServiceResponse::from).toList(), + timeBlocks.stream().map(TimeBlockTagServiceResponse::from).toList() ); } } diff --git a/src/main/java/com/tiki/server/note/service/dto/response/NoteTemplateDetailGetServiceResponse.java b/src/main/java/com/tiki/server/note/service/dto/response/NoteTemplateDetailGetServiceResponse.java index 7f252024..e661d02b 100644 --- a/src/main/java/com/tiki/server/note/service/dto/response/NoteTemplateDetailGetServiceResponse.java +++ b/src/main/java/com/tiki/server/note/service/dto/response/NoteTemplateDetailGetServiceResponse.java @@ -32,8 +32,8 @@ public record NoteTemplateDetailGetServiceResponse( public static NoteTemplateDetailGetServiceResponse of( final Note note, final String author, - final List documentList, - final List timeBlockList + final List documents, + final List timeBlocks ) { List contents = ContentDecoder.decodeNoteTemplate(note.getContents()); return new NoteTemplateDetailGetServiceResponse( @@ -48,8 +48,8 @@ public static NoteTemplateDetailGetServiceResponse of( contents.get(1), contents.get(2), contents.get(3), - documentList.stream().map(DocumentTagGetServiceResponse::from).toList(), - timeBlockList.stream().map(TimeBlockTagServiceResponse::from).toList() + documents.stream().map(DocumentTagGetServiceResponse::from).toList(), + timeBlocks.stream().map(TimeBlockTagServiceResponse::from).toList() ); } } From 4ae3d8b9cd84e784d4c7cc626b8b94e205016dc2 Mon Sep 17 00:00:00 2001 From: Chan531 Date: Mon, 3 Mar 2025 18:09:41 +0900 Subject: [PATCH 09/22] =?UTF-8?q?[FEAT]=20PresignedUrl=20=EB=B3=80?= =?UTF-8?q?=ED=99=98=20=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/tiki/server/note/service/NoteService.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/tiki/server/note/service/NoteService.java b/src/main/java/com/tiki/server/note/service/NoteService.java index 3c75dc1c..653cfb08 100644 --- a/src/main/java/com/tiki/server/note/service/NoteService.java +++ b/src/main/java/com/tiki/server/note/service/NoteService.java @@ -5,6 +5,7 @@ import com.tiki.server.document.adapter.DocumentFinder; import com.tiki.server.document.dto.response.DocumentResponse; import com.tiki.server.document.entity.Document; +import com.tiki.server.external.util.AwsHandler; import com.tiki.server.memberteammanager.adapter.MemberTeamManagerFinder; import com.tiki.server.note.adapter.NoteDeleter; import com.tiki.server.note.adapter.NoteFinder; @@ -53,6 +54,7 @@ public class NoteService { private final NDDeleter ndDeleter; private final TimeBlockFinder timeBlockFinder; private final DocumentFinder documentFinder; + private final AwsHandler awsHandler; @Transactional public NoteCreateServiceResponse createNoteFree(final NoteFreeCreateServiceRequest request) { @@ -149,11 +151,14 @@ public NoteDetailGetServiceResponse getNoteDetail(final long teamId, final long memberTeamManagerFinder.findByMemberIdAndTeamId(memberId, teamId); Note note = noteFinder.findById(noteId); List documents = getDocumentListMappedByNote(noteId); + List responses = documents.stream() + .map(document -> DocumentResponse.of(document, awsHandler.getDownloadPreSignedUrl(document.getFileKey()))) + .toList(); List timeBlocks = getTimeBlocksMappedByNote(noteId); String memberName = getMemberName(note.getMemberId(), teamId); return note.getNoteType() == NoteType.FREE - ? NoteFreeDetailGetServiceResponse.of(note, memberName, documents, timeBlocks) - : NoteTemplateDetailGetServiceResponse.of(note, memberName, documents, timeBlocks); + ? NoteFreeDetailGetServiceResponse.of(note, memberName, responses, timeBlocks) + : NoteTemplateDetailGetServiceResponse.of(note, memberName, responses, timeBlocks); } private String getMemberName(final Long noteMemberId, final long teamId) { From 6195e3c67140e8fa404e681fba9d1da4ce5f487c Mon Sep 17 00:00:00 2001 From: Chan531 Date: Mon, 3 Mar 2025 18:09:49 +0900 Subject: [PATCH 10/22] =?UTF-8?q?[CHORE]=20=ED=8C=8C=EB=9D=BC=EB=AF=B8?= =?UTF-8?q?=ED=84=B0=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/response/DocumentTagGetServiceResponse.java | 12 ++++++------ .../response/NoteFreeDetailGetServiceResponse.java | 3 ++- .../NoteTemplateDetailGetServiceResponse.java | 3 ++- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/tiki/server/document/service/dto/response/DocumentTagGetServiceResponse.java b/src/main/java/com/tiki/server/document/service/dto/response/DocumentTagGetServiceResponse.java index bbbe4332..caa7e3bb 100644 --- a/src/main/java/com/tiki/server/document/service/dto/response/DocumentTagGetServiceResponse.java +++ b/src/main/java/com/tiki/server/document/service/dto/response/DocumentTagGetServiceResponse.java @@ -1,6 +1,6 @@ package com.tiki.server.document.service.dto.response; -import com.tiki.server.document.entity.Document; +import com.tiki.server.document.dto.response.DocumentResponse; import jakarta.validation.constraints.NotNull; @@ -11,11 +11,11 @@ public record DocumentTagGetServiceResponse( @NotNull long capacity ) { - public static DocumentTagGetServiceResponse from(final Document document) { + public static DocumentTagGetServiceResponse from(final DocumentResponse document) { return new DocumentTagGetServiceResponse( - document.getId(), - document.getFileName(), - document.getFileUrl(), - document.getCapacity()); + document.documentId(), + document.name(), + document.url(), + document.capacity()); } } \ No newline at end of file diff --git a/src/main/java/com/tiki/server/note/service/dto/response/NoteFreeDetailGetServiceResponse.java b/src/main/java/com/tiki/server/note/service/dto/response/NoteFreeDetailGetServiceResponse.java index 704086ba..b564b3e8 100644 --- a/src/main/java/com/tiki/server/note/service/dto/response/NoteFreeDetailGetServiceResponse.java +++ b/src/main/java/com/tiki/server/note/service/dto/response/NoteFreeDetailGetServiceResponse.java @@ -1,6 +1,7 @@ package com.tiki.server.note.service.dto.response; import com.tiki.server.common.util.ContentDecoder; +import com.tiki.server.document.dto.response.DocumentResponse; import com.tiki.server.document.entity.Document; import com.tiki.server.document.service.dto.response.DocumentTagGetServiceResponse; import com.tiki.server.note.entity.Note; @@ -29,7 +30,7 @@ public record NoteFreeDetailGetServiceResponse( public static NoteFreeDetailGetServiceResponse of( final Note note, final String author, - final List documents, + final List documents, final List timeBlocks ) { return new NoteFreeDetailGetServiceResponse( diff --git a/src/main/java/com/tiki/server/note/service/dto/response/NoteTemplateDetailGetServiceResponse.java b/src/main/java/com/tiki/server/note/service/dto/response/NoteTemplateDetailGetServiceResponse.java index e661d02b..cffd0f1a 100644 --- a/src/main/java/com/tiki/server/note/service/dto/response/NoteTemplateDetailGetServiceResponse.java +++ b/src/main/java/com/tiki/server/note/service/dto/response/NoteTemplateDetailGetServiceResponse.java @@ -1,6 +1,7 @@ package com.tiki.server.note.service.dto.response; import com.tiki.server.common.util.ContentDecoder; +import com.tiki.server.document.dto.response.DocumentResponse; import com.tiki.server.document.entity.Document; import com.tiki.server.document.service.dto.response.DocumentTagGetServiceResponse; import com.tiki.server.note.entity.Note; @@ -32,7 +33,7 @@ public record NoteTemplateDetailGetServiceResponse( public static NoteTemplateDetailGetServiceResponse of( final Note note, final String author, - final List documents, + final List documents, final List timeBlocks ) { List contents = ContentDecoder.decodeNoteTemplate(note.getContents()); From 10175d3be61d6ec437ce8bacd3874590bee54f5e Mon Sep 17 00:00:00 2001 From: Chan531 Date: Mon, 3 Mar 2025 18:10:34 +0900 Subject: [PATCH 11/22] =?UTF-8?q?[REFACTOR]=20=EB=B3=80=EC=88=98=EB=AA=85?= =?UTF-8?q?=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit List에서 복수형으로 수정 --- src/main/java/com/tiki/server/note/service/NoteService.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/tiki/server/note/service/NoteService.java b/src/main/java/com/tiki/server/note/service/NoteService.java index 653cfb08..c5f87d58 100644 --- a/src/main/java/com/tiki/server/note/service/NoteService.java +++ b/src/main/java/com/tiki/server/note/service/NoteService.java @@ -150,7 +150,7 @@ public NoteListGetServiceResponse getNote( public NoteDetailGetServiceResponse getNoteDetail(final long teamId, final long memberId, final long noteId) { memberTeamManagerFinder.findByMemberIdAndTeamId(memberId, teamId); Note note = noteFinder.findById(noteId); - List documents = getDocumentListMappedByNote(noteId); + List documents = getDocumentsMappedByNote(noteId); List responses = documents.stream() .map(document -> DocumentResponse.of(document, awsHandler.getDownloadPreSignedUrl(document.getFileKey()))) .toList(); @@ -212,7 +212,7 @@ private List getTimeBlocksMappedByNote(final long noteId) { .toList(); } - private List getDocumentListMappedByNote(final long noteId) { + private List getDocumentsMappedByNote(final long noteId) { List documentIdList = ndFinder.findAllByNoteId(noteId).stream() .map(NDManager::getDocumentId) .toList(); From 6d894f77d87bcdabda8402c06b4caa6529c7193a Mon Sep 17 00:00:00 2001 From: Chan531 Date: Mon, 3 Mar 2025 18:18:57 +0900 Subject: [PATCH 12/22] =?UTF-8?q?[REFACTOR]=20=EC=A4=91=EB=B3=B5=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EB=A9=94=EC=86=8C=EB=93=9C=20=EB=B6=84?= =?UTF-8?q?=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tiki/server/note/service/NoteService.java | 40 ++++++++++--------- 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/src/main/java/com/tiki/server/note/service/NoteService.java b/src/main/java/com/tiki/server/note/service/NoteService.java index c5f87d58..9666ffd7 100644 --- a/src/main/java/com/tiki/server/note/service/NoteService.java +++ b/src/main/java/com/tiki/server/note/service/NoteService.java @@ -140,8 +140,8 @@ public NoteListGetServiceResponse getNote( ) { memberTeamManagerFinder.findByMemberIdAndTeamId(memberId, teamId); PageRequest pageable = PageRequest.of(INIT_NUM, PAGE_SIZE); - List noteList = getNotes(createdAt, sortOrder, pageable, teamId); - List noteGetResponses = noteList.stream() + List notes = getNotes(createdAt, sortOrder, pageable, teamId); + List noteGetResponses = notes.stream() .map(note -> NoteGetResponse.of(note, getMemberName(note.getMemberId(), teamId))) .toList(); return new NoteListGetServiceResponse(noteGetResponses); @@ -171,12 +171,8 @@ private void updateNoteDocumentManager(final List documentIds, final long List existingNoteDocumentIds = ndFinder.findAllByNoteId(noteId).stream() .map(NDManager::getDocumentId) .toList(); - List idsToAdd = documentIds.stream() - .filter(id -> !existingNoteDocumentIds.contains(id)) - .toList(); - List idsToRemove = existingNoteDocumentIds.stream() - .filter(id -> !documentIds.contains(id)) - .toList(); + List idsToAdd = getIdsToAdd(documentIds, existingNoteDocumentIds); + List idsToRemove = getIdsToRemove(documentIds, existingNoteDocumentIds); createNoteDocumentManagers(idsToAdd, noteId); ndDeleter.deleteByNoteIdAndDocumentId(noteId, idsToRemove); } @@ -185,16 +181,24 @@ private void updateNoteTimeBlockManager(final List timeBlockIds, final lon List existingNoteTimeBlockIds = ntbFinder.findAllByNoteId(noteId).stream() .map(NTBManager::getTimeBlockId) .toList(); - List idsToAdd = timeBlockIds.stream() - .filter(id -> !existingNoteTimeBlockIds.contains(id)) - .toList(); - List idsToRemove = existingNoteTimeBlockIds.stream() - .filter(id -> !timeBlockIds.contains(id)) - .toList(); + List idsToAdd = getIdsToAdd(timeBlockIds, existingNoteTimeBlockIds); + List idsToRemove = getIdsToRemove(timeBlockIds, existingNoteTimeBlockIds); createNoteTimeBlockManagers(idsToAdd, noteId); ntbDeleter.deleteByNoteIdAndTimeBlockId(noteId, idsToRemove); } + private List getIdsToAdd(final List ids, final List managerIds) { + return ids.stream() + .filter(id -> !managerIds.contains(id)) + .toList(); + } + + private List getIdsToRemove(final List ids, final List managerIds) { + return managerIds.stream() + .filter(id -> !ids.contains(id)) + .toList(); + } + private List getNotes(final LocalDateTime createdAt, final SortOrder sortOrder, final PageRequest pageable, final long teamId) { if (sortOrder == SortOrder.DESC) { @@ -204,19 +208,19 @@ private List getNotes(final LocalDateTime createdAt, final SortOrder sortO } private List getTimeBlocksMappedByNote(final long noteId) { - List timblockIdList = ntbFinder.findAllByNoteId(noteId).stream() + List timeBlockIds = ntbFinder.findAllByNoteId(noteId).stream() .map(NTBManager::getTimeBlockId) .toList(); - return timblockIdList.stream() + return timeBlockIds.stream() .map(timeBlockFinder::findById) .toList(); } private List getDocumentsMappedByNote(final long noteId) { - List documentIdList = ndFinder.findAllByNoteId(noteId).stream() + List documentIds = ndFinder.findAllByNoteId(noteId).stream() .map(NDManager::getDocumentId) .toList(); - return documentIdList.stream() + return documentIds.stream() .map(documentFinder::findById) .toList(); } From 914c914d039b01c7d0d1fa3ce082ae040585ba3d Mon Sep 17 00:00:00 2001 From: Chan531 Date: Mon, 3 Mar 2025 18:20:14 +0900 Subject: [PATCH 13/22] =?UTF-8?q?[CHORE]=20=EB=AC=B8=EC=9E=90=EC=97=B4=20?= =?UTF-8?q?=EC=83=81=EC=88=98=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/tiki/server/note/constants/NoteConstants.java | 1 + src/main/java/com/tiki/server/note/service/NoteService.java | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/tiki/server/note/constants/NoteConstants.java b/src/main/java/com/tiki/server/note/constants/NoteConstants.java index 0b199f08..c0fc22e3 100644 --- a/src/main/java/com/tiki/server/note/constants/NoteConstants.java +++ b/src/main/java/com/tiki/server/note/constants/NoteConstants.java @@ -3,4 +3,5 @@ public class NoteConstants { public static final int PAGE_SIZE = 10; + public static final String UNKNOWN = "알 수 없음"; } diff --git a/src/main/java/com/tiki/server/note/service/NoteService.java b/src/main/java/com/tiki/server/note/service/NoteService.java index 9666ffd7..8829150b 100644 --- a/src/main/java/com/tiki/server/note/service/NoteService.java +++ b/src/main/java/com/tiki/server/note/service/NoteService.java @@ -37,6 +37,7 @@ import static com.tiki.server.common.constants.Constants.INIT_NUM; import static com.tiki.server.note.constants.NoteConstants.PAGE_SIZE; +import static com.tiki.server.note.constants.NoteConstants.UNKNOWN; @Service @RequiredArgsConstructor @@ -164,7 +165,7 @@ public NoteDetailGetServiceResponse getNoteDetail(final long teamId, final long private String getMemberName(final Long noteMemberId, final long teamId) { return Optional.ofNullable(noteMemberId) .map(id -> memberTeamManagerFinder.findByMemberIdAndTeamId(id, teamId).getName()) - .orElse("알 수 없음"); + .orElse(UNKNOWN); } private void updateNoteDocumentManager(final List documentIds, final long noteId) { From b55f0ed551a393ea853fc849e964fa6211a62ddc Mon Sep 17 00:00:00 2001 From: Chan531 Date: Mon, 3 Mar 2025 18:39:19 +0900 Subject: [PATCH 14/22] =?UTF-8?q?[CHORE]=20=EB=A9=94=EC=86=8C=EB=93=9C?= =?UTF-8?q?=EB=AA=85=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../team/controller/TeamController.java | 180 +++++++++--------- .../TeamInformUpdateServiceRequest.java | 6 +- 2 files changed, 96 insertions(+), 90 deletions(-) diff --git a/src/main/java/com/tiki/server/team/controller/TeamController.java b/src/main/java/com/tiki/server/team/controller/TeamController.java index f163f0a9..bf7f4ab7 100644 --- a/src/main/java/com/tiki/server/team/controller/TeamController.java +++ b/src/main/java/com/tiki/server/team/controller/TeamController.java @@ -17,7 +17,9 @@ import com.tiki.server.team.dto.response.TeamsGetResponse; import org.springframework.http.HttpStatus; + import com.tiki.server.team.service.dto.response.TeamInformGetResponse; + import org.springframework.web.bind.annotation.*; import com.tiki.server.common.dto.SuccessResponse; @@ -33,93 +35,93 @@ @RequestMapping("api/v1/teams") public class TeamController implements TeamControllerDocs { - private final TeamService teamService; - - @Override - @ResponseStatus(HttpStatus.CREATED) - @PostMapping - public SuccessResponse createTeam( - final Principal principal, - @RequestBody final TeamCreateRequest request - ) { - long memberId = Long.parseLong(principal.getName()); - TeamCreateResponse response = teamService.createTeam(memberId, request); - return SuccessResponse.success(SUCCESS_CREATE_TEAM.getMessage(), response); - } - - @Override - @ResponseStatus(HttpStatus.OK) - @GetMapping - public SuccessResponse getAllTeams(final Principal principal) { - long memberId = Long.parseLong(principal.getName()); - TeamsGetResponse response = teamService.getAllTeams(memberId); - return SuccessResponse.success(SUCCESS_GET_TEAMS.getMessage(), response); - } - - @Override - @ResponseStatus(HttpStatus.OK) - @GetMapping("/{teamId}/inform") - public SuccessResponse getTeamName( - @PathVariable final long teamId - ) { - TeamInformGetResponse response = teamService.getTeamInform(teamId); - return SuccessResponse.success(SUCCESS_GET_TEAM_INFORM.getMessage(), response); - } - - @Override - @ResponseStatus(HttpStatus.OK) - @GetMapping("/category") - public SuccessResponse getCategories() { - CategoriesGetResponse response = teamService.getCategories(); - return SuccessResponse.success(SUCCESS_GET_CATEGORIES.getMessage(), response); - } - - @Override - @ResponseStatus(HttpStatus.NO_CONTENT) - @DeleteMapping("/{teamId}") - public void deleteTeam( - final Principal principal, - @PathVariable final long teamId - ) { - long memberId = Long.parseLong(principal.getName()); - teamService.deleteTeam(memberId, teamId); - } - - @Override - @ResponseStatus(HttpStatus.OK) - @PatchMapping("/{teamId}/inform") - public SuccessResponse updateTeamInform( - final Principal principal, - @PathVariable final long teamId, - @RequestBody final TeamInformUpdateRequest request - ) { - long memberId = Long.parseLong(principal.getName()); - teamService.updateTeamInform(TeamInformUpdateServiceRequest.from(request,memberId,teamId)); - return SuccessResponse.success(SUCCESS_UPDATE_TEAM_NAME.getMessage()); - } - - @Override - @ResponseStatus(HttpStatus.OK) - @PatchMapping("/{teamId}/member/{targetId}/admin") - public SuccessResponse alterAdmin( - final Principal principal, - @PathVariable final long teamId, - @PathVariable final long targetId - ) { - long memberId = Long.parseLong(principal.getName()); - teamService.alterAdmin(memberId, teamId, targetId); - return SuccessResponse.success(SUCCESS_ALTER_AUTHORITY.getMessage()); - } - - @Override - @ResponseStatus(HttpStatus.OK) - @GetMapping("/{teamId}/capacity") - public SuccessResponse getCapacityInfo( - final Principal principal, - @PathVariable final long teamId - ) { - long memberId = Long.parseLong(principal.getName()); - UsageGetResponse response = teamService.getCapacityInfo(memberId, teamId); - return SuccessResponse.success(SUCCESS_GET_CAPACITY_INFO.getMessage(), response); - } + private final TeamService teamService; + + @Override + @ResponseStatus(HttpStatus.CREATED) + @PostMapping + public SuccessResponse createTeam( + final Principal principal, + @RequestBody final TeamCreateRequest request + ) { + long memberId = Long.parseLong(principal.getName()); + TeamCreateResponse response = teamService.createTeam(memberId, request); + return SuccessResponse.success(SUCCESS_CREATE_TEAM.getMessage(), response); + } + + @Override + @ResponseStatus(HttpStatus.OK) + @GetMapping + public SuccessResponse getAllTeams(final Principal principal) { + long memberId = Long.parseLong(principal.getName()); + TeamsGetResponse response = teamService.getAllTeams(memberId); + return SuccessResponse.success(SUCCESS_GET_TEAMS.getMessage(), response); + } + + @Override + @ResponseStatus(HttpStatus.OK) + @GetMapping("/{teamId}/inform") + public SuccessResponse getTeamName( + @PathVariable final long teamId + ) { + TeamInformGetResponse response = teamService.getTeamInform(teamId); + return SuccessResponse.success(SUCCESS_GET_TEAM_INFORM.getMessage(), response); + } + + @Override + @ResponseStatus(HttpStatus.OK) + @GetMapping("/category") + public SuccessResponse getCategories() { + CategoriesGetResponse response = teamService.getCategories(); + return SuccessResponse.success(SUCCESS_GET_CATEGORIES.getMessage(), response); + } + + @Override + @ResponseStatus(HttpStatus.NO_CONTENT) + @DeleteMapping("/{teamId}") + public void deleteTeam( + final Principal principal, + @PathVariable final long teamId + ) { + long memberId = Long.parseLong(principal.getName()); + teamService.deleteTeam(memberId, teamId); + } + + @Override + @ResponseStatus(HttpStatus.OK) + @PatchMapping("/{teamId}/inform") + public SuccessResponse updateTeamInform( + final Principal principal, + @PathVariable final long teamId, + @RequestBody final TeamInformUpdateRequest request + ) { + long memberId = Long.parseLong(principal.getName()); + teamService.updateTeamInform(TeamInformUpdateServiceRequest.of(request, memberId, teamId)); + return SuccessResponse.success(SUCCESS_UPDATE_TEAM_NAME.getMessage()); + } + + @Override + @ResponseStatus(HttpStatus.OK) + @PatchMapping("/{teamId}/member/{targetId}/admin") + public SuccessResponse alterAdmin( + final Principal principal, + @PathVariable final long teamId, + @PathVariable final long targetId + ) { + long memberId = Long.parseLong(principal.getName()); + teamService.alterAdmin(memberId, teamId, targetId); + return SuccessResponse.success(SUCCESS_ALTER_AUTHORITY.getMessage()); + } + + @Override + @ResponseStatus(HttpStatus.OK) + @GetMapping("/{teamId}/capacity") + public SuccessResponse getCapacityInfo( + final Principal principal, + @PathVariable final long teamId + ) { + long memberId = Long.parseLong(principal.getName()); + UsageGetResponse response = teamService.getCapacityInfo(memberId, teamId); + return SuccessResponse.success(SUCCESS_GET_CAPACITY_INFO.getMessage(), response); + } } diff --git a/src/main/java/com/tiki/server/team/dto/request/TeamInformUpdateServiceRequest.java b/src/main/java/com/tiki/server/team/dto/request/TeamInformUpdateServiceRequest.java index dea104ca..4c8d3154 100644 --- a/src/main/java/com/tiki/server/team/dto/request/TeamInformUpdateServiceRequest.java +++ b/src/main/java/com/tiki/server/team/dto/request/TeamInformUpdateServiceRequest.java @@ -8,7 +8,11 @@ public record TeamInformUpdateServiceRequest( @NotNull String teamName, @NotNull String teamIconUrl ) { - public static TeamInformUpdateServiceRequest from(final TeamInformUpdateRequest request, final long memberId, final long teamId) { + public static TeamInformUpdateServiceRequest of( + final TeamInformUpdateRequest request, + final long memberId, + final long teamId + ) { return new TeamInformUpdateServiceRequest( memberId, teamId, From c767776b36250bbddf05f3f19e3028e8ea80d05e Mon Sep 17 00:00:00 2001 From: Chan531 Date: Mon, 3 Mar 2025 18:43:09 +0900 Subject: [PATCH 15/22] =?UTF-8?q?[REFACTOR]=20=EC=9D=B4=EB=AF=B8=EC=A7=80?= =?UTF-8?q?=20=ED=8C=8C=EC=9D=BC=20=EA=B4=80=EB=A0=A8=20=EC=BB=AC=EB=9F=BC?= =?UTF-8?q?=EB=AA=85=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/tiki/server/team/entity/Team.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/tiki/server/team/entity/Team.java b/src/main/java/com/tiki/server/team/entity/Team.java index 89733e5a..e5424f3e 100644 --- a/src/main/java/com/tiki/server/team/entity/Team.java +++ b/src/main/java/com/tiki/server/team/entity/Team.java @@ -61,9 +61,9 @@ public class Team extends BaseTime { @Column(nullable = false) private long usage; - private String imageUrl; + private String imageKey; - private String iconImageUrl; + private String iconImageKey; private LocalDate namingUpdatedAt; @@ -75,17 +75,17 @@ public static Team of(final TeamCreateRequest request, final University univ) { .univ(univ) .subscribe(BASIC) .usage(INIT_NUM) - .iconImageUrl(request.iconImageUrl()) + .iconImageKey(request.iconImageKey()) .namingUpdatedAt(LocalDate.now()) .build(); } - public void updateInform(final String name, final String iconImageUrl) { + public void updateInform(final String name, final String iconImageKey) { if (!name.equals(this.name)) { updateTeamName(name); } - if(!iconImageUrl.equals(this.iconImageUrl)){ - updateIconImageUrl(iconImageUrl); + if(!iconImageKey.equals(this.iconImageKey)){ + updateIconImageKey(iconImageKey); } } @@ -97,16 +97,16 @@ private void updateTeamName(final String name) { this.namingUpdatedAt = LocalDate.now(); } - public void updateIconImageUrl(final String url) { - this.iconImageUrl = url; + public void updateIconImageKey(final String key) { + this.iconImageKey = key; } public boolean isDefaultImage() { - return this.iconImageUrl.isBlank(); + return this.iconImageKey.isBlank(); } - public boolean isSameIconUrl(final String iconImageUrl) { - return this.iconImageUrl.equals(iconImageUrl); + public boolean isSameIconImageKey(final String iconImageKey) { + return this.iconImageKey.equals(iconImageKey); } public void addUsage(final long capacity) { From 3fd017e94e928769004842a5ecee5d6821c175a8 Mon Sep 17 00:00:00 2001 From: Chan531 Date: Mon, 3 Mar 2025 18:43:52 +0900 Subject: [PATCH 16/22] =?UTF-8?q?[CHORE]=20dto=EA=B0=92=20url=EC=97=90?= =?UTF-8?q?=EC=84=9C=20key=EB=A1=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/tiki/server/team/dto/request/TeamCreateRequest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/tiki/server/team/dto/request/TeamCreateRequest.java b/src/main/java/com/tiki/server/team/dto/request/TeamCreateRequest.java index ec6ab45d..fda5527f 100644 --- a/src/main/java/com/tiki/server/team/dto/request/TeamCreateRequest.java +++ b/src/main/java/com/tiki/server/team/dto/request/TeamCreateRequest.java @@ -8,13 +8,13 @@ public record TeamCreateRequest( @NotNull String name, @NotNull Category category, - @NotNull String iconImageUrl + @NotNull String iconImageKey ) { - public TeamCreateRequest(final String name, final Category category, final String iconImageUrl) { + public TeamCreateRequest(final String name, final Category category, final String iconImageKey) { Validator.validText(name); Validator.validateLength(name, 30); this.name = name; this.category = category; - this.iconImageUrl = iconImageUrl; + this.iconImageKey = iconImageKey; } } From 9f9b072469aabecd75c0dcc0065efe611d52a70c Mon Sep 17 00:00:00 2001 From: Chan531 Date: Mon, 3 Mar 2025 18:44:16 +0900 Subject: [PATCH 17/22] =?UTF-8?q?[CHORE]=20=EB=A9=94=EC=86=8C=EB=93=9C?= =?UTF-8?q?=EB=AA=85=20=EC=88=98=EC=A0=95=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/tiki/server/member/service/MemberService.java | 2 +- .../java/com/tiki/server/team/service/TeamService.java | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/tiki/server/member/service/MemberService.java b/src/main/java/com/tiki/server/member/service/MemberService.java index 17f10de2..9bced052 100644 --- a/src/main/java/com/tiki/server/member/service/MemberService.java +++ b/src/main/java/com/tiki/server/member/service/MemberService.java @@ -113,7 +113,7 @@ private List getTeams(final List memberTeamManagers) { private List getTeamResponses(final List teams) { return teams.stream() - .map(team -> TeamResponse.createWithIcon(team, awsHandler.getDownloadPreSignedUrl(team.getIconImageUrl()))) + .map(team -> TeamResponse.createWithIcon(team, awsHandler.getDownloadPreSignedUrl(team.getIconImageKey()))) .toList(); } diff --git a/src/main/java/com/tiki/server/team/service/TeamService.java b/src/main/java/com/tiki/server/team/service/TeamService.java index 6c2bb3a7..86872d6d 100644 --- a/src/main/java/com/tiki/server/team/service/TeamService.java +++ b/src/main/java/com/tiki/server/team/service/TeamService.java @@ -115,7 +115,7 @@ public void updateTeamInform(final TeamInformUpdateServiceRequest request) { checkIsAdmin(request.memberId(), request.teamId()); Team team = teamFinder.findById(request.teamId()); team.updateInform(request.teamName(), request.teamIconUrl()); - updateIconUrlS3(team, request.teamIconUrl()); + updateIconImageKey(team, request.teamIconUrl()); } @Transactional @@ -140,7 +140,7 @@ private Team createTeam(final TeamCreateRequest request, final University univ) private List getTeamResponses(final List teams) { return teams.stream() - .map(team -> TeamResponse.createWithImage(team, awsHandler.getDownloadPreSignedUrl(team.getImageUrl()))) + .map(team -> TeamResponse.createWithImage(team, awsHandler.getDownloadPreSignedUrl(team.getImageKey()))) .toList(); } @@ -148,9 +148,9 @@ private MemberTeamManager createMemberTeamManager(final Member member, final Tea return MemberTeamManager.of(member, team, position); } - private void updateIconUrlS3(final Team team, final String iconUrl) { - if (!team.isDefaultImage() && !team.isSameIconUrl(iconUrl)) { - awsHandler.deleteFile(team.getIconImageUrl()); + private void updateIconImageKey(final Team team, final String iconImageKey) { + if (!team.isDefaultImage() && !team.isSameIconImageKey(iconImageKey)) { + awsHandler.deleteFile(team.getIconImageKey()); } } From 2817d49d6053e72fa4066a35faabe2a7fcd2b62c Mon Sep 17 00:00:00 2001 From: Chan531 Date: Mon, 3 Mar 2025 18:51:10 +0900 Subject: [PATCH 18/22] =?UTF-8?q?[FEAT]=20=ED=8C=80=20=EC=A0=95=EB=B3=B4?= =?UTF-8?q?=20=EC=A1=B0=ED=9A=8C=EC=97=90=20presignedUrl=20=EB=B3=80?= =?UTF-8?q?=ED=99=98=20=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tiki/server/team/service/TeamService.java | 4 ++- .../dto/response/TeamInformGetResponse.java | 26 +++++++++++++------ 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/tiki/server/team/service/TeamService.java b/src/main/java/com/tiki/server/team/service/TeamService.java index 86872d6d..204bc17a 100644 --- a/src/main/java/com/tiki/server/team/service/TeamService.java +++ b/src/main/java/com/tiki/server/team/service/TeamService.java @@ -107,7 +107,9 @@ public void deleteTeam(final long memberId, final long teamId) { } public TeamInformGetResponse getTeamInform(final long teamId) { - return TeamInformGetResponse.from(teamFinder.findById(teamId)); + Team team = teamFinder.findById(teamId); + String iconImageUrl = awsHandler.getDownloadPreSignedUrl(team.getIconImageKey()); + return TeamInformGetResponse.of(team, iconImageUrl); } @Transactional diff --git a/src/main/java/com/tiki/server/team/service/dto/response/TeamInformGetResponse.java b/src/main/java/com/tiki/server/team/service/dto/response/TeamInformGetResponse.java index 14811941..d138a1b7 100644 --- a/src/main/java/com/tiki/server/team/service/dto/response/TeamInformGetResponse.java +++ b/src/main/java/com/tiki/server/team/service/dto/response/TeamInformGetResponse.java @@ -1,19 +1,29 @@ package com.tiki.server.team.service.dto.response; +import static lombok.AccessLevel.PRIVATE; + import com.tiki.server.common.entity.University; import com.tiki.server.team.entity.Team; + import jakarta.validation.constraints.NotNull; +import lombok.Builder; import java.time.LocalDate; +@Builder(access = PRIVATE) public record TeamInformGetResponse( - @NotNull String teamName, - @NotNull University university, - @NotNull String teamIconUrl, - @NotNull LocalDate namingUpdatedAt - ) { + @NotNull String name, + @NotNull University university, + @NotNull String iconImageUrl, + @NotNull LocalDate namingUpdatedAt +) { - public static TeamInformGetResponse from(final Team team) { - return new TeamInformGetResponse(team.getName(),team.getUniv(), team.getIconImageUrl(),team.getNamingUpdatedAt()); - } + public static TeamInformGetResponse of(final Team team, final String iconImageUrl) { + return TeamInformGetResponse.builder() + .name(team.getName()) + .university(team.getUniv()) + .iconImageUrl(iconImageUrl) + .namingUpdatedAt(team.getNamingUpdatedAt()) + .build(); + } } From 757c5bfa2eb41ec8cfd026e7275820532651808c Mon Sep 17 00:00:00 2001 From: Chan531 Date: Mon, 3 Mar 2025 18:53:37 +0900 Subject: [PATCH 19/22] =?UTF-8?q?[REFACTOR]=20=ED=8C=80=20=EC=B5=9C?= =?UTF-8?q?=EB=8C=80=20=EC=88=98=20=EC=83=81=EC=88=98=20=EC=A0=81=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/tiki/server/team/constants/TeamConstants.java | 6 ++++++ src/main/java/com/tiki/server/team/service/TeamService.java | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) create mode 100644 src/main/java/com/tiki/server/team/constants/TeamConstants.java diff --git a/src/main/java/com/tiki/server/team/constants/TeamConstants.java b/src/main/java/com/tiki/server/team/constants/TeamConstants.java new file mode 100644 index 00000000..bd1a440c --- /dev/null +++ b/src/main/java/com/tiki/server/team/constants/TeamConstants.java @@ -0,0 +1,6 @@ +package com.tiki.server.team.constants; + +public class TeamConstants { + + public static final int MAX_TEAM_NUMBER = 8; +} diff --git a/src/main/java/com/tiki/server/team/service/TeamService.java b/src/main/java/com/tiki/server/team/service/TeamService.java index 204bc17a..ebd3a8bc 100644 --- a/src/main/java/com/tiki/server/team/service/TeamService.java +++ b/src/main/java/com/tiki/server/team/service/TeamService.java @@ -1,6 +1,7 @@ package com.tiki.server.team.service; import static com.tiki.server.common.entity.Position.ADMIN; +import static com.tiki.server.team.constants.TeamConstants.MAX_TEAM_NUMBER; import static com.tiki.server.team.message.ErrorCode.EXCEED_TEAM_NUMBER; import com.tiki.server.team.dto.response.TeamResponse; @@ -182,7 +183,7 @@ private void deleteTimeBlocks(final long teamId) { private void checkTeamNumber(final long memberId) { List joinedTeams = memberTeamManagerFinder.findAllByMemberIdOrderByCreatedAt( memberId); - if (joinedTeams.size() > 8) { + if (joinedTeams.size() > MAX_TEAM_NUMBER) { throw new TeamException(EXCEED_TEAM_NUMBER); } } From 761eb37de5067fd8cebbe4559fa51ac8c425d611 Mon Sep 17 00:00:00 2001 From: Chan531 Date: Mon, 3 Mar 2025 18:54:43 +0900 Subject: [PATCH 20/22] =?UTF-8?q?[CHORE]=20dto=20=ED=8C=A8=ED=82=A4?= =?UTF-8?q?=EC=A7=80=20=EC=9D=B4=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/tiki/server/team/controller/TeamController.java | 2 +- .../server/team/controller/docs/TeamControllerDocs.java | 6 +----- .../{service => }/dto/response/TeamInformGetResponse.java | 2 +- src/main/java/com/tiki/server/team/service/TeamService.java | 2 +- 4 files changed, 4 insertions(+), 8 deletions(-) rename src/main/java/com/tiki/server/team/{service => }/dto/response/TeamInformGetResponse.java (93%) diff --git a/src/main/java/com/tiki/server/team/controller/TeamController.java b/src/main/java/com/tiki/server/team/controller/TeamController.java index bf7f4ab7..d28fcbe6 100644 --- a/src/main/java/com/tiki/server/team/controller/TeamController.java +++ b/src/main/java/com/tiki/server/team/controller/TeamController.java @@ -18,7 +18,7 @@ import org.springframework.http.HttpStatus; -import com.tiki.server.team.service.dto.response.TeamInformGetResponse; +import com.tiki.server.team.dto.response.TeamInformGetResponse; import org.springframework.web.bind.annotation.*; diff --git a/src/main/java/com/tiki/server/team/controller/docs/TeamControllerDocs.java b/src/main/java/com/tiki/server/team/controller/docs/TeamControllerDocs.java index 6fd42d92..58a786e3 100644 --- a/src/main/java/com/tiki/server/team/controller/docs/TeamControllerDocs.java +++ b/src/main/java/com/tiki/server/team/controller/docs/TeamControllerDocs.java @@ -3,16 +3,14 @@ import java.security.Principal; import com.tiki.server.team.dto.request.TeamInformUpdateRequest; -import com.tiki.server.team.dto.request.TeamInformUpdateServiceRequest; import com.tiki.server.team.dto.response.UsageGetResponse; import com.tiki.server.team.dto.response.CategoriesGetResponse; import com.tiki.server.team.dto.response.TeamsGetResponse; -import com.tiki.server.team.service.dto.response.TeamInformGetResponse; +import com.tiki.server.team.dto.response.TeamInformGetResponse; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; -import com.tiki.server.common.dto.ErrorResponse; import com.tiki.server.common.dto.SuccessResponse; import com.tiki.server.team.dto.request.TeamCreateRequest; import com.tiki.server.team.dto.response.TeamCreateResponse; @@ -20,8 +18,6 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.Parameter; import io.swagger.v3.oas.annotations.enums.ParameterIn; -import io.swagger.v3.oas.annotations.media.Content; -import io.swagger.v3.oas.annotations.media.Schema; import io.swagger.v3.oas.annotations.responses.ApiResponse; import io.swagger.v3.oas.annotations.tags.Tag; diff --git a/src/main/java/com/tiki/server/team/service/dto/response/TeamInformGetResponse.java b/src/main/java/com/tiki/server/team/dto/response/TeamInformGetResponse.java similarity index 93% rename from src/main/java/com/tiki/server/team/service/dto/response/TeamInformGetResponse.java rename to src/main/java/com/tiki/server/team/dto/response/TeamInformGetResponse.java index d138a1b7..6584761c 100644 --- a/src/main/java/com/tiki/server/team/service/dto/response/TeamInformGetResponse.java +++ b/src/main/java/com/tiki/server/team/dto/response/TeamInformGetResponse.java @@ -1,4 +1,4 @@ -package com.tiki.server.team.service.dto.response; +package com.tiki.server.team.dto.response; import static lombok.AccessLevel.PRIVATE; diff --git a/src/main/java/com/tiki/server/team/service/TeamService.java b/src/main/java/com/tiki/server/team/service/TeamService.java index ebd3a8bc..6c75abfc 100644 --- a/src/main/java/com/tiki/server/team/service/TeamService.java +++ b/src/main/java/com/tiki/server/team/service/TeamService.java @@ -28,7 +28,7 @@ import com.tiki.server.team.dto.response.TeamsGetResponse; import com.tiki.server.team.dto.response.UsageGetResponse; -import com.tiki.server.team.service.dto.response.TeamInformGetResponse; +import com.tiki.server.team.dto.response.TeamInformGetResponse; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; From 34cfe538febccb028ceb4612bc91515732b320d6 Mon Sep 17 00:00:00 2001 From: Chan531 Date: Mon, 3 Mar 2025 18:55:14 +0900 Subject: [PATCH 21/22] =?UTF-8?q?[CHORE]=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20import=EB=AC=B8=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/tiki/server/team/dto/response/TeamsGetResponse.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/com/tiki/server/team/dto/response/TeamsGetResponse.java b/src/main/java/com/tiki/server/team/dto/response/TeamsGetResponse.java index 76775445..1deaf6bf 100644 --- a/src/main/java/com/tiki/server/team/dto/response/TeamsGetResponse.java +++ b/src/main/java/com/tiki/server/team/dto/response/TeamsGetResponse.java @@ -1,7 +1,5 @@ package com.tiki.server.team.dto.response; -import com.tiki.server.team.entity.Team; - import jakarta.validation.constraints.NotNull; import lombok.Builder; From e1fdfb8798ccd8498015490f1fd9ab3cd3e6d3a3 Mon Sep 17 00:00:00 2001 From: Chan531 Date: Mon, 3 Mar 2025 18:59:36 +0900 Subject: [PATCH 22/22] =?UTF-8?q?[CHORE]=20=ED=8C=80=EC=9B=90=20=EC=B4=88?= =?UTF-8?q?=EB=8C=80=EC=97=90=20presignedUrl=20=EB=B3=80=ED=99=98=20?= =?UTF-8?q?=EB=A1=9C=EC=A7=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../teaminvitation/service/TeamInvitationService.java | 6 +++++- .../service/dto/TeamInvitationInformGetResponse.java | 10 +++++----- 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/tiki/server/email/teaminvitation/service/TeamInvitationService.java b/src/main/java/com/tiki/server/email/teaminvitation/service/TeamInvitationService.java index 6226eb27..0594e10b 100644 --- a/src/main/java/com/tiki/server/email/teaminvitation/service/TeamInvitationService.java +++ b/src/main/java/com/tiki/server/email/teaminvitation/service/TeamInvitationService.java @@ -7,12 +7,14 @@ import com.tiki.server.email.teaminvitation.entity.TeamInvitation; import com.tiki.server.email.teaminvitation.service.dto.TeamInvitationEmailsGetResponse; import com.tiki.server.email.teaminvitation.service.dto.TeamInvitationInformGetResponse; +import com.tiki.server.external.util.AwsHandler; import com.tiki.server.member.adapter.MemberFinder; import com.tiki.server.member.entity.Member; import com.tiki.server.memberteammanager.adapter.MemberTeamManagerFinder; import com.tiki.server.memberteammanager.adapter.MemberTeamManagerSaver; import com.tiki.server.memberteammanager.entity.MemberTeamManager; import com.tiki.server.team.adapter.TeamFinder; +import com.tiki.server.team.dto.response.TeamResponse; import com.tiki.server.team.entity.Team; import com.tiki.server.team.exception.TeamException; import lombok.RequiredArgsConstructor; @@ -35,11 +37,13 @@ public class TeamInvitationService { private final MemberTeamManagerSaver memberTeamManagerSaver; private final TeamFinder teamFinder; private final MemberFinder memberFinder; + private final AwsHandler awsHandler; public TeamInvitationInformGetResponse getInvitationInform(final long invitationId) { TeamInvitation invitation = teamInvitationFinder.findByInvitationId(invitationId); Team team = teamFinder.findById(invitation.getTeamId()); - return TeamInvitationInformGetResponse.of(invitation, team); + TeamResponse response = TeamResponse.createWithIcon(team, awsHandler.getDownloadPreSignedUrl(team.getIconImageKey())); + return TeamInvitationInformGetResponse.of(invitation, response); } @Transactional diff --git a/src/main/java/com/tiki/server/email/teaminvitation/service/dto/TeamInvitationInformGetResponse.java b/src/main/java/com/tiki/server/email/teaminvitation/service/dto/TeamInvitationInformGetResponse.java index efb38bc3..497da7de 100644 --- a/src/main/java/com/tiki/server/email/teaminvitation/service/dto/TeamInvitationInformGetResponse.java +++ b/src/main/java/com/tiki/server/email/teaminvitation/service/dto/TeamInvitationInformGetResponse.java @@ -1,7 +1,7 @@ package com.tiki.server.email.teaminvitation.service.dto; import com.tiki.server.email.teaminvitation.entity.TeamInvitation; -import com.tiki.server.team.entity.Team; +import com.tiki.server.team.dto.response.TeamResponse; import jakarta.validation.constraints.NotNull; public record TeamInvitationInformGetResponse( @@ -13,13 +13,13 @@ public record TeamInvitationInformGetResponse( public static TeamInvitationInformGetResponse of( final TeamInvitation invitation, - final Team team + final TeamResponse team ) { return new TeamInvitationInformGetResponse( invitation.getSender(), - team.getName(), - team.getIconImageUrl(), - team.getId() + team.name(), + team.iconImageUrl(), + team.teamId() ); } }