Skip to content

Commit

Permalink
Merge pull request #205 from capstone-maru/feat/#203-implRecommend
Browse files Browse the repository at this point in the history
fix #203 멤ㅊ버 추천 비동기 주석
  • Loading branch information
cheesecrust authored May 29, 2024
2 parents e8ea662 + 39be50a commit 5546f47
Show file tree
Hide file tree
Showing 4 changed files with 99 additions and 64 deletions.
51 changes: 26 additions & 25 deletions src/main/java/org/capstone/maru/service/ChatService.java
Original file line number Diff line number Diff line change
Expand Up @@ -119,22 +119,22 @@ public List<ChatMessageResponse> getChatMessages(Long roomId, Pageable pageable)
*/

chatRepository.findAllByRoomId(roomId, pageable).stream().map(
chat -> {
if (messageId.contains(chat.getId())) {
return null;
} else {
return ChatMessageResponse.builder()
.messageId(chat.getId())
.sender(chat.getCreatedBy())
.message(chat.getMessage())
.nickname(chat.getNickname())
.createdAt(chat.getCreatedAt())
.build();
}
}
)
.filter(Objects::nonNull)
.forEach(recentMessage::add);
chat -> {
if (messageId.contains(chat.getId())) {
return null;
} else {
return ChatMessageResponse.builder()
.messageId(chat.getId())
.sender(chat.getCreatedBy())
.message(chat.getMessage())
.nickname(chat.getNickname())
.createdAt(chat.getCreatedAt())
.build();
}
}
)
.filter(Objects::nonNull)
.forEach(recentMessage::add);

recentMessage.sort(comparator);

