From d82aedebfe9b0ff1e4ced6ade8fea511b9e4be48 Mon Sep 17 00:00:00 2001 From: pokerbearkr Date: Wed, 25 Jun 2025 16:40:40 +0900 Subject: [PATCH] =?UTF-8?q?feat=20:=20=EC=9C=A0=EC=A0=80=20=EB=B3=B8?= =?UTF-8?q?=EC=9D=B8=20=EC=8B=A0=EA=B3=A0=20=EB=82=B4=EC=97=AD=20=EC=A1=B0?= =?UTF-8?q?=ED=9A=8C,=20=EC=9A=B4=EC=98=81=EC=9E=90=EA=B0=80=20=EC=B2=98?= =?UTF-8?q?=EB=A6=AC=EC=8B=9C=20=EB=A9=94=EC=84=B8=EC=A7=80=20=EC=9E=85?= =?UTF-8?q?=EB=A0=A5=20=EA=B0=80=EB=8A=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../report/dto/ReportMyResponse.java | 29 +++++++++++++++++++ .../report/dto/ReportStatusUpdateRequest.java | 3 +- .../report/service/ReportService.java | 12 +++++++- .../codetest/domain/report/model/Report.java | 7 ++++- .../report/repository/ReportRepository.java | 3 ++ .../ranking/RankingController.java | 1 - .../presentation/report/ReportController.java | 11 +++++++ 7 files changed, 62 insertions(+), 4 deletions(-) create mode 100644 src/main/java/org/ezcode/codetest/application/report/dto/ReportMyResponse.java diff --git a/src/main/java/org/ezcode/codetest/application/report/dto/ReportMyResponse.java b/src/main/java/org/ezcode/codetest/application/report/dto/ReportMyResponse.java new file mode 100644 index 00000000..f4da3912 --- /dev/null +++ b/src/main/java/org/ezcode/codetest/application/report/dto/ReportMyResponse.java @@ -0,0 +1,29 @@ +package org.ezcode.codetest.application.report.dto; + +import org.ezcode.codetest.domain.report.model.Report; + +public record ReportMyResponse( + Long id, + Long targetId, + String targetType, + String reportType, + String reportStatus, + String message, + String imageUrl, + String resultMessage, + String createdAt +) { + public static ReportMyResponse from(Report r) { + return new ReportMyResponse( + r.getId(), + r.getTargetId(), + r.getTargetType().name(), + r.getReportType().name(), + r.getReportStatus().name(), + r.getMessage(), + r.getImageUrl(), + r.getResultMessage(), + r.getCreatedAt().toString() + ); + } +} diff --git a/src/main/java/org/ezcode/codetest/application/report/dto/ReportStatusUpdateRequest.java b/src/main/java/org/ezcode/codetest/application/report/dto/ReportStatusUpdateRequest.java index 4086cc0f..b4e68052 100644 --- a/src/main/java/org/ezcode/codetest/application/report/dto/ReportStatusUpdateRequest.java +++ b/src/main/java/org/ezcode/codetest/application/report/dto/ReportStatusUpdateRequest.java @@ -5,7 +5,8 @@ public record ReportStatusUpdateRequest( @NotBlank - String newStatus // 예시 RESOLVED(해결됨), REJECTED(거절) + String newStatus, // 예시 RESOLVED(해결됨), REJECTED(거절) + String resultMessage ) { public ReportStatus toEnum() { return ReportStatus.from(newStatus); diff --git a/src/main/java/org/ezcode/codetest/application/report/service/ReportService.java b/src/main/java/org/ezcode/codetest/application/report/service/ReportService.java index ec69e644..24658ab1 100644 --- a/src/main/java/org/ezcode/codetest/application/report/service/ReportService.java +++ b/src/main/java/org/ezcode/codetest/application/report/service/ReportService.java @@ -11,6 +11,8 @@ import lombok.RequiredArgsConstructor; +import java.util.List; + @Service @RequiredArgsConstructor public class ReportService { @@ -92,6 +94,14 @@ public void updateReportStatus(Long reportId, ReportStatusUpdateRequest req) { .orElseThrow(() -> new IllegalArgumentException("신고가 존재하지 않습니다.")); ReportStatus newStatus = req.toEnum(); - report.updateStatus(newStatus); + report.updateStatus(newStatus, req.resultMessage()); } + + @Transactional(readOnly = true) + public List getMyReports(Long userId) { + return reportRepository.findByReporterIdOrderByCreatedAtDesc(userId).stream() + .map(ReportMyResponse::from) + .toList(); + } + } diff --git a/src/main/java/org/ezcode/codetest/domain/report/model/Report.java b/src/main/java/org/ezcode/codetest/domain/report/model/Report.java index 6144e598..bfd15d83 100644 --- a/src/main/java/org/ezcode/codetest/domain/report/model/Report.java +++ b/src/main/java/org/ezcode/codetest/domain/report/model/Report.java @@ -36,6 +36,10 @@ public class Report extends BaseEntity { @Column(nullable = false, length = 50) private ReportType reportType; + @Column(length = 255) + private String resultMessage; // 운영자가 남긴 처리 메시지 + + @Column(nullable = false, length = 50) @Enumerated(EnumType.STRING) private ReportStatus reportStatus; @@ -51,8 +55,9 @@ public Report(User reporter, Long targetId, ReportTargetType targetType, this.reportStatus = ReportStatus.PENDING; } - public void updateStatus(ReportStatus newStatus) { + public void updateStatus(ReportStatus newStatus, String resultMessage) { this.reportStatus = newStatus; + this.resultMessage = resultMessage; } } diff --git a/src/main/java/org/ezcode/codetest/domain/report/repository/ReportRepository.java b/src/main/java/org/ezcode/codetest/domain/report/repository/ReportRepository.java index 7b47ada8..575a43d9 100644 --- a/src/main/java/org/ezcode/codetest/domain/report/repository/ReportRepository.java +++ b/src/main/java/org/ezcode/codetest/domain/report/repository/ReportRepository.java @@ -3,5 +3,8 @@ import org.ezcode.codetest.domain.report.model.Report; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.List; + public interface ReportRepository extends JpaRepository { + List findByReporterIdOrderByCreatedAtDesc(Long reporterId); } diff --git a/src/main/java/org/ezcode/codetest/presentation/ranking/RankingController.java b/src/main/java/org/ezcode/codetest/presentation/ranking/RankingController.java index a590ad68..3af06f38 100644 --- a/src/main/java/org/ezcode/codetest/presentation/ranking/RankingController.java +++ b/src/main/java/org/ezcode/codetest/presentation/ranking/RankingController.java @@ -1,7 +1,6 @@ package org.ezcode.codetest.presentation.ranking; import lombok.RequiredArgsConstructor; -import org.ezcode.codetest.application.ranking.dto.PointResponse; import org.ezcode.codetest.application.ranking.dto.RankingResponse; import org.ezcode.codetest.application.ranking.dto.TargetRankingResponse; import org.ezcode.codetest.application.ranking.service.RankingFacadeService; diff --git a/src/main/java/org/ezcode/codetest/presentation/report/ReportController.java b/src/main/java/org/ezcode/codetest/presentation/report/ReportController.java index c7da9840..1aedee8a 100644 --- a/src/main/java/org/ezcode/codetest/presentation/report/ReportController.java +++ b/src/main/java/org/ezcode/codetest/presentation/report/ReportController.java @@ -3,6 +3,7 @@ import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.ezcode.codetest.application.report.dto.ReportMyResponse; import org.ezcode.codetest.application.report.dto.ReportRequest; import org.ezcode.codetest.application.report.dto.ReportResponse; import org.ezcode.codetest.application.report.service.ReportService; @@ -14,6 +15,8 @@ import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.*; +import java.util.List; + @Slf4j @RestController @RequiredArgsConstructor @@ -30,4 +33,12 @@ public ResponseEntity report( return ResponseEntity.ok(reportService.submitReport(authUser.getId(), request)); } + @GetMapping("/my") + public ResponseEntity> myReports( + @AuthenticationPrincipal AuthUser authUser + ) { + return ResponseEntity.ok(reportService.getMyReports(authUser.getId())); + } + + }