33import com .climbup .climbup .auth .dto .OnboardingDto ;
44import com .climbup .climbup .auth .service .OnboardingService ;
55import com .climbup .climbup .auth .util .JwtUtil ;
6+ import com .climbup .climbup .common .dto .ApiResult ;
67import com .climbup .climbup .user .docs .UserApiDocs ;
78import io .swagger .v3 .oas .annotations .Operation ;
89import io .swagger .v3 .oas .annotations .Parameter ;
10+ import io .swagger .v3 .oas .annotations .media .Content ;
11+ import io .swagger .v3 .oas .annotations .media .ExampleObject ;
912import io .swagger .v3 .oas .annotations .responses .ApiResponse ;
13+ import io .swagger .v3 .oas .annotations .responses .ApiResponses ;
1014import io .swagger .v3 .oas .annotations .security .SecurityRequirement ;
1115import io .swagger .v3 .oas .annotations .tags .Tag ;
1216import lombok .RequiredArgsConstructor ;
@@ -27,9 +31,28 @@ public class OnboardingController {
2731 description = "암장과 레벨을 동시에 설정하여 온보딩을 완료합니다." ,
2832 security = @ SecurityRequirement (name = "bearerAuth" )
2933 )
30- @ ApiResponse (responseCode = "200" , description = "온보딩 완료 성공" )
34+ @ ApiResponses ({
35+ @ ApiResponse (responseCode = "200" , description = "온보딩 완료 성공" ),
36+ @ ApiResponse (
37+ responseCode = "400" ,
38+ description = "이미 온보딩 완료된 사용자" ,
39+ content = @ Content (
40+ mediaType = "application/json" ,
41+ examples = @ ExampleObject (
42+ value = """
43+ {
44+ "errorCode": "USER_001",
45+ "message": "이미 온보딩을 완료한 사용자입니다.",
46+ "timestamp": "2024-01-15T10:30:00",
47+ "path": "/api/onboarding/complete"
48+ }
49+ """
50+ )
51+ )
52+ )
53+ })
3154 @ PostMapping ("/complete" )
32- public ResponseEntity <OnboardingDto .Response > completeOnboarding (
55+ public ResponseEntity <ApiResult < OnboardingDto .Response > > completeOnboarding (
3356 @ Parameter (
3457 description = UserApiDocs .AUTHORIZATION_DESCRIPTION ,
3558 required = true ,
@@ -43,17 +66,36 @@ public ResponseEntity<OnboardingDto.Response> completeOnboarding(
4366
4467 onboardingService .completeOnboarding (userId , request .getGymId (), request .getLevelId ());
4568
46- return ResponseEntity .ok (new OnboardingDto .Response ("온보딩이 완료되었습니다." ));
69+ return ResponseEntity .ok (ApiResult . success ( new OnboardingDto .Response ("온보딩이 완료되었습니다." ) ));
4770 }
4871
4972 @ Operation (
5073 summary = "암장 선택" ,
5174 description = "사용자의 암장을 설정합니다." ,
5275 security = @ SecurityRequirement (name = "bearerAuth" )
5376 )
54- @ ApiResponse (responseCode = "200" , description = "암장 설정 성공" )
77+ @ ApiResponses ({
78+ @ ApiResponse (responseCode = "200" , description = "암장 설정 성공" ),
79+ @ ApiResponse (
80+ responseCode = "400" ,
81+ description = "이미 온보딩 완료된 사용자" ,
82+ content = @ Content (
83+ mediaType = "application/json" ,
84+ examples = @ ExampleObject (
85+ value = """
86+ {
87+ "errorCode": "USER_001",
88+ "message": "이미 온보딩을 완료한 사용자입니다.",
89+ "timestamp": "2024-01-15T10:30:00",
90+ "path": "/api/onboarding/gym"
91+ }
92+ """
93+ )
94+ )
95+ )
96+ })
5597 @ PostMapping ("/gym" )
56- public ResponseEntity <OnboardingDto .Response > setGym (
98+ public ResponseEntity <ApiResult < OnboardingDto .Response > > setGym (
5799 @ Parameter (
58100 description = UserApiDocs .AUTHORIZATION_DESCRIPTION ,
59101 required = true ,
@@ -67,17 +109,36 @@ public ResponseEntity<OnboardingDto.Response> setGym(
67109
68110 onboardingService .setUserGym (userId , request .getGymId ());
69111
70- return ResponseEntity .ok (new OnboardingDto .Response ("암장이 설정되었습니다." ));
112+ return ResponseEntity .ok (ApiResult . success ( new OnboardingDto .Response ("암장이 설정되었습니다." ) ));
71113 }
72114
73115 @ Operation (
74116 summary = "레벨 선택" ,
75117 description = "사용자의 레벨을 설정합니다." ,
76118 security = @ SecurityRequirement (name = "bearerAuth" )
77119 )
78- @ ApiResponse (responseCode = "200" , description = "레벨 설정 성공" )
120+ @ ApiResponses ({
121+ @ ApiResponse (responseCode = "200" , description = "레벨 설정 성공" ),
122+ @ ApiResponse (
123+ responseCode = "400" ,
124+ description = "이미 온보딩 완료된 사용자" ,
125+ content = @ Content (
126+ mediaType = "application/json" ,
127+ examples = @ ExampleObject (
128+ value = """
129+ {
130+ "errorCode": "USER_001",
131+ "message": "이미 온보딩을 완료한 사용자입니다.",
132+ "timestamp": "2024-01-15T10:30:00",
133+ "path": "/api/onboarding/level"
134+ }
135+ """
136+ )
137+ )
138+ )
139+ })
79140 @ PostMapping ("/level" )
80- public ResponseEntity <OnboardingDto .Response > setLevel (
141+ public ResponseEntity <ApiResult < OnboardingDto .Response > > setLevel (
81142 @ Parameter (
82143 description = UserApiDocs .AUTHORIZATION_DESCRIPTION ,
83144 required = true ,
@@ -91,6 +152,6 @@ public ResponseEntity<OnboardingDto.Response> setLevel(
91152
92153 onboardingService .setUserLevel (userId , request .getLevelId ());
93154
94- return ResponseEntity .ok (new OnboardingDto .Response ("레벨이 설정되었습니다." ));
155+ return ResponseEntity .ok (ApiResult . success ( new OnboardingDto .Response ("레벨이 설정되었습니다." ) ));
95156 }
96157}
0 commit comments