From 140ac384e675d6e7f2b1867359b9a5b1ae096eef Mon Sep 17 00:00:00 2001 From: Sihun23 Date: Tue, 4 Feb 2025 16:27:50 +0900 Subject: [PATCH 1/7] =?UTF-8?q?CLAP-263=20fix:memberRole=20notnull=20?= =?UTF-8?q?=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../inbound/web/dto/admin/request/FindMemberRequest.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main/java/clap/server/adapter/inbound/web/dto/admin/request/FindMemberRequest.java b/src/main/java/clap/server/adapter/inbound/web/dto/admin/request/FindMemberRequest.java index 4f9df1a1..5c659cce 100644 --- a/src/main/java/clap/server/adapter/inbound/web/dto/admin/request/FindMemberRequest.java +++ b/src/main/java/clap/server/adapter/inbound/web/dto/admin/request/FindMemberRequest.java @@ -21,7 +21,10 @@ public record FindMemberRequest( @Schema(description = "부서 이름", example = "1") String departmentName, - @NotNull @Schema(description = "회원 역할", example = "ROLE_USER") MemberRole role + + //TODO: 가입일 추가 + + ) {} From 1d46b434cabc6a71d988364efe1348e240a91737 Mon Sep 17 00:00:00 2001 From: Sihun23 Date: Tue, 4 Feb 2025 16:53:54 +0900 Subject: [PATCH 2/7] =?UTF-8?q?CLAP-263=20fix:response=EC=97=90=20?= =?UTF-8?q?=EA=B0=80=EC=9E=85=EC=9D=BC=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/admin/response/RetrieveAllMemberResponse.java | 9 ++++++++- .../persistense/mapper/MemberPersistenceMapper.java | 6 ++++++ .../application/mapper/RetrieveAllMemberMapper.java | 3 ++- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/main/java/clap/server/adapter/inbound/web/dto/admin/response/RetrieveAllMemberResponse.java b/src/main/java/clap/server/adapter/inbound/web/dto/admin/response/RetrieveAllMemberResponse.java index 985e9620..2af91565 100644 --- a/src/main/java/clap/server/adapter/inbound/web/dto/admin/response/RetrieveAllMemberResponse.java +++ b/src/main/java/clap/server/adapter/inbound/web/dto/admin/response/RetrieveAllMemberResponse.java @@ -3,6 +3,8 @@ import clap.server.adapter.outbound.persistense.entity.member.constant.MemberRole; import io.swagger.v3.oas.annotations.media.Schema; +import java.time.LocalDateTime; + public record RetrieveAllMemberResponse( @Schema(description = "회원 이름", example = "양시훈") String name, @@ -23,5 +25,10 @@ public record RetrieveAllMemberResponse( MemberRole role, @Schema(description = "회원 직책", example = "개발자") - String departmentRole + String departmentRole, + + @Schema(description = "가입일", example = "2024-01-01T12:00:00") + LocalDateTime createdAt + + ) {} diff --git a/src/main/java/clap/server/adapter/outbound/persistense/mapper/MemberPersistenceMapper.java b/src/main/java/clap/server/adapter/outbound/persistense/mapper/MemberPersistenceMapper.java index 482a175e..cedc921d 100644 --- a/src/main/java/clap/server/adapter/outbound/persistense/mapper/MemberPersistenceMapper.java +++ b/src/main/java/clap/server/adapter/outbound/persistense/mapper/MemberPersistenceMapper.java @@ -16,6 +16,9 @@ public interface MemberPersistenceMapper { @Mapping(source = "department", target = "memberInfo.department") @Mapping(source = "reviewer", target = "memberInfo.isReviewer") @Mapping(source = "admin", target = "admin") + @Mapping(source = "createdAt", target = "createdAt") + @Mapping(source = "updatedAt", target = "updatedAt") + Member toDomain(MemberEntity entity); @Mapping(source = "memberInfo.name", target = "name") @@ -26,6 +29,9 @@ public interface MemberPersistenceMapper { @Mapping(source = "memberInfo.department", target = "department") @Mapping(source = "memberInfo.reviewer", target = "isReviewer") @Mapping(target = "admin", source = "admin") + @Mapping(source = "createdAt", target = "createdAt") + @Mapping(source = "updatedAt", target = "updatedAt") + MemberEntity toEntity(Member member); default boolean mapReviewer(boolean reviewer) { diff --git a/src/main/java/clap/server/application/mapper/RetrieveAllMemberMapper.java b/src/main/java/clap/server/application/mapper/RetrieveAllMemberMapper.java index 5e031ac3..68fe20b4 100644 --- a/src/main/java/clap/server/application/mapper/RetrieveAllMemberMapper.java +++ b/src/main/java/clap/server/application/mapper/RetrieveAllMemberMapper.java @@ -22,7 +22,8 @@ public RetrieveAllMemberResponse toResponse(Member member) { member.getMemberInfo().isReviewer(), member.getMemberInfo().getDepartment().getName(), member.getMemberInfo().getRole(), - member.getMemberInfo().getDepartmentRole() + member.getMemberInfo().getDepartmentRole(), + member.getCreatedAt() ); } } \ No newline at end of file From a4cea3d3d98091a073ee54d9d06b823340f6e6dc Mon Sep 17 00:00:00 2001 From: Sihun23 Date: Tue, 4 Feb 2025 17:10:21 +0900 Subject: [PATCH 3/7] =?UTF-8?q?CLAP-263=20feat:response=EC=97=90=20memberI?= =?UTF-8?q?d=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/dto/admin/response/RetrieveAllMemberResponse.java | 3 +++ .../outbound/persistense/mapper/MemberPersistenceMapper.java | 2 ++ .../server/application/mapper/RetrieveAllMemberMapper.java | 1 + 3 files changed, 6 insertions(+) diff --git a/src/main/java/clap/server/adapter/inbound/web/dto/admin/response/RetrieveAllMemberResponse.java b/src/main/java/clap/server/adapter/inbound/web/dto/admin/response/RetrieveAllMemberResponse.java index 2af91565..d9ff178f 100644 --- a/src/main/java/clap/server/adapter/inbound/web/dto/admin/response/RetrieveAllMemberResponse.java +++ b/src/main/java/clap/server/adapter/inbound/web/dto/admin/response/RetrieveAllMemberResponse.java @@ -6,6 +6,9 @@ import java.time.LocalDateTime; public record RetrieveAllMemberResponse( + @Schema(description = "회원 ID", example = "1") + Long memberId, + @Schema(description = "회원 이름", example = "양시훈") String name, diff --git a/src/main/java/clap/server/adapter/outbound/persistense/mapper/MemberPersistenceMapper.java b/src/main/java/clap/server/adapter/outbound/persistense/mapper/MemberPersistenceMapper.java index cedc921d..9c4846fd 100644 --- a/src/main/java/clap/server/adapter/outbound/persistense/mapper/MemberPersistenceMapper.java +++ b/src/main/java/clap/server/adapter/outbound/persistense/mapper/MemberPersistenceMapper.java @@ -18,6 +18,7 @@ public interface MemberPersistenceMapper { @Mapping(source = "admin", target = "admin") @Mapping(source = "createdAt", target = "createdAt") @Mapping(source = "updatedAt", target = "updatedAt") + @Mapping(source = "memberId", target = "memberId") Member toDomain(MemberEntity entity); @@ -31,6 +32,7 @@ public interface MemberPersistenceMapper { @Mapping(target = "admin", source = "admin") @Mapping(source = "createdAt", target = "createdAt") @Mapping(source = "updatedAt", target = "updatedAt") + @Mapping(source = "memberId", target = "memberId") MemberEntity toEntity(Member member); diff --git a/src/main/java/clap/server/application/mapper/RetrieveAllMemberMapper.java b/src/main/java/clap/server/application/mapper/RetrieveAllMemberMapper.java index 68fe20b4..9bc5490b 100644 --- a/src/main/java/clap/server/application/mapper/RetrieveAllMemberMapper.java +++ b/src/main/java/clap/server/application/mapper/RetrieveAllMemberMapper.java @@ -16,6 +16,7 @@ public List toResponseList(List members) { public RetrieveAllMemberResponse toResponse(Member member) { return new RetrieveAllMemberResponse( + member.getMemberId(), member.getMemberInfo().getName(), member.getMemberInfo().getEmail(), member.getMemberInfo().getNickname(), From 3ce951c808e3e3da237eaaf219760f67eecc1c01 Mon Sep 17 00:00:00 2001 From: Sihun23 Date: Tue, 4 Feb 2025 17:21:19 +0900 Subject: [PATCH 4/7] =?UTF-8?q?CLAP-263=20fix:admin=20=ED=95=84=EB=93=9C?= =?UTF-8?q?=20=EB=A7=A4=ED=95=91=20=EC=98=A4=EB=A5=98=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../outbound/persistense/mapper/MemberPersistenceMapper.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/clap/server/adapter/outbound/persistense/mapper/MemberPersistenceMapper.java b/src/main/java/clap/server/adapter/outbound/persistense/mapper/MemberPersistenceMapper.java index 9c4846fd..6df866cf 100644 --- a/src/main/java/clap/server/adapter/outbound/persistense/mapper/MemberPersistenceMapper.java +++ b/src/main/java/clap/server/adapter/outbound/persistense/mapper/MemberPersistenceMapper.java @@ -15,7 +15,7 @@ public interface MemberPersistenceMapper { @Mapping(source = "departmentRole", target = "memberInfo.departmentRole") @Mapping(source = "department", target = "memberInfo.department") @Mapping(source = "reviewer", target = "memberInfo.isReviewer") - @Mapping(source = "admin", target = "admin") + @Mapping(source = "admin", target = "admin", qualifiedByName = "toDomain") @Mapping(source = "createdAt", target = "createdAt") @Mapping(source = "updatedAt", target = "updatedAt") @Mapping(source = "memberId", target = "memberId") @@ -29,7 +29,7 @@ public interface MemberPersistenceMapper { @Mapping(source = "memberInfo.departmentRole", target = "departmentRole") @Mapping(source = "memberInfo.department", target = "department") @Mapping(source = "memberInfo.reviewer", target = "isReviewer") - @Mapping(target = "admin", source = "admin") + @Mapping(source = "admin", target = "admin", qualifiedByName = "toEntity") @Mapping(source = "createdAt", target = "createdAt") @Mapping(source = "updatedAt", target = "updatedAt") @Mapping(source = "memberId", target = "memberId") From 3b92cb36e21a321529819e1e98f89cda85481816 Mon Sep 17 00:00:00 2001 From: Sihun23 Date: Tue, 4 Feb 2025 22:00:32 +0900 Subject: [PATCH 5/7] =?UTF-8?q?CLAP-263=20fix:=20MapStruct=20=EB=A7=A4?= =?UTF-8?q?=ED=95=91=20=EC=97=90=EB=9F=AC=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mapper/DepartmentPersistenceMapper.java | 7 +++ .../mapper/MemberPersistenceMapper.java | 50 ++++++++++++++++--- .../server/domain/model/member/Member.java | 4 +- 3 files changed, 51 insertions(+), 10 deletions(-) diff --git a/src/main/java/clap/server/adapter/outbound/persistense/mapper/DepartmentPersistenceMapper.java b/src/main/java/clap/server/adapter/outbound/persistense/mapper/DepartmentPersistenceMapper.java index 6ece5239..df5a0093 100644 --- a/src/main/java/clap/server/adapter/outbound/persistense/mapper/DepartmentPersistenceMapper.java +++ b/src/main/java/clap/server/adapter/outbound/persistense/mapper/DepartmentPersistenceMapper.java @@ -4,7 +4,14 @@ import clap.server.adapter.outbound.persistense.mapper.common.PersistenceMapper; import clap.server.domain.model.member.Department; import org.mapstruct.Mapper; +import org.mapstruct.Mapping; @Mapper(componentModel = "spring", uses = {MemberPersistenceMapper.class}) public interface DepartmentPersistenceMapper extends PersistenceMapper { + @Mapping(source = "admin.memberId", target = "adminId") + @Mapping(source = "code", target = "code") + Department toDomain(DepartmentEntity entity); + + @Mapping(source = "adminId", target = "admin.memberId") + DepartmentEntity toEntity(Department domain); } diff --git a/src/main/java/clap/server/adapter/outbound/persistense/mapper/MemberPersistenceMapper.java b/src/main/java/clap/server/adapter/outbound/persistense/mapper/MemberPersistenceMapper.java index 6df866cf..b4e55d6d 100644 --- a/src/main/java/clap/server/adapter/outbound/persistense/mapper/MemberPersistenceMapper.java +++ b/src/main/java/clap/server/adapter/outbound/persistense/mapper/MemberPersistenceMapper.java @@ -2,11 +2,17 @@ import clap.server.adapter.outbound.persistense.entity.member.MemberEntity; import clap.server.domain.model.member.Member; +import clap.server.domain.model.member.MemberInfo; import org.mapstruct.Mapper; import org.mapstruct.Mapping; +import org.mapstruct.Named; +import org.springframework.beans.factory.annotation.Autowired; @Mapper(componentModel = "spring", uses = {DepartmentPersistenceMapper.class}) -public interface MemberPersistenceMapper { +public abstract class MemberPersistenceMapper { + + @Autowired + protected DepartmentPersistenceMapper departmentPersistenceMapper; @Mapping(source = "name", target = "memberInfo.name") @Mapping(source = "email", target = "memberInfo.email") @@ -19,8 +25,7 @@ public interface MemberPersistenceMapper { @Mapping(source = "createdAt", target = "createdAt") @Mapping(source = "updatedAt", target = "updatedAt") @Mapping(source = "memberId", target = "memberId") - - Member toDomain(MemberEntity entity); + public abstract Member toDomain(MemberEntity entity); @Mapping(source = "memberInfo.name", target = "name") @Mapping(source = "memberInfo.email", target = "email") @@ -33,12 +38,41 @@ public interface MemberPersistenceMapper { @Mapping(source = "createdAt", target = "createdAt") @Mapping(source = "updatedAt", target = "updatedAt") @Mapping(source = "memberId", target = "memberId") + public abstract MemberEntity toEntity(Member member); - MemberEntity toEntity(Member member); + @Named("toDomain") + protected Member toDomainAdmin(MemberEntity admin) { + if (admin == null) return null; + return Member.builder() + .memberId(admin.getMemberId()) + .memberInfo(new MemberInfo( + admin.getName(), + admin.getEmail(), + admin.getNickname(), + admin.isReviewer(), + departmentPersistenceMapper.toDomain(admin.getDepartment()), + admin.getRole(), + admin.getDepartmentRole() + )) + .createdAt(admin.getCreatedAt()) + .updatedAt(admin.getUpdatedAt()) + .build(); + } - default boolean mapReviewer(boolean reviewer) { - return reviewer; + @Named("toEntity") + protected MemberEntity toEntityAdmin(Member admin) { + if (admin == null) return null; + return MemberEntity.builder() + .memberId(admin.getMemberId()) + .name(admin.getMemberInfo().getName()) + .email(admin.getMemberInfo().getEmail()) + .nickname(admin.getMemberInfo().getNickname()) + .isReviewer(admin.getMemberInfo().isReviewer()) + .department(departmentPersistenceMapper.toEntity(admin.getMemberInfo().getDepartment())) + .role(admin.getMemberInfo().getRole()) + .departmentRole(admin.getMemberInfo().getDepartmentRole()) + .createdAt(admin.getCreatedAt()) + .updatedAt(admin.getUpdatedAt()) + .build(); } } - - diff --git a/src/main/java/clap/server/domain/model/member/Member.java b/src/main/java/clap/server/domain/model/member/Member.java index 25615234..bdffb88b 100644 --- a/src/main/java/clap/server/domain/model/member/Member.java +++ b/src/main/java/clap/server/domain/model/member/Member.java @@ -10,7 +10,7 @@ import lombok.experimental.SuperBuilder; @Getter -@SuperBuilder +@SuperBuilder(toBuilder = true) @NoArgsConstructor(access = AccessLevel.PROTECTED) @AllArgsConstructor public class Member extends BaseTime { @@ -24,7 +24,7 @@ public class Member extends BaseTime { private MemberStatus status; private String password; - @Builder + // @Builder가 Lombok과 충돓하여 삭제 public Member(MemberInfo memberInfo, Boolean agitNotificationEnabled, Boolean emailNotificationEnabled, Boolean kakaoworkNotificationEnabled, Member admin, String imageUrl, MemberStatus status, String password) { this.memberInfo = memberInfo; From 08583cf7f353f737c1ce76a490df156cc7871f8d Mon Sep 17 00:00:00 2001 From: Sihun23 Date: Tue, 4 Feb 2025 22:27:09 +0900 Subject: [PATCH 6/7] =?UTF-8?q?CLAP-263=20fix:department=20MapStruct=20?= =?UTF-8?q?=EB=A7=A4=ED=95=91=20=EB=88=84=EB=9D=BD=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../persistense/mapper/DepartmentPersistenceMapper.java | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/src/main/java/clap/server/adapter/outbound/persistense/mapper/DepartmentPersistenceMapper.java b/src/main/java/clap/server/adapter/outbound/persistense/mapper/DepartmentPersistenceMapper.java index df5a0093..ac62cfe1 100644 --- a/src/main/java/clap/server/adapter/outbound/persistense/mapper/DepartmentPersistenceMapper.java +++ b/src/main/java/clap/server/adapter/outbound/persistense/mapper/DepartmentPersistenceMapper.java @@ -6,12 +6,14 @@ import org.mapstruct.Mapper; import org.mapstruct.Mapping; -@Mapper(componentModel = "spring", uses = {MemberPersistenceMapper.class}) +@Mapper(componentModel = "spring", uses = {MemberPersistenceMapper.class}) public interface DepartmentPersistenceMapper extends PersistenceMapper { + @Mapping(source = "admin.memberId", target = "adminId") - @Mapping(source = "code", target = "code") + @Mapping(source = "name", target = "code") Department toDomain(DepartmentEntity entity); + @Mapping(source = "code", target = "name") @Mapping(source = "adminId", target = "admin.memberId") DepartmentEntity toEntity(Department domain); -} +} \ No newline at end of file From 7b4dadf3b679dbf5a0352b8c32fce29f93d4783d Mon Sep 17 00:00:00 2001 From: Sihun23 Date: Tue, 4 Feb 2025 22:36:50 +0900 Subject: [PATCH 7/7] =?UTF-8?q?CLAP-263=20fix:=20toBuilder=20=EC=98=A4?= =?UTF-8?q?=EB=A5=98=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/main/java/clap/server/domain/model/common/BaseTime.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/clap/server/domain/model/common/BaseTime.java b/src/main/java/clap/server/domain/model/common/BaseTime.java index ccf54ee4..1815c0cb 100644 --- a/src/main/java/clap/server/domain/model/common/BaseTime.java +++ b/src/main/java/clap/server/domain/model/common/BaseTime.java @@ -9,7 +9,7 @@ import java.time.LocalDateTime; @Getter -@SuperBuilder +@SuperBuilder(toBuilder = true) @MappedSuperclass @NoArgsConstructor(access = AccessLevel.PROTECTED) public class BaseTime {