Skip to content

Commit

Permalink
[refactor]: Refactor Member Basic Inform Controller
Browse files Browse the repository at this point in the history
  • Loading branch information
oznchex committed Sep 22, 2024
1 parent 2c74fcf commit 7e40e17
Show file tree
Hide file tree
Showing 33 changed files with 255 additions and 311 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public enum AuthErrorCode implements BaseErrorCode {
INVALID_TOKEN(UNAUTHORIZED, "AUTH_401_2", "유효하지 않은 AccessToken입니다. 재로그인 해주세요"),
REFRESH_TOKEN_EXPIRED(FORBIDDEN, "AUTH_403_1", "RefreshToken 인증 시간이 만료되었습니다. 재로그인 해주세요."),
ACCESS_TOKEN_NOT_EXIST(FORBIDDEN, "AUTH_403_2", "올바른 AccessToken을 넣어주세요.");

private final Integer status;
private final String code;
private final String reason;
Expand Down
11 changes: 0 additions & 11 deletions src/main/java/liaison/linkit/global/config/CorsConfig.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
package liaison.linkit.global.config;

import liaison.linkit.matching.MatchingAccessInterceptor;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpHeaders;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
Expand All @@ -26,12 +23,4 @@ public void addCorsMappings(final CorsRegistry registry) {
.exposedHeaders(HttpHeaders.LOCATION);
WebMvcConfigurer.super.addCorsMappings(registry);
}

@Autowired
private MatchingAccessInterceptor matchingAccessInterceptor;

@Override
public void addInterceptors(final InterceptorRegistry registry) {
registry.addInterceptor(matchingAccessInterceptor).addPathPatterns("/matching/**");
}
}

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package liaison.linkit.matching.presentation;

import static org.springframework.http.HttpStatus.CREATED;
import static org.springframework.http.HttpStatus.NO_CONTENT;

import jakarta.mail.MessagingException;
import jakarta.validation.Valid;
import java.util.List;
import liaison.linkit.auth.Auth;
import liaison.linkit.auth.MemberOnly;
import liaison.linkit.auth.domain.Accessor;
import liaison.linkit.matching.CheckMatchingToPrivateProfileAccess;
import liaison.linkit.matching.CheckMatchingToTeamProfileAccess;
import liaison.linkit.matching.dto.request.AllowMatchingRequest;
import liaison.linkit.matching.dto.request.MatchingCreateRequest;
import liaison.linkit.matching.dto.response.ReceivedMatchingResponse;
Expand All @@ -23,12 +25,13 @@
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import java.util.List;

