From c147eef6e4149e58c263346a0dc117b907293993 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=84=9C=EC=A4=80?= <104981505+xeoxxn@users.noreply.github.com> Date: Mon, 28 Sep 2026 16:37:11 +0900 Subject: [PATCH 1/7] =?UTF-8?q?refactor:=20OpenFeedback=EC=9D=84=20Feedbac?= =?UTF-8?q?k=EC=9C=BC=EB=A1=9C=20=EB=A6=AC=EB=84=A4=EC=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/feedback/domain/{OpenFeedback.java => Feedback.java} | 0 .../{OpenFeedbackRepository.java => FeedbackRepository.java} | 0 .../service/{OpenFeedbackService.java => FeedbackService.java} | 0 .../{OpenFeedbackServiceImpl.java => FeedbackServiceImpl.java} | 0 .../{OpenFeedbackJpaEntity.java => FeedbackJpaEntity.java} | 0 ...{OpenFeedbackJpaRepository.java => FeedbackJpaRepository.java} | 0 ...penFeedbackRepositoryImpl.java => FeedbackRepositoryImpl.java} | 0 7 files changed, 0 insertions(+), 0 deletions(-) rename core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/domain/{OpenFeedback.java => Feedback.java} (100%) rename core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/repository/{OpenFeedbackRepository.java => FeedbackRepository.java} (100%) rename core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/{OpenFeedbackService.java => FeedbackService.java} (100%) rename core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/impl/{OpenFeedbackServiceImpl.java => FeedbackServiceImpl.java} (100%) rename infrastructure/db/src/main/java/kr/ac/kookmin/stream/db/welfare/{OpenFeedbackJpaEntity.java => FeedbackJpaEntity.java} (100%) rename infrastructure/db/src/main/java/kr/ac/kookmin/stream/db/welfare/{OpenFeedbackJpaRepository.java => FeedbackJpaRepository.java} (100%) rename infrastructure/db/src/main/java/kr/ac/kookmin/stream/db/welfare/{OpenFeedbackRepositoryImpl.java => FeedbackRepositoryImpl.java} (100%) diff --git a/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/domain/OpenFeedback.java b/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/domain/Feedback.java similarity index 100% rename from core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/domain/OpenFeedback.java rename to core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/domain/Feedback.java diff --git a/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/repository/OpenFeedbackRepository.java b/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/repository/FeedbackRepository.java similarity index 100% rename from core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/repository/OpenFeedbackRepository.java rename to core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/repository/FeedbackRepository.java diff --git a/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/OpenFeedbackService.java b/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/FeedbackService.java similarity index 100% rename from core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/OpenFeedbackService.java rename to core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/FeedbackService.java diff --git a/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/impl/OpenFeedbackServiceImpl.java b/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/impl/FeedbackServiceImpl.java similarity index 100% rename from core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/impl/OpenFeedbackServiceImpl.java rename to core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/impl/FeedbackServiceImpl.java diff --git a/infrastructure/db/src/main/java/kr/ac/kookmin/stream/db/welfare/OpenFeedbackJpaEntity.java b/infrastructure/db/src/main/java/kr/ac/kookmin/stream/db/welfare/FeedbackJpaEntity.java similarity index 100% rename from infrastructure/db/src/main/java/kr/ac/kookmin/stream/db/welfare/OpenFeedbackJpaEntity.java rename to infrastructure/db/src/main/java/kr/ac/kookmin/stream/db/welfare/FeedbackJpaEntity.java diff --git a/infrastructure/db/src/main/java/kr/ac/kookmin/stream/db/welfare/OpenFeedbackJpaRepository.java b/infrastructure/db/src/main/java/kr/ac/kookmin/stream/db/welfare/FeedbackJpaRepository.java similarity index 100% rename from infrastructure/db/src/main/java/kr/ac/kookmin/stream/db/welfare/OpenFeedbackJpaRepository.java rename to infrastructure/db/src/main/java/kr/ac/kookmin/stream/db/welfare/FeedbackJpaRepository.java diff --git a/infrastructure/db/src/main/java/kr/ac/kookmin/stream/db/welfare/OpenFeedbackRepositoryImpl.java b/infrastructure/db/src/main/java/kr/ac/kookmin/stream/db/welfare/FeedbackRepositoryImpl.java similarity index 100% rename from infrastructure/db/src/main/java/kr/ac/kookmin/stream/db/welfare/OpenFeedbackRepositoryImpl.java rename to infrastructure/db/src/main/java/kr/ac/kookmin/stream/db/welfare/FeedbackRepositoryImpl.java From ff6f5d88af4f5da3b071e8ce23a0e59ad94aa4ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=84=9C=EC=A4=80?= <104981505+xeoxxn@users.noreply.github.com> Date: Mon, 28 Sep 2026 16:38:01 +0900 Subject: [PATCH 2/7] =?UTF-8?q?refactor:=20Feedback=20=EB=A6=AC=EB=84=A4?= =?UTF-8?q?=EC=9E=84=EC=97=90=20=EB=A7=9E=EC=B6=B0=20=ED=83=80=EC=9E=85=20?= =?UTF-8?q?=EC=B0=B8=EC=A1=B0=20=EA=B0=B1=EC=8B=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feedback/AppFeedbackController.java | 14 +++++------ .../feedback/response/FeedbackResponse.java | 4 ++-- .../domain/feedback/domain/Feedback.java | 10 ++++---- .../repository/FeedbackRepository.java | 10 ++++---- .../feedback/service/FeedbackService.java | 10 ++++---- .../service/impl/FeedbackServiceImpl.java | 24 +++++++++---------- .../stream/db/welfare/FeedbackJpaEntity.java | 14 +++++------ .../db/welfare/FeedbackJpaRepository.java | 10 ++++---- .../db/welfare/FeedbackRepositoryImpl.java | 22 ++++++++--------- 9 files changed, 59 insertions(+), 59 deletions(-) diff --git a/api/app-api/src/main/java/kr/ac/kookmin/stream/api/app/welfare/feedback/AppFeedbackController.java b/api/app-api/src/main/java/kr/ac/kookmin/stream/api/app/welfare/feedback/AppFeedbackController.java index 23329609..4e08eabd 100644 --- a/api/app-api/src/main/java/kr/ac/kookmin/stream/api/app/welfare/feedback/AppFeedbackController.java +++ b/api/app-api/src/main/java/kr/ac/kookmin/stream/api/app/welfare/feedback/AppFeedbackController.java @@ -9,9 +9,9 @@ import kr.ac.kookmin.stream.api.common.dto.PageParams; import kr.ac.kookmin.stream.api.common.dto.PageResponse; import kr.ac.kookmin.stream.common.PageResult; +import kr.ac.kookmin.stream.welfare.domain.feedback.domain.Feedback; import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackRoundOptions; -import kr.ac.kookmin.stream.welfare.domain.feedback.domain.OpenFeedback; -import kr.ac.kookmin.stream.welfare.domain.feedback.service.OpenFeedbackService; +import kr.ac.kookmin.stream.welfare.domain.feedback.service.FeedbackService; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.ModelAttribute; @@ -27,12 +27,12 @@ @RequiredArgsConstructor public class AppFeedbackController implements AppFeedbackApi { - private final OpenFeedbackService openFeedbackService; + private final FeedbackService feedbackService; @Override @GetMapping("/{feedbackId}") public ApiResponse getFeedback(AppApiUser apiUser, @PathVariable Long feedbackId) { - OpenFeedback feedback = openFeedbackService.getById(feedbackId); + Feedback feedback = feedbackService.getById(feedbackId); return ApiResponse.success(FeedbackResponse.from(feedback)); } @@ -44,7 +44,7 @@ public ApiResponse> getFeedbacks( @RequestParam(required = false) Integer round, @Valid @ModelAttribute PageParams pageParams ) { - PageResult result = openFeedbackService.search(year, round, pageParams.toOffset()); + PageResult result = feedbackService.search(year, round, pageParams.toOffset()); return ApiResponse.success(PageResponse.from(result, FeedbackResponse::from)); } @@ -54,7 +54,7 @@ public ApiResponse createFeedback( AppApiUser apiUser, @Valid @RequestBody FeedbackCreateRequest request ) { - OpenFeedback feedback = openFeedbackService.create(apiUser.userId(), request.question()); + Feedback feedback = feedbackService.create(apiUser.userId(), request.question()); return ApiResponse.success(FeedbackResponse.from(feedback)); } @@ -64,7 +64,7 @@ public ApiResponse getFeedbackRounds( AppApiUser apiUser, @RequestParam(required = false) Integer year ) { - FeedbackRoundOptions options = openFeedbackService.getRoundOptions(year); + FeedbackRoundOptions options = feedbackService.getRoundOptions(year); return ApiResponse.success(FeedbackRoundsResponse.from(options)); } } diff --git a/api/app-api/src/main/java/kr/ac/kookmin/stream/api/app/welfare/feedback/response/FeedbackResponse.java b/api/app-api/src/main/java/kr/ac/kookmin/stream/api/app/welfare/feedback/response/FeedbackResponse.java index e998b185..b5efd301 100644 --- a/api/app-api/src/main/java/kr/ac/kookmin/stream/api/app/welfare/feedback/response/FeedbackResponse.java +++ b/api/app-api/src/main/java/kr/ac/kookmin/stream/api/app/welfare/feedback/response/FeedbackResponse.java @@ -1,7 +1,7 @@ package kr.ac.kookmin.stream.api.app.welfare.feedback.response; import java.time.LocalDateTime; -import kr.ac.kookmin.stream.welfare.domain.feedback.domain.OpenFeedback; +import kr.ac.kookmin.stream.welfare.domain.feedback.domain.Feedback; public record FeedbackResponse( Long feedbackId, @@ -12,7 +12,7 @@ public record FeedbackResponse( LocalDateTime answeredAt, String answer ) { - public static FeedbackResponse from(OpenFeedback feedback) { + public static FeedbackResponse from(Feedback feedback) { return new FeedbackResponse( feedback.id(), feedback.year(), diff --git a/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/domain/Feedback.java b/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/domain/Feedback.java index 3eeefe7c..7815fd78 100644 --- a/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/domain/Feedback.java +++ b/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/domain/Feedback.java @@ -2,7 +2,7 @@ import java.time.LocalDateTime; -public record OpenFeedback( +public record Feedback( Long id, int year, int round, @@ -15,12 +15,12 @@ public record OpenFeedback( ) { // 회차는 서버가 자동 배정하므로 여기서 받는다(요청 시각 = questionedAt, 아직 답변 없음). - public static OpenFeedback create(int year, int round, String question, Long createdBy) { - return new OpenFeedback(null, year, round, question, LocalDateTime.now(), null, null, createdBy, null); + public static Feedback create(int year, int round, String question, Long createdBy) { + return new Feedback(null, year, round, question, LocalDateTime.now(), null, null, createdBy, null); } // DB에서 복원할 때 모든 필드를 그대로 받는다. - public static OpenFeedback of( + public static Feedback of( Long id, int year, int round, @@ -31,6 +31,6 @@ public static OpenFeedback of( Long createdBy, Long answeredBy ) { - return new OpenFeedback(id, year, round, question, questionedAt, answer, answeredAt, createdBy, answeredBy); + return new Feedback(id, year, round, question, questionedAt, answer, answeredAt, createdBy, answeredBy); } } diff --git a/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/repository/FeedbackRepository.java b/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/repository/FeedbackRepository.java index cfd679bf..e95803f1 100644 --- a/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/repository/FeedbackRepository.java +++ b/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/repository/FeedbackRepository.java @@ -3,14 +3,14 @@ import java.util.Optional; import kr.ac.kookmin.stream.common.PageOffset; import kr.ac.kookmin.stream.common.PageResult; -import kr.ac.kookmin.stream.welfare.domain.feedback.domain.OpenFeedback; +import kr.ac.kookmin.stream.welfare.domain.feedback.domain.Feedback; -public interface OpenFeedbackRepository { +public interface FeedbackRepository { - Optional findById(Long id); + Optional findById(Long id); // year/round가 null이면 그 조건은 필터하지 않는다 - PageResult search(Integer year, Integer round, PageOffset pageOffset); + PageResult search(Integer year, Integer round, PageOffset pageOffset); - OpenFeedback save(OpenFeedback feedback); + Feedback save(Feedback feedback); } diff --git a/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/FeedbackService.java b/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/FeedbackService.java index 45611551..18cef56c 100644 --- a/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/FeedbackService.java +++ b/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/FeedbackService.java @@ -2,18 +2,18 @@ import kr.ac.kookmin.stream.common.PageOffset; import kr.ac.kookmin.stream.common.PageResult; +import kr.ac.kookmin.stream.welfare.domain.feedback.domain.Feedback; import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackRoundOptions; -import kr.ac.kookmin.stream.welfare.domain.feedback.domain.OpenFeedback; -public interface OpenFeedbackService { +public interface FeedbackService { - OpenFeedback getById(Long id); + Feedback getById(Long id); // year/round가 null이면 그 조건은 전체(필터 없음) - PageResult search(Integer year, Integer round, PageOffset pageOffset); + PageResult search(Integer year, Integer round, PageOffset pageOffset); // 회차는 현재 열려 있는 회차로 서버가 자동 배정한다 - OpenFeedback create(Long memberId, String question); + Feedback create(Long memberId, String question); // year가 null이면 현재 연도 기준 FeedbackRoundOptions getRoundOptions(Integer year); diff --git a/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/impl/FeedbackServiceImpl.java b/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/impl/FeedbackServiceImpl.java index 8c31a8ee..f5150c85 100644 --- a/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/impl/FeedbackServiceImpl.java +++ b/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/impl/FeedbackServiceImpl.java @@ -5,46 +5,46 @@ import kr.ac.kookmin.stream.common.BusinessException; import kr.ac.kookmin.stream.common.PageOffset; import kr.ac.kookmin.stream.common.PageResult; +import kr.ac.kookmin.stream.welfare.domain.feedback.domain.Feedback; import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackErrorCode; import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackRound; import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackRoundOptions; -import kr.ac.kookmin.stream.welfare.domain.feedback.domain.OpenFeedback; +import kr.ac.kookmin.stream.welfare.domain.feedback.repository.FeedbackRepository; import kr.ac.kookmin.stream.welfare.domain.feedback.repository.FeedbackRoundRepository; -import kr.ac.kookmin.stream.welfare.domain.feedback.repository.OpenFeedbackRepository; -import kr.ac.kookmin.stream.welfare.domain.feedback.service.OpenFeedbackService; +import kr.ac.kookmin.stream.welfare.domain.feedback.service.FeedbackService; import lombok.RequiredArgsConstructor; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @Service @RequiredArgsConstructor -class OpenFeedbackServiceImpl implements OpenFeedbackService { +class FeedbackServiceImpl implements FeedbackService { - private final OpenFeedbackRepository openFeedbackRepository; + private final FeedbackRepository feedbackRepository; private final FeedbackRoundRepository feedbackRoundRepository; @Override - public OpenFeedback getById(Long id) { - return openFeedbackRepository.findById(id) + public Feedback getById(Long id) { + return feedbackRepository.findById(id) .orElseThrow(() -> new BusinessException(FeedbackErrorCode.FEEDBACK_NOT_FOUND)); } @Override - public PageResult search(Integer year, Integer round, PageOffset pageOffset) { + public PageResult search(Integer year, Integer round, PageOffset pageOffset) { if (round != null && round <= 0) { throw new BusinessException(FeedbackErrorCode.INVALID_FEEDBACK_ROUND); } - return openFeedbackRepository.search(year, round, pageOffset); + return feedbackRepository.search(year, round, pageOffset); } @Override @Transactional - public OpenFeedback create(Long memberId, String question) { + public Feedback create(Long memberId, String question) { FeedbackRound openRound = feedbackRoundRepository.findOpenAt(LocalDateTime.now()) .orElseThrow(() -> new BusinessException(FeedbackErrorCode.FEEDBACK_NOT_OPEN)); - OpenFeedback feedback = OpenFeedback.create(openRound.year(), openRound.round(), question, memberId); - return openFeedbackRepository.save(feedback); + Feedback feedback = Feedback.create(openRound.year(), openRound.round(), question, memberId); + return feedbackRepository.save(feedback); } @Override diff --git a/infrastructure/db/src/main/java/kr/ac/kookmin/stream/db/welfare/FeedbackJpaEntity.java b/infrastructure/db/src/main/java/kr/ac/kookmin/stream/db/welfare/FeedbackJpaEntity.java index 7ff3cadb..b9ebd879 100644 --- a/infrastructure/db/src/main/java/kr/ac/kookmin/stream/db/welfare/FeedbackJpaEntity.java +++ b/infrastructure/db/src/main/java/kr/ac/kookmin/stream/db/welfare/FeedbackJpaEntity.java @@ -8,14 +8,14 @@ import jakarta.persistence.Table; import java.time.LocalDateTime; import kr.ac.kookmin.stream.db.common.BaseSoftDeleteEntity; -import kr.ac.kookmin.stream.welfare.domain.feedback.domain.OpenFeedback; +import kr.ac.kookmin.stream.welfare.domain.feedback.domain.Feedback; import lombok.AccessLevel; import lombok.NoArgsConstructor; @Entity @Table(name = "open_feedbacks") @NoArgsConstructor(access = AccessLevel.PROTECTED) -public class OpenFeedbackJpaEntity extends BaseSoftDeleteEntity { +public class FeedbackJpaEntity extends BaseSoftDeleteEntity { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @@ -49,7 +49,7 @@ public class OpenFeedbackJpaEntity extends BaseSoftDeleteEntity { @Column(name = "answered_by") private Long answeredBy; - private OpenFeedbackJpaEntity(OpenFeedback feedback) { + private FeedbackJpaEntity(Feedback feedback) { this.id = feedback.id(); this.year = feedback.year(); this.round = feedback.round(); @@ -61,11 +61,11 @@ private OpenFeedbackJpaEntity(OpenFeedback feedback) { this.answeredBy = feedback.answeredBy(); } - public static OpenFeedbackJpaEntity from(OpenFeedback feedback) { - return new OpenFeedbackJpaEntity(feedback); + public static FeedbackJpaEntity from(Feedback feedback) { + return new FeedbackJpaEntity(feedback); } - public OpenFeedback toDomain() { - return OpenFeedback.of(id, year, round, question, questionedAt, answer, answeredAt, createdBy, answeredBy); + public Feedback toDomain() { + return Feedback.of(id, year, round, question, questionedAt, answer, answeredAt, createdBy, answeredBy); } } diff --git a/infrastructure/db/src/main/java/kr/ac/kookmin/stream/db/welfare/FeedbackJpaRepository.java b/infrastructure/db/src/main/java/kr/ac/kookmin/stream/db/welfare/FeedbackJpaRepository.java index ac24bdd7..9b6fd9e8 100644 --- a/infrastructure/db/src/main/java/kr/ac/kookmin/stream/db/welfare/FeedbackJpaRepository.java +++ b/infrastructure/db/src/main/java/kr/ac/kookmin/stream/db/welfare/FeedbackJpaRepository.java @@ -7,22 +7,22 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; -public interface OpenFeedbackJpaRepository extends JpaRepository { +public interface FeedbackJpaRepository extends JpaRepository { - Optional findByIdAndIsDeletedFalse(Long id); + Optional findByIdAndIsDeletedFalse(Long id); @Query(value = """ - SELECT f FROM OpenFeedbackJpaEntity f + SELECT f FROM FeedbackJpaEntity f WHERE f.isDeleted = false AND (:year IS NULL OR f.year = :year) AND (:round IS NULL OR f.round = :round) ORDER BY f.questionedAt DESC, f.id DESC """, countQuery = """ - SELECT COUNT(f) FROM OpenFeedbackJpaEntity f + SELECT COUNT(f) FROM FeedbackJpaEntity f WHERE f.isDeleted = false AND (:year IS NULL OR f.year = :year) AND (:round IS NULL OR f.round = :round) """) - Page search(@Param("year") Integer year, @Param("round") Integer round, Pageable pageable); + Page search(@Param("year") Integer year, @Param("round") Integer round, Pageable pageable); } diff --git a/infrastructure/db/src/main/java/kr/ac/kookmin/stream/db/welfare/FeedbackRepositoryImpl.java b/infrastructure/db/src/main/java/kr/ac/kookmin/stream/db/welfare/FeedbackRepositoryImpl.java index f585850c..0733dedc 100644 --- a/infrastructure/db/src/main/java/kr/ac/kookmin/stream/db/welfare/FeedbackRepositoryImpl.java +++ b/infrastructure/db/src/main/java/kr/ac/kookmin/stream/db/welfare/FeedbackRepositoryImpl.java @@ -3,8 +3,8 @@ import java.util.Optional; import kr.ac.kookmin.stream.common.PageOffset; import kr.ac.kookmin.stream.common.PageResult; -import kr.ac.kookmin.stream.welfare.domain.feedback.domain.OpenFeedback; -import kr.ac.kookmin.stream.welfare.domain.feedback.repository.OpenFeedbackRepository; +import kr.ac.kookmin.stream.welfare.domain.feedback.domain.Feedback; +import kr.ac.kookmin.stream.welfare.domain.feedback.repository.FeedbackRepository; import lombok.RequiredArgsConstructor; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; @@ -12,23 +12,23 @@ @Repository @RequiredArgsConstructor -public class OpenFeedbackRepositoryImpl implements OpenFeedbackRepository { +public class FeedbackRepositoryImpl implements FeedbackRepository { - private final OpenFeedbackJpaRepository openFeedbackJpaRepository; + private final FeedbackJpaRepository feedbackJpaRepository; @Override - public Optional findById(Long id) { - return openFeedbackJpaRepository.findByIdAndIsDeletedFalse(id).map(OpenFeedbackJpaEntity::toDomain); + public Optional findById(Long id) { + return feedbackJpaRepository.findByIdAndIsDeletedFalse(id).map(FeedbackJpaEntity::toDomain); } @Override - public PageResult search(Integer year, Integer round, PageOffset pageOffset) { - Page result = openFeedbackJpaRepository.search( + public PageResult search(Integer year, Integer round, PageOffset pageOffset) { + Page result = feedbackJpaRepository.search( year, round, PageRequest.of(pageOffset.page(), pageOffset.size()) ); return PageResult.of( - result.getContent().stream().map(OpenFeedbackJpaEntity::toDomain).toList(), + result.getContent().stream().map(FeedbackJpaEntity::toDomain).toList(), result.getNumber(), result.getSize(), result.getTotalElements() @@ -36,7 +36,7 @@ public PageResult search(Integer year, Integer round, PageOffset p } @Override - public OpenFeedback save(OpenFeedback feedback) { - return openFeedbackJpaRepository.save(OpenFeedbackJpaEntity.from(feedback)).toDomain(); + public Feedback save(Feedback feedback) { + return feedbackJpaRepository.save(FeedbackJpaEntity.from(feedback)).toDomain(); } } From c26dae2a25b52f8a1b0d39674a56ccd9b5120268 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=84=9C=EC=A4=80?= <104981505+xeoxxn@users.noreply.github.com> Date: Mon, 28 Sep 2026 16:45:17 +0900 Subject: [PATCH 3/7] =?UTF-8?q?refactor:=20round=20=EC=9C=A0=ED=9A=A8?= =?UTF-8?q?=EC=84=B1=20=EA=B2=80=EC=82=AC=EB=A5=BC=20FeedbackSearchConditi?= =?UTF-8?q?on=20VO=EB=A1=9C=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../feedback/AppFeedbackController.java | 4 +++- .../domain/FeedbackSearchCondition.java | 20 +++++++++++++++++++ .../feedback/service/FeedbackService.java | 4 ++-- .../service/impl/FeedbackServiceImpl.java | 8 +++----- 4 files changed, 28 insertions(+), 8 deletions(-) create mode 100644 core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/domain/FeedbackSearchCondition.java diff --git a/api/app-api/src/main/java/kr/ac/kookmin/stream/api/app/welfare/feedback/AppFeedbackController.java b/api/app-api/src/main/java/kr/ac/kookmin/stream/api/app/welfare/feedback/AppFeedbackController.java index 4e08eabd..7056c56c 100644 --- a/api/app-api/src/main/java/kr/ac/kookmin/stream/api/app/welfare/feedback/AppFeedbackController.java +++ b/api/app-api/src/main/java/kr/ac/kookmin/stream/api/app/welfare/feedback/AppFeedbackController.java @@ -11,6 +11,7 @@ import kr.ac.kookmin.stream.common.PageResult; import kr.ac.kookmin.stream.welfare.domain.feedback.domain.Feedback; import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackRoundOptions; +import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackSearchCondition; import kr.ac.kookmin.stream.welfare.domain.feedback.service.FeedbackService; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; @@ -44,7 +45,8 @@ public ApiResponse> getFeedbacks( @RequestParam(required = false) Integer round, @Valid @ModelAttribute PageParams pageParams ) { - PageResult result = feedbackService.search(year, round, pageParams.toOffset()); + FeedbackSearchCondition condition = FeedbackSearchCondition.of(year, round); + PageResult result = feedbackService.search(condition, pageParams.toOffset()); return ApiResponse.success(PageResponse.from(result, FeedbackResponse::from)); } diff --git a/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/domain/FeedbackSearchCondition.java b/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/domain/FeedbackSearchCondition.java new file mode 100644 index 00000000..b3ff17b4 --- /dev/null +++ b/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/domain/FeedbackSearchCondition.java @@ -0,0 +1,20 @@ +package kr.ac.kookmin.stream.welfare.domain.feedback.domain; + +import kr.ac.kookmin.stream.common.BusinessException; + +/** + * 피드백 목록 조회의 연도·회차 필터. round의 유효성(1 이상)은 "검색"이라는 맥락과는 무관한, + * round 값 자체의 불변식이라 이 VO의 정적 팩토리에서 검증한다(검색 로직과 관심사를 분리). + * + * @param year null이면 전체 연도 + * @param round null이면 그 연도의 전체 회차 + */ +public record FeedbackSearchCondition(Integer year, Integer round) { + + public static FeedbackSearchCondition of(Integer year, Integer round) { + if (round != null && round <= 0) { + throw new BusinessException(FeedbackErrorCode.INVALID_FEEDBACK_ROUND); + } + return new FeedbackSearchCondition(year, round); + } +} diff --git a/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/FeedbackService.java b/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/FeedbackService.java index 18cef56c..63132a32 100644 --- a/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/FeedbackService.java +++ b/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/FeedbackService.java @@ -4,13 +4,13 @@ import kr.ac.kookmin.stream.common.PageResult; import kr.ac.kookmin.stream.welfare.domain.feedback.domain.Feedback; import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackRoundOptions; +import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackSearchCondition; public interface FeedbackService { Feedback getById(Long id); - // year/round가 null이면 그 조건은 전체(필터 없음) - PageResult search(Integer year, Integer round, PageOffset pageOffset); + PageResult search(FeedbackSearchCondition condition, PageOffset pageOffset); // 회차는 현재 열려 있는 회차로 서버가 자동 배정한다 Feedback create(Long memberId, String question); diff --git a/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/impl/FeedbackServiceImpl.java b/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/impl/FeedbackServiceImpl.java index f5150c85..dbf33d56 100644 --- a/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/impl/FeedbackServiceImpl.java +++ b/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/impl/FeedbackServiceImpl.java @@ -9,6 +9,7 @@ import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackErrorCode; import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackRound; import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackRoundOptions; +import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackSearchCondition; import kr.ac.kookmin.stream.welfare.domain.feedback.repository.FeedbackRepository; import kr.ac.kookmin.stream.welfare.domain.feedback.repository.FeedbackRoundRepository; import kr.ac.kookmin.stream.welfare.domain.feedback.service.FeedbackService; @@ -30,11 +31,8 @@ public Feedback getById(Long id) { } @Override - public PageResult search(Integer year, Integer round, PageOffset pageOffset) { - if (round != null && round <= 0) { - throw new BusinessException(FeedbackErrorCode.INVALID_FEEDBACK_ROUND); - } - return feedbackRepository.search(year, round, pageOffset); + public PageResult search(FeedbackSearchCondition condition, PageOffset pageOffset) { + return feedbackRepository.search(condition.year(), condition.round(), pageOffset); } @Override From cff69da46d8a902d082e061fb495424a8f61ed6b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=84=9C=EC=A4=80?= <104981505+xeoxxn@users.noreply.github.com> Date: Mon, 28 Sep 2026 17:43:23 +0900 Subject: [PATCH 4/7] =?UTF-8?q?refactor:=20FeedbackSearchCondition?= =?UTF-8?q?=EC=9D=84=20FeedbackPeriod=EB=A1=9C=20=EB=A6=AC=EB=84=A4?= =?UTF-8?q?=EC=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/{FeedbackSearchCondition.java => FeedbackPeriod.java} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/domain/{FeedbackSearchCondition.java => FeedbackPeriod.java} (100%) diff --git a/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/domain/FeedbackSearchCondition.java b/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/domain/FeedbackPeriod.java similarity index 100% rename from core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/domain/FeedbackSearchCondition.java rename to core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/domain/FeedbackPeriod.java From 934b9b38311fae98ae2f2faad00a316cf30cc24e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=84=9C=EC=A4=80?= <104981505+xeoxxn@users.noreply.github.com> Date: Mon, 28 Sep 2026 17:43:45 +0900 Subject: [PATCH 5/7] =?UTF-8?q?refactor:=20FeedbackPeriod=20=EB=A6=AC?= =?UTF-8?q?=EB=84=A4=EC=9E=84=EC=97=90=20=EB=A7=9E=EC=B6=B0=20=EB=82=B4?= =?UTF-8?q?=EC=9A=A9=20=EA=B0=B1=EC=8B=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../welfare/feedback/AppFeedbackController.java | 6 +++--- .../domain/feedback/domain/FeedbackPeriod.java | 14 ++++++-------- .../domain/feedback/service/FeedbackService.java | 4 ++-- .../feedback/service/impl/FeedbackServiceImpl.java | 6 +++--- 4 files changed, 14 insertions(+), 16 deletions(-) diff --git a/api/app-api/src/main/java/kr/ac/kookmin/stream/api/app/welfare/feedback/AppFeedbackController.java b/api/app-api/src/main/java/kr/ac/kookmin/stream/api/app/welfare/feedback/AppFeedbackController.java index 7056c56c..f9cb7595 100644 --- a/api/app-api/src/main/java/kr/ac/kookmin/stream/api/app/welfare/feedback/AppFeedbackController.java +++ b/api/app-api/src/main/java/kr/ac/kookmin/stream/api/app/welfare/feedback/AppFeedbackController.java @@ -11,7 +11,7 @@ import kr.ac.kookmin.stream.common.PageResult; import kr.ac.kookmin.stream.welfare.domain.feedback.domain.Feedback; import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackRoundOptions; -import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackSearchCondition; +import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackPeriod; import kr.ac.kookmin.stream.welfare.domain.feedback.service.FeedbackService; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.GetMapping; @@ -45,8 +45,8 @@ public ApiResponse> getFeedbacks( @RequestParam(required = false) Integer round, @Valid @ModelAttribute PageParams pageParams ) { - FeedbackSearchCondition condition = FeedbackSearchCondition.of(year, round); - PageResult result = feedbackService.search(condition, pageParams.toOffset()); + FeedbackPeriod period = FeedbackPeriod.of(year, round); + PageResult result = feedbackService.search(period, pageParams.toOffset()); return ApiResponse.success(PageResponse.from(result, FeedbackResponse::from)); } diff --git a/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/domain/FeedbackPeriod.java b/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/domain/FeedbackPeriod.java index b3ff17b4..b76dd28e 100644 --- a/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/domain/FeedbackPeriod.java +++ b/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/domain/FeedbackPeriod.java @@ -3,18 +3,16 @@ import kr.ac.kookmin.stream.common.BusinessException; /** - * 피드백 목록 조회의 연도·회차 필터. round의 유효성(1 이상)은 "검색"이라는 맥락과는 무관한, - * round 값 자체의 불변식이라 이 VO의 정적 팩토리에서 검증한다(검색 로직과 관심사를 분리). - * - * @param year null이면 전체 연도 - * @param round null이면 그 연도의 전체 회차 + * 연도·회차로 특정 회차를 가리키는 값. 실제로 존재하는 회차 엔티티({@link FeedbackRound})와 달리, + * 존재 여부와 무관하게 "어느 회차를 가리키는가"만 표현한다 — 둘 다 없으면 "지정 없음"을 뜻한다. + * round의 유효성(1 이상)은 이 값 자체의 불변식이라 여기서 검증한다. */ -public record FeedbackSearchCondition(Integer year, Integer round) { +public record FeedbackPeriod(Integer year, Integer round) { - public static FeedbackSearchCondition of(Integer year, Integer round) { + public static FeedbackPeriod of(Integer year, Integer round) { if (round != null && round <= 0) { throw new BusinessException(FeedbackErrorCode.INVALID_FEEDBACK_ROUND); } - return new FeedbackSearchCondition(year, round); + return new FeedbackPeriod(year, round); } } diff --git a/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/FeedbackService.java b/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/FeedbackService.java index 63132a32..ee96592a 100644 --- a/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/FeedbackService.java +++ b/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/FeedbackService.java @@ -4,13 +4,13 @@ import kr.ac.kookmin.stream.common.PageResult; import kr.ac.kookmin.stream.welfare.domain.feedback.domain.Feedback; import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackRoundOptions; -import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackSearchCondition; +import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackPeriod; public interface FeedbackService { Feedback getById(Long id); - PageResult search(FeedbackSearchCondition condition, PageOffset pageOffset); + PageResult search(FeedbackPeriod period, PageOffset pageOffset); // 회차는 현재 열려 있는 회차로 서버가 자동 배정한다 Feedback create(Long memberId, String question); diff --git a/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/impl/FeedbackServiceImpl.java b/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/impl/FeedbackServiceImpl.java index dbf33d56..99cc180b 100644 --- a/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/impl/FeedbackServiceImpl.java +++ b/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/impl/FeedbackServiceImpl.java @@ -9,7 +9,7 @@ import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackErrorCode; import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackRound; import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackRoundOptions; -import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackSearchCondition; +import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackPeriod; import kr.ac.kookmin.stream.welfare.domain.feedback.repository.FeedbackRepository; import kr.ac.kookmin.stream.welfare.domain.feedback.repository.FeedbackRoundRepository; import kr.ac.kookmin.stream.welfare.domain.feedback.service.FeedbackService; @@ -31,8 +31,8 @@ public Feedback getById(Long id) { } @Override - public PageResult search(FeedbackSearchCondition condition, PageOffset pageOffset) { - return feedbackRepository.search(condition.year(), condition.round(), pageOffset); + public PageResult search(FeedbackPeriod period, PageOffset pageOffset) { + return feedbackRepository.search(period.year(), period.round(), pageOffset); } @Override From ca16c23c85c2a4d81597ebfd7e272f9ae169844d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=84=9C=EC=A4=80?= <104981505+xeoxxn@users.noreply.github.com> Date: Mon, 28 Sep 2026 17:52:54 +0900 Subject: [PATCH 6/7] =?UTF-8?q?refactor:=20FeedbackRoundOptions=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0,=20=EC=97=B0=EB=8F=84/=ED=9A=8C=EC=B0=A8=20?= =?UTF-8?q?=EC=A1=B0=ED=9A=8C=EB=A5=BC=20Service=20=EB=91=90=20=EB=A9=94?= =?UTF-8?q?=EC=84=9C=EB=93=9C=EB=A1=9C=20=EB=B6=84=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../domain/feedback/domain/FeedbackRoundOptions.java | 12 ------------ 1 file changed, 12 deletions(-) delete mode 100644 core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/domain/FeedbackRoundOptions.java diff --git a/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/domain/FeedbackRoundOptions.java b/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/domain/FeedbackRoundOptions.java deleted file mode 100644 index 9d570c69..00000000 --- a/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/domain/FeedbackRoundOptions.java +++ /dev/null @@ -1,12 +0,0 @@ -package kr.ac.kookmin.stream.welfare.domain.feedback.domain; - -import java.util.List; - -// 목록 화면의 연도 드롭다운·회차 칩을 그리는 데 쓰는 조회 전용 값 객체. -// years: 피드백 회차가 하나라도 존재했던 전체 연도. rounds: year 기준으로 실제 존재하는 회차 번호. -public record FeedbackRoundOptions(List years, int year, List rounds) { - - public static FeedbackRoundOptions of(List years, int year, List rounds) { - return new FeedbackRoundOptions(years, year, rounds); - } -} From c0b461f38d1d175f38091528e213a79f13542c05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=84=9C=EC=A4=80?= <104981505+xeoxxn@users.noreply.github.com> Date: Mon, 28 Sep 2026 17:53:07 +0900 Subject: [PATCH 7/7] =?UTF-8?q?refactor:=20FeedbackRoundOptions=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0=EC=97=90=20=EB=A7=9E=EC=B6=B0=20=EB=82=98?= =?UTF-8?q?=EB=A8=B8=EC=A7=80=20=EC=B0=B8=EC=A1=B0=20=EA=B0=B1=EC=8B=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../welfare/feedback/AppFeedbackController.java | 9 ++++++--- .../feedback/response/FeedbackRoundsResponse.java | 5 ++--- .../domain/feedback/service/FeedbackService.java | 9 ++++++--- .../feedback/service/impl/FeedbackServiceImpl.java | 14 +++++++------- 4 files changed, 21 insertions(+), 16 deletions(-) diff --git a/api/app-api/src/main/java/kr/ac/kookmin/stream/api/app/welfare/feedback/AppFeedbackController.java b/api/app-api/src/main/java/kr/ac/kookmin/stream/api/app/welfare/feedback/AppFeedbackController.java index f9cb7595..d0396e22 100644 --- a/api/app-api/src/main/java/kr/ac/kookmin/stream/api/app/welfare/feedback/AppFeedbackController.java +++ b/api/app-api/src/main/java/kr/ac/kookmin/stream/api/app/welfare/feedback/AppFeedbackController.java @@ -1,6 +1,8 @@ package kr.ac.kookmin.stream.api.app.welfare.feedback; import jakarta.validation.Valid; +import java.time.LocalDateTime; +import java.util.List; import kr.ac.kookmin.stream.api.app.AppApiUser; import kr.ac.kookmin.stream.api.app.welfare.feedback.request.FeedbackCreateRequest; import kr.ac.kookmin.stream.api.app.welfare.feedback.response.FeedbackResponse; @@ -10,7 +12,6 @@ import kr.ac.kookmin.stream.api.common.dto.PageResponse; import kr.ac.kookmin.stream.common.PageResult; import kr.ac.kookmin.stream.welfare.domain.feedback.domain.Feedback; -import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackRoundOptions; import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackPeriod; import kr.ac.kookmin.stream.welfare.domain.feedback.service.FeedbackService; import lombok.RequiredArgsConstructor; @@ -66,7 +67,9 @@ public ApiResponse getFeedbackRounds( AppApiUser apiUser, @RequestParam(required = false) Integer year ) { - FeedbackRoundOptions options = feedbackService.getRoundOptions(year); - return ApiResponse.success(FeedbackRoundsResponse.from(options)); + List years = feedbackService.getAvailableYears(); + int targetYear = year != null ? year : LocalDateTime.now().getYear(); + List rounds = feedbackService.getRoundsOf(targetYear); + return ApiResponse.success(FeedbackRoundsResponse.of(years, targetYear, rounds)); } } diff --git a/api/app-api/src/main/java/kr/ac/kookmin/stream/api/app/welfare/feedback/response/FeedbackRoundsResponse.java b/api/app-api/src/main/java/kr/ac/kookmin/stream/api/app/welfare/feedback/response/FeedbackRoundsResponse.java index 3434da2a..c7ee9928 100644 --- a/api/app-api/src/main/java/kr/ac/kookmin/stream/api/app/welfare/feedback/response/FeedbackRoundsResponse.java +++ b/api/app-api/src/main/java/kr/ac/kookmin/stream/api/app/welfare/feedback/response/FeedbackRoundsResponse.java @@ -1,11 +1,10 @@ package kr.ac.kookmin.stream.api.app.welfare.feedback.response; import java.util.List; -import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackRoundOptions; public record FeedbackRoundsResponse(List years, int year, List rounds) { - public static FeedbackRoundsResponse from(FeedbackRoundOptions options) { - return new FeedbackRoundsResponse(options.years(), options.year(), options.rounds()); + public static FeedbackRoundsResponse of(List years, int year, List rounds) { + return new FeedbackRoundsResponse(years, year, rounds); } } diff --git a/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/FeedbackService.java b/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/FeedbackService.java index ee96592a..7fdc96b2 100644 --- a/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/FeedbackService.java +++ b/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/FeedbackService.java @@ -1,9 +1,9 @@ package kr.ac.kookmin.stream.welfare.domain.feedback.service; +import java.util.List; import kr.ac.kookmin.stream.common.PageOffset; import kr.ac.kookmin.stream.common.PageResult; import kr.ac.kookmin.stream.welfare.domain.feedback.domain.Feedback; -import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackRoundOptions; import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackPeriod; public interface FeedbackService { @@ -15,6 +15,9 @@ public interface FeedbackService { // 회차는 현재 열려 있는 회차로 서버가 자동 배정한다 Feedback create(Long memberId, String question); - // year가 null이면 현재 연도 기준 - FeedbackRoundOptions getRoundOptions(Integer year); + // 회차가 하나라도 존재했던 연도 목록(최신순) + List getAvailableYears(); + + // 해당 연도에 실제로 존재하는 회차 번호(오름차순) + List getRoundsOf(int year); } diff --git a/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/impl/FeedbackServiceImpl.java b/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/impl/FeedbackServiceImpl.java index 99cc180b..de1d3d76 100644 --- a/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/impl/FeedbackServiceImpl.java +++ b/core/domain/welfare/src/main/java/kr/ac/kookmin/stream/welfare/domain/feedback/service/impl/FeedbackServiceImpl.java @@ -7,9 +7,8 @@ import kr.ac.kookmin.stream.common.PageResult; import kr.ac.kookmin.stream.welfare.domain.feedback.domain.Feedback; import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackErrorCode; -import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackRound; -import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackRoundOptions; import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackPeriod; +import kr.ac.kookmin.stream.welfare.domain.feedback.domain.FeedbackRound; import kr.ac.kookmin.stream.welfare.domain.feedback.repository.FeedbackRepository; import kr.ac.kookmin.stream.welfare.domain.feedback.repository.FeedbackRoundRepository; import kr.ac.kookmin.stream.welfare.domain.feedback.service.FeedbackService; @@ -46,11 +45,12 @@ public Feedback create(Long memberId, String question) { } @Override - public FeedbackRoundOptions getRoundOptions(Integer year) { - List years = feedbackRoundRepository.findDistinctYears(); - int targetYear = year != null ? year : LocalDateTime.now().getYear(); - List rounds = feedbackRoundRepository.findRoundsByYear(targetYear); + public List getAvailableYears() { + return feedbackRoundRepository.findDistinctYears(); + } - return FeedbackRoundOptions.of(years, targetYear, rounds); + @Override + public List getRoundsOf(int year) { + return feedbackRoundRepository.findRoundsByYear(year); } }