Skip to content

Commit

Permalink
Merge pull request #197 from capstone-maru/dev
Browse files Browse the repository at this point in the history
Dev
  • Loading branch information
cheesecrust authored May 28, 2024
2 parents e90150f + acb34df commit 182d339
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 14 deletions.
30 changes: 30 additions & 0 deletions src/main/java/org/capstone/maru/domain/MemberRecommendUpdate.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package org.capstone.maru.domain;

import jakarta.persistence.Entity;
import jakarta.persistence.Id;
import java.time.Duration;
import java.time.LocalDateTime;
import lombok.Getter;

@Getter
@Entity
public class MemberRecommendUpdate {

@Id
private String memberId;

private LocalDateTime recommendUpdateAt;

public MemberRecommendUpdate(String memberId, LocalDateTime recommendUpdateAt) {
this.memberId = memberId;
this.recommendUpdateAt = LocalDateTime.now();
}

public Boolean haveToUpdate(LocalDateTime now) {

Duration duration = Duration.between(recommendUpdateAt, now);

// 차이가 30분인지 확인
return duration.equals(Duration.ofMinutes(30));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
package org.capstone.maru.repository.postgre;

import org.capstone.maru.domain.MemberRecommendUpdate;
import org.springframework.data.jpa.repository.JpaRepository;

public interface MemberRecommendUpdateRepository extends
JpaRepository<MemberRecommendUpdate, String> {

}
40 changes: 26 additions & 14 deletions src/main/java/org/capstone/maru/service/ProfileService.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
package org.capstone.maru.service;

import java.time.LocalDateTime;
import java.util.List;
import java.util.Optional;
import lombok.RequiredArgsConstructor;
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 @@ -17,6 +19,7 @@
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 @@ -41,6 +44,8 @@ public class ProfileService {

private final RecommendService recommendService;

private final MemberRecommendUpdateRepository memberRecommendUpdateRepository;

@Transactional
public FeatureCardDto updateMyCard(String memberId, Long cardId, String location,
MemberFeatures features) {
Expand Down Expand Up @@ -124,9 +129,9 @@ public FeatureCardDto getCard(Long cardId) {
log.info("getCard - cardId: {}", cardId);

FeatureCard featureCard = memberCardRepository.findById(cardId)
.orElseThrow(
() -> new IllegalArgumentException(
"MemberCard not found"));
.orElseThrow(
() -> new IllegalArgumentException(
"MemberCard not found"));

return FeatureCardDto.from(featureCard);
}
Expand All @@ -141,13 +146,9 @@ public void updateProfileImage(String memberId, String fileName) {

MemberAccount memberAccount = memberAccountService.searchMemberAccount(memberId);

Optional<ProfileImage> profileImage = profileImageRepository.findById(fileName);

if (profileImage.isEmpty()) {
throw new IllegalArgumentException("ProfileImage not found");
}
ProfileImage profileImage = memberAccount.getProfileImage();

memberAccount.updateProfileImage(profileImage.get());
profileImage.updateFileName(fileName);
}

@Transactional
Expand Down Expand Up @@ -189,11 +190,22 @@ public List<SimpleMemberCardDto> getRecommendMember(String memberId, String gend
String cardOption) {
log.info("cardOption: {}", cardOption);

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

0 comments on commit 182d339

Please sign in to comment.