diff --git a/src/main/java/org/websoso/WSSServer/controller/UserController.java b/src/main/java/org/websoso/WSSServer/controller/UserController.java index 4bc386ba..a2371d34 100644 --- a/src/main/java/org/websoso/WSSServer/controller/UserController.java +++ b/src/main/java/org/websoso/WSSServer/controller/UserController.java @@ -106,6 +106,7 @@ public ResponseEntity getProfileInfo(@AuthenticationPrincipa .body(userService.getProfileInfo(user, userId)); } + @Deprecated @GetMapping("/my-profile") @PreAuthorize("isAuthenticated()") public ResponseEntity getMyProfileInfo(@AuthenticationPrincipal User user) { @@ -114,6 +115,16 @@ public ResponseEntity getMyProfileInfo(@AuthenticationPrincip .body(userService.getMyProfileInfo(user)); } + @GetMapping("/profile") + @PreAuthorize("isAuthenticated()") + public ResponseEntity getProfileInfo(@AuthenticationPrincipal User user) { + return ResponseEntity + .status(OK) + .body(userService.getMyProfileInfo(user)); + } + + + @Deprecated @PatchMapping("/my-profile") @PreAuthorize("isAuthenticated()") public ResponseEntity updateMyProfileInfo(@AuthenticationPrincipal User user, @@ -124,6 +135,17 @@ public ResponseEntity updateMyProfileInfo(@AuthenticationPrincipal User us .build(); } + @PatchMapping("/profile") + @PreAuthorize("isAuthenticated()") + @Deprecated + public ResponseEntity updateProfileInfo(@AuthenticationPrincipal User user, + @RequestBody @Valid UpdateMyProfileRequest updateMyProfileRequest) { + userService.updateProfileInfo(user, updateMyProfileRequest); + return ResponseEntity + .status(NO_CONTENT) + .build(); + } + @GetMapping("/profile-status") @PreAuthorize("isAuthenticated()") public ResponseEntity getProfileStatus(@AuthenticationPrincipal User user) { diff --git a/src/main/java/org/websoso/WSSServer/dto/user/UpdateMyProfileRequest.java b/src/main/java/org/websoso/WSSServer/dto/user/UpdateMyProfileRequest.java index 33a59eac..ca065d7e 100644 --- a/src/main/java/org/websoso/WSSServer/dto/user/UpdateMyProfileRequest.java +++ b/src/main/java/org/websoso/WSSServer/dto/user/UpdateMyProfileRequest.java @@ -17,4 +17,18 @@ public record UpdateMyProfileRequest( @NotNull(message = "선호 장르는 null일 수 없습니다.") List genrePreferences ) { + @Deprecated + public Long getMappedAvatarId() { + if (this.avatarId == null) { + return null; + } + + return switch (this.avatarId.intValue()) { + case 1 -> 1L; + case 2 -> 4L; + case 3 -> 5L; + + default -> null; + }; + } } diff --git a/src/main/java/org/websoso/WSSServer/service/AvatarService.java b/src/main/java/org/websoso/WSSServer/service/AvatarService.java index e0b80d64..38c48810 100644 --- a/src/main/java/org/websoso/WSSServer/service/AvatarService.java +++ b/src/main/java/org/websoso/WSSServer/service/AvatarService.java @@ -50,7 +50,7 @@ public AvatarsGetResponse getAvatarList(User user) { Byte representativeAvatarId = user.getAvatarId(); List avatars = avatarRepository.findAll(); List avatarGetResponses = avatars.stream() - .filter(avatar -> avatar.getAvatarId() >= 0) + .filter(avatar -> 0 <= avatar.getAvatarId() && avatar.getAvatarId() <= 3) .map(avatar -> { List avatarLines = avatar.getAvatarLines(); return AvatarGetResponse.of(avatar, getRandomAvatarLine(avatarLines), representativeAvatarId); diff --git a/src/main/java/org/websoso/WSSServer/user/domain/User.java b/src/main/java/org/websoso/WSSServer/user/domain/User.java index 2a5ac0fe..d5e63e2b 100644 --- a/src/main/java/org/websoso/WSSServer/user/domain/User.java +++ b/src/main/java/org/websoso/WSSServer/user/domain/User.java @@ -122,9 +122,12 @@ public void updateProfileStatus(Boolean profileStatus) { this.isProfilePublic = profileStatus; } + // TODO: DTO에 의존적인 DDD 로직 (기중) + @Deprecated public void updateUserProfile(UpdateMyProfileRequest updateMyProfileRequest) { if (updateMyProfileRequest.avatarId() != null) { - this.avatarProfileId = updateMyProfileRequest.avatarId(); + this.avatarId = updateMyProfileRequest.avatarId().byteValue(); + this.avatarProfileId = updateMyProfileRequest.getMappedAvatarId(); } if (updateMyProfileRequest.nickname() != null) { this.nickname = updateMyProfileRequest.nickname(); @@ -134,6 +137,18 @@ public void updateUserProfile(UpdateMyProfileRequest updateMyProfileRequest) { } } + public void updateUserProfile(Long avatarProfileId, String nickname, String intro) { + if (avatarProfileId != null) { + this.avatarProfileId = avatarProfileId; + } + if (nickname != null) { + this.nickname = nickname; + } + if (intro != null) { + this.intro = intro; + } + } + public void updateUserInfo(RegisterUserInfoRequest registerUserInfoRequest) { this.nickname = registerUserInfoRequest.nickname(); this.gender = Gender.valueOf(registerUserInfoRequest.gender()); diff --git a/src/main/java/org/websoso/WSSServer/user/service/UserService.java b/src/main/java/org/websoso/WSSServer/user/service/UserService.java index 3debea36..569ab429 100644 --- a/src/main/java/org/websoso/WSSServer/user/service/UserService.java +++ b/src/main/java/org/websoso/WSSServer/user/service/UserService.java @@ -109,8 +109,9 @@ public MyProfileResponse getMyProfileInfo(User user) { } // TODO: 멱등성을 보장하는데, Exception이 발생하는게 맞나? (기중) + @Deprecated public void updateMyProfileInfo(User user, UpdateMyProfileRequest updateMyProfileRequest) { - checkIfAlreadySetOrThrow(user.getAvatarProfileId(), updateMyProfileRequest.avatarId(), + checkIfAlreadySetOrThrow(user.getAvatarId(), updateMyProfileRequest.avatarId(), ALREADY_SET_AVATAR, "avatarId with given is already set"); checkIfAlreadySetOrThrow(user.getNickname(), updateMyProfileRequest.nickname(), @@ -129,6 +130,26 @@ public void updateMyProfileInfo(User user, UpdateMyProfileRequest updateMyProfil user.updateUserProfile(updateMyProfileRequest); } + public void updateProfileInfo(User user, UpdateMyProfileRequest updateMyProfileRequest) { + checkIfAlreadySetOrThrow(user.getAvatarProfileId(), updateMyProfileRequest.avatarId(), + ALREADY_SET_AVATAR, "avatarId with given is already set"); + + checkIfAlreadySetOrThrow(user.getNickname(), updateMyProfileRequest.nickname(), + ALREADY_SET_NICKNAME, "nickname with given is already set"); + checkNicknameIfAlreadyExist(updateMyProfileRequest.nickname()); + + checkIfAlreadySetOrThrow(user.getIntro(), updateMyProfileRequest.intro(), + ALREADY_SET_INTRO, "intro with given is already set"); + + genrePreferenceRepository.deleteAllByUser(user); + + List newPreferGenres = createGenrePreferences(user, updateMyProfileRequest.genrePreferences()); + genrePreferenceRepository.saveAll(newPreferGenres); + + user.updateUserProfile(updateMyProfileRequest.avatarId(), updateMyProfileRequest.nickname(), + updateMyProfileRequest.intro()); + } + public void registerUserInfo(User user, RegisterUserInfoRequest registerUserInfoRequest) { checkNicknameIfAlreadyExist(registerUserInfoRequest.nickname()); user.updateUserInfo(registerUserInfoRequest);