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
4 changes: 4 additions & 0 deletions src/main/java/com/fitlink/repository/UsersInfoRepository.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,11 @@
package com.fitlink.repository;

import com.fitlink.domain.Users;
import com.fitlink.domain.UsersInfo;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.Optional;

public interface UsersInfoRepository extends JpaRepository<UsersInfo, Long> {
Optional<UsersInfo> findByUsers(Users users);
}
Original file line number Diff line number Diff line change
Expand Up @@ -182,7 +182,7 @@ public AIPrescriptionResponseDTO getPrescription(AIPrescriptionRequestDTO reques
List<String> prepExercises = predictExerciseTopN(prepModel, prepHeader, request, "Prep", 3);

// 본운동 예측 - Top 3 (기타 제외)
List<String> mainExercises = predictExerciseTopN(mainModel, mainHeader, request, "Main", 3);
List<String> mainExercises = predictExerciseTopN(mainModel, mainHeader, request, "Main", 5);

// 마무리운동 예측 - Top 3 (기타 제외)
List<String> coolDownExercises = predictExerciseTopN(coolDownModel, coolDownHeader, request, "CoolDown", 3);
Expand Down
37 changes: 25 additions & 12 deletions src/main/java/com/fitlink/service/UserServiceImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import com.fitlink.repository.AgreementRepository;
import com.fitlink.repository.AuthAccountRepository;
import com.fitlink.repository.UserRepository;
import com.fitlink.repository.UsersInfoRepository;
import com.fitlink.storage.FileStorageService;
import com.fitlink.util.EmailUtil;
import com.fitlink.util.UserUtil;
Expand Down Expand Up @@ -44,6 +45,7 @@ public class UserServiceImpl implements UserService {
private final UserMapper userMapper;
private final PasswordEncoder passwordEncoder;
private final JwtTokenProvider jwtTokenProvider;
private final UsersInfoRepository usersInfoRepository;
private final UserUtil userUtil;
private final EmailUtil emailUtil;
private final UserValidator userValidator;
Expand Down Expand Up @@ -179,32 +181,33 @@ public Users updateEmail(Long userId, UserRequestDTO.UpdateEmailDTO request) {
return currentUser;
}


@Override
public UserResponseDTO.UserProfileDTO getProfile(Long userId){
//1. 사용자 확인
// 1. 사용자 확인
Users currentUser = userUtil.findByIdOrThrow(userId);
//2. Provider 조회 (GENERAL이 기본값)

// 2. Provider 조회 (GENERAL이 기본값)
Provider provider = authAccountRepository.findByUserAndProvider(currentUser, Provider.GENERAL)
.map(AuthAccount::getProvider)
.orElseGet(() -> authAccountRepository.findByUser(currentUser).stream()
.findFirst()
.map(AuthAccount::getProvider)
.orElse(Provider.GENERAL));
//3. Agreement 조회

// 3. Agreement 조회
Agreement agreement = agreementRepository.findByUser(currentUser)
.orElse(Agreement.builder()
.privacy(false)
.service(false)
.over14(false)
.location(false)
.build());
//4. mapper로 사용자 정보 반환하기

// 4. 기본 사용자 정보 매핑
UserResponseDTO.UserProfileDTO profileDTO = userMapper.toUserProfileDTO(currentUser);
//5. 추가 정보 설정

// 5. 추가 정보 설정 (가입일, provider, 약관)
profileDTO.setRegDate(currentUser.getCreatedAt());
profileDTO.setProvider(provider.name());
profileDTO.setAgreements(UserResponseDTO.AgreementsDTO.builder()
Expand All @@ -213,13 +216,23 @@ public UserResponseDTO.UserProfileDTO getProfile(Long userId){
.over14(agreement.getOver14())
.location(agreement.getLocation())
.build());

//6. profileUrl을 절대 URL로 변환 (기존 상대 경로도 절대 URL로 변환)

// 6. UsersInfo 조회해서 height/weight/birthDate/sex 세팅
usersInfoRepository.findByUsers(currentUser).ifPresent(usersInfo -> {
profileDTO.setHeight(usersInfo.getHeight());
profileDTO.setWeight(usersInfo.getWeight());
profileDTO.setBirthDate(usersInfo.getBirthDate());
if (usersInfo.getSex() != null) {
profileDTO.setSex(usersInfo.getSex().name()); // "M" 또는 "F"
}
});

// 7. profileUrl을 절대 URL로 변환
if (profileDTO.getProfileUrl() != null) {
String absoluteUrl = fileStorageService.convertToAbsoluteUrl(profileDTO.getProfileUrl());
profileDTO.setProfileUrl(absoluteUrl);
}

return profileDTO;
}
@Override
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/com/fitlink/web/dto/UserResponseDTO.java
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,10 @@ public static class UserProfileDTO{
String provider;
LocalDateTime deleteDate;
AgreementsDTO agreements;
Float height;
Float weight;
String birthDate; // YYYYMMDD
String sex; // "M" / "F"
}

@Builder
Expand Down
Loading