Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,12 +1,6 @@
package com.meetkey.server.domain.member.controller;

import com.meetkey.server.domain.member.dto.MemberReqDTO;
import com.meetkey.server.domain.member.dto.MemberResDTO;
import com.meetkey.server.domain.member.dto.ProfileResDTO;
import com.meetkey.server.domain.member.entity.Member;
import com.meetkey.server.domain.member.entity.mapping.MemberBlock;
import com.meetkey.server.domain.member.exception.MemberErrorStatus;
import com.meetkey.server.domain.member.exception.MemberException;
import com.meetkey.server.domain.member.repository.MemberBlockRepository;
import com.meetkey.server.domain.member.repository.MemberRepository;
import com.meetkey.server.domain.member.service.MemberService;
Expand All @@ -23,8 +17,6 @@
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.*;

import java.util.List;

import static com.meetkey.server.domain.member.dto.MemberReqDTO.*;

@RequiredArgsConstructor
Expand Down Expand Up @@ -58,4 +50,12 @@ public ResponseEntity<BasicResponse<MemberResDTO.Block>> blockMember(
MemberResDTO.Block res = memberService.blockMember(fromMember.getMemberId(), toMemberId);
return ResponseEntity.ok(BasicResponse.success(CommonSuccessStatus._OK, res));
}

@PatchMapping("/membership")
public ResponseEntity<BasicResponse<Void>> updateMembershipStatus(
@AuthenticationPrincipal CustomUserDetails details
){
memberService.updateMembershipStatus(details.getMemberId());
return ResponseEntity.ok(BasicResponse.success(CommonSuccessStatus._OK, null));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -214,6 +214,7 @@ public BasicResponse<List<ProfileResDTO.MemberPhotoUrl>> getMemberPhotoUploadUrl
return BasicResponse.success(CommonSuccessStatus._OK, responses);
}

