Skip to content

Commit 8b42438

Browse files
Sihun23Sihun23
authored andcommitted
CLAP-243 refactor:PageResponse 사용 및 dto mapping 서비스단으로 위임
1 parent 716d9f3 commit 8b42438

File tree

14 files changed

+57
-63
lines changed

14 files changed

+57
-63
lines changed
Lines changed: 8 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
package clap.server.adapter.inbound.web.admin;
22

3-
import clap.server.adapter.inbound.web.dto.admin.FindMemberRequest;
4-
import clap.server.adapter.inbound.web.dto.admin.RetrieveAllMemberResponse;
3+
import clap.server.adapter.inbound.web.dto.admin.request.FindMemberRequest;
4+
import clap.server.adapter.inbound.web.dto.admin.response.RetrieveAllMemberResponse;
5+
import clap.server.adapter.inbound.web.dto.common.PageResponse;
56
import clap.server.application.mapper.RetrieveAllMemberMapper;
67
import clap.server.application.port.inbound.admin.FindAllMembersUsecase;
78
import clap.server.application.port.inbound.admin.FindMembersWithFilterUsecase;
@@ -11,6 +12,7 @@
1112
import io.swagger.v3.oas.annotations.Operation;
1213
import io.swagger.v3.oas.annotations.Parameter;
1314
import io.swagger.v3.oas.annotations.tags.Tag;
15+
import jakarta.validation.Valid;
1416
import lombok.RequiredArgsConstructor;
1517
import org.springframework.data.domain.Page;
1618
import org.springframework.data.domain.PageRequest;
@@ -23,9 +25,7 @@
2325
@RequestMapping("/api/managements")
2426
@RequiredArgsConstructor
2527
public class FindMemberController {
26-
private final FindAllMembersUsecase findAllMembersUsecase;
2728
private final FindMembersWithFilterUsecase findMembersWithFilterUsecase;
28-
private final RetrieveAllMemberMapper retrieveAllMemberMapper;
2929

3030
@Tag(name = "05. Admin")
3131
@Secured({"ROLE_ADMIN"})
@@ -38,26 +38,17 @@ public class FindMemberController {
3838
}
3939
)
4040
@GetMapping("/members")
41-
public ResponseEntity<Page<RetrieveAllMemberResponse>> getAllMembers(
41+
public ResponseEntity<PageResponse<RetrieveAllMemberResponse>> getAllMembers(
4242
@RequestParam(defaultValue = "0") int page,
4343
@RequestParam(defaultValue = "20") int pageSize,
44-
@RequestBody FindMemberRequest filterRequest) {
44+
@ModelAttribute @Valid FindMemberRequest filterRequest) {
4545

4646
if (filterRequest.name() != null && filterRequest.name().trim().isEmpty()) {
4747
throw ApplicationException.from(MemberErrorCode.NAME_CANNOT_BE_EMPTY);
4848
}
4949

5050
Pageable pageable = PageRequest.of(page, pageSize);
51-
Page<Member> members;
52-
53-
if (filterRequest.name() != null || filterRequest.email() != null || filterRequest.nickName() != null ||
54-
filterRequest.departmentName() != null || filterRequest.role() != null) {
55-
members = findMembersWithFilterUsecase.findMembersWithFilter(pageable, filterRequest);
56-
} else {
57-
members = findAllMembersUsecase.findAllMembers(pageable);
58-
}
59-
60-
Page<RetrieveAllMemberResponse> response = members.map(retrieveAllMemberMapper::toResponse);
51+
PageResponse<RetrieveAllMemberResponse> response = findMembersWithFilterUsecase.findMembersWithFilter(pageable, filterRequest);
6152
return ResponseEntity.ok(response);
6253
}
63-
}
54+
}
Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,27 @@
1-
package clap.server.adapter.inbound.web.dto.admin;
1+
package clap.server.adapter.inbound.web.dto.admin.request;
22

33
import clap.server.adapter.outbound.persistense.entity.member.constant.MemberRole;
44
import io.swagger.v3.oas.annotations.media.Schema;
5+
import jakarta.validation.constraints.NotNull;
56

67
public record FindMemberRequest(
8+
@NotNull
79
@Schema(description = "회원 이름", example = "양시훈")
810
String name,
911

12+
@NotNull
1013
@Schema(description = "회원 이메일", example = "sihun123@gmail.com")
1114
String email,
1215

16+
@NotNull
1317
@Schema(description = "회원 닉네임", example = "leo.sh")
1418
String nickName,
1519

20+
@NotNull
1621
@Schema(description = "부서 이름", example = "1")
1722
String departmentName,
1823

24+
@NotNull
1925
@Schema(description = "회원 역할", example = "ROLE_USER")
2026
MemberRole role
2127
) {}

src/main/java/clap/server/adapter/inbound/web/dto/admin/response/RetrieveAllMemberResponse.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package clap.server.adapter.inbound.web.dto.admin;
1+
package clap.server.adapter.inbound.web.dto.admin.response;
22

33
import clap.server.adapter.outbound.persistense.entity.member.constant.MemberRole;
44
import io.swagger.v3.oas.annotations.media.Schema;

src/main/java/clap/server/adapter/outbound/persistense/MemberPersistenceAdapter.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package clap.server.adapter.outbound.persistense;
22