Expand Down Expand Up @@ -179,7 +179,8 @@ public List<ChatMemberProfileResponse> showChatRoomMember(Long roomId) {
memberRoom -> {
MemberAccount memberAccount = memberRoom.getMember();

String profileImageUrl = s3FileService.getPreSignedUrlForLoad(
String profileImageUrl = s3FileService.getMemberPreSignedUrlForLoad(
memberAccount.getGender(),
memberAccount.getProfileImage().getFileName());

return ChatMemberProfileResponse.from(
Expand Down Expand Up @@ -289,12 +290,12 @@ public ChatMessageResponse getLastMessage(ChatRoom room) {

if (chat == null) {
return ChatMessageResponse.builder()
.messageId("0")
.message("")
.nickname("initial")
.sender("initial")
.createdAt(LocalDateTime.now())
.build();
.messageId("0")
.message("")
.nickname("initial")
.sender("initial")
.createdAt(LocalDateTime.now())
.build();
}

return ChatMessageResponse.from(chat);
Expand All @@ -307,8 +308,8 @@ public ChatMessageResponse getLastMessage(ChatRoom room) {
public void exitChatRoom(Long roomId, String memberId) {
log.info("exitChatRoom : {}, {}", roomId, memberId);
MemberRoom memberRoom = memberRoomRepository.findByMemberIdAndChatRoomId(memberId, roomId)
.orElseThrow(
IllegalArgumentException::new);
.orElseThrow(
IllegalArgumentException::new);
log.info("memberRoom : {}", memberRoom.getId());
memberRoom.updateLastCheckTime();
}
Expand Down
10 changes: 7 additions & 3 deletions src/main/java/org/capstone/maru/service/FollowService.java
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,8 @@ public FollowingDto getFollowings(String follower) {
.getFollowing()
.getProfileImage()
.updateFileName(
s3FileService.getPreSignedUrlForLoad(
s3FileService.getMemberPreSignedUrlForLoad(
followerAccount.getGender(),
follow.getFollowing().getProfileImage().getFileName())
)
);
Expand All @@ -60,11 +61,14 @@ public FollowingDto getFollowings(String follower) {
@Transactional(readOnly = true)
public FollowingDto getMutualFollower(String memberId) {
List<MemberAccount> followingList = followRepository.findAllMutualFollower(memberId)
.stream().toList();
.stream().toList();
followingList.forEach(memberAccount -> memberAccount
.getProfileImage()
.updateFileName(
s3FileService.getPreSignedUrlForLoad(memberAccount.getProfileImage().getFileName())
s3FileService.getMemberPreSignedUrlForLoad(
memberAccount.getGender(),
memberAccount.getProfileImage().getFileName()
)
)
);

Expand Down
59 changes: 35 additions & 24 deletions src/main/java/org/capstone/maru/service/ProfileService.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import lombok.extern.slf4j.Slf4j;
import org.capstone.maru.domain.FeatureCard;
import org.capstone.maru.domain.MemberAccount;
import org.capstone.maru.domain.MemberRecommendUpdate;
import org.capstone.maru.domain.ProfileImage;
import org.capstone.maru.domain.Recommend;
import org.capstone.maru.domain.jsonb.MemberFeatures;
Expand All @@ -19,7 +18,6 @@
import org.capstone.maru.dto.response.SharedRoomPostResponse;
import org.capstone.maru.dto.response.SimpleMemberProfileResponse;
import org.capstone.maru.repository.postgre.MemberCardRepository;
import org.capstone.maru.repository.postgre.MemberRecommendUpdateRepository;
import org.capstone.maru.repository.postgre.ProfileImageRepository;
import org.capstone.maru.repository.postgre.RecommendRepository;
import org.springframework.stereotype.Service;
Expand All @@ -43,9 +41,7 @@ public class ProfileService {
private final RecommendRepository recommendRepository;

private final RecommendService recommendService;

private final MemberRecommendUpdateRepository memberRecommendUpdateRepository;


@Transactional
public FeatureCardDto updateMyCard(String memberId, Long cardId, String location,
MemberFeatures features) {
Expand Down Expand Up @@ -102,7 +98,10 @@ public MemberProfileDto getMemberProfile(String memberId, String gender) {
log.info("mateCard: {}", mateCard.getMemberFeatures());
log.info("profileImage: {}", profileImage.getFileName());

String imgURL = s3FileService.getPreSignedUrlForLoad(profileImage.getFileName());
String imgURL = s3FileService.getMemberPreSignedUrlForLoad(
memberAccount.getGender(),
profileImage.getFileName()
);

AuthResponse authResponse = AuthResponse.from(memberAccount);

Expand Down Expand Up @@ -159,7 +158,10 @@ public void updateProfileImage(String memberId, String fileName) {
public SimpleMemberProfileResponse searchProfile(String email) {
MemberAccount memberAccount = memberAccountService.searchMemberAccountByEmail(email);
ProfileImage profileImage = memberAccount.getProfileImage();
String imgURL = s3FileService.getPreSignedUrlForLoad(profileImage.getFileName());
String imgURL = s3FileService.getMemberPreSignedUrlForLoad(
memberAccount.getGender(),
profileImage.getFileName()
);

return SimpleMemberProfileResponse.from(memberAccount.getMemberId(),
memberAccount.getNickname(), imgURL);
Expand All @@ -170,7 +172,10 @@ public List<SimpleMemberProfileResponse> searchContainByEmail(String word) {

return memberAccounts.stream().map(memberAccount -> {
ProfileImage profileImage = memberAccount.getProfileImage();
String imgURL = s3FileService.getPreSignedUrlForLoad(profileImage.getFileName());
String imgURL = s3FileService.getMemberPreSignedUrlForLoad(
memberAccount.getGender(),
profileImage.getFileName()
);

return SimpleMemberProfileResponse.from(memberAccount.getMemberId(),
memberAccount.getNickname(), imgURL);
Expand All @@ -182,22 +187,28 @@ public List<SimpleMemberCardDto> getRecommendMember(String memberId, String gend
String cardOption) {
log.info("cardOption: {}", cardOption);

LocalDateTime now = LocalDateTime.now();

Optional<MemberRecommendUpdate> recommendUpdate = memberRecommendUpdateRepository.findById(
memberId);

if (recommendUpdate.isEmpty() || recommendUpdate.get().haveToUpdate(now)) {
recommendService.updateRecommendation(
memberId,
cardOption,
"member"
).block();

MemberRecommendUpdate recommendUpdateSave = new MemberRecommendUpdate(memberId, now);

memberRecommendUpdateRepository.save(recommendUpdateSave);
}
recommendService.updateRecommendation(
memberId,
cardOption,
"member"
).block();

// LocalDateTime now = LocalDateTime.now();
//
// Optional<MemberRecommendUpdate> recommendUpdate = memberRecommendUpdateRepository.findById(
// memberId);
//
// if (recommendUpdate.isEmpty() || recommendUpdate.get().haveToUpdate(now)) {
// recommendService.updateRecommendation(
// memberId,
// cardOption,
// "member"
// ).block();
//
// MemberRecommendUpdate recommendUpdateSave = new MemberRecommendUpdate(memberId, now);
//
// memberRecommendUpdateRepository.save(recommendUpdateSave);
// }

String recommendType = "my".equals(cardOption) ? "mate" : "my";

Expand Down
43 changes: 31 additions & 12 deletions src/main/java/org/capstone/maru/service/S3FileService.java
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import io.micrometer.common.util.StringUtils;
import jakarta.annotation.Nonnull;
import java.util.Date;
import java.util.Objects;
import java.util.Random;
import java.util.UUID;
import java.util.regex.Matcher;
Expand All @@ -29,19 +30,37 @@ public ImageDto getPreSignedUrlForUpload(@Nonnull String extension) {
Date expiration = getPreSignedUrlExpiration();

String imageURL = amazonS3.generatePresignedUrl(bucket, filename, expiration,
HttpMethod.PUT)
.toString();
HttpMethod.PUT)
.toString();

return ImageDto.from(imageURL, filename);
}

public String getMemberPreSignedUrlForLoad(String gender, String filename) {
Date expiration = getPreSignedUrlExpiration();

if (filename.contains("default.png") && Objects.equals(gender, "MALE")) {
return amazonS3.generatePresignedUrl(bucket, "images/maleDefault.png", expiration)
.toString();
}

if (filename.contains("default.png") && Objects.equals(gender, "FEMALE")) {
return amazonS3.generatePresignedUrl(bucket, "images/femaleDefault.png", expiration)
.toString();
}

return amazonS3.generatePresignedUrl(bucket, filename, expiration)
.toString();
}


public String getPreSignedUrlForLoad(String filename) {

Date expiration = getPreSignedUrlExpiration();

if (filename.contains("default.png")) {
return amazonS3.generatePresignedUrl(bucket, "images/default.png", expiration)
.toString();
.toString();
}

// TODO: 더미 데이터를 위한 코드 실제 서비스에서는 제거할 것
Expand All @@ -50,25 +69,25 @@ public String getPreSignedUrlForLoad(String filename) {
switch (random.nextInt(4) + 1) {
case 1:
return amazonS3.generatePresignedUrl(bucket, "images/defaultroom1.jpg",
expiration)
.toString();
expiration)
.toString();
case 2:
return amazonS3.generatePresignedUrl(bucket, "images/defaultroom2.jpg",
expiration)
.toString();
expiration)
.toString();
case 3:
return amazonS3.generatePresignedUrl(bucket, "images/defaultroom3.jpg",
expiration)
.toString();
expiration)
.toString();
case 4:
return amazonS3.generatePresignedUrl(bucket, "images/defaultroom.jpeg",
expiration)
.toString();
expiration)
.toString();
}
}

return amazonS3.generatePresignedUrl(bucket, filename, expiration)
.toString();
.toString();
}

private Date getPreSignedUrlExpiration() {
Expand Down

0 comments on commit 5546f47

Please sign in to comment.