-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
209 changed files
with
4,997 additions
and
1,444 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
53 changes: 53 additions & 0 deletions
53
backend/src/main/java/com/votogether/domain/member/controller/MemberController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
package com.votogether.domain.member.controller; | ||
|
||
import com.votogether.domain.member.dto.MemberInfoResponse; | ||
import com.votogether.domain.member.dto.MemberNicknameUpdateRequest; | ||
import com.votogether.domain.member.entity.Member; | ||
import com.votogether.domain.member.service.MemberService; | ||
import com.votogether.global.jwt.Auth; | ||
import io.swagger.v3.oas.annotations.Operation; | ||
import io.swagger.v3.oas.annotations.responses.ApiResponse; | ||
import io.swagger.v3.oas.annotations.responses.ApiResponses; | ||
import io.swagger.v3.oas.annotations.tags.Tag; | ||
import jakarta.validation.Valid; | ||
import lombok.RequiredArgsConstructor; | ||
import org.springframework.http.ResponseEntity; | ||
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; | ||
|
||
@Tag(name = "회원", description = "회원 API") | ||
@RequiredArgsConstructor | ||
@RequestMapping("/members") | ||
@RestController | ||
public class MemberController { | ||
|
||
private final MemberService memberService; | ||
|
||
@Operation(summary = "회원 정보 조회", description = "회원 정보를 반환한다.") | ||
@ApiResponses({ | ||
@ApiResponse(responseCode = "200", description = "정보 조회 성공"), | ||
@ApiResponse(responseCode = "400", description = "올바르지 않은 요청") | ||
}) | ||
@GetMapping("/me") | ||
public ResponseEntity<MemberInfoResponse> findMemberInfo(@Auth final Member member) { | ||
return ResponseEntity.ok(memberService.findMemberInfo(member)); | ||
} | ||
|
||
@Operation(summary = "회원 닉네임 변경", description = "회원 닉네임을 변경한다.") | ||
@ApiResponses({ | ||
@ApiResponse(responseCode = "200", description = "닉네임 변경 성공"), | ||
@ApiResponse(responseCode = "400", description = "올바르지 않은 변경할 닉네임 요청") | ||
}) | ||
@PatchMapping("/me/nickname") | ||
public ResponseEntity<Void> changeNickname( | ||
@Auth final Member member, | ||
@Valid @RequestBody final MemberNicknameUpdateRequest request | ||
) { | ||
memberService.changeNickname(member, request.nickname()); | ||
return ResponseEntity.ok().build(); | ||
} | ||
|
||
} |
9 changes: 9 additions & 0 deletions
9
backend/src/main/java/com/votogether/domain/member/dto/MemberInfoResponse.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
package com.votogether.domain.member.dto; | ||
|
||
public record MemberInfoResponse( | ||
String nickname, | ||
Integer point, | ||
int postCount, | ||
int voteCount | ||
) { | ||
} |
12 changes: 12 additions & 0 deletions
12
backend/src/main/java/com/votogether/domain/member/dto/MemberNicknameUpdateRequest.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
package com.votogether.domain.member.dto; | ||
|
||
import io.swagger.v3.oas.annotations.media.Schema; | ||
import jakarta.validation.constraints.NotBlank; | ||
|
||
@Schema(description = "닉네임 변경 요청") | ||
public record MemberNicknameUpdateRequest( | ||
@Schema(description = "변경할 닉네임", example = "jeomxon") | ||
@NotBlank(message = "닉네임은 빈값 혹은 공백이 포함될 수 없습니다.") | ||
String nickname | ||
) { | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
37 changes: 37 additions & 0 deletions
37
backend/src/main/java/com/votogether/domain/member/entity/Nickname.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,37 @@ | ||
package com.votogether.domain.member.entity; | ||
|
||
import com.votogether.domain.member.exception.MemberExceptionType; | ||
import com.votogether.exception.BadRequestException; | ||
import jakarta.persistence.Column; | ||
import jakarta.persistence.Embeddable; | ||
import java.util.regex.Pattern; | ||
import lombok.AccessLevel; | ||
import lombok.Getter; | ||
import lombok.NoArgsConstructor; | ||
|
||
@NoArgsConstructor(access = AccessLevel.PROTECTED) | ||
@Getter | ||
@Embeddable | ||
public class Nickname { | ||
|
||
private static final int MINIMUM_NICKNAME_LENGTH = 2; | ||
private static final int MAXIMUM_NICKNAME_LENGTH = 16; | ||
|
||
@Column(name = "nickname", length = 15, unique = true, nullable = false) | ||
private String value; | ||
|
||
public Nickname(final String nickname) { | ||
validateNickname(nickname); | ||
this.value = nickname; | ||
} | ||
|
||
private void validateNickname(final String nickname) { | ||
if (nickname.length() < MINIMUM_NICKNAME_LENGTH || nickname.length() > MAXIMUM_NICKNAME_LENGTH) { | ||
throw new BadRequestException(MemberExceptionType.INVALID_NICKNAME_LENGTH); | ||
} | ||
if (!Pattern.matches("^[가-힣a-zA-Z0-9]+$", nickname)) { | ||
throw new BadRequestException(MemberExceptionType.INVALID_NICKNAME_LETTER); | ||
} | ||
} | ||
|
||
} |
22 changes: 22 additions & 0 deletions
22
backend/src/main/java/com/votogether/domain/member/exception/MemberExceptionType.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,22 @@ | ||
package com.votogether.domain.member.exception; | ||
|
||
import com.votogether.exception.ExceptionType; | ||
import lombok.Getter; | ||
|
||
@Getter | ||
public enum MemberExceptionType implements ExceptionType { | ||
|
||
INVALID_NICKNAME_LENGTH(800, "닉네임의 길이가 올바르지 않습니다."), | ||
INVALID_NICKNAME_LETTER(801, "닉네임에 들어갈 수 없는 문자가 포함되어 있습니다."), | ||
ALREADY_EXISTENT_NICKNAME(802, "이미 중복된 닉네임이 존재합니다."), | ||
NONEXISTENT_MEMBER(803, "해당 회원이 존재하지 않습니다."); | ||
|
||
private final int code; | ||
private final String message; | ||
|
||
MemberExceptionType(final int code, final String message) { | ||
this.code = code; | ||
this.message = message; | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.