Skip to content

Commit

Permalink
✨ Feature: 회원 정보 수정 API 구현 (#56)
Browse files Browse the repository at this point in the history
* ✨ Feature: 회원 정보 수정 API 구현

* 📝 Docs: UserInfoUpdateRequest Example 작성
  • Loading branch information
ahnsugyeong authored Apr 23, 2024
1 parent 568f2ba commit 7c6754e
Show file tree
Hide file tree
Showing 7 changed files with 85 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ public class AuthController {
})
@Operation(summary = "인증 이메일 발송", description = "지정된 이메일 주소로 인증 이메일을 발송합니다.")
@PostMapping("/send-verification-email")
public ResponseDto<Boolean> sendVerificationEmail(@RequestParam String email) {
public ResponseDto<Boolean> sendVerificationEmail(@RequestParam("email") String email) {
return ResponseDto.onSuccess(authFacade.sendVerificationEmail(email));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,15 +2,23 @@

import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import zzangdol.user.implement.UserCommandService;
import zzangdol.user.presentation.dto.request.UserInfoUpdateRequest;
import zzangdol.user.presentation.dto.response.UserInfoResponse;
import zzangdol.user.domain.User;

@RequiredArgsConstructor
@Component
public class UserFacade {

private final UserCommandService userCommandService;

public UserInfoResponse getUserInfo(User user) {
return UserMapper.toUserInfoResponse(user);
}

public UserInfoResponse updateUserInfo(User user, UserInfoUpdateRequest request) {
return UserMapper.toUserInfoResponse(userCommandService.updateUserInfo(user, request));
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package zzangdol.user.implement;

import zzangdol.user.domain.User;
import zzangdol.user.presentation.dto.request.UserInfoUpdateRequest;

public interface UserCommandService {

User updateUserInfo(User user, UserInfoUpdateRequest request);

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package zzangdol.user.implement;

import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import zzangdol.user.domain.User;
import zzangdol.user.presentation.dto.request.UserInfoUpdateRequest;

@Transactional
@Service
public class UserCommandServiceImpl implements UserCommandService {

@Override
public User updateUserInfo(User user, UserInfoUpdateRequest request) {
user.updateNickname(request.getNickname());
user.updateNotificationTime(request.getNotificationTime());
return user;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,13 @@
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PatchMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import zzangdol.global.annotation.AuthUser;
import zzangdol.user.business.UserFacade;
import zzangdol.user.presentation.dto.request.UserInfoUpdateRequest;
import zzangdol.user.presentation.dto.response.UserInfoResponse;
import zzangdol.response.ResponseDto;
import zzangdol.user.domain.User;
Expand All @@ -31,4 +34,13 @@ public ResponseDto<UserInfoResponse> getUserInfo(@AuthUser User user) {
return ResponseDto.onSuccess(userFacade.getUserInfo(user));
}

@Operation(
summary = "사용자 정보 수정 🔑",
description = "사용자의 정보를 수정합니다."
)
@PatchMapping
public ResponseDto<UserInfoResponse> updateUserInfo(@AuthUser User user, @RequestBody UserInfoUpdateRequest request) {
return ResponseDto.onSuccess(userFacade.updateUserInfo(user, request));
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
package zzangdol.user.presentation.dto.request;

import io.swagger.v3.oas.annotations.media.Schema;
import java.time.LocalTime;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.NoArgsConstructor;

@Builder
@Getter
@NoArgsConstructor
@AllArgsConstructor
public class UserInfoUpdateRequest {

@Schema(example = "짱짱돌")
private String nickname;

@Schema(example = "20:00")
private LocalTime notificationTime;

}
14 changes: 13 additions & 1 deletion moodoodle-domain/src/main/java/zzangdol/user/domain/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,6 @@ public class User extends BaseTimeEntity implements UserDetails {
@Enumerated(EnumType.STRING)
private Role role;


@Builder
public User(String email, String password, String nickname, AuthProvider authProvider, Role role,
LocalTime notificationTime) {
Expand Down Expand Up @@ -79,4 +78,17 @@ public boolean isCredentialsNonExpired() {
public boolean isEnabled() {
return true;
}

public void updateNickname(String nickname) {
if (nickname != null) {
this.nickname = nickname;
}
}

public void updateNotificationTime(LocalTime notificationTime) {
if (notificationTime != null) {
this.notificationTime = notificationTime;
}
}

}

0 comments on commit 7c6754e

Please sign in to comment.