diff --git a/src/main/java/com/swOnCampus/AIPlatform/domain/member/web/controller/MemberController.java b/src/main/java/com/swOnCampus/AIPlatform/domain/member/web/controller/MemberController.java index c4cfd7c..816ef00 100644 --- a/src/main/java/com/swOnCampus/AIPlatform/domain/member/web/controller/MemberController.java +++ b/src/main/java/com/swOnCampus/AIPlatform/domain/member/web/controller/MemberController.java @@ -9,7 +9,13 @@ import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +@Tag(name = "실시간 뉴스 데이터 API", description = "뉴스 데이터 관련 API") @RestController @Slf4j @RequiredArgsConstructor @@ -17,6 +23,20 @@ public class MemberController { private final MemberService memberService; // 이메일 인증 + @Operation(summary = "이메일 중복 여부 체크 API 요청", description = "회원가입 시 이메일 중복 여부 체크 API 요청") + @ApiResponses(value = { + @io.swagger.v3.oas.annotations.responses.ApiResponse( + responseCode = "COMMON200", + description = "요청 성공", + content = { + @Content( + schema = @Schema( + implementation = EmailCheckResponseDto.EmailCheckResponse.class + ) + ) + } + ) + }) @GetMapping("/email-check") public ResponseEntity> emailCheck(@Valid @RequestBody EmailCheckRequestDto.EmailCheckRequest request){ if(memberService.isExistEmail(request.getEmail())){ diff --git a/src/main/java/com/swOnCampus/AIPlatform/domain/member/web/dto/BusinessCheckRequestDto.java b/src/main/java/com/swOnCampus/AIPlatform/domain/member/web/dto/BusinessCheckRequestDto.java index 0b729ce..0dafcb0 100644 --- a/src/main/java/com/swOnCampus/AIPlatform/domain/member/web/dto/BusinessCheckRequestDto.java +++ b/src/main/java/com/swOnCampus/AIPlatform/domain/member/web/dto/BusinessCheckRequestDto.java @@ -1,15 +1,20 @@ package com.swOnCampus.AIPlatform.domain.member.web.dto; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +@Schema(name = "BusinessCheckRequestDto", description = "사업자번호 진위여부 체크 API 요청 DTO") public class BusinessCheckRequestDto { @Data @AllArgsConstructor @NoArgsConstructor public static class BusinessCheckRequest { + @NotNull(message = "사업자번호를 입력해주세요.") + @Schema(description = "'-'의 존재 여부는 상관 없습니다.", example = "123-45-67890") private String businessNumber; } } diff --git a/src/main/java/com/swOnCampus/AIPlatform/domain/member/web/dto/EmailCheckRequestDto.java b/src/main/java/com/swOnCampus/AIPlatform/domain/member/web/dto/EmailCheckRequestDto.java index c871d63..0dd2dba 100644 --- a/src/main/java/com/swOnCampus/AIPlatform/domain/member/web/dto/EmailCheckRequestDto.java +++ b/src/main/java/com/swOnCampus/AIPlatform/domain/member/web/dto/EmailCheckRequestDto.java @@ -1,15 +1,20 @@ package com.swOnCampus.AIPlatform.domain.member.web.dto; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +@Schema(name = "EmailCheckRequestDto", description = "이메일 중복 여부 확인 API 요청 DTO") public class EmailCheckRequestDto { @Data @AllArgsConstructor @NoArgsConstructor public static class EmailCheckRequest { + @NotNull(message = "이메일을 입력해주세요.") + @Schema(description = "중복 여부를 체크할 이메일을 입력해주세요.", example = "example@naver.com") private String email; } } diff --git a/src/main/java/com/swOnCampus/AIPlatform/domain/member/web/dto/LoginRequestDto.java b/src/main/java/com/swOnCampus/AIPlatform/domain/member/web/dto/LoginRequestDto.java index 8eaff41..d86c182 100644 --- a/src/main/java/com/swOnCampus/AIPlatform/domain/member/web/dto/LoginRequestDto.java +++ b/src/main/java/com/swOnCampus/AIPlatform/domain/member/web/dto/LoginRequestDto.java @@ -1,16 +1,25 @@ package com.swOnCampus.AIPlatform.domain.member.web.dto; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +@Schema(name = "LoginRequestDto", description = "로그인 API 요청 DTO") public class LoginRequestDto { @Data @AllArgsConstructor @NoArgsConstructor public static class LoginRequest { + + @NotNull(message = "이메일을 입력해주세요.") + @Schema(description = "로그인 할 이메일을 입력해주세요.", example = "example@naver.com") private String email; + + @NotNull(message = "비밀번호를 입력해주세요.") + @Schema(description = "로그인 할 비밀번호를 입력해주세요.", example = "examplePw@890") private String password; } } diff --git a/src/main/java/com/swOnCampus/AIPlatform/domain/member/web/dto/SignUpRequestDto.java b/src/main/java/com/swOnCampus/AIPlatform/domain/member/web/dto/SignUpRequestDto.java index 56b064d..06c965a 100644 --- a/src/main/java/com/swOnCampus/AIPlatform/domain/member/web/dto/SignUpRequestDto.java +++ b/src/main/java/com/swOnCampus/AIPlatform/domain/member/web/dto/SignUpRequestDto.java @@ -1,26 +1,49 @@ package com.swOnCampus.AIPlatform.domain.member.web.dto; +import io.swagger.v3.oas.annotations.media.Schema; +import jakarta.validation.constraints.NotNull; import jakarta.validation.constraints.Pattern; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +@Schema(name = "SignUpRequestDto", description = "회원가입 API 요청 DTO") public class SignUpRequestDto { @Data @AllArgsConstructor @NoArgsConstructor public static class SignupRequest{ + + @NotNull(message = "이메일을 입력해주세요.") + @Schema(description = "회원가입을 할 이메일을 입력해주세요.", example = "example@naver.com") private String email; @Pattern( regexp = "^(?=.*[a-zA-Z])(?=.*[0-9])(?=.*[!@#$%^&*()_+=-]).{8,}$", message = "비밀번호는 특수문자, 영어, 숫자를 포함하여 8자리 이상이어야 합니다." ) + + @NotNull(message = "비밀번호를 입력해주세요.") + @Schema(description = "비밀번호를 입력해주세요.", example = "examplePW@890") private String password; + + @NotNull(message = "이름을 입력해주세요.") + @Schema(description = "이름을 입력해주세요.", example = "김예시") private String name; + + @NotNull(message = "전화번호를 입력해주세요.") + @Schema(description = "전화번호를 입력해주세요.", example = "010-1234-5678") private String phone; + + @NotNull(message = "사업자번호를 입력해주세요.") + @Schema(description = "사업자번호를 입력해주세요.", example = "123-45-67890") private String businessNum; + + @Schema(description = "가입 경로를 입력해주세요. 필수값은 아닙니다.", example = "인스타") private String signupRoute; + + @NotNull(message = "소속된 회사를 입력해주세요.") + @Schema(description = "소속된 회사를 입력해주세요.", example = "삼성전자") private String corporation; } } diff --git a/src/main/java/com/swOnCampus/AIPlatform/domain/mypage/web/controller/MypageController.java b/src/main/java/com/swOnCampus/AIPlatform/domain/mypage/web/controller/MypageController.java index 2e07e85..0fc068f 100644 --- a/src/main/java/com/swOnCampus/AIPlatform/domain/mypage/web/controller/MypageController.java +++ b/src/main/java/com/swOnCampus/AIPlatform/domain/mypage/web/controller/MypageController.java @@ -1,12 +1,18 @@ package com.swOnCampus.AIPlatform.domain.mypage.web.controller; import com.swOnCampus.AIPlatform.domain.member.entity.Member; +import com.swOnCampus.AIPlatform.domain.member.web.dto.EmailCheckResponseDto; import com.swOnCampus.AIPlatform.domain.mypage.service.MypageService; import com.swOnCampus.AIPlatform.domain.mypage.web.dto.MyProfileResponseDto; import com.swOnCampus.AIPlatform.domain.mypage.web.dto.ProfileEditRequestDto; import com.swOnCampus.AIPlatform.domain.mypage.web.dto.ProfileEditResponseDto; import com.swOnCampus.AIPlatform.global.annotation.LoginMember; import com.swOnCampus.AIPlatform.global.response.ApiResponse; +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -18,9 +24,24 @@ @Slf4j @RequestMapping("/api") @RequiredArgsConstructor +@Tag(name = "마이페이지 API", description = "마이페이지 관련 API") public class MypageController { private final MypageService mypageService; + @Operation(summary = "프로필 조회 API 요청", description = "마이페이지 프로필 정보 조회 API 요청") + @ApiResponses(value = { + @io.swagger.v3.oas.annotations.responses.ApiResponse( + responseCode = "COMMON200", + description = "요청 성공", + content = { + @Content( + schema = @Schema( + implementation = MyProfileResponseDto.MyProfileResponse.class + ) + ) + } + ) + }) @GetMapping("/get-my-profile") public ResponseEntity> getMyProfile(@LoginMember Member member) { log.info("memberId:{}", member.getMemberId()); @@ -30,6 +51,20 @@ public ResponseEntity> getMy return ResponseEntity.ok(response); } + @Operation(summary = "프로필 수정 API 요청", description = "마이페이지 프로필 정보 수정 API 요청") + @ApiResponses(value = { + @io.swagger.v3.oas.annotations.responses.ApiResponse( + responseCode = "COMMON200", + description = "요청 성공", + content = { + @Content( + schema = @Schema( + implementation = ProfileEditResponseDto.ProfileEditResponse.class + ) + ) + } + ) + }) @PutMapping("/edit-my-profile") public ResponseEntity> editMyProfile(@LoginMember Member member, @Valid @RequestBody ProfileEditRequestDto.ProfileEditRequest request) { ProfileEditResponseDto.ProfileEditResponse responseDto = mypageService.editProfile(member.getMemberId(), request); diff --git a/src/main/java/com/swOnCampus/AIPlatform/domain/mypage/web/dto/ProfileEditRequestDto.java b/src/main/java/com/swOnCampus/AIPlatform/domain/mypage/web/dto/ProfileEditRequestDto.java index b2337a3..bfe7756 100644 --- a/src/main/java/com/swOnCampus/AIPlatform/domain/mypage/web/dto/ProfileEditRequestDto.java +++ b/src/main/java/com/swOnCampus/AIPlatform/domain/mypage/web/dto/ProfileEditRequestDto.java @@ -1,17 +1,25 @@ package com.swOnCampus.AIPlatform.domain.mypage.web.dto; +import io.swagger.v3.oas.annotations.media.Schema; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; +@Schema(name = "ProfileEditRequestDto", description = "프로필 정보 수정 API 요청 DTO") public class ProfileEditRequestDto { @Data @AllArgsConstructor @NoArgsConstructor public static class ProfileEditRequest { + + @Schema(description = "수정할 이메일을 입력해주세요.", example = "example@naver.com") private String email; + + @Schema(description = "수정할 이름을 입력해주세요.", example = "김예시") private String name; + + @Schema(description = "수정할 전화번호을 입력해주세요.", example = "010-1234-5678") private String phone; } }