File tree Expand file tree Collapse file tree
src/main/java/com/be/sportizebe/domain/user Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -29,8 +29,17 @@ public class UserController {
2929
3030 private final UserServiceImpl userService ;
3131
32+ @ GetMapping ("/check-username" )
33+ @ Operation (summary = "아이디 중복 체크" , description = "사용 가능하면 false, 이미 사용 중이면 true 반환" )
34+ public ResponseEntity <BaseResponse <Boolean >> checkUsernameDuplicate (
35+ @ RequestParam String username
36+ ) {
37+ boolean isDuplicate = userService .checkUsernameDuplicate (username );
38+ return ResponseEntity .ok (BaseResponse .success ("아이디 중복 체크 성공" , isDuplicate ));
39+ }
40+
3241 @ PostMapping ("/signup" )
33- @ Operation (summary = "회원가입" , description = "이메일과 비밀번호로 회원가입" )
42+ @ Operation (summary = "회원가입" , description = "아이디와 비밀번호로 회원가입" )
3443 public ResponseEntity <BaseResponse <SignUpResponse >> signUp (@ RequestBody @ Valid SignUpRequest request ) {
3544 SignUpResponse response = userService .signUp (request );
3645 return ResponseEntity .status (HttpStatus .CREATED )
Original file line number Diff line number Diff line change 11package com .be .sportizebe .domain .user .dto .request ;
22
3+ import com .be .sportizebe .common .enums .SportType ;
34import com .be .sportizebe .domain .user .entity .Gender ;
45import io .swagger .v3 .oas .annotations .media .Schema ;
5- import jakarta .validation .constraints .Email ;
66import jakarta .validation .constraints .NotBlank ;
77import jakarta .validation .constraints .Size ;
88
9+ import java .util .List ;
10+
911public record SignUpRequest (
10- @ Schema (description = "사용자 아이디(이메일 형식) " , example = "user@example.com " )
12+ @ Schema (description = "사용자 아이디" , example = "sportize_user " )
1113 @ NotBlank (message = "아이디를 입력해주세요." )
12- @ Email (message = "아이디는 이메일 형식만 지원합니다." )
1314 String username ,
1415
1516 @ Schema (description = "비밀번호" , example = "password123" )
@@ -26,6 +27,9 @@ public record SignUpRequest(
2627
2728 @ Schema (description = "전화번호" , example = "010-xxxx-xxxx" )
2829 @ NotBlank (message = "전화번호를 입력해주세요" )
29- String phoneNumber
30+ String phoneNumber ,
31+
32+ @ Schema (description = "관심 종목 목록 (선택)" , example = "[\" SOCCER\" , \" BASKETBALL\" ]" )
33+ List <SportType > interestSports
3034) {
3135}
Original file line number Diff line number Diff line change @@ -8,7 +8,7 @@ public record SignUpResponse(
88 @ Schema (description = "사용자 식별자" , example = "1" )
99 Long userId ,
1010
11- @ Schema (description = "사용자 아이디(이메일 형식) " , example = "user@example.com " )
11+ @ Schema (description = "사용자 아이디" , example = "sportize_user " )
1212 String username ,
1313
1414 @ Schema (description = "사용자 권한" , example = "USER" )
Original file line number Diff line number Diff line change @@ -43,8 +43,12 @@ public class User extends BaseTimeEntity {
4343 @ Enumerated (EnumType .STRING )
4444 private Role role ;
4545
46+ @ ElementCollection (fetch = FetchType .LAZY )
47+ @ CollectionTable (name = "user_interest_types" , joinColumns = @ JoinColumn (name = "user_id" ))
48+ @ Column (name = "sport_type" )
4649 @ Enumerated (EnumType .STRING )
47- private List <SportType > interestType ; // 사용자 관심 종목
50+ @ Builder .Default
51+ private List <SportType > interestType = new ArrayList <>(); // 사용자 관심 종목
4852
4953 private String profileImage ; // 프로필 사진 URL
5054
Original file line number Diff line number Diff line change @@ -25,4 +25,7 @@ public interface UserService {
2525
2626 // 비밀번호 변경
2727 void changePassword (Long userId , ChangePasswordRequest request );
28+
29+ // 아이디 중복 체크
30+ boolean checkUsernameDuplicate (String username );
2831}
Original file line number Diff line number Diff line change @@ -55,6 +55,7 @@ public SignUpResponse signUp(SignUpRequest request) {
5555 .phoneNumber (request .phoneNumber ())
5656 .gender (request .gender ())
5757 .role (Role .USER )
58+ .interestType (request .interestSports () != null ? request .interestSports () : new java .util .ArrayList <>())
5859 .build ();
5960
6061 User savedUser = userRepository .save (user );
@@ -121,6 +122,11 @@ public UserInfoResponse getUserInfo(Long userId) {
121122 return UserInfoResponse .from (userAuthInfo );
122123 }
123124
125+ @ Override
126+ public boolean checkUsernameDuplicate (String username ) {
127+ return userRepository .existsByUsername (username );
128+ }
129+
124130 @ Override
125131 @ Transactional
126132 public void changePassword (Long userId , ChangePasswordRequest request ) {
You can’t perform that action at this time.
0 commit comments