Skip to content

Commit

Permalink
[hotfix] #185 request전용 검증 facade 로 역할 분리 후 변동사항 적용 진행
Browse files Browse the repository at this point in the history
  • Loading branch information
khyojun committed Jan 24, 2025
1 parent 40624ba commit 0cc5979
Show file tree
Hide file tree
Showing 3 changed files with 43 additions and 11 deletions.
14 changes: 3 additions & 11 deletions src/main/java/com/ggang/be/api/facade/SignupFacade.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,15 +4,18 @@
import com.ggang.be.api.exception.GongBaekException;
import com.ggang.be.api.lectureTimeSlot.service.LectureTimeSlotService;
import com.ggang.be.api.school.service.SchoolService;
import com.ggang.be.api.user.NicknameValidator;
import com.ggang.be.api.user.dto.SignupRequest;
import com.ggang.be.api.user.dto.SignupResponse;
import com.ggang.be.api.user.service.UserService;
import com.ggang.be.api.user.vo.TimeTableVo;
import com.ggang.be.domain.group.IntroductionValidator;
import com.ggang.be.domain.school.SchoolEntity;
import com.ggang.be.domain.timslot.lectureTimeSlot.vo.LectureTimeSlotVo;
import com.ggang.be.domain.user.UserEntity;
import com.ggang.be.domain.user.dto.SaveUserSignUp;
import com.ggang.be.global.jwt.JwtService;
import com.ggang.be.global.util.TimeValidator;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.annotation.Transactional;
Expand All @@ -34,9 +37,6 @@ public void duplicateCheckNickname(final String nickname) {

@Transactional
public SignupResponse signup(SignupRequest request) {

duplicateUserCheck(request);

SchoolEntity schoolEntityByName = schoolService.findSchoolEntityByName(request.schoolName());

SaveUserSignUp saveUserSignUp = SignupRequest.toSaveUserSignUp(request, schoolEntityByName);
Expand All @@ -52,14 +52,6 @@ public SignupResponse signup(SignupRequest request) {
return madeSignupResponse(userEntity);
}

private void duplicateUserCheck(SignupRequest request) {
try{
duplicateCheckNickname(request.nickname());
} catch (GongBaekException e) {
throw new GongBaekException(ResponseError.USERNAME_ALREADY_EXISTS);
}
}

private SignupResponse madeSignupResponse(final UserEntity userEntity) {
Long userId = userEntity.getId();
String accessToken = jwtService.createAccessToken(userId);
Expand Down
37 changes: 37 additions & 0 deletions src/main/java/com/ggang/be/api/facade/SignupRequestFacade.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.ggang.be.api.facade;

import com.ggang.be.api.common.ResponseError;
import com.ggang.be.api.exception.GongBaekException;
import com.ggang.be.api.user.NicknameValidator;
import com.ggang.be.api.user.dto.SignupRequest;
import com.ggang.be.api.user.service.UserService;
import com.ggang.be.domain.group.IntroductionValidator;
import com.ggang.be.global.annotation.Facade;
import com.ggang.be.global.util.TimeValidator;
import lombok.RequiredArgsConstructor;

@Facade
@RequiredArgsConstructor
public class SignupRequestFacade {

private final UserService userService;

public void validateSignupRequest(SignupRequest request) {
userService.duplicateCheckNickname(request.nickname());
IntroductionValidator.isIntroductionValid(request.introduction());
NicknameValidator.validate(request.nickname());
TimeValidator.hasDuplicateInfo(request.timeTable());
TimeValidator.isTimeVoValidTime(request.timeTable());

isValidSchoolGrade(request.schoolGrade());
TimeValidator.isYearAfterNow(request.enterYear());
}

private void isValidSchoolGrade(Integer schoolGrade) {
if (schoolGrade < 1 || schoolGrade > 4) {
throw new GongBaekException(ResponseError.BAD_REQUEST);
}
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import com.ggang.be.api.common.ResponseSuccess;
import com.ggang.be.api.exception.GongBaekException;
import com.ggang.be.api.facade.SignupFacade;
import com.ggang.be.api.facade.SignupRequestFacade;
import com.ggang.be.api.user.NicknameValidator;
import com.ggang.be.api.user.dto.SignupRequest;
import com.ggang.be.api.user.dto.SignupResponse;
Expand All @@ -28,6 +29,7 @@
public class UserController {
private final UserService userService;
private final SignupFacade signupFacade;
private final SignupRequestFacade signupRequestFacade;
private final JwtService jwtService;

private final static int INTRODUCTION_MIN_LENGTH = 20;
Expand All @@ -49,6 +51,7 @@ public ResponseEntity<ApiResponse<Void>> validateNickname(@RequestParam final St

@PostMapping("/user/signup")
public ResponseEntity<ApiResponse<SignupResponse>> signup(@RequestBody final SignupRequest request){
signupRequestFacade.validateSignupRequest(request);
return ResponseBuilder.created(signupFacade.signup(request));
}

Expand Down

0 comments on commit 0cc5979

Please sign in to comment.