Skip to content

Commit

Permalink
🚀 feat(user): 회원가입 dto 수정 및 url 변경 #20
Browse files Browse the repository at this point in the history
  • Loading branch information
gengminy committed Oct 3, 2022
1 parent 54be8d1 commit 8cf714f
Show file tree
Hide file tree
Showing 16 changed files with 224 additions and 134 deletions.
Original file line number Diff line number Diff line change
@@ -1,20 +1,18 @@
package com.tikitaka.naechinso.domain.member;

import com.tikitaka.naechinso.domain.member.dto.MemberCommonJoinRequestDto;
import com.tikitaka.naechinso.domain.member.dto.MemberCommonResponseDto;
import com.tikitaka.naechinso.domain.member.dto.MemberDetailJoinRequestDto;
import com.tikitaka.naechinso.domain.member.dto.MemberDetailResponseDto;
import com.tikitaka.naechinso.domain.member.dto.*;
import com.tikitaka.naechinso.domain.member.entity.Member;
import com.tikitaka.naechinso.domain.recommend.RecommendService;
import com.tikitaka.naechinso.domain.recommend.dto.RecommendMemberAcceptRequestDTO;
import com.tikitaka.naechinso.domain.recommend.dto.RecommendResponseDTO;
import com.tikitaka.naechinso.global.annotation.AuthMember;
import com.tikitaka.naechinso.global.config.CommonApiResponse;
import com.tikitaka.naechinso.global.config.security.jwt.JwtTokenProvider;
import com.tikitaka.naechinso.global.error.ErrorCode;
import com.tikitaka.naechinso.global.error.exception.UnauthorizedException;
import io.jsonwebtoken.Claims;
import io.swagger.annotations.ApiOperation;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.web.bind.annotation.*;
import springfox.documentation.annotations.ApiIgnore;

