Skip to content

Commit 4317643

Browse files
authored
Merge pull request #297 from TaskFlow-CLAP/CLAP-263
CLAP-263 회원 조회 API response 수정
2 parents f0afe74 + 7b4dadf commit 4317643

File tree

7 files changed

+83
-17
lines changed

7 files changed

+83
-17
lines changed

src/main/java/clap/server/adapter/inbound/web/dto/admin/request/FindMemberRequest.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,10 @@ public record FindMemberRequest(
2121
@Schema(description = "부서 이름", example = "1")
2222
String departmentName,
2323

24-
@NotNull
2524
@Schema(description = "회원 역할", example = "ROLE_USER")
2625
MemberRole role
26+
27+
//TODO: 가입일 추가
28+
29+
2730
) {}

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

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,12 @@
33
import clap.server.adapter.outbound.persistense.entity.member.constant.MemberRole;
44
import io.swagger.v3.oas.annotations.media.Schema;
55

6+
import java.time.LocalDateTime;
7+
68
public record RetrieveAllMemberResponse(
9+
@Schema(description = "회원 ID", example = "1")
10+
Long memberId,
11+
712
@Schema(description = "회원 이름", example = "양시훈")
813
String name,
914

@@ -23,5 +28,10 @@ public record RetrieveAllMemberResponse(
2328
MemberRole role,
2429

2530
@Schema(description = "회원 직책", example = "개발자")
26-
String departmentRole
31+
String departmentRole,
32+
33+
@Schema(description = "가입일", example = "2024-01-01T12:00:00")
34+
LocalDateTime createdAt
35+
36+
2737
) {}

src/main/java/clap/server/adapter/outbound/persistense/mapper/DepartmentPersistenceMapper.java

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,16 @@
44
import clap.server.adapter.outbound.persistense.mapper.common.PersistenceMapper;
55
import clap.server.domain.model.member.Department;
66
import org.mapstruct.Mapper;
7+
import org.mapstruct.Mapping;
78

8-
@Mapper(componentModel = "spring", uses = {MemberPersistenceMapper.class})
9+
@Mapper(componentModel = "spring", uses = {MemberPersistenceMapper.class})
910
public interface DepartmentPersistenceMapper extends PersistenceMapper<DepartmentEntity, Department> {
10-
}
11+
12+
@Mapping(source = "admin.memberId", target = "adminId")
13+
@Mapping(source = "name", target = "code")
14+
Department toDomain(DepartmentEntity entity);
15+
16+
@Mapping(source = "code", target = "name")
17+
@Mapping(source = "adminId", target = "admin.memberId")
18+
DepartmentEntity toEntity(Department domain);
19+
}

src/main/java/clap/server/adapter/outbound/persistense/mapper/MemberPersistenceMapper.java

Lines changed: 51 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,17 @@
22

33
import clap.server.adapter.outbound.persistense.entity.member.MemberEntity;
44
import clap.server.domain.model.member.Member;
5+
import clap.server.domain.model.member.MemberInfo;
56
import org.mapstruct.Mapper;
67
import org.mapstruct.Mapping;
8+
import org.mapstruct.Named;
9+
import org.springframework.beans.factory.annotation.Autowired;
710

