From 127c9b05f28e4d1a446e6929b4ffaf0d3bc12832 Mon Sep 17 00:00:00 2001 From: SJ Hwang Date: Sun, 28 Sep 2025 16:41:51 +0900 Subject: [PATCH] =?UTF-8?q?[Refactor/#169]=20-=20=EC=83=81=EC=84=B8?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=20Response=20DTO=20=ED=98=95=EC=8B=9D=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20-=20Goods=EA=B0=80=20BaseEntity=20?= =?UTF-8?q?=EC=83=81=EC=86=8D=EB=B0=9B=EC=95=84=20updatedAt=20=ED=95=84?= =?UTF-8?q?=EB=93=9C=EB=A5=BC=20=EA=B0=96=EB=8F=84=EB=A1=9D=20=EC=88=98?= =?UTF-8?q?=EC=A0=95=20-=20paper,=20paperContent,=20Goods=20=EC=A4=91=20?= =?UTF-8?q?=EA=B0=80=EC=9E=A5=20=EC=B5=9C=EA=B7=BC=EC=97=90=20=EC=97=85?= =?UTF-8?q?=EB=8D=B0=EC=9D=B4=ED=8A=B8=20=EB=90=9C=20=EC=97=94=ED=8B=B0?= =?UTF-8?q?=ED=8B=B0=EC=9D=98=20updatedAt=EC=9D=84=20=EA=B0=80=EC=A0=B8?= =?UTF-8?q?=EC=98=A4=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../converter/PartnershipConverter.java | 59 ++++++++++++++++--- .../dto/PartnershipResponseDTO.java | 9 ++- .../domain/partnership/entity/Goods.java | 3 +- 3 files changed, 60 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/assu/server/domain/partnership/converter/PartnershipConverter.java b/src/main/java/com/assu/server/domain/partnership/converter/PartnershipConverter.java index 011bfd81..4adbe947 100644 --- a/src/main/java/com/assu/server/domain/partnership/converter/PartnershipConverter.java +++ b/src/main/java/com/assu/server/domain/partnership/converter/PartnershipConverter.java @@ -1,8 +1,10 @@ package com.assu.server.domain.partnership.converter; import java.time.LocalDate; -import java.util.List; +import java.time.LocalDateTime; +import java.util.*; +import com.assu.server.domain.common.entity.BaseEntity; import com.assu.server.domain.partnership.dto.PaperContentResponseDTO; import com.assu.server.domain.admin.entity.Admin; import com.assu.server.domain.common.enums.ActivationStatus; @@ -18,9 +20,6 @@ import com.assu.server.domain.user.entity.Student; import com.assu.server.domain.store.entity.Store; -import java.util.ArrayList; -import java.util.Collections; - public class PartnershipConverter { public static PartnershipUsage toPartnershipUsage(PartnershipRequestDTO.finalRequest dto, Student student, Long paperId) { @@ -295,12 +294,56 @@ public static PartnershipResponseDTO.GetPartnershipDetailResponseDTO getPartners List contents, List> goodsBatches ) { - PartnershipResponseDTO.WritePartnershipResponseDTO responseInfo = - writePartnershipResultDTO(paper, contents, goodsBatches); + List allTimestamps = new ArrayList<>(); + + if (paper.getUpdatedAt() != null) allTimestamps.add(paper.getUpdatedAt()); + if (contents != null) { + contents.stream() + .map(BaseEntity::getUpdatedAt) + .filter(Objects::nonNull) + .forEach(allTimestamps::add); + } + if (goodsBatches != null) { + goodsBatches.stream() + .flatMap(List::stream) + .map(BaseEntity::getUpdatedAt) + .filter(Objects::nonNull) + .forEach(allTimestamps::add); + } + + LocalDateTime mostRecentUpdatedAt = allTimestamps.stream() + .max(Comparator.naturalOrder()) + .orElse(paper.getUpdatedAt()); + + List optionDTOS = new ArrayList<>(); + if (contents != null) { + for (int i = 0; i < contents.size(); i++) { + PaperContent pc = contents.get(i); + List goods = (goodsBatches != null && goodsBatches.size() > i) + ? goodsBatches.get(i) : List.of(); + optionDTOS.add( + PartnershipResponseDTO.PartnershipOptionResponseDTO.builder() + .optionType(pc.getOptionType()) + .criterionType(pc.getCriterionType()) + .people(pc.getPeople()) + .cost(pc.getCost()) + .category(pc.getCategory()) + .discountRate(pc.getDiscount()) + .goods(goodsResultDTO(goods)) + .build() + ); + } + } return PartnershipResponseDTO.GetPartnershipDetailResponseDTO.builder() - .updatedAt(paper.getUpdatedAt()) // UpdatedAt 값 가져오기 - .responseInfo(responseInfo) // 상세정보 DTO 설정 + .partnershipId(paper.getId()) + .updatedAt(mostRecentUpdatedAt) // 가장 최근 UpdatedAt 값 가져오기 + .partnershipPeriodStart(paper.getPartnershipPeriodStart()) + .partnershipPeriodEnd(paper.getPartnershipPeriodEnd()) + .adminId(paper.getAdmin() != null ? paper.getAdmin().getId() : null) + .partnerId(paper.getPartner()!= null ? paper.getPartner().getId() : null) // 수동등록이면 null + .storeId(paper.getStore() != null ? paper.getStore().getId() : null) + .options(optionDTOS) .build(); } } diff --git a/src/main/java/com/assu/server/domain/partnership/dto/PartnershipResponseDTO.java b/src/main/java/com/assu/server/domain/partnership/dto/PartnershipResponseDTO.java index 4e349336..35ac7ae4 100644 --- a/src/main/java/com/assu/server/domain/partnership/dto/PartnershipResponseDTO.java +++ b/src/main/java/com/assu/server/domain/partnership/dto/PartnershipResponseDTO.java @@ -26,7 +26,6 @@ public static class WritePartnershipResponseDTO { private Long storeId; private String storeName; private String adminName; - private Boolean activated; private ActivationStatus isActivated; private List options; } @@ -135,7 +134,13 @@ public static class PartnerPartnershipWithAdminResponseDTO { @AllArgsConstructor @Builder public static class GetPartnershipDetailResponseDTO { + private Long partnershipId; private LocalDateTime updatedAt; - private WritePartnershipResponseDTO responseInfo; + private LocalDate partnershipPeriodStart; + private LocalDate partnershipPeriodEnd; + private Long adminId; + private Long partnerId; + private Long storeId; + private List options; } } diff --git a/src/main/java/com/assu/server/domain/partnership/entity/Goods.java b/src/main/java/com/assu/server/domain/partnership/entity/Goods.java index c63571df..9a2da2ac 100644 --- a/src/main/java/com/assu/server/domain/partnership/entity/Goods.java +++ b/src/main/java/com/assu/server/domain/partnership/entity/Goods.java @@ -1,5 +1,6 @@ package com.assu.server.domain.partnership.entity; +import com.assu.server.domain.common.entity.BaseEntity; import jakarta.persistence.Entity; import jakarta.persistence.FetchType; import jakarta.persistence.GeneratedValue; @@ -19,7 +20,7 @@ @NoArgsConstructor @Builder @AllArgsConstructor -public class Goods { +public class Goods extends BaseEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id;