diff --git a/build.gradle b/build.gradle index ef2405b9..41f022be 100644 --- a/build.gradle +++ b/build.gradle @@ -28,6 +28,7 @@ dependencies { implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.boot:spring-boot-starter-webflux' + implementation 'org.springframework.boot:spring-boot-starter-validation' compileOnly 'org.projectlombok:lombok' runtimeOnly 'com.mysql:mysql-connector-j' annotationProcessor 'org.projectlombok:lombok' diff --git a/src/main/java/com/postgraduate/domain/account/application/mapper/AccountMapper.java b/src/main/java/com/postgraduate/domain/account/application/mapper/AccountMapper.java index 89ad352f..1f0b2252 100644 --- a/src/main/java/com/postgraduate/domain/account/application/mapper/AccountMapper.java +++ b/src/main/java/com/postgraduate/domain/account/application/mapper/AccountMapper.java @@ -10,8 +10,8 @@ public static Account mapToAccount(Senior senior, SeniorAccountRequest accountRe return Account.builder() .senior(senior) .accountNumber(accountNumber) - .accountHolder(accountRequest.getAccountHolder()) - .bank(accountRequest.getBank()) + .accountHolder(accountRequest.accountHolder()) + .bank(accountRequest.bank()) .build(); } diff --git a/src/main/java/com/postgraduate/domain/admin/application/dto/req/SeniorStatusRequest.java b/src/main/java/com/postgraduate/domain/admin/application/dto/req/SeniorStatusRequest.java index 2f8ce8fc..a5459e35 100644 --- a/src/main/java/com/postgraduate/domain/admin/application/dto/req/SeniorStatusRequest.java +++ b/src/main/java/com/postgraduate/domain/admin/application/dto/req/SeniorStatusRequest.java @@ -2,14 +2,8 @@ import com.postgraduate.domain.senior.domain.entity.constant.Status; import jakarta.validation.constraints.NotNull; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -@Getter -@AllArgsConstructor -@NoArgsConstructor -public class SeniorStatusRequest { - @NotNull - private Status status; -} +public record SeniorStatusRequest( + @NotNull + Status certificationStatus +) { } diff --git a/src/main/java/com/postgraduate/domain/admin/application/usecase/SeniorManageByAdminUseCase.java b/src/main/java/com/postgraduate/domain/admin/application/usecase/SeniorManageByAdminUseCase.java index 29a3edea..a4f8151e 100644 --- a/src/main/java/com/postgraduate/domain/admin/application/usecase/SeniorManageByAdminUseCase.java +++ b/src/main/java/com/postgraduate/domain/admin/application/usecase/SeniorManageByAdminUseCase.java @@ -44,7 +44,7 @@ public CertificationDetailsResponse getCertificationDetails(Long seniorId) { public void updateSeniorStatus(Long seniorId, SeniorStatusRequest request) { Senior senior = seniorGetService.bySeniorId(seniorId); - seniorUpdateService.updateCertificationStatus(senior, request.getStatus()); + seniorUpdateService.updateCertificationStatus(senior, request.certificationStatus()); } public SeniorManageResponse getSeniors() { diff --git a/src/main/java/com/postgraduate/domain/admin/presentation/AdminController.java b/src/main/java/com/postgraduate/domain/admin/presentation/AdminController.java index fccbbb6f..c0417771 100644 --- a/src/main/java/com/postgraduate/domain/admin/presentation/AdminController.java +++ b/src/main/java/com/postgraduate/domain/admin/presentation/AdminController.java @@ -7,31 +7,19 @@ import com.postgraduate.global.dto.ResponseDto; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; -import static com.postgraduate.domain.mentoring.presentation.constant.MentoringResponseCode.MENTORING_FIND; -import static com.postgraduate.domain.mentoring.presentation.constant.MentoringResponseMessage.GET_MENTORING_DETAIL_INFO; -import static com.postgraduate.domain.mentoring.presentation.constant.MentoringResponseMessage.GET_MENTORING_LIST_INFO; -import static com.postgraduate.domain.payment.presentation.constant.PaymentResponseCode.PAYMENT_FIND; -import static com.postgraduate.domain.payment.presentation.constant.PaymentResponseMessage.GET_PAYMENT_LIST_INFO; -import static com.postgraduate.domain.salary.presentation.constant.SalaryResponseCode.SALARY_FIND; -import static com.postgraduate.domain.salary.presentation.constant.SalaryResponseCode.SALARY_UPDATE; -import static com.postgraduate.domain.salary.presentation.constant.SalaryResponseMessage.GET_SALARY_INFO; -import static com.postgraduate.domain.salary.presentation.constant.SalaryResponseMessage.UPDATE_SALARY_STATUS; -import static com.postgraduate.domain.senior.presentation.constant.SeniorResponseCode.SENIOR_FIND; -import static com.postgraduate.domain.senior.presentation.constant.SeniorResponseCode.SENIOR_UPDATE; -import static com.postgraduate.domain.senior.presentation.constant.SeniorResponseMessage.*; -import static com.postgraduate.domain.user.presentation.constant.UserResponseCode.USER_FIND; -import static com.postgraduate.domain.user.presentation.constant.UserResponseMessage.GET_USER_LIST_INFO; -import static com.postgraduate.domain.wish.presentation.constant.WishResponseCode.WISH_FIND; -import static com.postgraduate.domain.wish.presentation.constant.WishResponseMessage.GET_WISH_INFO; +import static com.postgraduate.domain.admin.presentation.constant.AdminResponseCode.ADMIN_FIND; +import static com.postgraduate.domain.admin.presentation.constant.AdminResponseCode.ADMIN_UPDATE; +import static com.postgraduate.domain.admin.presentation.constant.AdminResponseMessage.*; @RestController @RequiredArgsConstructor @RequestMapping("/admin") -@Tag(name = "ADMIN Controller") +@Tag(name = "ADMIN Controller", description = "관리자의 모든 API는 토큰이 필요합니다.") public class AdminController { private final SeniorManageByAdminUseCase seniorManageUseCase; private final UserManageByAdminUseCase userManageUseCase; @@ -43,7 +31,7 @@ public class AdminController { @Operation(summary = "[관리자] 선배 프로필 승인 요청 조회", description = "선배 신청 시 작성한 사전 작성정보 및 첨부사진을 조회합니다.") public ResponseDto getCertificationDetails(@PathVariable Long seniorId) { CertificationDetailsResponse certification = seniorManageUseCase.getCertificationDetails(seniorId); - return ResponseDto.create(SENIOR_FIND.getCode(), GET_SENIOR_PROFILE.getMessage(), certification); + return ResponseDto.create(ADMIN_FIND.getCode(), GET_DETAILS.getMessage(), certification); } // @GetMapping("/certification") @@ -55,78 +43,79 @@ public ResponseDto getCertificationDetails(@PathVa @PatchMapping("/certification/{seniorId}") @Operation(summary = "[관리자] 선배 프로필 승인 요청 응답", description = "선배 승인 신청한 유저를 승인 또는 거부합니다.") - public ResponseDto updateSeniorStatus(@PathVariable Long seniorId, @RequestBody SeniorStatusRequest request) { + public ResponseDto updateSeniorStatus(@PathVariable Long seniorId, + @RequestBody @Valid SeniorStatusRequest request) { seniorManageUseCase.updateSeniorStatus(seniorId, request); - return ResponseDto.create(SENIOR_UPDATE.getCode(), UPDATE_STATUS.getMessage()); + return ResponseDto.create(ADMIN_UPDATE.getCode(), UPDATE_SENIOR_STATUS.getMessage()); } @GetMapping("/users") @Operation(summary = "[관리자] 후배 정보 목록", description = "대학생 후배 정보 목록을 조회합니다.") public ResponseDto getUsers() { UserManageResponse users = userManageUseCase.getUsers(); - return ResponseDto.create(USER_FIND.getCode(), GET_USER_LIST_INFO.getMessage(), users); + return ResponseDto.create(ADMIN_FIND.getCode(), GET_LIST.getMessage(), users); } @GetMapping("/wish/{wishId}") @Operation(summary = "[관리자] 후배 매칭 지원 정보", description = "대학생 후배 매칭 지원 정보를 상세 조회합니다.") public ResponseDto getWish(@PathVariable Long wishId) { WishResponse wish = userManageUseCase.getWish(wishId); - return ResponseDto.create(WISH_FIND.getCode(), GET_WISH_INFO.getMessage(), wish); + return ResponseDto.create(ADMIN_FIND.getCode(), GET_DETAILS.getMessage(), wish); } @GetMapping("/seniors") @Operation(summary = "[관리자] 선배 정보 목록", description = "대학원생 선배 정보 목록을 조회합니다.") public ResponseDto getSeniors() { SeniorManageResponse seniors = seniorManageUseCase.getSeniors(); - return ResponseDto.create(SENIOR_FIND.getCode(), GET_SENIOR_LIST_INFO.getMessage(), seniors); + return ResponseDto.create(ADMIN_FIND.getCode(), GET_LIST.getMessage(), seniors); } @GetMapping("/salary") @Operation(summary = "[관리자] 정산 목록 조회", description = "한 달 기준으로 정산 목록을 조회합니다. 기준일은 [11일 ~ 내월 10일]입니다.") public ResponseDto getSalaries() { SalaryManageResponse salaries = salaryManageUseCase.getSalaries(); - return ResponseDto.create(SALARY_FIND.getCode(), GET_SALARY_INFO.getMessage(), salaries); + return ResponseDto.create(ADMIN_FIND.getCode(), GET_LIST.getMessage(), salaries); } @GetMapping("/salary/{seniorId}") @Operation(summary = "[관리자] 선배 정산 상세 정보", description = "대학원생 선배 정산 상세 정보를 조회합니다.") public ResponseDto getSalary(@PathVariable Long seniorId) { SalaryDetailsResponse salary = salaryManageUseCase.getSalary(seniorId); - return ResponseDto.create(SALARY_FIND.getCode(), GET_SALARY_INFO.getMessage(), salary); + return ResponseDto.create(ADMIN_FIND.getCode(), GET_DETAILS.getMessage(), salary); } @PatchMapping("/salary/{seniorId}") @Operation(summary = "[관리자] 정산 상태 변경", description = "대학원생 선배 정산 상태를 변경합니다.") public ResponseDto updateSalaryStatus(@PathVariable Long seniorId, @RequestParam Boolean status) { salaryManageUseCase.updateSalaryStatus(seniorId, status); - return ResponseDto.create(SALARY_UPDATE.getCode(), UPDATE_SALARY_STATUS.getMessage()); + return ResponseDto.create(ADMIN_UPDATE.getCode(), UPDATE_SALARY_STATUS.getMessage()); } @GetMapping("/user/{userId}/mentoring") @Operation(summary = "[관리자] 후배 멘토링 조회", description = "후배의 멘토링 목록을 조회합니다.") public ResponseDto getUserMentorings(@PathVariable Long userId) { MentoringManageResponse mentorings = mentoringManageUseCase.getUserMentorings(userId); - return ResponseDto.create(MENTORING_FIND.getCode(), GET_MENTORING_LIST_INFO.getMessage(), mentorings); + return ResponseDto.create(ADMIN_FIND.getCode(), GET_LIST.getMessage(), mentorings); } @GetMapping("/senior/{seniorId}/mentoring") @Operation(summary = "[관리자] 선배 멘토링 조회", description = "선배의 멘토링 목록을 조회합니다.") public ResponseDto getSeniorMentorings(@PathVariable Long seniorId) { MentoringManageResponse mentorings = mentoringManageUseCase.getSeniorMentorings(seniorId); - return ResponseDto.create(MENTORING_FIND.getCode(), GET_MENTORING_LIST_INFO.getMessage(), mentorings); + return ResponseDto.create(ADMIN_FIND.getCode(), GET_LIST.getMessage(), mentorings); } @GetMapping("/payments") @Operation(summary = "[관리자] 결제 정보 목록", description = "결제 정보 목록을 조회합니다.") public ResponseDto getPayments() { PaymentManageResponse payments = paymentManageUseCase.getPayments(); - return ResponseDto.create(PAYMENT_FIND.getCode(), GET_PAYMENT_LIST_INFO.getMessage(), payments); + return ResponseDto.create(ADMIN_FIND.getCode(), GET_LIST.getMessage(), payments); } @GetMapping("/payments/{mentoringId}") @Operation(summary = "[관리자] 결제된 멘토링 정보", description = "결제된 멘토링 정보를 조회합니다.") public ResponseDto getPayments(@PathVariable Long mentoringId) { MentoringWithPaymentResponse mentoringWithPayment = mentoringManageUseCase.getMentoringWithPayment(mentoringId); - return ResponseDto.create(MENTORING_FIND.getCode(), GET_MENTORING_DETAIL_INFO.getMessage(), mentoringWithPayment); + return ResponseDto.create(ADMIN_FIND.getCode(), GET_DETAILS.getMessage(), mentoringWithPayment); } } diff --git a/src/main/java/com/postgraduate/domain/admin/presentation/constant/AdminResponseCode.java b/src/main/java/com/postgraduate/domain/admin/presentation/constant/AdminResponseCode.java new file mode 100644 index 00000000..d30b8f93 --- /dev/null +++ b/src/main/java/com/postgraduate/domain/admin/presentation/constant/AdminResponseCode.java @@ -0,0 +1,15 @@ +package com.postgraduate.domain.admin.presentation.constant; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@Getter +@RequiredArgsConstructor +public enum AdminResponseCode { + ADMIN_FIND("ADM200"), + ADMIN_CREATE("ADM201"), + ADMIN_UPDATE("ADM202"), + ADMIN_DELETE("ADM203"); + + private final String code; +} diff --git a/src/main/java/com/postgraduate/domain/admin/presentation/constant/AdminResponseMessage.java b/src/main/java/com/postgraduate/domain/admin/presentation/constant/AdminResponseMessage.java new file mode 100644 index 00000000..48a0dfe4 --- /dev/null +++ b/src/main/java/com/postgraduate/domain/admin/presentation/constant/AdminResponseMessage.java @@ -0,0 +1,15 @@ +package com.postgraduate.domain.admin.presentation.constant; + +import lombok.Getter; +import lombok.RequiredArgsConstructor; + +@Getter +@RequiredArgsConstructor +public enum AdminResponseMessage { + GET_DETAILS("상세 조회에 성공하였습니다."), + GET_LIST("목록 조회에 성공하였습니다."), + UPDATE_SENIOR_STATUS("선배 승인 상태 수정에 성공하였습니다."), + UPDATE_SALARY_STATUS("정산 상태 수정에 성공하였습니다."); + + private final String message; +} diff --git a/src/main/java/com/postgraduate/domain/auth/application/dto/req/SignUpRequest.java b/src/main/java/com/postgraduate/domain/auth/application/dto/req/SignUpRequest.java index 0b9832d2..74ed1463 100644 --- a/src/main/java/com/postgraduate/domain/auth/application/dto/req/SignUpRequest.java +++ b/src/main/java/com/postgraduate/domain/auth/application/dto/req/SignUpRequest.java @@ -1,24 +1,18 @@ package com.postgraduate.domain.auth.application.dto.req; import jakarta.validation.constraints.NotNull; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -@Getter -@AllArgsConstructor -@NoArgsConstructor -public class SignUpRequest { - @NotNull - private Long socialId; - @NotNull - private String phoneNumber; - @NotNull - private String nickName; - @NotNull - private Boolean marketingReceive; - private String major; - private String field; - @NotNull - private Boolean matchingReceive; -} +public record SignUpRequest( + @NotNull + Long socialId, + @NotNull + String phoneNumber, + @NotNull + String nickName, + @NotNull + Boolean marketingReceive, + String major, + String field, + @NotNull + Boolean matchingReceive +) { } diff --git a/src/main/java/com/postgraduate/domain/auth/presentation/AuthController.java b/src/main/java/com/postgraduate/domain/auth/presentation/AuthController.java index e1fc7656..2c6e2a0f 100644 --- a/src/main/java/com/postgraduate/domain/auth/presentation/AuthController.java +++ b/src/main/java/com/postgraduate/domain/auth/presentation/AuthController.java @@ -16,6 +16,7 @@ import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletRequest; +import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.*; @@ -36,7 +37,7 @@ public class AuthController { @PostMapping("/login/{provider}") @Operation(summary = "소셜 로그인", description = "회원인 경우 JWT를, 회원이 아닌 경우 socialId를 반환합니다(회원가입은 진행하지 않습니다).") - public ResponseDto authLogin(@RequestBody CodeRequest request, @PathVariable Provider provider) { + public ResponseDto authLogin(@RequestBody @Valid CodeRequest request, @PathVariable String provider) { SignInUseCase signInUseCase = selectOauth.selectStrategy(provider); AuthUserResponse authUser = signInUseCase.getUser(request); if (authUser.getUser().isEmpty()) @@ -54,7 +55,7 @@ public ResponseDto logout(@AuthenticationPrincipal User user) { @PostMapping("/user/signup") @Operation(summary = "대학생 회원가입", description = "로그인 API에서 반환한 socialId, 닉네임, 번호, 마케팅 수신여부, 희망 학과, 희망 분야, 매칭 희망 여부") - public ResponseDto signUpUser(@RequestBody SignUpRequest request) { + public ResponseDto signUpUser(@RequestBody @Valid SignUpRequest request) { User user = signUpUseCase.userSignUp(request); JwtTokenResponse jwtToken = jwtUseCase.signIn(user); return ResponseDto.create(AUTH_CREATE.getCode(), SUCCESS_AUTH.getMessage(), jwtToken); @@ -62,16 +63,16 @@ public ResponseDto signUpUser(@RequestBody SignUpRequest reque @PostMapping("/senior/signup") @Operation(summary = "대학원생 가입 - 필수 과정만", description = "대학원생 회원가입 - 필수 과정만") - public ResponseDto singUpSenior(@RequestBody SeniorSignUpRequest request) { + public ResponseDto singUpSenior(@RequestBody @Valid SeniorSignUpRequest request) { User user = signUpUseCase.seniorSignUp(request); JwtTokenResponse jwtToken = jwtUseCase.signIn(user); return ResponseDto.create(SENIOR_CREATE.getCode(), CREATE_SENIOR.getMessage(), jwtToken); } @PostMapping("/senior/change") - @Operation(summary = "선배로 업데이트", description = "대학생 대학원생으로 변경") + @Operation(summary = "선배로 업데이트 | 토큰 필요", description = "대학생 대학원생으로 변경") public ResponseDto changeSenior(@AuthenticationPrincipal User user, - @RequestBody SeniorChangeRequest changeRequest) { + @RequestBody @Valid SeniorChangeRequest changeRequest) { User changeUser = signUpUseCase.changeSenior(user, changeRequest); JwtTokenResponse jwtToken = jwtUseCase.signIn(changeUser); return ResponseDto.create(SENIOR_CREATE.getCode(), CREATE_SENIOR.getMessage(), jwtToken); @@ -79,7 +80,7 @@ public ResponseDto changeSenior(@AuthenticationPrincipal User @PostMapping("/refresh") - @Operation(summary = "토큰 재발급 - 토큰 필요", description = "refreshToken 으로 토큰 재발급") + @Operation(summary = "토큰 재발급 | 토큰 필요", description = "refreshToken 으로 토큰 재발급") public ResponseDto refresh(@AuthenticationPrincipal User user, HttpServletRequest request) { JwtTokenResponse jwtToken = jwtUseCase.regenerateToken(user, request); return ResponseDto.create(AUTH_UPDATE.getCode(), SUCCESS_REGENERATE_TOKEN.getMessage(), jwtToken); diff --git a/src/main/java/com/postgraduate/domain/mentoring/application/dto/req/MentoringApplyRequest.java b/src/main/java/com/postgraduate/domain/mentoring/application/dto/req/MentoringApplyRequest.java index 686c3ec2..bef62ba0 100644 --- a/src/main/java/com/postgraduate/domain/mentoring/application/dto/req/MentoringApplyRequest.java +++ b/src/main/java/com/postgraduate/domain/mentoring/application/dto/req/MentoringApplyRequest.java @@ -1,20 +1,14 @@ package com.postgraduate.domain.mentoring.application.dto.req; import jakarta.validation.constraints.NotNull; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -@Getter -@AllArgsConstructor -@NoArgsConstructor -public class MentoringApplyRequest { - @NotNull - private Long seniorId; - @NotNull - private String topic; - @NotNull - private String question; - @NotNull - private String date; -} +public record MentoringApplyRequest( + @NotNull + Long seniorId, + @NotNull + String topic, + @NotNull + String question, + @NotNull + String date +) { } diff --git a/src/main/java/com/postgraduate/domain/mentoring/application/mapper/MentoringMapper.java b/src/main/java/com/postgraduate/domain/mentoring/application/mapper/MentoringMapper.java index 1b1da039..780a6669 100644 --- a/src/main/java/com/postgraduate/domain/mentoring/application/mapper/MentoringMapper.java +++ b/src/main/java/com/postgraduate/domain/mentoring/application/mapper/MentoringMapper.java @@ -81,9 +81,9 @@ public static Mentoring mapToMentoring(User user, Senior senior, MentoringApplyR return Mentoring.builder() .user(user) .senior(senior) - .topic(request.getTopic()) - .question(request.getQuestion()) - .date(request.getDate()) + .topic(request.topic()) + .question(request.question()) + .date(request.date()) .build(); } diff --git a/src/main/java/com/postgraduate/domain/mentoring/application/usecase/MentoringApplyUseCase.java b/src/main/java/com/postgraduate/domain/mentoring/application/usecase/MentoringApplyUseCase.java index 007e05d6..2b6a14f4 100644 --- a/src/main/java/com/postgraduate/domain/mentoring/application/usecase/MentoringApplyUseCase.java +++ b/src/main/java/com/postgraduate/domain/mentoring/application/usecase/MentoringApplyUseCase.java @@ -19,7 +19,7 @@ public class MentoringApplyUseCase { private final SeniorGetService seniorGetService; public void applyMentoring(User user, MentoringApplyRequest request) { - Senior senior = seniorGetService.bySeniorId(request.getSeniorId()); + Senior senior = seniorGetService.bySeniorId(request.seniorId()); Mentoring mentoring = MentoringMapper.mapToMentoring(user, senior, request); mentoringSaveService.save(mentoring); } diff --git a/src/main/java/com/postgraduate/domain/mentoring/presentation/MentoringController.java b/src/main/java/com/postgraduate/domain/mentoring/presentation/MentoringController.java index ccc4f96e..2ded304a 100644 --- a/src/main/java/com/postgraduate/domain/mentoring/presentation/MentoringController.java +++ b/src/main/java/com/postgraduate/domain/mentoring/presentation/MentoringController.java @@ -12,6 +12,7 @@ import com.postgraduate.global.dto.ResponseDto; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.*; @@ -22,7 +23,7 @@ @RestController @RequiredArgsConstructor @RequestMapping("mentoring") -@Tag(name = "MENTORING Controller") +@Tag(name = "MENTORING Controller", description = "멘토링의 모든 API는 토큰이 필요합니다.") public class MentoringController { private final MentoringUserInfoUseCase userInfoUseCase; private final MentoringSeniorInfoUseCase seniorInfoUseCase; @@ -52,14 +53,16 @@ public ResponseDto getDoneMentorings(@AuthenticationPr @GetMapping("/me/{mentoringId}") @Operation(summary = "[대학생] 신청한 멘토링 상세조회", description = "대학생이 신청한 멘토링을 상세조회합니다. <완료> 상태의 멘토링은 상세조회되지 않습니다.") - public ResponseDto getMentoringDetail(@AuthenticationPrincipal User user, @PathVariable Long mentoringId) { + public ResponseDto getMentoringDetail(@AuthenticationPrincipal User user, + @PathVariable Long mentoringId) { AppliedMentoringDetailResponse mentoringDetail = userInfoUseCase.getMentoringDetail(user, mentoringId); return ResponseDto.create(MENTORING_FIND.getCode(), GET_MENTORING_DETAIL_INFO.getMessage(), mentoringDetail); } @PostMapping("/applying") @Operation(summary = "[대학생] 멘토링 신청", description = "대학생이 멘토링을 신청합니다.") - public ResponseDto applyMentoring(@AuthenticationPrincipal User user, @RequestBody MentoringApplyRequest request) { + public ResponseDto applyMentoring(@AuthenticationPrincipal User user, + @RequestBody @Valid MentoringApplyRequest request) { applyUseCase.applyMentoring(user, request); return ResponseDto.create(MENTORING_CREATE.getCode(), CREATE_MENTORING.getMessage()); } @@ -103,7 +106,8 @@ public ResponseDto getSeniorDoneMentorings(@Authenticat @GetMapping("/senior/me/{mentoringId}") @Operation(summary = "[대학원생] 신청받은 멘토링 상세조회", description = "대학원생이 신청받은 멘토링을 상세조회합니다. <완료> 상태의 멘토링은 상세조회되지 않습니다.") - public ResponseDto getSeniorMentoringDetail(@AuthenticationPrincipal User user, @PathVariable Long mentoringId) { + public ResponseDto getSeniorMentoringDetail(@AuthenticationPrincipal User user, + @PathVariable Long mentoringId) { SeniorMentoringDetailResponse seniorMentoringDetail = seniorInfoUseCase.getSeniorMentoringDetail(user, mentoringId); return ResponseDto.create(MENTORING_FIND.getCode(), GET_MENTORING_DETAIL_INFO.getMessage(), seniorMentoringDetail); } @@ -112,7 +116,7 @@ public ResponseDto getSeniorMentoringDetail(@Auth @Operation(summary = "[대학원생] 멘토링 상태 업데이트(예정된 멘토링)", description = "대학원생이 멘토링을 수락합니다.") public ResponseDto updateMentoringExpected(@AuthenticationPrincipal User user, @PathVariable Long mentoringId, - @RequestBody MentoringDateRequest dateRequest) { + @RequestBody @Valid MentoringDateRequest dateRequest) { Boolean accountPresent = manageUseCase.updateExpected(user, mentoringId, dateRequest); return ResponseDto.create(MENTORING_UPDATE.getCode(), UPDATE_MENTORING.getMessage(), accountPresent); } @@ -121,7 +125,7 @@ public ResponseDto updateMentoringExpected(@AuthenticationPrincipal User user, @Operation(summary = "[대학원생] 멘토링 상태 업데이트(거절)", description = "대학원생이 멘토링을 거절하고 거절사유를 변경합니다.") public ResponseDto updateMentoringCancel(@AuthenticationPrincipal User user, @PathVariable Long mentoringId, - @RequestBody MentoringRefuseRequest request) { + @RequestBody @Valid MentoringRefuseRequest request) { manageUseCase.updateRefuse(user, mentoringId, request); return ResponseDto.create(MENTORING_UPDATE.getCode(), UPDATE_MENTORING.getMessage()); } diff --git a/src/main/java/com/postgraduate/domain/salary/application/dto/SalaryDetails.java b/src/main/java/com/postgraduate/domain/salary/application/dto/SalaryDetails.java new file mode 100644 index 00000000..be13f83b --- /dev/null +++ b/src/main/java/com/postgraduate/domain/salary/application/dto/SalaryDetails.java @@ -0,0 +1,20 @@ +package com.postgraduate.domain.salary.application.dto; + +import jakarta.validation.constraints.NotNull; + +import java.time.LocalDate; + +public record SalaryDetails( + @NotNull + String profile, + @NotNull + String nickName, + @NotNull + String date, + @NotNull + int term, + @NotNull + int salaryAmount, + @NotNull + LocalDate salaryDate +) { } diff --git a/src/main/java/com/postgraduate/domain/salary/application/dto/res/SalaryDetailResponse.java b/src/main/java/com/postgraduate/domain/salary/application/dto/res/SalaryDetailResponse.java deleted file mode 100644 index df8fd54f..00000000 --- a/src/main/java/com/postgraduate/domain/salary/application/dto/res/SalaryDetailResponse.java +++ /dev/null @@ -1,19 +0,0 @@ -package com.postgraduate.domain.salary.application.dto.res; - -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; - -import java.time.LocalDate; - -@Getter -@Builder -@AllArgsConstructor -public class SalaryDetailResponse { - private String profile; - private String nickName; - private String date; - private int term; - private int salaryAmount; - private LocalDate salaryDate; -} diff --git a/src/main/java/com/postgraduate/domain/salary/application/dto/res/SalaryDetailsResponse.java b/src/main/java/com/postgraduate/domain/salary/application/dto/res/SalaryDetailsResponse.java new file mode 100644 index 00000000..48d2685e --- /dev/null +++ b/src/main/java/com/postgraduate/domain/salary/application/dto/res/SalaryDetailsResponse.java @@ -0,0 +1,9 @@ +package com.postgraduate.domain.salary.application.dto.res; + +import com.postgraduate.domain.salary.application.dto.SalaryDetails; +import jakarta.validation.constraints.NotNull; + +import java.util.List; + +public record SalaryDetailsResponse(@NotNull List salaryDetails) { +} diff --git a/src/main/java/com/postgraduate/domain/salary/application/mapper/SalaryMapper.java b/src/main/java/com/postgraduate/domain/salary/application/mapper/SalaryMapper.java index bef545d3..e6480be4 100644 --- a/src/main/java/com/postgraduate/domain/salary/application/mapper/SalaryMapper.java +++ b/src/main/java/com/postgraduate/domain/salary/application/mapper/SalaryMapper.java @@ -1,8 +1,9 @@ package com.postgraduate.domain.salary.application.mapper; import com.postgraduate.domain.mentoring.domain.entity.Mentoring; -import com.postgraduate.domain.salary.application.dto.res.SalaryDetailResponse; +import com.postgraduate.domain.salary.application.dto.SalaryDetails; import com.postgraduate.domain.salary.domain.entity.Salary; +import com.postgraduate.domain.user.domain.entity.User; import java.time.LocalDate; @@ -15,14 +16,16 @@ public static Salary mapToSalary(Mentoring mentoring, LocalDate salaryDate) { .build(); } - public static SalaryDetailResponse mapToSalaryDetail(Salary salary) { - return SalaryDetailResponse.builder() - .profile(salary.getMentoring().getUser().getProfile()) - .nickName(salary.getMentoring().getUser().getNickName()) - .date(salary.getMentoring().getDate()) - .term(salary.getSenior().getProfile().getTerm()) - .salaryAmount(salary.getMentoring().getPay()) //TODO 수수료 - .salaryDate(salary.getSalaryDate()) - .build(); + public static SalaryDetails mapToSalaryDetail(Salary salary) { + Mentoring mentoring = salary.getMentoring(); + User user = mentoring.getUser(); + return new SalaryDetails( + user.getProfile(), + user.getNickName(), + mentoring.getDate(), + salary.getSenior().getProfile().getTerm(), + mentoring.getPay(), + salary.getSalaryDate() + ); } } diff --git a/src/main/java/com/postgraduate/domain/salary/application/usecase/SalaryInfoUseCase.java b/src/main/java/com/postgraduate/domain/salary/application/usecase/SalaryInfoUseCase.java index 309b3441..4b78ab4b 100644 --- a/src/main/java/com/postgraduate/domain/salary/application/usecase/SalaryInfoUseCase.java +++ b/src/main/java/com/postgraduate/domain/salary/application/usecase/SalaryInfoUseCase.java @@ -1,6 +1,7 @@ package com.postgraduate.domain.salary.application.usecase; -import com.postgraduate.domain.salary.application.dto.res.SalaryDetailResponse; +import com.postgraduate.domain.salary.application.dto.SalaryDetails; +import com.postgraduate.domain.salary.application.dto.res.SalaryDetailsResponse; import com.postgraduate.domain.salary.application.dto.res.SalaryInfoResponse; import com.postgraduate.domain.salary.application.mapper.SalaryMapper; import com.postgraduate.domain.salary.domain.entity.Salary; @@ -33,11 +34,12 @@ public SalaryInfoResponse getSalary(User user) { return new SalaryInfoResponse(salaryDate, amount); //TODO 수수료 } - public List getSalaryDetail(User user, Boolean status) { + public SalaryDetailsResponse getSalaryDetail(User user, Boolean status) { Senior senior = seniorGetService.byUser(user); List salaries = salaryGetService.bySeniorAndStatus(senior, status); - return salaries.stream() + List salaryDetails = salaries.stream() .map(SalaryMapper::mapToSalaryDetail) .toList(); + return new SalaryDetailsResponse(salaryDetails); } } diff --git a/src/main/java/com/postgraduate/domain/salary/presentation/SalaryController.java b/src/main/java/com/postgraduate/domain/salary/presentation/SalaryController.java index 0d1d1795..5f2dc0b1 100644 --- a/src/main/java/com/postgraduate/domain/salary/presentation/SalaryController.java +++ b/src/main/java/com/postgraduate/domain/salary/presentation/SalaryController.java @@ -1,6 +1,6 @@ package com.postgraduate.domain.salary.presentation; -import com.postgraduate.domain.salary.application.dto.res.SalaryDetailResponse; +import com.postgraduate.domain.salary.application.dto.res.SalaryDetailsResponse; import com.postgraduate.domain.salary.application.dto.res.SalaryInfoResponse; import com.postgraduate.domain.salary.application.usecase.SalaryInfoUseCase; import com.postgraduate.domain.user.domain.entity.User; @@ -13,8 +13,6 @@ import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.List; - import static com.postgraduate.domain.salary.presentation.constant.SalaryResponseCode.SALARY_FIND; import static com.postgraduate.domain.salary.presentation.constant.SalaryResponseMessage.GET_SALARY_INFO; import static com.postgraduate.domain.salary.presentation.constant.SalaryResponseMessage.GET_SALARY_LIST_INFO; @@ -22,7 +20,7 @@ @RestController @RequiredArgsConstructor @RequestMapping("/salary") -@Tag(name = "SALARY Controller") +@Tag(name = "SALARY Controller", description = "정산의 모든 API는 토큰이 필요합니다.") public class SalaryController { private final SalaryInfoUseCase salaryInfoUseCase; @@ -35,15 +33,15 @@ public ResponseDto getSalary(@AuthenticationPrincipal User u @GetMapping("/waiting") @Operation(summary = "대학원생 정산예정 목록 조회", description = "정산 예정 탭에서 보이는 목록입니다.") - public ResponseDto> getWaitingSalary(@AuthenticationPrincipal User user) { - List salary = salaryInfoUseCase.getSalaryDetail(user, false); + public ResponseDto getWaitingSalary(@AuthenticationPrincipal User user) { + SalaryDetailsResponse salary = salaryInfoUseCase.getSalaryDetail(user, false); return ResponseDto.create(SALARY_FIND.getCode(), GET_SALARY_LIST_INFO.getMessage(), salary); } @GetMapping("/done") @Operation(summary = "대학원생 정산완료 목록 조회", description = "정산 완료 탭에서 보이는 목록입니다.") - public ResponseDto> getDoneSalary(@AuthenticationPrincipal User user) { - List salary = salaryInfoUseCase.getSalaryDetail(user, true); + public ResponseDto getDoneSalary(@AuthenticationPrincipal User user) { + SalaryDetailsResponse salary = salaryInfoUseCase.getSalaryDetail(user, true); return ResponseDto.create(SALARY_FIND.getCode(), GET_SALARY_LIST_INFO.getMessage(), salary); } } diff --git a/src/main/java/com/postgraduate/domain/senior/application/dto/req/SeniorAccountRequest.java b/src/main/java/com/postgraduate/domain/senior/application/dto/req/SeniorAccountRequest.java index 39047db5..b14db3bd 100644 --- a/src/main/java/com/postgraduate/domain/senior/application/dto/req/SeniorAccountRequest.java +++ b/src/main/java/com/postgraduate/domain/senior/application/dto/req/SeniorAccountRequest.java @@ -1,18 +1,12 @@ package com.postgraduate.domain.senior.application.dto.req; import jakarta.validation.constraints.NotNull; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -@Getter -@AllArgsConstructor -@NoArgsConstructor -public class SeniorAccountRequest { - @NotNull - private String accountNumber; - @NotNull - private String bank; - @NotNull - private String accountHolder; -} +public record SeniorAccountRequest( + @NotNull + String accountNumber, + @NotNull + String bank, + @NotNull + String accountHolder +) { } diff --git a/src/main/java/com/postgraduate/domain/senior/application/dto/req/SeniorCertificationRequest.java b/src/main/java/com/postgraduate/domain/senior/application/dto/req/SeniorCertificationRequest.java index cc26e8ee..62883d0d 100644 --- a/src/main/java/com/postgraduate/domain/senior/application/dto/req/SeniorCertificationRequest.java +++ b/src/main/java/com/postgraduate/domain/senior/application/dto/req/SeniorCertificationRequest.java @@ -1,14 +1,8 @@ package com.postgraduate.domain.senior.application.dto.req; import jakarta.validation.constraints.NotNull; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -@Getter -@AllArgsConstructor -@NoArgsConstructor -public class SeniorCertificationRequest { - @NotNull - private String certification; -} +public record SeniorCertificationRequest( + @NotNull + String certification +) { } diff --git a/src/main/java/com/postgraduate/domain/senior/application/dto/req/SeniorMyPageProfileRequest.java b/src/main/java/com/postgraduate/domain/senior/application/dto/req/SeniorMyPageProfileRequest.java index 305d6e9b..e779666c 100644 --- a/src/main/java/com/postgraduate/domain/senior/application/dto/req/SeniorMyPageProfileRequest.java +++ b/src/main/java/com/postgraduate/domain/senior/application/dto/req/SeniorMyPageProfileRequest.java @@ -1,28 +1,22 @@ package com.postgraduate.domain.senior.application.dto.req; import jakarta.validation.constraints.NotNull; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -@AllArgsConstructor -@NoArgsConstructor -@Getter -public class SeniorMyPageProfileRequest { - @NotNull - private String lab; - @NotNull - private String keyword; - @NotNull - private String info; - @NotNull - private String target; - @NotNull - private String chatLink; - @NotNull - private String field; - @NotNull - private String oneLiner; - @NotNull - private String time; -} +public record SeniorMyPageProfileRequest( + @NotNull + String lab, + @NotNull + String keyword, + @NotNull + String info, + @NotNull + String target, + @NotNull + String chatLink, + @NotNull + String field, + @NotNull + String oneLiner, + @NotNull + String time +) { } diff --git a/src/main/java/com/postgraduate/domain/senior/application/dto/req/SeniorProfileRequest.java b/src/main/java/com/postgraduate/domain/senior/application/dto/req/SeniorProfileRequest.java index 690ac34f..4e284b75 100644 --- a/src/main/java/com/postgraduate/domain/senior/application/dto/req/SeniorProfileRequest.java +++ b/src/main/java/com/postgraduate/domain/senior/application/dto/req/SeniorProfileRequest.java @@ -1,22 +1,17 @@ package com.postgraduate.domain.senior.application.dto.req; import jakarta.validation.constraints.NotNull; -import lombok.AllArgsConstructor; -import lombok.Getter; -import lombok.NoArgsConstructor; -@Getter -@AllArgsConstructor -@NoArgsConstructor -public class SeniorProfileRequest { - @NotNull - private String info; - @NotNull - private String target; - @NotNull - private String chatLink; - @NotNull - private String time; - @NotNull - private String oneLiner; +public record SeniorProfileRequest( + @NotNull + String info, + @NotNull + String target, + @NotNull + String chatLink, + @NotNull + String time, + @NotNull + String oneLiner +) { } diff --git a/src/main/java/com/postgraduate/domain/senior/application/dto/res/SeniorDetailResponse.java b/src/main/java/com/postgraduate/domain/senior/application/dto/res/SeniorDetailResponse.java index 425ec080..b35f1943 100644 --- a/src/main/java/com/postgraduate/domain/senior/application/dto/res/SeniorDetailResponse.java +++ b/src/main/java/com/postgraduate/domain/senior/application/dto/res/SeniorDetailResponse.java @@ -1,22 +1,28 @@ package com.postgraduate.domain.senior.application.dto.res; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; +import jakarta.validation.constraints.NotNull; -@Getter -@Builder -@AllArgsConstructor -public class SeniorDetailResponse { - private String nickName; - private String profile; - private String postgradu; - private String major; - private String lab; - private String professor; - private String[] keyword; - private String info; - private String oneLiner; - private String target; - private String time; -} +public record SeniorDetailResponse( + @NotNull + String nickName, + @NotNull + String profile, + @NotNull + String postgradu, + @NotNull + String major, + @NotNull + String lab, + @NotNull + String professor, + @NotNull + String[] keyword, + @NotNull + String info, + @NotNull + String oneLiner, + @NotNull + String target, + @NotNull + String time +) { } diff --git a/src/main/java/com/postgraduate/domain/senior/application/dto/res/SeniorMyPageProfileResponse.java b/src/main/java/com/postgraduate/domain/senior/application/dto/res/SeniorMyPageProfileResponse.java index ceef25c9..95b27297 100644 --- a/src/main/java/com/postgraduate/domain/senior/application/dto/res/SeniorMyPageProfileResponse.java +++ b/src/main/java/com/postgraduate/domain/senior/application/dto/res/SeniorMyPageProfileResponse.java @@ -1,20 +1,23 @@ package com.postgraduate.domain.senior.application.dto.res; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; +import jakarta.validation.constraints.NotNull; -@Builder -@Getter -@AllArgsConstructor -public class SeniorMyPageProfileResponse { - private String lab; - private String[] keyword; - private String info; - private String target; - private String chatLink; - private String[] field; - private String oneLiner; - private String time; -} +public record SeniorMyPageProfileResponse( + @NotNull + String lab, + @NotNull + String[] keyword, + @NotNull + String info, + @NotNull + String target, + @NotNull + String chatLink, + @NotNull + String[] field, + @NotNull + String oneLiner, + @NotNull + String time +) { } diff --git a/src/main/java/com/postgraduate/domain/senior/application/mapper/SeniorMapper.java b/src/main/java/com/postgraduate/domain/senior/application/mapper/SeniorMapper.java index e2787add..0021da36 100644 --- a/src/main/java/com/postgraduate/domain/senior/application/mapper/SeniorMapper.java +++ b/src/main/java/com/postgraduate/domain/senior/application/mapper/SeniorMapper.java @@ -58,21 +58,21 @@ public static Info mapToInfo(SeniorSignUpRequest request) { public static Profile mapToProfile(SeniorProfileRequest profileRequest) { return Profile.builder() - .info(profileRequest.getInfo()) - .chatLink(profileRequest.getChatLink()) - .oneLiner(profileRequest.getOneLiner()) - .target(profileRequest.getTarget()) - .time(profileRequest.getTime()) + .info(profileRequest.info()) + .chatLink(profileRequest.chatLink()) + .oneLiner(profileRequest.oneLiner()) + .target(profileRequest.target()) + .time(profileRequest.time()) .build(); } public static Profile mapToProfile(SeniorMyPageProfileRequest profileRequest) { return Profile.builder() - .info(profileRequest.getInfo()) - .chatLink(profileRequest.getChatLink()) - .oneLiner(profileRequest.getOneLiner()) - .target(profileRequest.getTarget()) - .time(profileRequest.getTime()) + .info(profileRequest.info()) + .chatLink(profileRequest.chatLink()) + .oneLiner(profileRequest.oneLiner()) + .target(profileRequest.target()) + .time(profileRequest.time()) .build(); } @@ -122,16 +122,16 @@ public static SeniorMyPageProfileResponse mapToMyPageProfile(Senior senior) { Profile profile = senior.getProfile(); String[] keyword = info.getKeyword().split(","); String[] field = info.getField().split(","); - return SeniorMyPageProfileResponse.builder() - .lab(info.getLab()) - .keyword(keyword) - .field(field) - .info(profile.getInfo()) - .target(profile.getTarget()) - .chatLink(profile.getChatLink()) - .oneLiner(profile.getOneLiner()) - .time(profile.getTime()) - .build(); + return new SeniorMyPageProfileResponse( + info.getLab(), + keyword, + profile.getInfo(), + profile.getTarget(), + profile.getChatLink(), + field, + profile.getOneLiner(), + profile.getTime() + ); } public static SeniorMyPageUserAccountResponse mapToMyPageUserAccount(Senior senior, Account account, String accountNumber) { @@ -154,20 +154,22 @@ public static SeniorMyPageUserAccountResponse mapToMyPageUserAccount(Senior seni } public static SeniorDetailResponse mapToSeniorDetail(Senior senior) { - String[] keyword = senior.getInfo().getKeyword().split(","); - return SeniorDetailResponse.builder() - .nickName(senior.getUser().getNickName()) - .profile(senior.getUser().getProfile()) - .postgradu(senior.getInfo().getPostgradu()) - .major(senior.getInfo().getMajor()) - .lab(senior.getInfo().getLab()) - .professor(senior.getInfo().getProfessor()) - .keyword(keyword) - .info(senior.getProfile().getInfo()) - .oneLiner(senior.getProfile().getOneLiner()) - .target(senior.getProfile().getTarget()) - .time(senior.getProfile().getTime()) - .build(); + Info info = senior.getInfo(); + Profile profile = senior.getProfile(); + String[] keyword = info.getKeyword().split(","); + return new SeniorDetailResponse( + senior.getUser().getNickName(), + senior.getUser().getProfile(), + info.getPostgradu(), + info.getMajor(), + info.getLab(), + info.getProfessor(), + keyword, + profile.getInfo(), + profile.getOneLiner(), + profile.getTarget(), + profile.getTime() + ); } public static SeniorSearchResponse mapToSeniorSearch(Senior senior) { diff --git a/src/main/java/com/postgraduate/domain/senior/application/usecase/SeniorManageUseCase.java b/src/main/java/com/postgraduate/domain/senior/application/usecase/SeniorManageUseCase.java index 93e45923..4fcc2ce7 100644 --- a/src/main/java/com/postgraduate/domain/senior/application/usecase/SeniorManageUseCase.java +++ b/src/main/java/com/postgraduate/domain/senior/application/usecase/SeniorManageUseCase.java @@ -35,7 +35,7 @@ public class SeniorManageUseCase { public void updateCertification(User user, SeniorCertificationRequest certificationRequest) { Senior senior = seniorGetService.byUser(user); - seniorUpdateService.updateCertification(senior, certificationRequest.getCertification()); + seniorUpdateService.updateCertification(senior, certificationRequest.certification()); } public void signUpProfile(User user, SeniorProfileRequest profileRequest) { @@ -46,7 +46,7 @@ public void signUpProfile(User user, SeniorProfileRequest profileRequest) { public void saveAccount(User user, SeniorAccountRequest accountRequest) { Senior senior = seniorGetService.byUser(user); - String accountNumber = encryptorUtils.encryptData(accountRequest.getAccountNumber()); + String accountNumber = encryptorUtils.encryptData(accountRequest.accountNumber()); accountSaveService.saveAccount(mapToAccount(senior, accountRequest, accountNumber)); } diff --git a/src/main/java/com/postgraduate/domain/senior/domain/entity/Info.java b/src/main/java/com/postgraduate/domain/senior/domain/entity/Info.java index 53af97e8..ef621e58 100644 --- a/src/main/java/com/postgraduate/domain/senior/domain/entity/Info.java +++ b/src/main/java/com/postgraduate/domain/senior/domain/entity/Info.java @@ -48,9 +48,9 @@ public class Info { private String totalInfo; // 모든 Info정보 String으로 가지는 컬럼 - 검색시 사용 public void updateMyPage(SeniorMyPageProfileRequest request) { - this.keyword = request.getKeyword(); - this.lab = request.getLab(); - this.field = request.getField(); + this.keyword = request.keyword(); + this.lab = request.lab(); + this.field = request.field(); combineTotalInfo(); } diff --git a/src/main/java/com/postgraduate/domain/senior/presentation/SeniorController.java b/src/main/java/com/postgraduate/domain/senior/presentation/SeniorController.java index 777bd36b..8c0f748c 100644 --- a/src/main/java/com/postgraduate/domain/senior/presentation/SeniorController.java +++ b/src/main/java/com/postgraduate/domain/senior/presentation/SeniorController.java @@ -9,6 +9,7 @@ import com.postgraduate.global.dto.ResponseDto; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.*; @@ -27,62 +28,62 @@ public class SeniorController { private final SeniorInfoUseCase seniorInfoUseCase; @PatchMapping("/certification") - @Operation(summary = "대학원생 인증", description = "이미지 업로드 이후 url 담아서 요청") + @Operation(summary = "대학원생 인증 | 토큰 필요", description = "이미지 업로드 이후 url 담아서 요청") public ResponseDto updateCertification(@AuthenticationPrincipal User user, - @RequestBody SeniorCertificationRequest certificationRequest) { + @RequestBody @Valid SeniorCertificationRequest certificationRequest) { seniorManageUseCase.updateCertification(user, certificationRequest); return ResponseDto.create(SENIOR_UPDATE.getCode(), UPDATE_CERTIFICATION.getMessage()); } @PatchMapping("/profile") - @Operation(summary = "대학원생 프로필 등록") + @Operation(summary = "대학원생 프로필 등록 | 토큰 필요") public ResponseDto singUpSenior(@AuthenticationPrincipal User user, - @RequestBody SeniorProfileRequest profileRequest) { + @RequestBody @Valid SeniorProfileRequest profileRequest) { seniorManageUseCase.signUpProfile(user, profileRequest); return ResponseDto.create(SENIOR_UPDATE.getCode(), UPDATE_PROFILE.getMessage()); } @PostMapping("/account") - @Operation(summary = "대학원생 정산 계좌 생성") + @Operation(summary = "대학원생 정산 계좌 생성 | 토큰 필요") public ResponseDto updateAccount(@AuthenticationPrincipal User user, - @RequestBody SeniorAccountRequest accountRequest) { + @RequestBody @Valid SeniorAccountRequest accountRequest) { seniorManageUseCase.saveAccount(user, accountRequest); return ResponseDto.create(SENIOR_CREATE.getCode(), CREATE_ACCOUNT.getMessage()); } @GetMapping("/me") - @Operation(summary = "대학원생 마이페이지 기본 정보 조회", description = "닉네임, 프로필 사진, 인증 여부") + @Operation(summary = "대학원생 마이페이지 기본 정보 조회 | 토큰 필요", description = "닉네임, 프로필 사진, 인증 여부") public ResponseDto getSeniorInfo(@AuthenticationPrincipal User user) { SeniorMyPageResponse seniorMyPageResponse = seniorMyPageUseCase.getSeniorInfo(user); return ResponseDto.create(SENIOR_FIND.getCode(), GET_SENIOR_INFO.getMessage(), seniorMyPageResponse); } @GetMapping("/me/profile") - @Operation(summary = "대학원생 마이페이지 프로필 수정시 기존 정보 조회") + @Operation(summary = "대학원생 마이페이지 프로필 수정시 기존 정보 조회 | 토큰 필요") public ResponseDto getSeniorProfile(@AuthenticationPrincipal User user) { SeniorMyPageProfileResponse myPageProfile = seniorMyPageUseCase.getSeniorMyPageProfile(user); return ResponseDto.create(SENIOR_FIND.getCode(), GET_SENIOR_MYPAGE_PROFILE.getMessage(), myPageProfile); } @PatchMapping("/me/profile") - @Operation(summary = "대학원생 마이페이지 프로필 수정") + @Operation(summary = "대학원생 마이페이지 프로필 수정 | 토큰 필요") public ResponseDto updateSeniorProfile(@AuthenticationPrincipal User user, - @RequestBody SeniorMyPageProfileRequest myPageProfileRequest) { + @RequestBody @Valid SeniorMyPageProfileRequest myPageProfileRequest) { seniorManageUseCase.updateSeniorMyPageProfile(user, myPageProfileRequest); return ResponseDto.create(SENIOR_UPDATE.getCode(), UPDATE_MYPAGE_PROFILE.getMessage()); } @GetMapping("/me/account") - @Operation(summary = "대학원생 마이페이지 계정 설정시 기존 정보 조회") + @Operation(summary = "대학원생 마이페이지 계정 설정시 기존 정보 조회 | 토큰 필요") public ResponseDto getSeniorUserAccount(@AuthenticationPrincipal User user) { SeniorMyPageUserAccountResponse seniorOriginInfo = seniorMyPageUseCase.getSeniorMyPageUserAccount(user); return ResponseDto.create(SENIOR_FIND.getCode(), GET_SENIOR_MYPAGE_ACCOUNT.getMessage(), seniorOriginInfo); } @PatchMapping("/me/account") - @Operation(summary = "대학원생 마이페이지 계정 설정") + @Operation(summary = "대학원생 마이페이지 계정 설정 | 토큰 필요") public ResponseDto updateSeniorUserAccount(@AuthenticationPrincipal User user, - @RequestBody SeniorMyPageUserAccountRequest myPageUserAccountRequest) { + @RequestBody @Valid SeniorMyPageUserAccountRequest myPageUserAccountRequest) { seniorManageUseCase.updateSeniorMyPageUserAccount(user, myPageUserAccountRequest); return ResponseDto.create(SENIOR_UPDATE.getCode(), UPDATE_MYPAGE_ACCOOUNT.getMessage()); } diff --git a/src/main/java/com/postgraduate/domain/user/application/dto/res/UserInfoResponse.java b/src/main/java/com/postgraduate/domain/user/application/dto/res/UserInfoResponse.java index 68f65e5d..4548da25 100644 --- a/src/main/java/com/postgraduate/domain/user/application/dto/res/UserInfoResponse.java +++ b/src/main/java/com/postgraduate/domain/user/application/dto/res/UserInfoResponse.java @@ -1,14 +1,12 @@ package com.postgraduate.domain.user.application.dto.res; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; +import jakarta.validation.constraints.NotNull; -@Getter -@Builder -@AllArgsConstructor -public class UserInfoResponse { - private String profile; - private String nickName; - private String phoneNumber; -} +public record UserInfoResponse( + @NotNull + String profile, + @NotNull + String nickName, + @NotNull + String phoneNumber +) { } diff --git a/src/main/java/com/postgraduate/domain/user/application/dto/res/UserMyPageResponse.java b/src/main/java/com/postgraduate/domain/user/application/dto/res/UserMyPageResponse.java index c40a0a2c..eb160bfa 100644 --- a/src/main/java/com/postgraduate/domain/user/application/dto/res/UserMyPageResponse.java +++ b/src/main/java/com/postgraduate/domain/user/application/dto/res/UserMyPageResponse.java @@ -1,13 +1,10 @@ package com.postgraduate.domain.user.application.dto.res; -import lombok.AllArgsConstructor; -import lombok.Builder; -import lombok.Getter; +import jakarta.validation.constraints.NotNull; -@Getter -@Builder -@AllArgsConstructor -public class UserMyPageResponse { - private String nickName; - private String profile; -} \ No newline at end of file +public record UserMyPageResponse( + @NotNull + String nickName, + @NotNull + String profile +) { } diff --git a/src/main/java/com/postgraduate/domain/user/application/mapper/UserMapper.java b/src/main/java/com/postgraduate/domain/user/application/mapper/UserMapper.java index ed2ce5aa..cdff2b68 100644 --- a/src/main/java/com/postgraduate/domain/user/application/mapper/UserMapper.java +++ b/src/main/java/com/postgraduate/domain/user/application/mapper/UserMapper.java @@ -10,26 +10,26 @@ public class UserMapper { public static UserMyPageResponse mapToMyPageInfo(User user) { - return UserMyPageResponse.builder() - .nickName(user.getNickName()) - .profile(user.getProfile()) - .build(); + return new UserMyPageResponse( + user.getNickName(), + user.getProfile() + ); } public static UserInfoResponse mapToInfo(User user) { - return UserInfoResponse.builder() - .profile(user.getProfile()) - .nickName(user.getNickName()) - .phoneNumber(user.getPhoneNumber()) - .build(); + return new UserInfoResponse( + user.getProfile(), + user.getNickName(), + user.getPhoneNumber() + ); } public static User mapToUser(SignUpRequest request) { return User.builder() - .socialId(request.getSocialId()) - .nickName(request.getNickName()) - .phoneNumber(request.getPhoneNumber()) - .marketingReceive(request.getMarketingReceive()) + .socialId(request.socialId()) + .nickName(request.nickName()) + .phoneNumber(request.phoneNumber()) + .marketingReceive(request.marketingReceive()) .build(); } diff --git a/src/main/java/com/postgraduate/domain/user/presentation/UserController.java b/src/main/java/com/postgraduate/domain/user/presentation/UserController.java index e657465e..5d660c86 100644 --- a/src/main/java/com/postgraduate/domain/user/presentation/UserController.java +++ b/src/main/java/com/postgraduate/domain/user/presentation/UserController.java @@ -10,6 +10,7 @@ import com.postgraduate.global.dto.ResponseDto; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; +import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import org.springframework.security.core.annotation.AuthenticationPrincipal; import org.springframework.web.bind.annotation.*; @@ -27,28 +28,29 @@ public class UserController { private final UserManageUseCase manageUseCase; @GetMapping("/me") - @Operation(summary = "사용자 마이페이지 정보 조회", description = "닉네임, 프로필") + @Operation(summary = "사용자 마이페이지 정보 조회 | 토큰 필요", description = "닉네임, 프로필") public ResponseDto getUserInfo(@AuthenticationPrincipal User user) { UserMyPageResponse userInfo = myPageUseCase.getUserInfo(user); return ResponseDto.create(USER_FIND.getCode(), GET_USER_INFO.getMessage(), userInfo); } @GetMapping("/me/info") - @Operation(summary = "대학생 마이페이지 정보 수정 화면 기존 정보", description = "프로필사진, 닉네임, 번호") + @Operation(summary = "대학생 마이페이지 정보 수정 화면 기존 정보 | 토큰 필요", description = "프로필사진, 닉네임, 번호") public ResponseDto getOriginUserInfo(@AuthenticationPrincipal User user) { UserInfoResponse originInfo = myPageUseCase.getUserOriginInfo(user); return ResponseDto.create(USER_FIND.getCode(), GET_USER_INFO.getMessage(), originInfo); } @PatchMapping("/me/info") - @Operation(summary = "대학생 마이페이지 정보 수정", description = "프로필사진, 닉네임, 번호") - public ResponseDto updateInfo(@AuthenticationPrincipal User user, @RequestBody UserInfoRequest userInfoRequest) { + @Operation(summary = "대학생 마이페이지 정보 수정 | 토큰 필요", description = "프로필사진, 닉네임, 번호") + public ResponseDto updateInfo(@AuthenticationPrincipal User user, + @RequestBody @Valid UserInfoRequest userInfoRequest) { manageUseCase.updateInfo(user, userInfoRequest); return ResponseDto.create(USER_UPDATE.getCode(), UPDATE_USER_INFO.getMessage()); } @GetMapping("/me/role") - @Operation(summary = "선배 전환시 가능 여부 확인", description = "true-가능, false-불가능") + @Operation(summary = "선배 전환시 가능 여부 확인 | 토큰 필요", description = "true-가능, false-불가능") public ResponseDto checkRole(@AuthenticationPrincipal User user) { UserPossibleResponse possibleResponse = myPageUseCase.checkSenior(user); return ResponseDto.create(USER_FIND.getCode(), GET_SENIOR_CHECK.getMessage(), possibleResponse); diff --git a/src/main/java/com/postgraduate/domain/wish/application/mapper/WishMapper.java b/src/main/java/com/postgraduate/domain/wish/application/mapper/WishMapper.java index d0e3cf9f..44970e7f 100644 --- a/src/main/java/com/postgraduate/domain/wish/application/mapper/WishMapper.java +++ b/src/main/java/com/postgraduate/domain/wish/application/mapper/WishMapper.java @@ -8,9 +8,9 @@ public class WishMapper { public static Wish mapToWish(User user, SignUpRequest request) { return Wish.builder() .user(user) - .major(request.getMajor()) - .field(request.getField()) - .matchingReceive(request.getMatchingReceive()) + .major(request.major()) + .field(request.field()) + .matchingReceive(request.matchingReceive()) .build(); } }