811
@Mapper(componentModel = "spring", uses = {DepartmentPersistenceMapper.class})
9-
public interface MemberPersistenceMapper {
12+
public abstract class MemberPersistenceMapper {
13+
14+
@Autowired
15+
protected DepartmentPersistenceMapper departmentPersistenceMapper;
1016

1117
@Mapping(source = "name", target = "memberInfo.name")
1218
@Mapping(source = "email", target = "memberInfo.email")
@@ -15,8 +21,11 @@ public interface MemberPersistenceMapper {
1521
@Mapping(source = "departmentRole", target = "memberInfo.departmentRole")
1622
@Mapping(source = "department", target = "memberInfo.department")
1723
@Mapping(source = "reviewer", target = "memberInfo.isReviewer")
18-
@Mapping(source = "admin", target = "admin")
19-
Member toDomain(MemberEntity entity);
24+
@Mapping(source = "admin", target = "admin", qualifiedByName = "toDomain")
25+
@Mapping(source = "createdAt", target = "createdAt")
26+
@Mapping(source = "updatedAt", target = "updatedAt")
27+
@Mapping(source = "memberId", target = "memberId")
28+
public abstract Member toDomain(MemberEntity entity);
2029

2130
@Mapping(source = "memberInfo.name", target = "name")
2231
@Mapping(source = "memberInfo.email", target = "email")
@@ -25,12 +34,45 @@ public interface MemberPersistenceMapper {
2534
@Mapping(source = "memberInfo.departmentRole", target = "departmentRole")
2635
@Mapping(source = "memberInfo.department", target = "department")
2736
@Mapping(source = "memberInfo.reviewer", target = "isReviewer")
28-
@Mapping(target = "admin", source = "admin")
29-
MemberEntity toEntity(Member member);
37+
@Mapping(source = "admin", target = "admin", qualifiedByName = "toEntity")
38+
@Mapping(source = "createdAt", target = "createdAt")
39+
@Mapping(source = "updatedAt", target = "updatedAt")
40+
@Mapping(source = "memberId", target = "memberId")
41+
public abstract MemberEntity toEntity(Member member);
3042

31-
default boolean mapReviewer(boolean reviewer) {
32-
return reviewer;
43+
@Named("toDomain")
44+
protected Member toDomainAdmin(MemberEntity admin) {
45+
if (admin == null) return null;
46+
return Member.builder()
47+
.memberId(admin.getMemberId())
48+
.memberInfo(new MemberInfo(
49+
admin.getName(),
50+
admin.getEmail(),
51+
admin.getNickname(),
52+
admin.isReviewer(),
53+
departmentPersistenceMapper.toDomain(admin.getDepartment()),
54+
admin.getRole(),
55+
admin.getDepartmentRole()
56+
))
57+
.createdAt(admin.getCreatedAt())
58+
.updatedAt(admin.getUpdatedAt())
59+
.build();
3360
}
34-
}
35-
3661

62+
@Named("toEntity")
63+
protected MemberEntity toEntityAdmin(Member admin) {
64+
if (admin == null) return null;
65+
return MemberEntity.builder()
66+
.memberId(admin.getMemberId())
67+
.name(admin.getMemberInfo().getName())
68+
.email(admin.getMemberInfo().getEmail())
69+
.nickname(admin.getMemberInfo().getNickname())
70+
.isReviewer(admin.getMemberInfo().isReviewer())
71+
.department(departmentPersistenceMapper.toEntity(admin.getMemberInfo().getDepartment()))
72+
.role(admin.getMemberInfo().getRole())
73+
.departmentRole(admin.getMemberInfo().getDepartmentRole())
74+
.createdAt(admin.getCreatedAt())
75+
.updatedAt(admin.getUpdatedAt())
76+
.build();
77+
}
78+
}

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,13 +16,15 @@ public List<RetrieveAllMemberResponse> toResponseList(List<Member> members) {
1616

1717
public RetrieveAllMemberResponse toResponse(Member member) {
1818
return new RetrieveAllMemberResponse(
19+
member.getMemberId(),
1920
member.getMemberInfo().getName(),
2021
member.getMemberInfo().getEmail(),
2122
member.getMemberInfo().getNickname(),
2223
member.getMemberInfo().isReviewer(),
2324
member.getMemberInfo().getDepartment().getName(),
2425
member.getMemberInfo().getRole(),
25-
member.getMemberInfo().getDepartmentRole()
26+
member.getMemberInfo().getDepartmentRole(),
27+
member.getCreatedAt()
2628
);
2729
}
2830
}

src/main/java/clap/server/domain/model/common/BaseTime.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import java.time.LocalDateTime;
1010

1111
@Getter
12-
@SuperBuilder
12+
@SuperBuilder(toBuilder = true)
1313
@MappedSuperclass
1414
@NoArgsConstructor(access = AccessLevel.PROTECTED)
1515
public class BaseTime {

src/main/java/clap/server/domain/model/member/Member.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import lombok.experimental.SuperBuilder;
1111

1212
@Getter
13-
@SuperBuilder
13+
@SuperBuilder(toBuilder = true)
1414
@NoArgsConstructor(access = AccessLevel.PROTECTED)
1515
@AllArgsConstructor
1616
public class Member extends BaseTime {
@@ -24,7 +24,7 @@ public class Member extends BaseTime {
2424
private MemberStatus status;
2525
private String password;
2626

27-
@Builder
27+
// @Builder가 Lombok과 충돓하여 삭제
2828
public Member(MemberInfo memberInfo, Boolean agitNotificationEnabled, Boolean emailNotificationEnabled, Boolean kakaoworkNotificationEnabled,
2929
Member admin, String imageUrl, MemberStatus status, String password) {
3030
this.memberInfo = memberInfo;

0 commit comments

Comments
 (0)