From 2ca4af58575252f714471a38a821f15c5a2f559e Mon Sep 17 00:00:00 2001 From: Lee SeungHeon <51286325+dev-Crayon@users.noreply.github.com> Date: Thu, 7 Nov 2024 11:00:43 +0900 Subject: [PATCH 1/5] =?UTF-8?q?[Fix]:=20=EB=A9=94=EC=9D=B4=EC=BB=A4?= =?UTF-8?q?=EC=8A=A4=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EB=B0=A9=EC=A7=80=20?= =?UTF-8?q?(#536)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [Fix]: 메이커스 이미지 방지 Related to: #535 * [Fix]: .gitignore 수정 .DS_Store 추가 Related to: #535 * [Refactor]: 익명 프로필 이미지 초기화시 admin 이미지 제거 Related to: #535 * [Refactor]: 익명 프로필 이미지 초기화시 admin 이미지 제거 Related to: #535 --- .gitignore | 3 +++ .../repository/AnonymousProfileImageRepository.java | 4 ++++ .../service/AnonymousProfileImageService.java | 10 ++++------ 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/.gitignore b/.gitignore index 4f56f8e6..33384585 100644 --- a/.gitignore +++ b/.gitignore @@ -40,3 +40,6 @@ out/ ### config yml ### application-**.yml + +### Mac OS .DS_Store ### +.DS_Store diff --git a/src/main/java/org/sopt/makers/internal/community/repository/AnonymousProfileImageRepository.java b/src/main/java/org/sopt/makers/internal/community/repository/AnonymousProfileImageRepository.java index b9e85c4a..463e1aa9 100644 --- a/src/main/java/org/sopt/makers/internal/community/repository/AnonymousProfileImageRepository.java +++ b/src/main/java/org/sopt/makers/internal/community/repository/AnonymousProfileImageRepository.java @@ -3,5 +3,9 @@ import org.sopt.makers.internal.community.domain.AnonymousProfileImage; import org.springframework.data.jpa.repository.JpaRepository; +import java.util.List; + public interface AnonymousProfileImageRepository extends JpaRepository { + + List findAllByIdNot(Long id); } diff --git a/src/main/java/org/sopt/makers/internal/community/service/AnonymousProfileImageService.java b/src/main/java/org/sopt/makers/internal/community/service/AnonymousProfileImageService.java index 2ccd19c0..46639303 100644 --- a/src/main/java/org/sopt/makers/internal/community/service/AnonymousProfileImageService.java +++ b/src/main/java/org/sopt/makers/internal/community/service/AnonymousProfileImageService.java @@ -1,10 +1,7 @@ package org.sopt.makers.internal.community.service; -import lombok.RequiredArgsConstructor; import org.sopt.makers.internal.community.domain.AnonymousProfileImage; import org.sopt.makers.internal.community.repository.AnonymousProfileImageRepository; -import org.sopt.makers.internal.domain.community.AnonymousProfileImg; -import org.sopt.makers.internal.exception.NotFoundDBEntityException; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -16,6 +13,7 @@ public class AnonymousProfileImageService { private final AnonymousProfileImageRepository anonymousProfileImageRepository; + private final static Long MAKERS_LOGO_IMAGE_ID = 6L; public AnonymousProfileImageService(AnonymousProfileImageRepository anonymousProfileImageRepository) { this.anonymousProfileImageRepository = anonymousProfileImageRepository; @@ -27,7 +25,7 @@ public AnonymousProfileImageService(AnonymousProfileImageRepository anonymousPro @Transactional(readOnly = true) public AnonymousProfileImage getRandomProfileImage(List excludes) { if (excludes.isEmpty() || excludes.size() >= profileImageMap.size()) { - return shuffle((long)(Math.random() * 5)); + return shuffle((long) (Math.random() * 5)); } return filtered(excludes); } @@ -37,7 +35,7 @@ private AnonymousProfileImage filtered(List excludes) { .filter(i -> !excludes.contains(i)) .findFirst() .map(profileImageMap::get) - .orElseGet(() -> shuffle((long)(Math.random() * 5))); + .orElseGet(() -> shuffle((long) (Math.random() * 5))); } private AnonymousProfileImage shuffle(Long index) { @@ -45,7 +43,7 @@ private AnonymousProfileImage shuffle(Long index) { } private void initializeProfileImageMap() { - List anonymousProfileImages = anonymousProfileImageRepository.findAll(); + List anonymousProfileImages = anonymousProfileImageRepository.findAllByIdNot(MAKERS_LOGO_IMAGE_ID); for (AnonymousProfileImage image : anonymousProfileImages) { profileImageMap.put(image.getId(), image); } From 37e68390098b20a7add04470ac1421219e331f0f Mon Sep 17 00:00:00 2001 From: Yejun Park <80024278+jun02160@users.noreply.github.com> Date: Sat, 9 Nov 2024 14:39:26 +0900 Subject: [PATCH 2/5] =?UTF-8?q?[Fix]=20=EB=A9=A4=EB=B2=84=20coffee=20chat?= =?UTF-8?q?=20=EA=B4=80=EB=A0=A8=20=ED=95=84=EB=93=9C=20=EB=B0=98=EC=98=81?= =?UTF-8?q?=20(#540)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../internal/dto/member/MemberProfileSpecificResponse.java | 2 -- .../java/org/sopt/makers/internal/mapper/MemberMapper.java | 6 ++++-- .../makers/internal/member/controller/MemberController.java | 6 ++++-- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/src/main/java/org/sopt/makers/internal/dto/member/MemberProfileSpecificResponse.java b/src/main/java/org/sopt/makers/internal/dto/member/MemberProfileSpecificResponse.java index 759db51c..a9c2c0b1 100644 --- a/src/main/java/org/sopt/makers/internal/dto/member/MemberProfileSpecificResponse.java +++ b/src/main/java/org/sopt/makers/internal/dto/member/MemberProfileSpecificResponse.java @@ -34,7 +34,6 @@ public record MemberProfileSpecificResponse( List careers, Boolean allowOfficial, Boolean isCoffeeChatActivate, - String coffeeChatBio, @Schema(required = true) Boolean isMine ) { @@ -116,7 +115,6 @@ public static MemberProfileSpecificResponse checkIsBlindPhone(MemberProfileSpeci response.careers(), response.allowOfficial(), response.isCoffeeChatActivate(), - response.coffeeChatBio(), isMine ); } diff --git a/src/main/java/org/sopt/makers/internal/mapper/MemberMapper.java b/src/main/java/org/sopt/makers/internal/mapper/MemberMapper.java index 2907a7df..ab73a830 100644 --- a/src/main/java/org/sopt/makers/internal/mapper/MemberMapper.java +++ b/src/main/java/org/sopt/makers/internal/mapper/MemberMapper.java @@ -41,7 +41,8 @@ MemberProfileSpecificResponse toProfileSpecificResponse ( boolean isMine, List projects, List activities, - List soptActivities + List soptActivities, + Boolean isCoffeeChatActivate ); @Mapping(target = "activities", source = "activities") @@ -49,7 +50,8 @@ MemberProfileSpecificResponse toProfileSpecificResponse ( Member member, boolean isMine, List projects, - List activities + List activities, + Boolean isCoffeeChatActivate ); @Mapping(target = "activities", source = "activities") diff --git a/src/main/java/org/sopt/makers/internal/member/controller/MemberController.java b/src/main/java/org/sopt/makers/internal/member/controller/MemberController.java index 0eca0410..4af40e54 100644 --- a/src/main/java/org/sopt/makers/internal/member/controller/MemberController.java +++ b/src/main/java/org/sopt/makers/internal/member/controller/MemberController.java @@ -168,9 +168,10 @@ public ResponseEntity getUserProfile ( new MemberProfileSpecificResponse.MemberActivityResponse(entry.getKey(), entry.getValue()) ).collect(Collectors.toList()); val isMine = Objects.equals(member.getId(), memberDetails.getId()); + val isCoffeeChatActivate = coffeeChatService.getCoffeeChatActivate(member.getId()); val response = MemberProfileSpecificResponse.checkIsBlindPhone( memberMapper.toProfileSpecificResponse( - member, true, memberProfileProjects, activityResponses, soptActivityResponse + member, true, memberProfileProjects, activityResponses, soptActivityResponse, isCoffeeChatActivate ), isMine); sortProfileCareer(response); @@ -197,8 +198,9 @@ public ResponseEntity getMyProfile ( memberProfileProjects ); val isMine = Objects.equals(member.getId(), memberDetails.getId()); + val isCoffeeChatActivate = coffeeChatService.getCoffeeChatActivate(member.getId()); val response = memberMapper.toProfileSpecificResponse( - member, isMine, memberProfileProjects, activityResponses, soptActivityResponse + member, isMine, memberProfileProjects, activityResponses, soptActivityResponse, isCoffeeChatActivate ); sortProfileCareer(response); return ResponseEntity.status(HttpStatus.OK).body(response); From b5d7896a2055b4679a868df3c58c9f85f76bb3e1 Mon Sep 17 00:00:00 2001 From: Lee SeungHeon <51286325+dev-Crayon@users.noreply.github.com> Date: Sat, 9 Nov 2024 14:59:36 +0900 Subject: [PATCH 3/5] Feature/#538 user properties (#539) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * [Feat]: user properties 반환을 위한 response 객체 구현 Related to: #538 * [Feat]: user properties 반환을 위한 response 객체 및 controller 구현 Related to: #538 * [Feat]: user properties 로직 구현 Related to: #538 * [Refactor]: 유저 기수 및 파트 분리 util 함수 구현 Related to: #538 * [Refactor]: CoffeeChatStatus에 따른 커피챗 활성 여부 필드 추가 CoffeeChatStatus에 isCoffeeChatActivate 필드 추가 Related to: #538 --- .../member/controller/MemberController.java | 9 ++++++ .../response/MemberPropertiesResponse.java | 27 ++++++++++++++++++ .../domain/coffeechat/CoffeeChatStatus.java | 16 +++++++++++ .../member/mapper/MemberResponseMapper.java | 28 +++++++++++++++++++ .../CoffeeChatHistoryRepository.java | 11 ++++++++ .../coffeechat/CoffeeChatRetriever.java | 24 +++++++++++++--- .../dto/MemberCoffeeChatPropertyDto.java | 13 +++++++++ .../internal/member/util/MemberUtil.java | 18 ++++++++++++ .../internal/service/MemberService.java | 21 +++++++++++++- 9 files changed, 162 insertions(+), 5 deletions(-) create mode 100644 src/main/java/org/sopt/makers/internal/member/controller/dto/response/MemberPropertiesResponse.java create mode 100644 src/main/java/org/sopt/makers/internal/member/domain/coffeechat/CoffeeChatStatus.java create mode 100644 src/main/java/org/sopt/makers/internal/member/service/coffeechat/dto/MemberCoffeeChatPropertyDto.java create mode 100644 src/main/java/org/sopt/makers/internal/member/util/MemberUtil.java diff --git a/src/main/java/org/sopt/makers/internal/member/controller/MemberController.java b/src/main/java/org/sopt/makers/internal/member/controller/MemberController.java index 4af40e54..083fdb5b 100644 --- a/src/main/java/org/sopt/makers/internal/member/controller/MemberController.java +++ b/src/main/java/org/sopt/makers/internal/member/controller/MemberController.java @@ -29,6 +29,7 @@ import org.sopt.makers.internal.external.MakersCrewClient; import org.sopt.makers.internal.mapper.MemberMapper; import org.sopt.makers.internal.member.controller.dto.response.MemberInfoResponse; +import org.sopt.makers.internal.member.controller.dto.response.MemberPropertiesResponse; import org.sopt.makers.internal.member.mapper.MemberResponseMapper; import org.sopt.makers.internal.member.service.coffeechat.CoffeeChatService; import org.sopt.makers.internal.service.MemberService; @@ -323,6 +324,14 @@ public ResponseEntity> reportUser ( return ResponseEntity.status(HttpStatus.OK).body(Map.of("유저 신고 성공", true)); } + @Operation(summary = "Amplitude 를 위한 user properties 반환 API ") + @GetMapping("/property") + public ResponseEntity getUserProperty ( + @Parameter(hidden = true) @AuthenticationPrincipal InternalMemberDetails memberDetails + ) { + return ResponseEntity.status(HttpStatus.OK).body(memberService.getMemberProperties(memberDetails.getId())); + } + private void sortProfileCareer (MemberProfileSpecificResponse response) { response.careers().sort((a, b) -> { val formatter = DateTimeFormatter.ofPattern("yyyy-MM"); diff --git a/src/main/java/org/sopt/makers/internal/member/controller/dto/response/MemberPropertiesResponse.java b/src/main/java/org/sopt/makers/internal/member/controller/dto/response/MemberPropertiesResponse.java new file mode 100644 index 00000000..3a9f4f3c --- /dev/null +++ b/src/main/java/org/sopt/makers/internal/member/controller/dto/response/MemberPropertiesResponse.java @@ -0,0 +1,27 @@ +package org.sopt.makers.internal.member.controller.dto.response; + +import org.sopt.makers.internal.member.domain.coffeechat.CoffeeChatStatus; + +import java.util.List; + +public record MemberPropertiesResponse( + + Long id, + + String major, + + String job, + + String organization, + + List part, + + List generation, + + CoffeeChatStatus coffeeChatStatus, + + Long receivedCoffeeChatCount, + + Long sentCoffeeChatCount +) { +} diff --git a/src/main/java/org/sopt/makers/internal/member/domain/coffeechat/CoffeeChatStatus.java b/src/main/java/org/sopt/makers/internal/member/domain/coffeechat/CoffeeChatStatus.java new file mode 100644 index 00000000..66e6e738 --- /dev/null +++ b/src/main/java/org/sopt/makers/internal/member/domain/coffeechat/CoffeeChatStatus.java @@ -0,0 +1,16 @@ +package org.sopt.makers.internal.member.domain.coffeechat; + +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum CoffeeChatStatus { + + ON(true), + OFF(false), + NONE(false) + ; + + private final boolean isCoffeeChatActivate; +} diff --git a/src/main/java/org/sopt/makers/internal/member/mapper/MemberResponseMapper.java b/src/main/java/org/sopt/makers/internal/member/mapper/MemberResponseMapper.java index 9bd0a9be..fcafd568 100644 --- a/src/main/java/org/sopt/makers/internal/member/mapper/MemberResponseMapper.java +++ b/src/main/java/org/sopt/makers/internal/member/mapper/MemberResponseMapper.java @@ -2,9 +2,15 @@ import lombok.RequiredArgsConstructor; import org.sopt.makers.internal.domain.Member; +import org.sopt.makers.internal.domain.MemberCareer; import org.sopt.makers.internal.member.controller.dto.response.MemberInfoResponse; +import org.sopt.makers.internal.member.controller.dto.response.MemberPropertiesResponse; +import org.sopt.makers.internal.member.service.coffeechat.dto.MemberCoffeeChatPropertyDto; +import org.sopt.makers.internal.member.util.MemberUtil; import org.springframework.stereotype.Component; +import java.util.List; + @Component @RequiredArgsConstructor public class MemberResponseMapper { @@ -21,4 +27,26 @@ public MemberInfoResponse toMemberInfoResponse(Member member, Boolean isCoffeeCh isCoffeeChatActive ); } + + public MemberPropertiesResponse toMemberPropertiesResponse( + Member member, + MemberCareer memberCareer, + MemberCoffeeChatPropertyDto coffeeChatProperty, + List activitiesAndGeneration + ) { + List generations = MemberUtil.extractGenerations(activitiesAndGeneration); + List activities = MemberUtil.extractActivities(activitiesAndGeneration); + + return new MemberPropertiesResponse( + member.getId(), + memberCareer == null ? member.getMajor() : null, + memberCareer != null ? memberCareer.getTitle() : null, + memberCareer != null ? memberCareer.getCompanyName() : member.getUniversity(), + activities, + generations, + coffeeChatProperty.coffeeChatStatus(), + coffeeChatProperty.receivedCoffeeChatCount(), + coffeeChatProperty.sentCoffeeChatCount() + ); + } } diff --git a/src/main/java/org/sopt/makers/internal/member/repository/coffeechat/CoffeeChatHistoryRepository.java b/src/main/java/org/sopt/makers/internal/member/repository/coffeechat/CoffeeChatHistoryRepository.java index a36e1dc9..2e491cb1 100644 --- a/src/main/java/org/sopt/makers/internal/member/repository/coffeechat/CoffeeChatHistoryRepository.java +++ b/src/main/java/org/sopt/makers/internal/member/repository/coffeechat/CoffeeChatHistoryRepository.java @@ -1,7 +1,18 @@ package org.sopt.makers.internal.member.repository.coffeechat; +import org.sopt.makers.internal.domain.Member; import org.sopt.makers.internal.member.domain.coffeechat.CoffeeChatHistory; import org.springframework.data.jpa.repository.JpaRepository; public interface CoffeeChatHistoryRepository extends JpaRepository { + + // CREATE + + // READ + Long countBySender(Member sender); + Long countByReceiver(Member receiver); + + // UPDATE + + // DELETE } diff --git a/src/main/java/org/sopt/makers/internal/member/service/coffeechat/CoffeeChatRetriever.java b/src/main/java/org/sopt/makers/internal/member/service/coffeechat/CoffeeChatRetriever.java index 82d1eb5e..57d1269b 100644 --- a/src/main/java/org/sopt/makers/internal/member/service/coffeechat/CoffeeChatRetriever.java +++ b/src/main/java/org/sopt/makers/internal/member/service/coffeechat/CoffeeChatRetriever.java @@ -4,13 +4,12 @@ import org.sopt.makers.internal.domain.Member; import org.sopt.makers.internal.exception.ClientBadRequestException; import org.sopt.makers.internal.exception.NotFoundDBEntityException; -import org.sopt.makers.internal.member.domain.coffeechat.Career; -import org.sopt.makers.internal.member.domain.coffeechat.CoffeeChat; -import org.sopt.makers.internal.member.domain.coffeechat.CoffeeChatSection; -import org.sopt.makers.internal.member.domain.coffeechat.CoffeeChatTopicType; +import org.sopt.makers.internal.member.domain.coffeechat.*; +import org.sopt.makers.internal.member.repository.coffeechat.CoffeeChatHistoryRepository; import org.sopt.makers.internal.member.repository.coffeechat.CoffeeChatRepository; import org.sopt.makers.internal.member.repository.coffeechat.dto.CoffeeChatInfoDto; import org.sopt.makers.internal.member.repository.coffeechat.dto.RecentCoffeeChatInfoDto; +import org.sopt.makers.internal.member.service.coffeechat.dto.MemberCoffeeChatPropertyDto; import org.springframework.stereotype.Component; import java.util.List; @@ -20,6 +19,7 @@ public class CoffeeChatRetriever { private final CoffeeChatRepository coffeeChatRepository; + private final CoffeeChatHistoryRepository coffeeChatHistoryRepository; public CoffeeChat findCoffeeChatByMember(Member member) { return coffeeChatRepository.findCoffeeChatByMember(member) @@ -49,4 +49,20 @@ public List recentCoffeeChatInfoList() { public List searchCoffeeChatInfo(Long memberId, CoffeeChatSection section, CoffeeChatTopicType topicType, Career career, String part, String search) { return coffeeChatRepository.findSearchCoffeeChatInfo(memberId, section, topicType, career, part, search); } + + public MemberCoffeeChatPropertyDto getMemberCoffeeChatProperty(Member member) { + + Long receivedCoffeeChatCount = coffeeChatHistoryRepository.countByReceiver(member); + Long sentCoffeeChatCount = coffeeChatHistoryRepository.countBySender(member); + CoffeeChatStatus coffeeChatStatus; + + if (!coffeeChatRepository.existsCoffeeChatByMember(member)) { + coffeeChatStatus = CoffeeChatStatus.NONE; + } else { + CoffeeChat coffeeChat = findCoffeeChatByMember(member); + coffeeChatStatus = coffeeChat.getIsCoffeeChatActivate() ? CoffeeChatStatus.ON : CoffeeChatStatus.OFF; + } + + return new MemberCoffeeChatPropertyDto(coffeeChatStatus, receivedCoffeeChatCount, sentCoffeeChatCount); + } } \ No newline at end of file diff --git a/src/main/java/org/sopt/makers/internal/member/service/coffeechat/dto/MemberCoffeeChatPropertyDto.java b/src/main/java/org/sopt/makers/internal/member/service/coffeechat/dto/MemberCoffeeChatPropertyDto.java new file mode 100644 index 00000000..73ae9901 --- /dev/null +++ b/src/main/java/org/sopt/makers/internal/member/service/coffeechat/dto/MemberCoffeeChatPropertyDto.java @@ -0,0 +1,13 @@ +package org.sopt.makers.internal.member.service.coffeechat.dto; + +import org.sopt.makers.internal.member.domain.coffeechat.CoffeeChatStatus; + +public record MemberCoffeeChatPropertyDto( + + CoffeeChatStatus coffeeChatStatus, + + Long receivedCoffeeChatCount, + + Long sentCoffeeChatCount +) { +} diff --git a/src/main/java/org/sopt/makers/internal/member/util/MemberUtil.java b/src/main/java/org/sopt/makers/internal/member/util/MemberUtil.java new file mode 100644 index 00000000..64f119ff --- /dev/null +++ b/src/main/java/org/sopt/makers/internal/member/util/MemberUtil.java @@ -0,0 +1,18 @@ +package org.sopt.makers.internal.member.util; + +import java.util.List; + +public class MemberUtil { + + public static List extractGenerations(List activitiesAndGeneration) { + return activitiesAndGeneration.stream() + .map(item -> Integer.parseInt(item.split(" ")[0].replaceAll("[^0-9]", ""))) + .toList(); + } + + public static List extractActivities(List activitiesAndGeneration) { + return activitiesAndGeneration.stream() + .map(item -> item.split(" ")[1]) + .toList(); + } +} diff --git a/src/main/java/org/sopt/makers/internal/service/MemberService.java b/src/main/java/org/sopt/makers/internal/service/MemberService.java index 6b54c26c..c5a135e5 100644 --- a/src/main/java/org/sopt/makers/internal/service/MemberService.java +++ b/src/main/java/org/sopt/makers/internal/service/MemberService.java @@ -4,7 +4,6 @@ import java.net.URLDecoder; import java.nio.charset.StandardCharsets; -import java.time.LocalDateTime; import java.util.*; import java.util.function.Predicate; @@ -26,8 +25,14 @@ import org.sopt.makers.internal.exception.NotFoundDBEntityException; import org.sopt.makers.internal.external.slack.SlackClient; import org.sopt.makers.internal.mapper.MemberMapper; +import org.sopt.makers.internal.member.controller.dto.response.MemberPropertiesResponse; +import org.sopt.makers.internal.member.mapper.MemberResponseMapper; import org.sopt.makers.internal.member.repository.career.MemberCareerRepository; import org.sopt.makers.internal.member.repository.soptactivity.MemberSoptActivityRepository; +import org.sopt.makers.internal.member.service.MemberRetriever; +import org.sopt.makers.internal.member.service.career.MemberCareerRetriever; +import org.sopt.makers.internal.member.service.coffeechat.CoffeeChatRetriever; +import org.sopt.makers.internal.member.service.coffeechat.dto.MemberCoffeeChatPropertyDto; import org.sopt.makers.internal.repository.*; import org.sopt.makers.internal.repository.member.MemberBlockRepository; import org.sopt.makers.internal.repository.member.MemberReportRepository; @@ -46,6 +51,10 @@ @RequiredArgsConstructor @Service public class MemberService { + private final MemberRetriever memberRetriever; + private final CoffeeChatRetriever coffeeChatRetriever; + private final MemberCareerRetriever memberCareerRetriever; + private final MemberResponseMapper memberResponseMapper; @Value("${spring.profiles.active}") private String activeProfile; private final MemberRepository memberRepository; @@ -450,6 +459,16 @@ public void reportUser(Long memberId, Long reportMemberId) { ); } + @Transactional(readOnly = true) + public MemberPropertiesResponse getMemberProperties(Long memberId) { + Member member = memberRetriever.findMemberById(memberId); + MemberCareer memberCareer = memberCareerRetriever.findMemberLastCareerByMemberId(memberId); + MemberCoffeeChatPropertyDto coffeeChatProperty = coffeeChatRetriever.getMemberCoffeeChatProperty(member); + List activitiesAndGeneration = memberRetriever.concatPartAndGeneration(memberId); + + return memberResponseMapper.toMemberPropertiesResponse(member, memberCareer, coffeeChatProperty, activitiesAndGeneration); + } + private void sendReportToSlack(Member reporter, Member reportedMember) { try { if (Objects.equals(activeProfile, "prod")) { From 447b2ad4f4f802dbf7afc4c529d2a0367f8890b7 Mon Sep 17 00:00:00 2001 From: Lee SeungHeon <51286325+dev-Crayon@users.noreply.github.com> Date: Sat, 9 Nov 2024 17:15:30 +0900 Subject: [PATCH 4/5] =?UTF-8?q?[Feat]:=20=EC=BB=A4=ED=94=BC=EC=B1=97=20?= =?UTF-8?q?=EC=BB=A4=EB=A6=AC=EC=96=B4=20=ED=95=84=EB=93=9C=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20(#542)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Related to: #541 --- .../sopt/makers/internal/member/domain/coffeechat/Career.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/sopt/makers/internal/member/domain/coffeechat/Career.java b/src/main/java/org/sopt/makers/internal/member/domain/coffeechat/Career.java index aeb59ce4..7f1c8965 100644 --- a/src/main/java/org/sopt/makers/internal/member/domain/coffeechat/Career.java +++ b/src/main/java/org/sopt/makers/internal/member/domain/coffeechat/Career.java @@ -16,7 +16,8 @@ public enum Career { INTERN("인턴 경험만 있어요"), JUNIOR("주니어 (0-3년)"), MIDDLE("미들 (4-8년)"), - SENIOR("시니어 (9년 이상)") + SENIOR("시니어 (9년 이상)"), + STARTUP("창업 중") ; private final String title; From 32bc560ee1c24877a415d7970a8f3a2851cd40fa Mon Sep 17 00:00:00 2001 From: Yejun Park <80024278+jun02160@users.noreply.github.com> Date: Sat, 9 Nov 2024 20:49:43 +0900 Subject: [PATCH 5/5] =?UTF-8?q?[Fix]=20isCoffeeChatActivate=20param=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20(#543)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: 멤버 coffee chat 관련 필드 반영 * fix: isCoffeeChatActivate param 추가 * chore: method명 변경 * chore: method명 변경 --- .../internal/dto/member/MemberProfileSpecificResponse.java | 4 ++-- .../makers/internal/member/controller/MemberController.java | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/sopt/makers/internal/dto/member/MemberProfileSpecificResponse.java b/src/main/java/org/sopt/makers/internal/dto/member/MemberProfileSpecificResponse.java index a9c2c0b1..340811cb 100644 --- a/src/main/java/org/sopt/makers/internal/dto/member/MemberProfileSpecificResponse.java +++ b/src/main/java/org/sopt/makers/internal/dto/member/MemberProfileSpecificResponse.java @@ -88,7 +88,7 @@ public record MemberCareerResponse( Boolean isCurrent ){} - public static MemberProfileSpecificResponse checkIsBlindPhone(MemberProfileSpecificResponse response, Boolean isMine) { + public static MemberProfileSpecificResponse applyPhoneMasking(MemberProfileSpecificResponse response, Boolean isMine, Boolean isCoffeeChatActivate) { return new MemberProfileSpecificResponse( response.name(), response.profileImage(), @@ -114,7 +114,7 @@ public static MemberProfileSpecificResponse checkIsBlindPhone(MemberProfileSpeci response.projects(), response.careers(), response.allowOfficial(), - response.isCoffeeChatActivate(), + isCoffeeChatActivate, isMine ); } diff --git a/src/main/java/org/sopt/makers/internal/member/controller/MemberController.java b/src/main/java/org/sopt/makers/internal/member/controller/MemberController.java index 083fdb5b..8b88c12f 100644 --- a/src/main/java/org/sopt/makers/internal/member/controller/MemberController.java +++ b/src/main/java/org/sopt/makers/internal/member/controller/MemberController.java @@ -170,11 +170,11 @@ public ResponseEntity getUserProfile ( ).collect(Collectors.toList()); val isMine = Objects.equals(member.getId(), memberDetails.getId()); val isCoffeeChatActivate = coffeeChatService.getCoffeeChatActivate(member.getId()); - val response = MemberProfileSpecificResponse.checkIsBlindPhone( + val response = MemberProfileSpecificResponse.applyPhoneMasking( memberMapper.toProfileSpecificResponse( member, true, memberProfileProjects, activityResponses, soptActivityResponse, isCoffeeChatActivate ), - isMine); + isMine, isCoffeeChatActivate); sortProfileCareer(response); return ResponseEntity.status(HttpStatus.OK).body(response); }