Expand All @@ -29,9 +27,10 @@
public class MemberController {

private final MemberService memberService;
private final RecommendService recommendService;
private final JwtTokenProvider jwtTokenService;

@GetMapping("/")
@GetMapping
@ApiOperation(value = "유저 자신의 모든 정보를 가져온다 (AccessToken 필요)")
public CommonApiResponse<MemberCommonResponseDto> getMyInformation(
HttpServletRequest request, @ApiIgnore @AuthMember Member member) {
Expand Down Expand Up @@ -71,7 +70,7 @@ public CommonApiResponse<MemberDetailResponseDto> getMemberDetail(
}

@PostMapping("/join")
@ApiOperation(value = "회원가입 세부 정보를 입력하여 최종 가입시킨다 (AccessToken 필요)")
@ApiOperation(value = "회원가입 세부 정보를 입력하여 최종 가입시킨다 (AccessToken)")
public CommonApiResponse<MemberDetailResponseDto> setMemberDetail(
@Valid @RequestBody MemberDetailJoinRequestDto dto,
@ApiIgnore @AuthMember Member member)
Expand All @@ -86,17 +85,40 @@ public CommonApiResponse<MemberDetailResponseDto> setMemberDetail(

//페이징 처리 추가할 예정
@GetMapping("/find")
@ApiOperation(value = "현재 가입한 모든 유저를 불러온다")
@ApiOperation(value = "[Admin]현재 가입한 모든 유저를 불러온다 (AccessToken)")
public CommonApiResponse<List<MemberCommonResponseDto>> getMyInformation() {
return CommonApiResponse.of(memberService.findAll());
}

@PostMapping("/recommend")
@ApiOperation(value = "다른 유저의 추천사를 작성한다")
public CommonApiResponse<MemberCommonResponseDto> createRecommend() {
@ApiOperation(value = "다른 유저의 추천사를 작성한다 (AccessToken)")
public CommonApiResponse<MemberCommonResponseDto> createRecommend(
@RequestBody RecommendMemberAcceptRequestDTO dto,
@ApiIgnore @AuthMember Member member)
{
//로그인 상태가 아닌 경우 401
if (member == null) {
throw new UnauthorizedException(ErrorCode.UNAUTHORIZED_USER);
}
return CommonApiResponse.of(null);
}


@PatchMapping("/recommend/{uuid}/accept")
@ApiOperation(value = "요청받은 uuid 추천사에 자신을 추천인으로 등록한다 (AccessToken)")
public CommonApiResponse<RecommendResponseDTO> updateRecommendByUuid(
@PathVariable("uuid") String uuid,
@Valid @RequestBody RecommendMemberAcceptRequestDTO dto,
@ApiIgnore @AuthMember Member member)
{
//로그인 상태가 아닌 경우 401
if (member == null) {
throw new UnauthorizedException(ErrorCode.UNAUTHORIZED_USER);
}
String phone = member.getPhone();
RecommendResponseDTO recommendResponseDTO = recommendService.updateRecommendMemberAccept(uuid, phone, dto);
return CommonApiResponse.of(recommendResponseDTO);
}
// @PostMapping("/login")


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,6 @@ public class MemberService {

private final MemberRepository memberRepository;
private final MemberDetailRepository memberDetailRepository;
private final AuthenticationManagerBuilder authenticationManagerBuilder;
private final JwtTokenProvider jwtTokenProvider;

public List<MemberCommonResponseDto> findAll() {
Expand Down Expand Up @@ -90,24 +89,14 @@ public MemberDetailResponseDto createDetail(Member authMember, MemberDetailJoinR
//영속성 유지를 위한 fetch
Member member = memberRepository.findById(authMember.getId())
.orElseThrow(() -> new NotFoundException(ErrorCode.USER_NOT_FOUND));

//detail 정보가 있으면 이미 가입한 회원
if (member.getDetail() != null) {
throw new BadRequestException(ErrorCode.USER_ALREADY_EXIST);
}

MemberDetail detail = MemberDetail.of(member, dto);
memberDetailRepository.save(detail);
return MemberDetailResponseDto.of(detail);
}

//
// public MemberCommonJoinResponseDto joinMemberWithDetail(MemberCommonJoinRequestDto dto) {
// //이미 존재하는 유저일 경우 400
// Optional<Member> checkMember = memberRepository.findByPhone(dto.getPhone());
// if(!checkMember.isEmpty()) {
// throw new BadRequestException(ErrorCode.USER_ALREADY_EXIST);
// }
//
// Member member = MemberCommonJoinRequestDto.toCommonMember(dto);
// memberRepository.save(member);
//
// MemberCommonJoinResponseDto res = MemberCommonJoinResponseDto.of(member);
// return res;
// }

}

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ public class RecommendController {
private final RecommendService recommendService;
private final JwtTokenProvider jwtTokenService;

@GetMapping("/")
@GetMapping
@ApiOperation(value = "내 추천사 정보를 가져온다 (AccessToken 필요)")
public CommonApiResponse<RecommendListResponseDTO> getRecommends(
@ApiIgnore @AuthMember Member member)
Expand All @@ -38,22 +38,21 @@ public CommonApiResponse<RecommendListResponseDTO> getRecommends(
return CommonApiResponse.of(recommendService.readRecommendList(member));
}

@PostMapping("/")
@PostMapping
@ApiOperation(value = "추천서를 작성한 후, 추천인을 회원가입 시킨다. (registerToken 필요)")
public CommonApiResponse<RecommendDTO> createRecommendNewSender(
public CommonApiResponse<RecommendResponseDTO> createRecommendNewSender(
HttpServletRequest request,
@Valid @RequestBody RecommendJoinRequestDTO dto)
{
String registerToken = request.getHeader("Authorization");
String phone = parseRegisterToken(registerToken);
String phone = jwtTokenService.parsePhoneByRegisterToken(request);

RecommendDTO recommendDTO = recommendService.createRecommendJoin(phone, dto);
return CommonApiResponse.of(recommendDTO);
RecommendResponseDTO recommendResponseDTO = recommendService.createRecommendJoin(phone, dto);
return CommonApiResponse.of(recommendResponseDTO);
}

@GetMapping("/find")
@ApiOperation(value = "[Admin]모든 추천사 정보를 가져온다 (AccessToken)")
public CommonApiResponse<List<RecommendDTO>> getAllRecommends(
public CommonApiResponse<List<RecommendResponseDTO>> getAllRecommends(
@ApiIgnore @AuthMember Member member)
{
if (member == null) {
Expand All @@ -64,14 +63,13 @@ public CommonApiResponse<List<RecommendDTO>> getAllRecommends(

@PostMapping("/request")
@ApiOperation(value = "다른 유저에게 추천서 작성을 요청한다 (registerToken 필요)")
public CommonApiResponse<RecommendDTO> createRecommendRequest(
public CommonApiResponse<RecommendResponseDTO> createRecommendRequest(
HttpServletRequest request,
@Valid @RequestBody RecommendRequestDTO dto)
{
String registerToken = request.getHeader("Authorization");
String phone = parseRegisterToken(registerToken);
RecommendDTO recommendDTO = recommendService.createRecommendRequest(phone, dto);
return CommonApiResponse.of(recommendDTO);
String phone = jwtTokenService.parsePhoneByRegisterToken(request);
RecommendResponseDTO recommendResponseDTO = recommendService.createRecommendRequest(phone, dto);
return CommonApiResponse.of(recommendResponseDTO);
}


Expand All @@ -83,38 +81,28 @@ public CommonApiResponse<RecommendDTO> createRecommendRequest(
//제일 아래에 있어야함
@GetMapping("/{uuid}")
@ApiOperation(value = "추천 요청받은 uuid 를 가진 추천사 정보를 가져온다 (Register / AccessToken 필요)")
public CommonApiResponse<RecommendDTO> getRecommendByUuid(
public CommonApiResponse<RecommendResponseDTO> getRecommendByUuid(
HttpServletRequest request,
@PathVariable("uuid") String uuid)
{
//토큰 장착 확인
String token = request.getHeader("Authorization");
String phone = parseRegisterToken(token);
String phone = jwtTokenService.parsePhoneByRegisterToken(request);

RecommendDTO recommendDTO = RecommendDTO.of(recommendService.findByUuid(uuid));
return CommonApiResponse.of(recommendDTO);
RecommendResponseDTO recommendResponseDTO = RecommendResponseDTO.of(recommendService.findByUuid(uuid));
return CommonApiResponse.of(recommendResponseDTO);
}

@PatchMapping("/{uuid}")
@ApiOperation(value = "요청받은 uuid 추천사에 자신을 추천인으로 등록한다 (Register / AccessToken 필요)")
public CommonApiResponse<RecommendDTO> getRecommendByUuid(
@PatchMapping("/{uuid}/accept")
@ApiOperation(value = "요청받은 uuid 추천사에 자신을 추천인으로 등록한다 (Register 필요)")
public CommonApiResponse<RecommendResponseDTO> updateRecommendByUuid(
HttpServletRequest request,
@PathVariable("uuid") String uuid,
@Valid @RequestBody RecommendAcceptRequestDTO dto)
{
//토큰 장착 확인
String token = request.getHeader("Authorization");
String phone = parseRegisterToken(token);
String phone = jwtTokenService.parsePhoneByRegisterToken(request);

RecommendDTO recommendDTO = recommendService.updateRecommendRequest(uuid, phone, dto);
return CommonApiResponse.of(recommendDTO);
RecommendResponseDTO recommendResponseDTO = recommendService.updateRecommendRequest(uuid, phone, dto);
return CommonApiResponse.of(recommendResponseDTO);
}

private String parseRegisterToken(String registerToken) {
if (StringUtils.isBlank(registerToken) || !jwtTokenService.validateToken(registerToken)) {
throw new UnauthorizedException(ErrorCode.NO_TOKEN);
}
return jwtTokenService.parseClaims(registerToken).getSubject();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,9 @@ public interface RecommendRepository extends JpaRepository<Recommend, Long> {
List<Recommend> findAllByIdNotNull();

Optional<Recommend> findByUuid(String uuid);
Optional<Recommend> findByUuidAndReceiverNotNull(String uuid);

Boolean existsByReceiverPhone(String phone);

Boolean existsByReceiverPhoneAndSenderNotNull(String phone);
}
Loading

0 comments on commit 8cf714f

Please sign in to comment.