@Operation(summary = "프로필 key 저장 API", description = "앞선 요청으로 받은 프로필 key들을 DB에 저장합니다. ")
@PostMapping("/photos/register")
public BasicResponse<Void> registerMemberPhotos(
@AuthenticationPrincipal CustomUserDetails customUserDetails,
Expand All @@ -226,7 +227,7 @@ public BasicResponse<Void> registerMemberPhotos(
return BasicResponse.success(CommonSuccessStatus._OK, null);
}

@Operation(summary = "내 프로필 사진 조회 API", description = "로그인한 사용자의 프로필 사진 URL 리스트를 가져옵니다.")
@Operation(summary = "내 프로필 사진 전체 조회 API", description = "로그인한 사용자의 모든 프로필 사진 URL 리스트를 가져옵니다.")
@GetMapping("/photos")
public BasicResponse<List<String>> getMyPhotos(
@AuthenticationPrincipal CustomUserDetails customUserDetails
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,8 @@ public MyProfileResponse toProfileResponse(
Member member,
List<Interest> interests,
Preference personality,
BadgeResponse badge
BadgeResponse badge,
String profileUrl
) {
List<String> interestNames = interests.stream()
.map(interest -> interest.getType().name())
Expand All @@ -135,7 +136,7 @@ public MyProfileResponse toProfileResponse(
.first(member.getFirstLanguage())
.target(member.getTargetLanguage())
.age(member.getAge())
.profileImage("image")
.profileImage(profileUrl)
.recommendCount(member.getRecommendCount())
.notRecommendCount(member.getNotRecommendCount())
.badge(badge)
Expand All @@ -151,7 +152,8 @@ public OtherProfileResponse toOtherProfileResponse(
List<Interest> interests,
Preference personality,
String distance,
BadgeResponse badge
BadgeResponse badge,
String profileUrl
) {
List<String> interestNames = interests.stream()
.map(interest -> interest.getType().name())
Expand All @@ -163,7 +165,7 @@ public OtherProfileResponse toOtherProfileResponse(
.age(member.getAge())
.gender(member.getGender())
.homeTown(member.getHomeTown())
.profileImage("image")
.profileImage(profileUrl)
.location(member.getLocation())
.distance(distance)
.recommendCount(member.getRecommendCount())
Expand Down
14 changes: 14 additions & 0 deletions src/main/java/com/meetkey/server/domain/member/entity/Member.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.meetkey.server.domain.member.entity;

import com.meetkey.server.domain.member.entity.mapping.InterestMember;
import com.meetkey.server.domain.member.entity.mapping.MemberPhoto;
import com.meetkey.server.domain.member.enums.*;
import com.meetkey.server.global.common.BaseEntity;
import jakarta.persistence.*;
Expand Down Expand Up @@ -99,6 +100,19 @@ public int getAge() {
return LocalDate.now().getYear() - this.birthday.getYear() + 1;
}

public void updateProfilePhotoUrl(String profilePhotoUrl) {
this.profileImageUrl = profilePhotoUrl;
}

public void updateMemberShip() {
if (this.membership == Membership.FREE) {
this.membership = Membership.PREMIUM;
}
else {
this.membership = Membership.FREE;
}
}

public void increaseRecommend() {
this.recommendCount++;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,13 +78,12 @@ public Member devSignup(Provider provider, String providerId, MemberReqDTO.Signu

return member;
}

@Transactional
public MemberResDTO.Block blockMember(Long fromId, Long toId){
// 멤버 있는지 없는지 확인
Member fromMember = memberRepository.findById(fromId)
.orElseThrow(() -> new MemberException(MemberErrorStatus.MEMBER_NOT_FOUND));
Member toMember = memberRepository.findById(toId)
.orElseThrow(() -> new MemberException(MemberErrorStatus.MEMBER_NOT_FOUND));
Member fromMember = findMemberById(fromId);
Member toMember = findMemberById(toId);
FromToId blockId = new FromToId(fromId, toId);

// 중복 차단인지 확인
Expand All @@ -106,6 +105,13 @@ public MemberResDTO.Block blockMember(Long fromId, Long toId){
.build();
}

@Transactional
public void updateMembershipStatus(Long memberId){
Member member = findMemberById(memberId);

member.updateMemberShip();
}

// FCM 토큰 저장
@Transactional
public void saveFcmToken(Long memberId, String token) {
Expand All @@ -119,6 +125,10 @@ public void saveFcmToken(Long memberId, String token) {
.token(token)
.build());
}
}

public Member findMemberById(Long memberId) {
return memberRepository.findById(memberId)
.orElseThrow(() -> new MemberException(MemberErrorStatus.MEMBER_NOT_FOUND));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import com.meetkey.server.domain.member.exception.MemberErrorStatus;
import com.meetkey.server.domain.member.exception.MemberException;
import com.meetkey.server.domain.member.repository.*;
import com.meetkey.server.global.s3.S3Service;
import lombok.RequiredArgsConstructor;
import org.jetbrains.annotations.Nullable;
import org.springframework.stereotype.Service;
Expand All @@ -39,6 +40,7 @@ public class ProfileService {
private final EvaluationRepository evaluationRepository;
private final BadgeService badgeService;
private final GeocodingService geocodingService;
private final S3Service s3Service;

public ProfileUpdateResponse updateProfile(Long memberId, ProfileUpdateRequest request) {
Member member = getMember(memberId);
Expand Down Expand Up @@ -161,7 +163,9 @@ public MyProfileResponse getMyProfile(Long memberId) {
.map(InterestMember::getInterest)
.toList();

return profileConverter.toProfileResponse(member, interests, preference, badge);
String profileImageUrl = s3Service.generateGetPresignedUrl(member.getProfileImageUrl());

return profileConverter.toProfileResponse(member, interests, preference, badge, profileImageUrl);
}

// 다른 사람 프로필 조회
Expand All @@ -185,7 +189,9 @@ public OtherProfileResponse getOtherProfile(Long memberId, Long targetMemberId)
.map(InterestMember::getInterest)
.toList();

return profileConverter.toOtherProfileResponse(target, interests, preference, distance, badge);
String profileImageUrl = s3Service.generateGetPresignedUrl(target.getProfileImageUrl());

return profileConverter.toOtherProfileResponse(target, interests, preference, distance, badge, profileImageUrl);
}


Expand Down
4 changes: 4 additions & 0 deletions src/main/java/com/meetkey/server/global/s3/S3Service.java
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,10 @@ public void registerMemberPhotoKeys(Long memberId, List<String> s3Keys){
.collect(Collectors.toList());

memberPhotoRepository.saveAll(photos);

if (!s3Keys.isEmpty()) {
member.updateProfilePhotoUrl(s3Keys.get(0));
}
}


Expand Down