3-
import clap.server.adapter.inbound.web.dto.admin.FindMemberRequest;
3+
import clap.server.adapter.inbound.web.dto.admin.request.FindMemberRequest;
44
import clap.server.adapter.outbound.persistense.entity.member.MemberEntity;
55
import clap.server.adapter.outbound.persistense.entity.member.constant.MemberRole;
66
import clap.server.adapter.outbound.persistense.entity.member.constant.MemberStatus;
@@ -103,7 +103,6 @@ public Page<Member> findAllMembers(Pageable pageable) {
103103
@Override
104104
public Page<Member> findMembersWithFilter(Pageable pageable, FindMemberRequest filterRequest) {
105105
return memberRepository.findMembersWithFilter(pageable, filterRequest).map(memberPersistenceMapper::toDomain);
106-
107106
}
108107
}
109108

src/main/java/clap/server/adapter/outbound/persistense/repository/member/MemberCustomRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package clap.server.adapter.outbound.persistense.repository.member;
22

3-
import clap.server.adapter.inbound.web.dto.admin.FindMemberRequest;
3+
import clap.server.adapter.inbound.web.dto.admin.request.FindMemberRequest;
44
import clap.server.adapter.outbound.persistense.entity.member.MemberEntity;
55
import org.springframework.data.domain.Page;
66
import org.springframework.data.domain.Pageable;

src/main/java/clap/server/adapter/outbound/persistense/repository/member/MemberCustomRepositoryImpl.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package clap.server.adapter.outbound.persistense.repository.member;
22

3-
import clap.server.adapter.inbound.web.dto.admin.FindMemberRequest;
3+
import clap.server.adapter.inbound.web.dto.admin.request.FindMemberRequest;
44
import clap.server.adapter.outbound.persistense.entity.member.MemberEntity;
55
import clap.server.adapter.outbound.persistense.entity.member.constant.MemberStatus;
66
import com.querydsl.core.BooleanBuilder;
@@ -46,17 +46,17 @@ private BooleanBuilder createMemberFilter(FindMemberRequest filterRequest) {
4646
BooleanBuilder whereClause = new BooleanBuilder();
4747
whereClause.and(memberEntity.status.ne(MemberStatus.DELETED));
4848

49-
if (filterRequest.name() != null) {
49+
if (!filterRequest.name().isBlank()) {
5050
whereClause.and(memberEntity.name.containsIgnoreCase(filterRequest.name()));
5151
}
52-
if (filterRequest.email() != null) {
52+
if (!filterRequest.email().isBlank()) {
5353
whereClause.and(memberEntity.email.containsIgnoreCase(filterRequest.email()));
5454
}
55-
if (filterRequest.nickName() != null) {
55+
if (!filterRequest.nickName().isBlank()) {
5656
whereClause.and(memberEntity.nickname.containsIgnoreCase(filterRequest.nickName()));
5757
}
58-
if (filterRequest.departmentName() != null) {
59-
whereClause.and(memberEntity.department.name.eq(filterRequest.departmentName()));
58+
if (!filterRequest.departmentName().isBlank()) {
59+
whereClause.and(memberEntity.department.name.contains(filterRequest.departmentName()));
6060
}
6161
if (filterRequest.role() != null) {
6262
whereClause.and(memberEntity.role.eq(filterRequest.role()));

src/main/java/clap/server/application/mapper/RetrieveAllMemberMapper.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package clap.server.application.mapper;
22

3-
import clap.server.adapter.inbound.web.dto.admin.RetrieveAllMemberResponse;
3+
import clap.server.adapter.inbound.web.dto.admin.response.RetrieveAllMemberResponse;
44
import clap.server.domain.model.member.Member;
55
import org.springframework.stereotype.Component;
66

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package clap.server.application.port.inbound.admin;
22

3-
import clap.server.domain.model.member.Member;
4-
import org.springframework.data.domain.Page;
3+
import clap.server.adapter.inbound.web.dto.admin.response.RetrieveAllMemberResponse;
4+
import clap.server.adapter.inbound.web.dto.common.PageResponse;
55
import org.springframework.data.domain.Pageable;
66

77
public interface FindAllMembersUsecase {
8-
Page<Member> findAllMembers(Pageable pageable);
9-
}
8+
PageResponse<RetrieveAllMemberResponse> findAllMembers(Pageable pageable);
9+
}
Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
package clap.server.application.port.inbound.admin;
22

3-
import clap.server.adapter.inbound.web.dto.admin.FindMemberRequest;
4-
import clap.server.domain.model.member.Member;
3+
import clap.server.adapter.inbound.web.dto.admin.request.FindMemberRequest;
4+
import clap.server.adapter.inbound.web.dto.admin.response.RetrieveAllMemberResponse;
5+
import clap.server.adapter.inbound.web.dto.common.PageResponse;
56
import org.springframework.data.domain.Page;
67
import org.springframework.data.domain.Pageable;
78

89
public interface FindMembersWithFilterUsecase {
9-
Page<Member> findMembersWithFilter(Pageable pageable, FindMemberRequest filterRequest);
10-
}
10+
PageResponse<RetrieveAllMemberResponse> findMembersWithFilter(Pageable pageable, FindMemberRequest filterRequest);
11+
}

src/main/java/clap/server/application/port/inbound/management/FindAllMembersUsecase.java

Lines changed: 0 additions & 10 deletions
This file was deleted.

0 commit comments

Comments
 (0)