Skip to content

Commit e7f5d98

Browse files
committed
feat: add endpoint to retrieve paid application count by school
1 parent 3f3aa3a commit e7f5d98

3 files changed

Lines changed: 35 additions & 0 deletions

File tree

src/main/java/life/mosu/mosuserver/application/application/ApplicationService.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import life.mosu.mosuserver.presentation.application.dto.ApplicationResponse;
2020
import life.mosu.mosuserver.presentation.application.dto.CreateApplicationResponse;
2121
import life.mosu.mosuserver.presentation.application.dto.ExamApplicationRequest;
22+
import life.mosu.mosuserver.presentation.application.dto.SchoolApplicationCountResponse;
2223
import life.mosu.mosuserver.presentation.common.FileRequest;
2324
import lombok.RequiredArgsConstructor;
2425
import lombok.extern.slf4j.Slf4j;
@@ -103,4 +104,9 @@ private CreateApplicationResponse handleApplication(
103104
public List<ApplicationResponse> getApplications(Long userId) {
104105
return getApplicationsStepProcessor.process(userId);
105106
}
107+
108+
@Transactional(readOnly = true)
109+
public List<SchoolApplicationCountResponse> getPaidApplicationCountBySchool() {
110+
return applicationJpaRepository.findPaidApplicationCountBySchool();
111+
}
106112
}

src/main/java/life/mosu/mosuserver/domain/application/repository/ApplicationJpaRepository.java

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.time.LocalDateTime;
44
import java.util.List;
55
import life.mosu.mosuserver.domain.application.entity.ApplicationJpaEntity;
6+
import life.mosu.mosuserver.presentation.application.dto.SchoolApplicationCountResponse;
67
import org.springframework.data.jpa.repository.JpaRepository;
78
import org.springframework.data.jpa.repository.Modifying;
89
import org.springframework.data.jpa.repository.Query;
@@ -29,6 +30,21 @@ AND a.status IN ('PENDING', 'ABORT')
2930
""")
3031
List<ApplicationJpaEntity> findAllByUserId(@Param("userId") Long userId);
3132

33+
@Query("""
34+
SELECT new life.mosu.mosuserver.presentation.application.dto.SchoolApplicationCountResponse(
35+
e.schoolName,
36+
COUNT(a.id)
37+
)
38+
FROM ApplicationJpaEntity a
39+
JOIN ExamApplicationJpaEntity ea ON ea.applicationId = a.id
40+
JOIN ExamJpaEntity e ON e.id = ea.examId
41+
WHERE a.deleted = false
42+
AND a.status = 'APPROVED'
43+
GROUP BY e.schoolName
44+
ORDER BY e.schoolName
45+
""")
46+
List<SchoolApplicationCountResponse> findPaidApplicationCountBySchool();
47+
3248
@Modifying
3349
@Query(value = """
3450
UPDATE application a
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package life.mosu.mosuserver.presentation.application.dto;
2+
3+
import io.swagger.v3.oas.annotations.media.Schema;
4+
5+
@Schema(description = "학교별 결제된 신청 수 응답")
6+
public record SchoolApplicationCountResponse(
7+
@Schema(description = "학교명", example = "서울고등학교")
8+
String schoolName,
9+
10+
@Schema(description = "결제된 신청 수", example = "25")
11+
Long paidApplicationCount
12+
) {
13+
}

0 commit comments

Comments
 (0)