diff --git a/src/main/java/org/example/wowelang_backend/security/jwt/JwtAuthenticationFilter.java b/src/main/java/org/example/wowelang_backend/security/jwt/JwtAuthenticationFilter.java index 5029ec6..5fba563 100644 --- a/src/main/java/org/example/wowelang_backend/security/jwt/JwtAuthenticationFilter.java +++ b/src/main/java/org/example/wowelang_backend/security/jwt/JwtAuthenticationFilter.java @@ -55,7 +55,6 @@ private void setAuth(JwtTokenProvider jwtTokenProvider, String token) { protected boolean shouldNotFilter(HttpServletRequest request) { String path = request.getRequestURI(); String method = request.getMethod(); - // 필터를 생략할 URL 패턴 정의 Map> whitelist = Map.of( "OPTIONS", Set.of("/**"), // CORS Preflight 요청 허용 diff --git a/src/main/java/org/example/wowelang_backend/user/controller/UserController.java b/src/main/java/org/example/wowelang_backend/user/controller/UserController.java index 531138d..b774470 100644 --- a/src/main/java/org/example/wowelang_backend/user/controller/UserController.java +++ b/src/main/java/org/example/wowelang_backend/user/controller/UserController.java @@ -160,4 +160,11 @@ public ApiResponse deleteAccount( return ApiResponse.onSuccess(null); } + // 친구 요청 수락 + @GetMapping("/me/{userId}/profile") + public ApiResponse getFriendProfile(@PathVariable Long userId) { + FriendProfileDto dto = userService.getFriendProfile(userId); + return ApiResponse.onSuccess(dto); + } + } diff --git a/src/main/java/org/example/wowelang_backend/user/dto/FriendProfileDto.java b/src/main/java/org/example/wowelang_backend/user/dto/FriendProfileDto.java new file mode 100644 index 0000000..53b1fbc --- /dev/null +++ b/src/main/java/org/example/wowelang_backend/user/dto/FriendProfileDto.java @@ -0,0 +1,19 @@ +package org.example.wowelang_backend.user.dto; + +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +@Getter +@Setter +@NoArgsConstructor +@AllArgsConstructor +public class FriendProfileDto { + private CharacterInfoDto character; + private String nickname; + private List interests; + private String countryOrMajor; +} diff --git a/src/main/java/org/example/wowelang_backend/user/dto/VerifyReqDto.java b/src/main/java/org/example/wowelang_backend/user/dto/VerifyReqDto.java index 50fc78f..201c06d 100644 --- a/src/main/java/org/example/wowelang_backend/user/dto/VerifyReqDto.java +++ b/src/main/java/org/example/wowelang_backend/user/dto/VerifyReqDto.java @@ -9,7 +9,6 @@ import java.time.LocalDate; - @Getter @Setter @NoArgsConstructor diff --git a/src/main/java/org/example/wowelang_backend/user/service/UserService.java b/src/main/java/org/example/wowelang_backend/user/service/UserService.java index df305ee..d503ef8 100644 --- a/src/main/java/org/example/wowelang_backend/user/service/UserService.java +++ b/src/main/java/org/example/wowelang_backend/user/service/UserService.java @@ -1,9 +1,11 @@ package org.example.wowelang_backend.user.service; +import jakarta.persistence.EntityNotFoundException; import lombok.RequiredArgsConstructor; import org.example.wowelang_backend.common.apiPayLoad.status.ErrorStatus; import org.example.wowelang_backend.user.domain.*; import org.example.wowelang_backend.user.dto.CharacterInfoDto; +import org.example.wowelang_backend.user.dto.FriendProfileDto; import org.example.wowelang_backend.user.dto.InterestDto; import org.example.wowelang_backend.user.dto.UserProfileDto; import org.example.wowelang_backend.user.repository.ForeignTuteeRepository; @@ -238,4 +240,40 @@ public void deleteAccount(User user) { user.delete(); // 엔티티에 정의한 delete() 호출 → isDeleted=true } + + // 친구 요청 수락 후 보여줄 프로필 조회 + public FriendProfileDto getFriendProfile(Long friendUserId) { + // 1) User 엔티티 조회 + User user = userRepository.findById(friendUserId) + .orElseThrow(() -> new IllegalArgumentException(ErrorStatus.USER_NOT_FOUND.getMessage())); + + // 2) 관심사 조회 + List interests = userInterestRepository + .findAllByUserId(user.getId()).stream() + .map(ui -> new InterestDto(ui.getInterest().getId(), ui.getInterest().getName())) + .toList(); + + // 3) 캐릭터 정보 + CharacterInfoDto character = new CharacterInfoDto( + user.getColorId(), + user.getMaskId() + ); + + // 4) country/Major 결정 + String countryOrMajor; + if (user.getUsertype() == Usertype.FOREIGN) { + ForeignTuteeAttribute attr = user.getForeignTuteeAttribute(); + countryOrMajor = (attr != null ? attr.getCountry() : null); + } else { + countryOrMajor = user.getMajor(); + } + + // 5) DTO로 반환 + return new FriendProfileDto( + character, // CharacterInfoDto + user.getNickname(), // String + interests, // List + countryOrMajor // String + ); + } } \ No newline at end of file