Skip to content

Commit

Permalink
🔨 fix(user): 유저 가입 url 수정 #20
Browse files Browse the repository at this point in the history
  • Loading branch information
gengminy committed Oct 6, 2022
1 parent 1811a29 commit 8f38dba
Show file tree
Hide file tree
Showing 13 changed files with 225 additions and 107 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ public class MemberController {
private final RecommendService recommendService;
private final JwtTokenProvider jwtTokenService;


@GetMapping
@ApiOperation(value = "유저 자신의 모든 정보를 가져온다 (AccessToken)")
public CommonApiResponse<MemberCommonResponseDTO> getMyInformation(
Expand All @@ -38,20 +39,6 @@ public CommonApiResponse<MemberCommonResponseDTO> getMyInformation(
return CommonApiResponse.of(MemberCommonResponseDTO.of(member));
}

// @PostMapping("/join")
// @ApiOperation(value = "공통 유저를 기본 정보로 회원가입 시킨다 (registerToken 필요)")
// public CommonApiResponse<MemberCommonResponseDTO> joinCommonMember(
// HttpServletRequest request,
// @Valid @RequestBody MemberCommonJoinRequestDTO dto)
// {
// String registerToken = request.getHeader("Authorization");
// if (StringUtils.isBlank(registerToken) || !jwtTokenService.validateToken(registerToken)) {
// throw new UnauthorizedException(ErrorCode.NO_TOKEN);
// }
//
// final MemberCommonResponseDTO res = memberService.createCommonMember(dto);
// return CommonApiResponse.of(res);
// }

@GetMapping("/detail")
@ApiOperation(value = "회원가입 세부 정보를 가져온다 (AccessToken 필요)")
Expand All @@ -62,6 +49,26 @@ public CommonApiResponse<MemberDetailResponseDTO> getMemberDetail(
return CommonApiResponse.of(res);
}


@PostMapping("/join")
@ApiOperation(value = "유저를 공통 정보로 가입시킨다 (RegisterToken)")
public CommonApiResponse<MemberCommonJoinResponseDTO> joinCommonMember(
HttpServletRequest request,
@Valid @RequestBody MemberCommonJoinRequestDTO dto
) {
String phone = jwtTokenService.parsePhoneByRegisterToken(request);
return CommonApiResponse.of(memberService.joinCommonMember(phone, dto));
}

@PatchMapping("/common")
@ApiOperation(value = "유저를 공통 정보를 수정한다 (AccessToken)")
public CommonApiResponse<MemberCommonJoinResponseDTO> updateCommonMember(
@Valid @RequestBody MemberUpdateCommonRequestDTO dto,
@ApiIgnore @AuthMember Member member
) {
return CommonApiResponse.of(memberService.updateCommonMember(member, dto));
}

@PatchMapping("/job")
@ApiOperation(value = "직업 정보를 업데이트 한다 (AccessToken)")
public CommonApiResponse<MemberCommonResponseDTO> setMemberJob(
Expand All @@ -81,20 +88,6 @@ public CommonApiResponse<MemberCommonResponseDTO> setMemberJob(
}


@PostMapping("/join")
@ApiOperation(value = "유저를 공통 정보로 가입시킨다 (RegisterToken)")
public CommonApiResponse<MemberDetailResponseDTO> join(
HttpServletRequest request,
@Valid @RequestBody MemberDetailJoinRequestDTO dto
) {
return null;
// //로그인 상태가 아닌 경우 401
// if (member == null) {
// throw new UnauthorizedException(ErrorCode.UNAUTHORIZED_USER);
// }
// final MemberDetailResponseDTO res = memberService.createDetail(member, dto);
// return CommonApiResponse.of(res);
}


@PostMapping("/join/detail")
Expand Down Expand Up @@ -124,7 +117,7 @@ public CommonApiResponse<MemberCommonResponseDTO> createRecommend(
@ApiIgnore @AuthMember Member member
) {
//로그인 상태가 아닌 경우 401
memberService.validateLoggedIn(member);
memberService.validateToken(member);
return CommonApiResponse.of(null);
}

Expand All @@ -133,7 +126,7 @@ public CommonApiResponse<MemberCommonResponseDTO> createRecommend(
* @// TODO: 2022/10/05 직업 정보가 없는 사람이 가입할 때 직업 정보 입력해야 하는 처리 필요
* */
@PatchMapping("/recommend/{uuid}/accept")
@ApiOperation(value = "요청받은 uuid 추천사에 자신을 추천인으로 등록한다 (AccessToken)")
@ApiOperation(value = "요청받은 uuid 추천사에 자신을 추천인으로 등록한다 (삭제예정)")
public CommonApiResponse<RecommendResponseDTO> updateRecommendByUuid(
@PathVariable("uuid") String uuid,
@Valid @RequestBody RecommendMemberAcceptAndUpdateRequestDTO dto,
Expand All @@ -151,7 +144,7 @@ public CommonApiResponse<RecommendResponseDTO> updateRecommendByUuid(
* 직업 인증으로 추천인을 가입시킨다
* */
@PatchMapping("/recommend/{uuid}/accept/job")
@ApiOperation(value = "요청받은 uuid 추천사에 자신을 추천인으로 등록하며 직업 정보를 업데이트 한다 (AccessToken)")
@ApiOperation(value = "요청받은 uuid 추천사에 자신을 추천인으로 등록하며 직업 정보를 업데이트 한다 (삭제예정)")
public CommonApiResponse<RecommendResponseDTO> updateRecommendByUuidAndJob(
@PathVariable("uuid") String uuid,
@Valid @RequestBody RecommendMemberAcceptAndUpdateRequestDTO dto,
Expand All @@ -168,7 +161,7 @@ public CommonApiResponse<RecommendResponseDTO> updateRecommendByUuidAndJob(
* 학교 인증으로 추천인을 가입시킨다
* */
@PatchMapping("/recommend/{uuid}/accept/edu")
@ApiOperation(value = "요청받은 uuid 추천사에 자신을 추천인으로 등록하며 학교 정보를 업데이트 한다 (AccessToken)")
@ApiOperation(value = "요청받은 uuid 추천사에 자신을 추천인으로 등록하며 학교 정보를 업데이트 한다 (삭제예정)")
public CommonApiResponse<RecommendResponseDTO> updateRecommendByUuidAndEdu(
@PathVariable("uuid") String uuid,
@Valid @RequestBody RecommendMemberAcceptAndUpdateRequestDTO dto,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,19 +38,38 @@ public List<MemberCommonResponseDTO> findAll() {
}


public MemberCommonResponseDTO createCommonMember(MemberCommonJoinRequestDTO dto) {

public MemberCommonJoinResponseDTO joinCommonMember(String phone, MemberCommonJoinRequestDTO dto) {
//이미 존재하는 유저일 경우 400
Optional<Member> checkMember = memberRepository.findByPhone(dto.getPhone());
if(!checkMember.isEmpty()) {
Optional<Member> checkMember = memberRepository.findByPhone(phone);
if(checkMember.isPresent()) {
throw new BadRequestException(ErrorCode.USER_ALREADY_EXIST);
}

Member member = MemberCommonJoinRequestDTO.toCommonMember(dto);
Member member = MemberCommonJoinRequestDTO.toCommonMember(phone, dto);
memberRepository.save(member);

MemberCommonResponseDTO res = MemberCommonResponseDTO.of(member);
return res;
TokenResponseDTO tokenResponseDTO
= jwtTokenProvider.generateToken(new JwtDTO(phone, "ROLE_USER"));

return MemberCommonJoinResponseDTO.of(member, tokenResponseDTO);
}

public MemberCommonJoinResponseDTO updateCommonMember(Member authMember, MemberUpdateCommonRequestDTO dto) {
//없는 유저면 404
final String phone = authMember.getPhone();
Optional<Member> checkMember = memberRepository.findByPhone(phone);
if(checkMember.isEmpty()) {
throw new NotFoundException(ErrorCode.USER_NOT_FOUND);
}

Member member = checkMember.get();
member.updateCommon(dto);
memberRepository.save(member);

TokenResponseDTO tokenResponseDTO
= jwtTokenProvider.generateToken(new JwtDTO(phone, "ROLE_USER"));

return MemberCommonJoinResponseDTO.of(member);
}

public TokenResponseDTO login(String phone) {
Expand Down Expand Up @@ -117,14 +136,14 @@ public MemberCommonResponseDTO updateEdu(Member authMember, MemberEduUpdateReque
}


public void validateLoggedIn(Member authMember) {
public void validateToken(Member authMember) {
if (authMember == null) {
throw new UnauthorizedException(ErrorCode.UNAUTHORIZED_USER);
}
}

public void validateFormalMember(Member authMember) {
validateLoggedIn(authMember);
validateToken(authMember);
if (authMember.getDetail() == null) {
throw new UnauthorizedException(ErrorCode.FORBIDDEN_USER);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
import javax.validation.constraints.*;

/**
* 추천인 및 추천 받는 사람 공통 가입을 위한 Dto입니다
* 임시회원의 가입을 위한 Dto입니다
* @author gengminy 220924
* */
@AllArgsConstructor
Expand All @@ -18,11 +18,6 @@
@Builder
@ToString
public class MemberCommonJoinRequestDTO {
@ApiModelProperty(example = "01010001000")
@NotBlank(message = "전화번호를 입력해주세요")
@Pattern(regexp = "[0-9]{10,11}", message = "하이픈 없는 10~11자리 숫자를 입력해주세요")
private String phone;

@ApiModelProperty(example = "닉")
@NotBlank(message = "이름을 입력해주세요")
private String name;
Expand Down Expand Up @@ -54,40 +49,9 @@ public class MemberCommonJoinRequestDTO {
@NotNull(message = "마케팅 동의 여부가 필요합니다")
private boolean acceptsMarketing;

@ApiModelProperty(example = "카카오")
@NotBlank(message = "직장명을 입력해주세요")
private String jobName;

@ApiModelProperty(example = "개발자")
@NotBlank(message = "직장 부서를 입력해주세요")
private String jobPart;

@ApiModelProperty(example = "판교")
@NotBlank(message = "직장 위치를 입력해주세요")
private String jobLocation;

@ApiModelProperty(example = "인증 사진 링크")
@NotBlank(message = "인증 사진을 업로드 해주세요")
private String jobPicture;
@ApiModelProperty(example = "서울")
@NotBlank(message = "학교명을 입력해주세요")
private String eduName;

@ApiModelProperty(example = "컴퓨터공학과")
@NotBlank(message = "전공을 입력해주세요")
private String eduMajor;

@ApiModelProperty(example = "대학교")
@NotBlank(message = "최종학력을 입력해주세요")
private String eduLevel;

@ApiModelProperty(example = "인증 사진 링크")
@NotBlank(message = "인증 사진을 업로드 해주세요")
private String eduPicture;

public static Member toCommonMember(MemberCommonJoinRequestDTO dto) {
public static Member toCommonMember(String phone, MemberCommonJoinRequestDTO dto) {
Member member = Member.builder()
.phone(dto.phone)
.phone(phone)
.name(dto.name)
.gender(dto.gender)
.age(dto.age)
Expand All @@ -96,14 +60,6 @@ public static Member toCommonMember(MemberCommonJoinRequestDTO dto) {
.acceptsReligion(dto.acceptsReligion)
.acceptsLocation(dto.acceptsLocation)
.acceptsMarketing(dto.acceptsMarketing)
.jobName(dto.jobName)
.jobPart(dto.jobPart)
.jobLocation(dto.jobLocation)
.jobPicture(dto.jobPicture)
.eduName(dto.eduName)
.eduMajor(dto.eduMajor)
.eduLevel(dto.eduLevel)
.eduPicture(dto.eduPicture)
.build();

return member;
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
package com.tikitaka.naechinso.domain.member.dto;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.tikitaka.naechinso.domain.member.constant.Gender;
import com.tikitaka.naechinso.domain.member.entity.Member;
import com.tikitaka.naechinso.global.annotation.Enum;
import com.tikitaka.naechinso.global.common.response.TokenResponseDTO;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;

import javax.validation.constraints.*;

/**
* 임시회원의 가입 정보를 리턴하는 DTO 입니다
* @author gengminy 221006
* */
@AllArgsConstructor
@NoArgsConstructor
@Getter
@Builder
@ToString
@JsonInclude(JsonInclude.Include.NON_NULL) //NULL 필드 가림
public class MemberCommonJoinResponseDTO {

private String phone;
private String name;
private Gender gender;
private int age;

private String accessToken;
private String refreshToken;

public static MemberCommonJoinResponseDTO of(Member member, TokenResponseDTO tokenDTO) {
return MemberCommonJoinResponseDTO.builder()
.phone(member.getPhone())
.name(member.getName())
.gender(member.getGender())
.age(member.getAge())
.accessToken(tokenDTO.getAccessToken())
.refreshToken(tokenDTO.getRefreshToken())
.build();
}

public static MemberCommonJoinResponseDTO of(Member member) {
return MemberCommonJoinResponseDTO.builder()
.phone(member.getPhone())
.name(member.getName())
.gender(member.getGender())
.age(member.getAge())
.build();
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.tikitaka.naechinso.domain.member.dto;

import com.tikitaka.naechinso.domain.member.constant.Gender;
import com.tikitaka.naechinso.global.annotation.Enum;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;
import org.hibernate.validator.constraints.Length;
Expand All @@ -16,8 +18,20 @@
@Builder
@ToString
public class MemberDetailJoinRequestDTO {
//추천인 정보
//

@ApiModelProperty(example = "닉")
@NotBlank(message = "이름을 입력해주세요")
private String name;

@ApiModelProperty(example = "M")
@Enum(enumClass = Gender.class, message = "성별 입력이 올바르지 않습니다. M 또는 W가 필요합니다")
private Gender gender;

@ApiModelProperty(example = "25")
@Min(value = 25, message = "25-33세까지만 가입 가능합니다")
@Max(value = 33, message = "25-33세까지만 가입 가능합니다")
private int age;

@ApiModelProperty(example = "180")
@Positive(message = "키는 양수여야 합니다")
private int height;
Expand All @@ -36,7 +50,7 @@ public class MemberDetailJoinRequestDTO {
private String smoke;

@ApiModelProperty(example = "ESTJ")
@Length(max = 4, message = "올바를 MBTI 정보를 입력하세요")
@Length(max = 4, message = "올바른 MBTI 정보를 입력하세요")
private String mbti = "";

@NotBlank(message = "성격 정보를 입력해야 합니다")
Expand All @@ -54,13 +68,4 @@ public class MemberDetailJoinRequestDTO {
@NotBlank(message = "사진을 업로드해야 합니다")
private String picture;

@ApiModelProperty(example = "서울")
private String school;

@ApiModelProperty(example = "컴퓨터공학과")
private String major;

@ApiModelProperty(example = "대학교")
private String eduLevel;

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
package com.tikitaka.naechinso.domain.member.dto;

import com.tikitaka.naechinso.domain.member.constant.Gender;
import com.tikitaka.naechinso.global.annotation.Enum;
import io.swagger.annotations.ApiModelProperty;
import lombok.*;

import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank;

@AllArgsConstructor
@NoArgsConstructor
@Getter
@Builder
@ToString
public class MemberUpdateCommonRequestDTO {
@ApiModelProperty(example = "닉")
@NotBlank(message = "이름을 입력해주세요")
private String name;

@ApiModelProperty(example = "M")
@Enum(enumClass = Gender.class, message = "성별 입력이 올바르지 않습니다. M 또는 W가 필요합니다")
private Gender gender;

@ApiModelProperty(example = "25")
@Min(value = 25, message = "25-33세까지만 가입 가능합니다")
@Max(value = 33, message = "25-33세까지만 가입 가능합니다")
private int age;
}
Loading

0 comments on commit 8f38dba

Please sign in to comment.