Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import com.ikdaman.domain.member.model.MemberRes;
import com.ikdaman.domain.member.service.MemberService;
import com.ikdaman.global.auth.model.AuthMember;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
Expand Down Expand Up @@ -51,7 +52,7 @@ public ResponseEntity findMyInfo(@AuthenticationPrincipal AuthMember authMember)
// 내 정보 수정
@PutMapping("/me")
public ResponseEntity editMyInfo(@AuthenticationPrincipal AuthMember authMember,
@RequestBody MemberReq memberReq) {
@RequestBody @Valid MemberReq memberReq) {
MemberRes result = memberService.editMember(authMember.getMember().getMemberId(), memberReq);
return ResponseEntity.ok(result);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public class MemberReq {

@NotBlank
@Size(min=2, max=15, message = "닉네임은 최소 2자, 최대 15자만 가능합니다.")
@Pattern(regexp = "^[a-zA-Z0-9가-힣\\\\s]+$", message = "닉네임은 한글, 영어, 숫자, 공백만을 포함합니다.")
@Pattern(regexp = "^[a-zA-Z0-9가-힣\\s]+$", message = "닉네임은 한글, 영어, 숫자, 공백만을 포함합니다.")
private String nickname;
private Member.Gender gender;
@DateTimeFormat(pattern = "yyyy-MM-dd")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,13 +68,17 @@ public MemberRes editMember(UUID memberId, MemberReq memberReq) {
Member member = memberRepository.findById(memberId)
.orElseThrow(() -> new BaseException(ErrorCode.NOT_FOUND_USER));

if(!memberReq.getNickname().equals(member.getNickname()) && !isAvailableNickname(memberReq.getNickname())) {
if(
memberReq.getNickname() != null
&& !memberReq.getNickname().equals(member.getNickname())
&& !isAvailableNickname(memberReq.getNickname())
) {
throw new BaseException(ErrorCode.CONFLICT_NICKNAME);
}

member.updateNickname(memberReq.getNickname());
member.updateBirthdate(memberReq.getBirthdate());
member.updateGender(memberReq.getGender());
member.updateNickname(Optional.ofNullable(memberReq.getNickname()).orElse(member.getNickname()));
member.updateBirthdate(Optional.ofNullable(memberReq.getBirthdate()).orElse(member.getBirthdate()));
member.updateGender(Optional.ofNullable(memberReq.getGender()).orElse(member.getGender()));

memberRepository.save(member);

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import org.springframework.http.HttpStatus;
import org.springframework.http.MediaType;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

Expand Down Expand Up @@ -85,7 +86,25 @@ public ResponseEntity<ErrorRes> handleException(ConstraintViolationException ex)
ErrorRes errorRes = ErrorRes.builder()
.status(BAD_REQUEST_BY_VALIDATION.getStatus())
.code(String.valueOf(BAD_REQUEST_BY_VALIDATION.getCode()))
.message(ex.getMessage())
.message(ex.getMessage().split(": ")[1])
.build();

return new ResponseEntity<>(errorRes, HttpStatus.BAD_REQUEST);
}

/**
* Valid 관련 예외(MethodArgumentNotValidException) 처리 핸들러
*
* @param ex MethodArgumentNotValidException
* @return 에러 응답(ResponseEntity<ErrorDto>)
*/
@ExceptionHandler(MethodArgumentNotValidException.class)
public ResponseEntity<ErrorRes> handleException(MethodArgumentNotValidException ex) {
log.error(ex.getMessage(), ex);
ErrorRes errorRes = ErrorRes.builder()
.status(BAD_REQUEST_BY_VALIDATION.getStatus())
.code(String.valueOf(BAD_REQUEST_BY_VALIDATION.getCode()))
.message(ex.getBindingResult().getFieldError().getDefaultMessage())
.build();

return new ResponseEntity<>(errorRes, HttpStatus.BAD_REQUEST);
Expand Down