diff --git a/src/main/java/space/space_spring/controller/SpaceController.java b/src/main/java/space/space_spring/controller/SpaceController.java index f6cee180..de2994f6 100644 --- a/src/main/java/space/space_spring/controller/SpaceController.java +++ b/src/main/java/space/space_spring/controller/SpaceController.java @@ -8,12 +8,14 @@ import org.springframework.web.multipart.MultipartFile; import space.space_spring.argument_resolver.jwtLogin.JwtLoginAuth; import space.space_spring.dto.space.GetSpaceJoinDto; +import space.space_spring.dto.space.PostSpaceJoinDto; import space.space_spring.dto.space.response.GetUserInfoBySpaceResponse; import space.space_spring.dto.space.request.PostSpaceCreateRequest; import space.space_spring.dto.userSpace.GetUserProfileInSpaceDto; import space.space_spring.dto.userSpace.PutUserProfileInSpaceDto; import space.space_spring.entity.UserSpace; +import space.space_spring.exception.CustomException; import space.space_spring.exception.MultipartFileException; import space.space_spring.exception.SpaceException; import space.space_spring.response.BaseResponse; @@ -127,8 +129,6 @@ private void validateIsUserInSpace(Long userId, Long spaceId) { /** * 스페이스 별 유저 프로필 정보 수정 - * or - * 유저의 스페이스 가입 처리 */ @PutMapping("/{spaceId}/member-profile") public BaseResponse updateUserProfileInSpace(@JwtLoginAuth Long userId, @PathVariable Long spaceId, @Validated @ModelAttribute PutUserProfileInSpaceDto.Request request, BindingResult bindingResult) throws IOException { @@ -160,4 +160,30 @@ private String processUserProfileImage(MultipartFile userProfileImg) throws IOEx return s3Uploader.upload(userProfileImg, userProfileImgDirName); } + /** + * 유저의 스페이스 가입 처리 + */ + @PostMapping("/{spaceId}/join") + BaseResponse joinUserToSpace(@JwtLoginAuth Long userId, @PathVariable Long spaceId, @Validated @ModelAttribute PostSpaceJoinDto.Request request, BindingResult bindingResult) throws IOException { + if (bindingResult.hasErrors()) { + throw new CustomException(INVALID_SPACE_JOIN_REQUEST, getErrorMessage(bindingResult)); + } + + // TODO 1. 유저가 스페이스에 가입되어 있는지 검증 + validateIsUserAlreadySpaceMember(userId, spaceId); + + // TODO 2. 유저 프로필 썸네일을 s3에 upload + String userProfileImgUrl = processUserProfileImage(request.getUserProfileImg()); + + // TODO 3. 유저의 스페이스 가입 처리 + PostSpaceJoinDto postSpaceJoinDto = new PostSpaceJoinDto( + userProfileImgUrl, + request.getUserName(), + request.getUserProfileMsg() + ); + + spaceService.createUserSpace(userId, spaceId, postSpaceJoinDto); + + return new BaseResponse<>("유저의 스페이스 가입 처리 성공"); + } } diff --git a/src/main/java/space/space_spring/response/status/BaseExceptionResponseStatus.java b/src/main/java/space/space_spring/response/status/BaseExceptionResponseStatus.java index 5cd3c0f9..0eb5b415 100644 --- a/src/main/java/space/space_spring/response/status/BaseExceptionResponseStatus.java +++ b/src/main/java/space/space_spring/response/status/BaseExceptionResponseStatus.java @@ -55,7 +55,7 @@ public enum BaseExceptionResponseStatus implements ResponseStatus { INVALID_SPACE_CREATE(6000, HttpStatus.BAD_REQUEST, "스페이스 생성 요청에서 잘못된 값이 존재합니다."), SPACE_NOT_FOUND(6001, HttpStatus.BAD_REQUEST, "존재하지 않는 스페이스입니다."), INVALID_USER_SPACE_PROFILE(6002, HttpStatus.BAD_REQUEST, "스페이스 별 유저 프로필 정보 수정 요청에서 잘못된 값이 존재합니다."), - baab(6003, HttpStatus.BAD_REQUEST, "존재하지 않는 회원입니다."), + INVALID_SPACE_JOIN_REQUEST(6003, HttpStatus.BAD_REQUEST, "스페이스 가입 요청에서 잘못된 값이 존재합니다."), nff(6004, HttpStatus.BAD_REQUEST, "비밀번호가 일치하지 않습니다."), gnf(6005, HttpStatus.BAD_REQUEST, "잘못된 회원 status 값입니다."), fb(6006, HttpStatus.BAD_REQUEST, "존재하지 않는 이메일입니다."),