diff --git a/src/main/java/com/example/cp_main_be/domain/member/user/service/UserService.java b/src/main/java/com/example/cp_main_be/domain/member/user/service/UserService.java index 9f7e9fcc..b14afb95 100644 --- a/src/main/java/com/example/cp_main_be/domain/member/user/service/UserService.java +++ b/src/main/java/com/example/cp_main_be/domain/member/user/service/UserService.java @@ -2,6 +2,7 @@ import com.example.cp_main_be.domain.avatar.avatar.domain.Avatar; import com.example.cp_main_be.domain.avatar.avatar.domain.repository.AvatarRepository; +import com.example.cp_main_be.domain.garden.garden.domain.Garden; import com.example.cp_main_be.domain.garden.wateringlog.domain.repository.FriendWateringLogRepository; import com.example.cp_main_be.domain.home.HomeResponseDto; import com.example.cp_main_be.domain.member.level.service.LevelService; @@ -18,7 +19,9 @@ import com.example.cp_main_be.global.exception.UserNotFoundException; import java.time.LocalDateTime; import java.time.ZoneId; +import java.util.Comparator; import java.util.List; +import java.util.Objects; import java.util.UUID; import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; @@ -39,7 +42,10 @@ public class UserService { private final FollowRepository followRepository; public void addExperience(Long actorId, int points) { - User user = userRepository.findById(actorId).get(); + User user = + userRepository + .findById(actorId) + .orElseThrow(() -> new UserNotFoundException(ErrorCode.USER_NOT_FOUND.getMessage())); user.addExperience(points); levelService.checkLevelUp(user); } @@ -112,8 +118,7 @@ public User getCurrentUser() { } // Principal이 String(UUID)인 경우 (백업 처리) - if (principal instanceof String) { - String uuidString = (String) principal; + if (principal instanceof String uuidString) { UUID userUuid = UUID.fromString(uuidString); return userRepository .findByUuid(userUuid) @@ -140,6 +145,15 @@ public UserProfileResponse getUserProfile(Long currentUserId, Long profileUserId .findById(profileUserId) .orElseThrow(() -> new CustomApiException(ErrorCode.NOT_FOUND)); + // [추가] 프로필 이미지 URL을 첫 번째 텃밭의 아바타 이미지로 설정 + String profileImageUrl = + profileUser.getGardens().stream() + .min(Comparator.comparing(Garden::getSlotNumber)) // 슬롯 번호가 가장 낮은 텃밭 찾기 + .map(Garden::getAvatar) // 해당 텃밭의 아바타 가져오기 + .filter(Objects::nonNull) // 아바타가 null이 아닌 경우 필터링 + .map(avatar -> avatar.getAvatarMaster().getDefaultImageUrl()) // 아바타의 이미지 URL 가져오기 + .orElse(profileUser.getProfileImageUrl()); // 텃밭/아바타가 없으면 기존 프로필 이미지 사용 + // 1. 팔로우 상태 확인 // currentUserId -> profileUserId 팔로우 여부 boolean isFollowing = followRepository.existsByFollowerAndFollowing(currentUser, profileUser); @@ -202,7 +216,7 @@ public UserProfileResponse getUserProfile(Long currentUserId, Long profileUserId return UserProfileResponse.builder() .id(profileUser.getId()) .userNickname(profileUser.getNickname()) - .profileImageUrl(profileUser.getProfileImageUrl()) + .profileImageUrl(profileImageUrl) .followStatus(followStatus) .profileUserLevel(profileUser.getLevel()) .leftWaterCountForOthers(leftWaterCountForOthers)