SWM-99-degree / jariBean

SWM 14th JariBean Project
0 stars 1 forks source link

[FEAT] 사용자 정보 수정 기능 #186

Closed isayaksh closed 1 year ago

isayaksh commented 1 year ago

✏️ Description

📱 사용자 정보 수정 화면

나의 정보 페이지에서 사용자 정보를 수정하는 기능이 존재한다. 해당 기능을 위해 클라이언트로 부터 이미지 이름 자기소개 정보를 전달받고 해당 유저의 정보를 DB에 갱신한 이후 결과값을 반환한다.

🧑‍💻 코드

UserController

@PatchMapping
public ResponseEntity update(@AuthenticationPrincipal LoginUser loginUser,
                             @RequestPart(name = "image", required = false) MultipartFile image,
                             @RequestPart(name = "username", required = false) String username,
                             @RequestPart(name = "description", required = false) String description) throws IOException {

    // image s3 bucket에 저장 후 image url 반환
    String imageUrl = s3Service.upload(image).getImageUrl();

    // id로 User를 조회한 후 username, description, image url 정보를 갱신
    UserInfoRespDto userInfoRespDto = userService.updateUserInfo(loginUser.getUser().getId(), username, description, imageUrl);

    return new ResponseEntity<>(new ResponseDto<>(1, "회원정보 수정 성공", userInfoRespDto), OK);
}

UserService

public UserInfoRespDto updateUserInfo(String id, String username, String description, String image){

    // id에 해당하는 User 조회하기
    User findUser = userRepository.findById(id)
            .orElseThrow(() -> new CustomApiException("id에 해당하는 User를 찾을 수 없습니다."));

    // User 정보 갱신
    findUser.updateInfo(username, image, description);

    // 갱신된 User 정보 데이터 베이스에 저장
    User savedUser = userRepository.save(findUser);

    return UserInfoRespDto.builder()
            .nickname(savedUser.getNickname())
            .imageUrl(savedUser.getImage())
            .description(savedUser.getDescription())
            .build();

}

🔥 결과