Skip to content

Commit 7e52a28

Browse files
committed
[feat] 일반 구성원 목록 조회 응답 구조 추가
1 parent ff59fa9 commit 7e52a28

5 files changed

Lines changed: 117 additions & 0 deletions

File tree

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package org.ject.support.admin.member.dto.projection;
2+
3+
import org.ject.support.domain.member.CareerDetails;
4+
import org.ject.support.domain.member.ExperiencePeriod;
5+
import org.ject.support.domain.member.JobFamily;
6+
7+
public record SearchMemberSemesterProjection(
8+
Long memberActivityId,
9+
String name,
10+
JobFamily jobFamily,
11+
String phoneNumber,
12+
CareerDetails careerDetails,
13+
ExperiencePeriod experiencePeriod
14+
) {
15+
}
Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
package org.ject.support.admin.member.dto.request;
2+
3+
import java.util.List;
4+
5+
import org.ject.support.domain.member.CareerDetails;
6+
import org.ject.support.domain.member.JobFamily;
7+
import org.ject.support.domain.recruit.domain.RecruitTypeDetail;
8+
9+
import jakarta.validation.constraints.Max;
10+
import jakarta.validation.constraints.Min;
11+
import jakarta.validation.constraints.Positive;
12+
13+
public record MemberSemesterSearchCondition(
14+
15+
//-- 페이징 --
16+
17+
//MemberActivityId 기준 내림차순
18+
@Positive
19+
Long cursor,
20+
21+
// 정책 변경에 대비해 여유롭게 설정
22+
@Min(1)
23+
@Max(100)
24+
Integer size,
25+
26+
//-- 필터 --
27+
28+
// 기수
29+
@Positive
30+
Long semesterId,
31+
// 직군 (다중 선택)
32+
List<JobFamily> jobFamilies,
33+
// 모집 단위 (다중 선택)
34+
List<RecruitTypeDetail> recruitTypeDetails,
35+
// 신분 (다중 선택)
36+
List<CareerDetails> careerDetails,
37+
// 팀 (다중 선택)
38+
List<@Positive Long> teamIds
39+
) {
40+
//size가 없으면 기본 30개
41+
public int getSizeOrDefault() {
42+
return size == null ? 30 : size;
43+
}
44+
}
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package org.ject.support.admin.member.dto.response;
2+
3+
import org.ject.support.admin.member.dto.projection.SearchMemberSemesterProjection;
4+
import org.ject.support.domain.member.CareerDetails;
5+
import org.ject.support.domain.member.ExperiencePeriod;
6+
import org.ject.support.domain.member.JobFamily;
7+
8+
public record SearchMemberSemesterResponse(
9+
Long memberActivityId,
10+
String name,
11+
JobFamily jobFamily,
12+
String phoneNumber,
13+
CareerDetails careerDetails,
14+
ExperiencePeriod experiencePeriod
15+
) {
16+
public static SearchMemberSemesterResponse from(SearchMemberSemesterProjection projection) {
17+
return new SearchMemberSemesterResponse(
18+
projection.memberActivityId(),
19+
projection.name(),
20+
projection.jobFamily(),
21+
projection.phoneNumber(),
22+
projection.careerDetails(),
23+
projection.experiencePeriod()
24+
);
25+
}
26+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package org.ject.support.admin.member.dto.result;
2+
3+
import java.util.List;
4+
5+
import org.ject.support.admin.member.dto.projection.SearchMemberSemesterProjection;
6+
7+
public record SearchMemberSemesterPageResult(
8+
List<SearchMemberSemesterProjection> content,
9+
long totalCount
10+
) {
11+
}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
package org.ject.support.common.response;
2+
3+
import java.util.List;
4+
5+
public record CursorPageResponse<T>(
6+
List<T> content,
7+
int size,
8+
boolean hasNext,
9+
Long nextCursor,
10+
long totalCount
11+
) {
12+
public static <T> CursorPageResponse<T> of(
13+
List<T> content,
14+
int size,
15+
boolean hasNext,
16+
Long nextCursor,
17+
long totalCount
18+
) {
19+
return new CursorPageResponse<>(content, size, hasNext, nextCursor, totalCount);
20+
}
21+
}

0 commit comments

Comments
 (0)