Skip to content

Commit

Permalink
[Feat]: 닉네임 변경 API 구현 (#65)
Browse files Browse the repository at this point in the history
닉네임 변경 관련 로직 구현
SuccessCode 추가

Related to: #54
  • Loading branch information
dev-Crayon authored Jan 31, 2024
1 parent f836d60 commit 75e23f8
Show file tree
Hide file tree
Showing 5 changed files with 51 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;

import io.sobok.SobokSobok.exception.ErrorCode;
import io.sobok.SobokSobok.exception.model.ConflictException;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
Expand Down Expand Up @@ -42,4 +45,16 @@ public List<UsernameResponse> getUsername(Long userId, String username) {

return result;
}

@Transactional
public void changeUsername(Long userId, String username) {

User user = UserServiceUtil.findUserById(userRepository, userId);

if (duplicateNickname(username)) {
throw new ConflictException(ErrorCode.ALREADY_USING_USERNAME);
}

user.changeUsername(username);
}
}
4 changes: 4 additions & 0 deletions src/main/java/io/sobok/SobokSobok/auth/domain/User.java
Original file line number Diff line number Diff line change
Expand Up @@ -58,6 +58,10 @@ public void updateDeviceToken(String newDeviceToken) {
this.deviceToken = newDeviceToken;
}

public void changeUsername(String username) {
this.username = username;
}

public void deleteUser() {
this.deviceToken = "";
this.username = "";
Expand Down
21 changes: 21 additions & 0 deletions src/main/java/io/sobok/SobokSobok/auth/ui/UserController.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,15 @@

import io.sobok.SobokSobok.auth.application.UserService;
import io.sobok.SobokSobok.auth.domain.User;
import io.sobok.SobokSobok.auth.ui.dto.UsernameRequest;
import io.sobok.SobokSobok.auth.ui.dto.UsernameResponse;
import io.sobok.SobokSobok.common.dto.ApiResponse;
import io.sobok.SobokSobok.exception.SuccessCode;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import java.util.List;

import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
Expand Down Expand Up @@ -53,4 +56,22 @@ public ResponseEntity<ApiResponse<List<UsernameResponse>>> getUsername(
userService.getUsername(user.getId(), username)
));
}

@PutMapping("/nickname")
@Operation(
summary = "유저 닉네임 변경 API 메서드",
description = "유저 본인의 닉네임을 변경하는 메서드입니다."
)
public ResponseEntity<ApiResponse<Void>> changeUsername(
@AuthenticationPrincipal User user,
@RequestBody @Valid final UsernameRequest request
) {

userService.changeUsername(user.getId(), request.username());
return ResponseEntity
.status(HttpStatus.OK)
.body(ApiResponse.success(
SuccessCode.CHANGE_NICKNAME_SUCCESS
));
}
}
10 changes: 10 additions & 0 deletions src/main/java/io/sobok/SobokSobok/auth/ui/dto/UsernameRequest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package io.sobok.SobokSobok.auth.ui.dto;

import jakarta.validation.constraints.NotBlank;

public record UsernameRequest(

@NotBlank
String username
) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ public enum SuccessCode {

// user
NICKNAME_CHECK_SUCCESS(HttpStatus.OK, "닉네임 중복 확인에 성공했습니다."),
CHANGE_NICKNAME_SUCCESS(HttpStatus.OK, "닉네임 변경에 성공했습니다."),
GET_USERNAME_SUCCESS(HttpStatus.OK, "유저 이름 조회에 성공했습니다."),

// pill
Expand Down

0 comments on commit 75e23f8

Please sign in to comment.