import static org.springframework.http.HttpStatus.CREATED;
import static org.springframework.http.HttpStatus.NO_CONTENT;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@RequiredArgsConstructor
Expand All @@ -46,7 +49,6 @@ public class MatchingController {
// 이메일 발송 자동화 추가 필요
@PostMapping("/private/profile/matching/private/{profileId}")
@MemberOnly
@CheckMatchingToPrivateProfileAccess
public ResponseEntity<Void> createPrivateProfileMatchingToPrivate(
@Auth final Accessor accessor,
@PathVariable final Long profileId,
Expand All @@ -61,7 +63,6 @@ public ResponseEntity<Void> createPrivateProfileMatchingToPrivate(
// 이메일 발송 자동화 추가 필요
@PostMapping("/team/profile/matching/private/{profileId}")
@MemberOnly
@CheckMatchingToPrivateProfileAccess
public ResponseEntity<Void> createTeamProfileMatchingToPrivate(
@Auth final Accessor accessor,
@PathVariable final Long profileId,
Expand All @@ -75,7 +76,6 @@ public ResponseEntity<Void> createTeamProfileMatchingToPrivate(
// 이메일 발송 자동화 추가 필요
@PostMapping("/team/profile/matching/team/{teamMemberAnnouncementId}")
@MemberOnly
@CheckMatchingToTeamProfileAccess
public ResponseEntity<Void> createTeamProfileMatchingToTeam(
@Auth final Accessor accessor,
@PathVariable final Long teamMemberAnnouncementId,
Expand All @@ -89,7 +89,6 @@ public ResponseEntity<Void> createTeamProfileMatchingToTeam(
// 이메일 발송 자동화 추가 필요
@PostMapping("/private/profile/matching/team/{teamMemberAnnouncementId}")
@MemberOnly
@CheckMatchingToTeamProfileAccess
public ResponseEntity<Void> createPrivateProfileMatchingToTeam(
@Auth final Accessor accessor,
@PathVariable final Long teamMemberAnnouncementId,
Expand Down Expand Up @@ -273,7 +272,6 @@ public ResponseEntity<SuccessContactResponse> getTeamSuccessContactResponse(
return ResponseEntity.status(HttpStatus.OK).body(successContactResponse);
}


// 내가 보낸 매칭을 삭제한다. -> 발신자의 입장에서 삭제
// 성사된 매칭을 삭제한다 -> 발신자 또는 수신자의 입장에서 삭제

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
package liaison.linkit.member.business;

import liaison.linkit.common.annotation.Mapper;
import liaison.linkit.member.domain.Member;
import liaison.linkit.member.domain.MemberBasicInform;
import liaison.linkit.member.presentation.dto.request.memberBasicInform.MemberBasicInformRequestDTO.memberBasicInformRequest;
import liaison.linkit.member.presentation.dto.response.MemberBasicInformResponseDTO;
import liaison.linkit.member.presentation.dto.response.MemberBasicInformResponseDTO.RequestMemberBasicInform;

@Mapper
public class MemberBasicInformMapper {

// request -> 회원 기본 정보 객체로 전환
public MemberBasicInform toMemberBasicInform(final Member member, final memberBasicInformRequest request) {
return MemberBasicInform.builder()
.member(member)
.memberName(request.getMemberName())
.contact(request.getContact())
.serviceUseAgree(true)
.privateInformAgree(true)
.ageCheck(true)
.marketingAgree(request.isMarketingAgree())
.build();
}

public RequestMemberBasicInform toRequestMemberBasicInform(final MemberBasicInform memberBasicInform) {
return RequestMemberBasicInform.builder()
.memberName(memberBasicInform.getMemberName())
.contact(memberBasicInform.getContact())
.marketingAgree(memberBasicInform.isMarketingAgree())
.build();
}


public MemberBasicInformResponseDTO.MemberBasicInformDetail toMemberBasicInformDetail(
final MemberBasicInform memberBasicInform,
final String email
) {
return MemberBasicInformResponseDTO.MemberBasicInformDetail.builder()
.memberBasicInformId(memberBasicInform.getId())
.memberName(memberBasicInform.getMemberName())
.contact(memberBasicInform.getContact())
.email(email)
.marketingAgree(memberBasicInform.isMarketingAgree())
.build();
}
}
64 changes: 18 additions & 46 deletions src/main/java/liaison/linkit/member/business/MemberService.java
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,17 @@

import liaison.linkit.member.domain.Member;
import liaison.linkit.member.domain.MemberBasicInform;
import liaison.linkit.member.dto.request.memberBasicInform.MemberBasicInformCreateRequest;
import liaison.linkit.member.dto.request.memberBasicInform.MemberBasicInformUpdateRequest;
import liaison.linkit.member.dto.response.MemberBasicInformResponse;
import liaison.linkit.member.presentation.dto.request.memberBasicInform.MemberBasicInformRequestDTO;
import liaison.linkit.member.presentation.dto.request.memberBasicInform.MemberBasicInformRequestDTO.memberBasicInformRequest;
import liaison.linkit.member.presentation.dto.response.MemberBasicInformResponseDTO;
import liaison.linkit.member.implement.MemberBasicInformCommandAdapter;
import liaison.linkit.member.implement.MemberBasicInformQueryAdapter;
import liaison.linkit.member.implement.MemberQueryAdapter;
import liaison.linkit.member.presentation.dto.response.MemberBasicInformResponseDTO.RequestMemberBasicInform;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.server.ResponseStatusException;

// 소셜로그인 이후 기본 정보 기입 플로우부터
@Service
Expand All @@ -23,60 +23,32 @@ public class MemberService {
private final MemberQueryAdapter memberQueryAdapter;
private final MemberBasicInformQueryAdapter memberBasicInformQueryAdapter;
private final MemberBasicInformCommandAdapter memberBasicInformCommandAdapter;
private final MemberBasicInformMapper memberBasicInformMapper;

// 멤버 아이디로 회원 기본 정보의 유효성을 검증하는 로직
public void validateMemberBasicInformByMember(final Long memberId) {
memberBasicInformQueryAdapter.existsByMemberId(memberId);
}

// 회원 기본 정보 저장 메서드
public void save(
final Long memberId, final MemberBasicInformCreateRequest memberBasicInformCreateRequest
) throws ResponseStatusException {

// 회원 기본 정보 생성 메서드 (CREATE)
public RequestMemberBasicInform save(final Long memberId, final memberBasicInformRequest request) {
final Member member = memberQueryAdapter.findById(memberId);

// dto -> 객체
final MemberBasicInform newBasicMemberBasicInform = new MemberBasicInform(
memberBasicInformCreateRequest.getMemberName(),
memberBasicInformCreateRequest.getContact(),
memberBasicInformCreateRequest.isMarketingAgree(),
member
);

member.changeIsMemberBasicInform(true);

// 기본 정보 입력 사용자로부터 재요청
if (memberBasicInformQueryAdapter.existsByMemberId(memberId)) {
final MemberBasicInform savedMemberBasicInform = memberBasicInformQueryAdapter.findByMemberId(memberId);
savedMemberBasicInform.update(newBasicMemberBasicInform);
} else {
memberBasicInformCommandAdapter.save(newBasicMemberBasicInform);
}
final MemberBasicInform savedBasicMemberBasicInform = memberBasicInformCommandAdapter.save(memberBasicInformMapper.toMemberBasicInform(member, request));
member.existIsMemberBasicInform(true);
return memberBasicInformMapper.toRequestMemberBasicInform(savedBasicMemberBasicInform);
}

// (해당 회원의) 회원 기본 정보를 조회하는 메서드
// 회원 기본 정보 조회 (READ)
@Transactional(readOnly = true)
public MemberBasicInformResponse getPersonalMemberBasicInform(final Long memberId) {
public MemberBasicInformResponseDTO.MemberBasicInformDetail getPersonalMemberBasicInform(final Long memberId) {
final MemberBasicInform memberBasicInform = memberBasicInformQueryAdapter.findByMemberId(memberId);
return MemberBasicInformResponse.personalMemberBasicInform(memberBasicInform);
final String email = memberQueryAdapter.findEmailById(memberId);
return memberBasicInformMapper.toMemberBasicInformDetail(memberBasicInform, email);
}

public void update(
final Long memberId,
final MemberBasicInformUpdateRequest memberBasicInformUpdateRequest
) {
// 회원 기본 정보 수정 (UPDATE)
public RequestMemberBasicInform update(final Long memberId, final MemberBasicInformRequestDTO.memberBasicInformRequest request) {
final Member member = memberQueryAdapter.findById(memberId);

final MemberBasicInform updateMemberBasicInform = new MemberBasicInform(
memberId,
memberBasicInformUpdateRequest.getMemberName(),
memberBasicInformUpdateRequest.getContact(),
memberBasicInformUpdateRequest.isMarketingAgree(),
member
);

memberBasicInformCommandAdapter.delete(member.getMemberBasicInform());
memberBasicInformCommandAdapter.save(updateMemberBasicInform);
final MemberBasicInform updatedMemberBasicInform = memberBasicInformCommandAdapter.update(memberId, request);
return memberBasicInformMapper.toRequestMemberBasicInform(updatedMemberBasicInform);
}
}
4 changes: 2 additions & 2 deletions src/main/java/liaison/linkit/member/domain/Member.java
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@
@NoArgsConstructor(access = PROTECTED)
@SQLRestriction("member_state = 'ACTIVE'")
public class Member extends BaseDateTimeEntity {

@Id
@GeneratedValue(strategy = IDENTITY)
private Long id;
Expand Down Expand Up @@ -84,7 +84,7 @@ public Member(
this(null, socialLoginId, email, memberBasicInform);
}

public void changeIsMemberBasicInform(final Boolean existMemberBasicInform) {
public void existIsMemberBasicInform(final Boolean existMemberBasicInform) {
this.existMemberBasicInform = existMemberBasicInform;
}

Expand Down
Loading

0 comments on commit 7e40e17

Please sign in to comment.