Skip to content

Commit

Permalink
Feat: 프로필 수정 API (#289)
Browse files Browse the repository at this point in the history
* Add: 수정 요청할 데이터들을 담는 request 클래스

* Add: user 엔티티로 담을 dto 클래스

* Feat: 프로필 수정 controller

* Feat: 데이터를 수정하기 위한 service 게층 메소드

* Feat: user 객체를 update 하기 위한 메소드

* Remove: 불필요한 코드 제거
  • Loading branch information
gitseoyeon authored Oct 24, 2024
1 parent 5a4a5af commit 530f928
Show file tree
Hide file tree
Showing 5 changed files with 54 additions and 0 deletions.
10 changes: 10 additions & 0 deletions src/main/java/com/openbook/openbook/api/user/UserController.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.openbook.openbook.api.user;


import com.openbook.openbook.api.user.request.UserModifyRequest;
import com.openbook.openbook.api.user.response.UserProfileResponse;
import com.openbook.openbook.util.TokenProvider;
import com.openbook.openbook.api.ResponseMessage;
Expand All @@ -16,6 +17,7 @@
import org.springframework.http.HttpStatus;
import org.springframework.security.core.Authentication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.ResponseStatus;
Expand Down Expand Up @@ -55,4 +57,12 @@ public UserProfileResponse getProfile(Authentication authentication){
return UserProfileResponse.of(userService.getUserProfile(Long.valueOf(authentication.getName())));
}

@ResponseStatus(HttpStatus.OK)
@PatchMapping("/manage/profile")
public ResponseMessage modifyUser(Authentication authentication,
@NotNull UserModifyRequest request){
userService.modifyUser(Long.parseLong(authentication.getName()), request);
return new ResponseMessage("프로필 수정에 성공했습니다.");
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
package com.openbook.openbook.api.user.request;

public record UserModifyRequest(
String name,
String nickname,
String email
) {
}
13 changes: 13 additions & 0 deletions src/main/java/com/openbook/openbook/domain/user/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import com.openbook.openbook.domain.event.Event;
import com.openbook.openbook.domain.EntityBasicTime;
import com.openbook.openbook.domain.user.dto.UserRole;
import com.openbook.openbook.service.user.dto.UserUpdateDto;
import jakarta.persistence.CascadeType;
import jakarta.persistence.Entity;
import jakarta.persistence.EnumType;
Expand Down Expand Up @@ -57,4 +58,16 @@ public User(String password, String email, String name, String nickname, UserRol
this.nickname = nickname;
this.role = role;
}

public void updateUser(UserUpdateDto updateDto){
if(updateDto.name() != null){
this.name = updateDto.name();
}
if(updateDto.nickname() != null){
this.nickname = updateDto.nickname();
}
if(updateDto.email() != null){
this.email = updateDto.email();
}
}
}
12 changes: 12 additions & 0 deletions src/main/java/com/openbook/openbook/service/user/UserService.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
package com.openbook.openbook.service.user;

import com.openbook.openbook.api.user.request.UserModifyRequest;
import com.openbook.openbook.exception.ErrorCode;
import com.openbook.openbook.exception.OpenBookException;
import com.openbook.openbook.service.user.dto.UserProfileDto;
import com.openbook.openbook.service.user.dto.UserUpdateDto;
import com.openbook.openbook.util.TokenProvider;
import com.openbook.openbook.api.user.request.LoginRequest;
import com.openbook.openbook.api.user.request.SignUpRequest;
Expand Down Expand Up @@ -65,6 +67,16 @@ public UserProfileDto getUserProfile(Long userId){
return UserProfileDto.of(user);
}

@Transactional
public void modifyUser(long userId, UserModifyRequest request){
User user = getUserOrException(userId);
user.updateUser(UserUpdateDto.builder()
.name(request.name())
.nickname(request.nickname())
.email(request.email())
.build());
}

public Optional<User> getUserByEmail(final String email) {
return userRepository.findByEmail(email);
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package com.openbook.openbook.service.user.dto;

import lombok.Builder;

@Builder
public record UserUpdateDto(
String name,
String nickname,
String email
) {
}

0 comments on commit 530f928

Please sign in to comment.