Skip to content

Commit

Permalink
GETP-211 refactor: people 컴포넌트 포트-어댑터 아키텍쳐 적용 (#141)
Browse files Browse the repository at this point in the history
* GETP-211 refactor: people 컴포넌트의 api 모듈이 application 모듈의 in-port에 의존하도록 변경

* GETP-211 refactor: people 컴포넌트의 application 모듈이 out-port에 의존하도록 변경

* GETP-211 refactor: people 컴포넌트의 domain 모듈에서 JPA에 대한 의존성 제거

* GETP-211 rename: persistence.adapter.project.meeting.entity에서 persistence.adapter.project.meeting.model로 변경

* GETP-211 chore: MapStruct 라이브러리 버젼을 1.6.0으로 업데이트

* GETP-211 refactor: people 컴포넌트의 영속성 관련 기능을 persistence adapter로 분리

* GETP-211 fix: 프로젝트 의뢰 시 프로젝트 ID가 반환되지 않는 오류 수정

* GETP-211 fix: 프로젝트 지원 시 프로젝트 ID가 반환되지 않는 오류 수정
  • Loading branch information
scv1702 authored Sep 3, 2024
1 parent 6a23455 commit d93e89a
Show file tree
Hide file tree
Showing 137 changed files with 1,253 additions and 1,185 deletions.
4 changes: 2 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -70,8 +70,8 @@ dependencies {
implementation 'org.springframework.boot:spring-boot-starter-mail:3.2.1'

// MapStruct
implementation 'org.mapstruct:mapstruct:1.5.5.Final'
annotationProcessor 'org.mapstruct:mapstruct-processor:1.5.5.Final'
implementation 'org.mapstruct:mapstruct:1.6.0'
annotationProcessor 'org.mapstruct:mapstruct-processor:1.6.0'

// AOP
implementation 'org.springframework.boot:spring-boot-starter-aop'
Expand Down
6 changes: 0 additions & 6 deletions src/docs/asciidoc/index.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -171,12 +171,6 @@ include::{docdir}/project/get-my-applied-projects.adoc[]

include::{docdir}/project/get-my-commissioned-projects.adoc[]

=== [의뢰자] 프로젝트 지원자 목록 조회

의뢰자는 자신의 프로젝트에 지원한 지원자 목록을 조회할 수 있습니다.

include::{docdir}/project/get-applicants-by-project-id.adoc[]

=== [의뢰자] 프로젝트 미팅 신청

의뢰자는 프로젝트 지원자에게 미팅을 신청할 수 있습니다.
Expand Down

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,14 @@

import es.princip.getp.api.controller.common.dto.ApiResponse;
import es.princip.getp.api.controller.common.dto.ApiResponse.ApiSuccessResult;
import es.princip.getp.api.controller.people.command.dto.request.CreatePeopleRequest;
import es.princip.getp.api.controller.people.command.dto.request.UpdatePeopleRequest;
import es.princip.getp.api.controller.people.command.dto.response.CreatePeopleResponse;
import es.princip.getp.api.controller.people.command.dto.request.EditPeopleRequest;
import es.princip.getp.api.controller.people.command.dto.request.RegisterPeopleRequest;
import es.princip.getp.api.controller.people.command.dto.response.RegisterPeopleResponse;
import es.princip.getp.api.security.details.PrincipalDetails;
import es.princip.getp.domain.people.command.application.PeopleService;
import es.princip.getp.domain.people.command.application.command.CreatePeopleCommand;
import es.princip.getp.domain.people.command.application.command.UpdatePeopleCommand;
import es.princip.getp.application.people.command.EditPeopleCommand;
import es.princip.getp.application.people.command.RegisterPeopleCommand;
import es.princip.getp.application.people.port.in.EditPeopleUseCase;
import es.princip.getp.application.people.port.in.RegisterPeopleUseCase;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
Expand All @@ -22,7 +23,8 @@
@RequiredArgsConstructor
public class MyPeopleController {

private final PeopleService peopleService;
private final RegisterPeopleUseCase registerPeopleUseCase;
private final EditPeopleUseCase editPeopleUseCase;

/**
* 내 피플 정보 등록
Expand All @@ -31,13 +33,13 @@ public class MyPeopleController {
*/
@PostMapping
@PreAuthorize("hasRole('PEOPLE') and isAuthenticated()")
public ResponseEntity<ApiSuccessResult<CreatePeopleResponse>> createMyPeople(
@RequestBody @Valid final CreatePeopleRequest request,
public ResponseEntity<ApiSuccessResult<RegisterPeopleResponse>> createMyPeople(
@RequestBody @Valid final RegisterPeopleRequest request,
@AuthenticationPrincipal final PrincipalDetails principalDetails) {
final Long memberId = principalDetails.getMember().getMemberId();
final CreatePeopleCommand command = request.toCommand(memberId);
final Long peopleId = peopleService.create(command);
final CreatePeopleResponse response = new CreatePeopleResponse(peopleId);
final RegisterPeopleCommand command = request.toCommand(memberId);
final Long peopleId = registerPeopleUseCase.register(command);
final RegisterPeopleResponse response = new RegisterPeopleResponse(peopleId);
return ApiResponse.success(HttpStatus.CREATED, response);
}

Expand All @@ -49,11 +51,11 @@ public ResponseEntity<ApiSuccessResult<CreatePeopleResponse>> createMyPeople(
@PutMapping
@PreAuthorize("hasRole('PEOPLE') and isAuthenticated()")
public ResponseEntity<ApiSuccessResult<?>> updateMyPeople(
@RequestBody @Valid final UpdatePeopleRequest request,
@RequestBody @Valid final EditPeopleRequest request,
@AuthenticationPrincipal final PrincipalDetails principalDetails) {
final Long memberId = principalDetails.getMember().getMemberId();
final UpdatePeopleCommand command = request.toCommand(memberId);
peopleService.update(command);
final EditPeopleCommand command = request.toCommand(memberId);
editPeopleUseCase.edit(command);
return ApiResponse.success(HttpStatus.CREATED);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,10 @@
import es.princip.getp.api.controller.people.command.dto.request.EditPeopleProfileRequest;
import es.princip.getp.api.controller.people.command.dto.request.RegisterPeopleProfileRequest;
import es.princip.getp.api.security.details.PrincipalDetails;
import es.princip.getp.domain.people.command.application.PeopleProfileService;
import es.princip.getp.domain.people.command.application.command.EditPeopleProfileCommand;
import es.princip.getp.domain.people.command.application.command.RegisterPeopleProfileCommand;
import es.princip.getp.application.people.command.EditPeopleProfileCommand;
import es.princip.getp.application.people.command.RegisterPeopleProfileCommand;
import es.princip.getp.application.people.port.in.EditPeopleProfileUseCase;
import es.princip.getp.application.people.port.in.RegisterPeopleProfileUseCase;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
Expand All @@ -23,7 +24,8 @@ public class MyPeopleProfileController {

private final PeopleCommandMapper peopleCommandMapper;

private final PeopleProfileService peopleProfileService;
private final RegisterPeopleProfileUseCase registerPeopleProfileUseCase;
private final EditPeopleProfileUseCase editPeopleProfileUseCase;

/**
* 내 피플 프로필 등록
Expand All @@ -39,7 +41,7 @@ public ResponseEntity<ApiSuccessResult<?>> createMyPeopleProfile(
) {
final Long memberId = principalDetails.getMember().getMemberId();
final RegisterPeopleProfileCommand command = peopleCommandMapper.mapToCommand(memberId, request);
peopleProfileService.registerProfile(command);
registerPeopleProfileUseCase.register(command);
return ApiResponse.success(HttpStatus.CREATED);
}

Expand All @@ -57,7 +59,7 @@ public ResponseEntity<ApiSuccessResult<?>> updateMyPeopleProfile(
) {
final Long memberId = principalDetails.getMember().getMemberId();
final EditPeopleProfileCommand command = peopleCommandMapper.mapToCommand(memberId, request);
peopleProfileService.editProfile(command);
editPeopleProfileUseCase.edit(command);
return ApiResponse.success(HttpStatus.OK);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,14 @@
import es.princip.getp.api.controller.people.command.dto.request.EditPeopleProfileRequest;
import es.princip.getp.api.controller.people.command.dto.request.PortfolioRequest;
import es.princip.getp.api.controller.people.command.dto.request.RegisterPeopleProfileRequest;
import es.princip.getp.domain.people.command.application.command.EditPeopleProfileCommand;
import es.princip.getp.domain.people.command.application.command.RegisterPeopleProfileCommand;
import es.princip.getp.domain.people.command.domain.Portfolio;
import es.princip.getp.application.people.command.EditPeopleProfileCommand;
import es.princip.getp.application.people.command.RegisterPeopleProfileCommand;
import es.princip.getp.domain.people.model.Portfolio;
import org.mapstruct.Mapper;

@CommandMapper
@Mapper(componentModel = "spring", uses = {HashtagMapper.class, TechStackMapper.class, URLMapper.class})
interface PeopleCommandMapper {
public interface PeopleCommandMapper {

RegisterPeopleProfileCommand mapToCommand(Long memberId, RegisterPeopleProfileRequest request);

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package es.princip.getp.api.controller.people.command.dto.request;

import es.princip.getp.domain.people.command.domain.Education;
import es.princip.getp.domain.people.model.Education;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,23 @@
import es.princip.getp.api.validation.EmailPattern;
import es.princip.getp.api.validation.Enum;
import es.princip.getp.api.validation.PhoneNumberPattern;
import es.princip.getp.application.people.command.EditPeopleCommand;
import es.princip.getp.domain.common.model.PhoneNumber;
import es.princip.getp.domain.member.model.Email;
import es.princip.getp.domain.member.model.Nickname;
import es.princip.getp.domain.common.model.PhoneNumber;
import es.princip.getp.domain.people.command.application.command.UpdatePeopleCommand;
import es.princip.getp.domain.people.command.domain.PeopleType;
import es.princip.getp.domain.people.model.PeopleType;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;

public record UpdatePeopleRequest(
public record EditPeopleRequest(
@NotBlank String nickname,
@NotNull @EmailPattern String email,
@NotNull @PhoneNumberPattern String phoneNumber,
@Enum PeopleType peopleType
) {

public UpdatePeopleCommand toCommand(Long memberId) {
return new UpdatePeopleCommand(
public EditPeopleCommand toCommand(Long memberId) {
return new EditPeopleCommand(
memberId,
Nickname.of(nickname),
Email.of(email),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package es.princip.getp.api.controller.people.command.dto.request;

import es.princip.getp.domain.people.command.domain.Education;
import es.princip.getp.domain.people.model.Education;
import jakarta.validation.Valid;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,23 +3,23 @@
import es.princip.getp.api.validation.EmailPattern;
import es.princip.getp.api.validation.Enum;
import es.princip.getp.api.validation.PhoneNumberPattern;
import es.princip.getp.application.people.command.RegisterPeopleCommand;
import es.princip.getp.domain.common.model.PhoneNumber;
import es.princip.getp.domain.member.model.Email;
import es.princip.getp.domain.member.model.Nickname;
import es.princip.getp.domain.common.model.PhoneNumber;
import es.princip.getp.domain.people.command.application.command.CreatePeopleCommand;
import es.princip.getp.domain.people.command.domain.PeopleType;
import es.princip.getp.domain.people.model.PeopleType;
import jakarta.validation.constraints.NotBlank;
import jakarta.validation.constraints.NotNull;

public record CreatePeopleRequest(
public record RegisterPeopleRequest(
@NotBlank String nickname,
@NotNull @EmailPattern String email,
@NotNull @PhoneNumberPattern String phoneNumber,
@Enum PeopleType peopleType
) {

public CreatePeopleCommand toCommand(final Long memberId) {
return new CreatePeopleCommand(
public RegisterPeopleCommand toCommand(final Long memberId) {
return new RegisterPeopleCommand(
memberId,
Nickname.of(nickname),
Email.of(email),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package es.princip.getp.api.controller.people.command.dto.response;

public record CreatePeopleResponse(Long peopleId) {
public record RegisterPeopleResponse(Long peopleId) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import es.princip.getp.api.controller.common.dto.ApiResponse.ApiSuccessResult;
import es.princip.getp.api.controller.people.query.dto.peopleProfile.DetailPeopleProfileResponse;
import es.princip.getp.api.security.details.PrincipalDetails;
import es.princip.getp.domain.people.query.dao.PeopleDao;
import es.princip.getp.application.people.port.in.GetMyPeopleQuery;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
Expand All @@ -19,7 +19,7 @@
@RequiredArgsConstructor
public class MyPeopleProfileQueryController {

private final PeopleDao peopleDao;
private final GetMyPeopleQuery getMyPeopleQuery;

/**
* 내 피플 프로필 조회
Expand All @@ -31,7 +31,7 @@ public class MyPeopleProfileQueryController {
public ResponseEntity<ApiSuccessResult<DetailPeopleProfileResponse>> getMyPeopleProfile(
@AuthenticationPrincipal final PrincipalDetails principalDetails) {
final Long memberId = principalDetails.getMember().getMemberId();
final DetailPeopleProfileResponse response = peopleDao.findDetailPeopleProfileByMemberId(memberId);
final DetailPeopleProfileResponse response = getMyPeopleQuery.getDetailProfileByMemberId(memberId);
return ApiResponse.success(HttpStatus.OK, response);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import es.princip.getp.api.controller.common.dto.ApiResponse.ApiSuccessResult;
import es.princip.getp.api.controller.people.query.dto.people.MyPeopleResponse;
import es.princip.getp.api.security.details.PrincipalDetails;
import es.princip.getp.domain.people.query.dao.PeopleDao;
import es.princip.getp.application.people.port.in.GetMyPeopleQuery;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
Expand All @@ -19,7 +19,7 @@
@RequiredArgsConstructor
public class MyPeopleQueryController {

private final PeopleDao peopleDao;
private final GetMyPeopleQuery getMyPeopleQuery;

/**
* 내 피플 정보 조회
Expand All @@ -31,7 +31,7 @@ public class MyPeopleQueryController {
public ResponseEntity<ApiSuccessResult<MyPeopleResponse>> getMyPeople(
@AuthenticationPrincipal final PrincipalDetails principalDetails) {
final Long memberId = principalDetails.getMember().getMemberId();
final MyPeopleResponse response = peopleDao.findByMemberId(memberId);
final MyPeopleResponse response = getMyPeopleQuery.getByMemberId(memberId);
return ApiResponse.success(HttpStatus.OK, response);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
import es.princip.getp.api.controller.people.query.dto.people.CardPeopleResponse;
import es.princip.getp.api.controller.people.query.dto.people.DetailPeopleResponse;
import es.princip.getp.api.controller.people.query.dto.people.PublicDetailPeopleResponse;
import es.princip.getp.domain.people.query.dao.PeopleDao;
import es.princip.getp.application.people.port.in.GetPeopleQuery;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;
Expand All @@ -24,7 +24,7 @@
@RequiredArgsConstructor
public class PeopleQueryController extends ControllerSupport {

private final PeopleDao peopleDao;
private final GetPeopleQuery getPeopleQuery;

/**
* 피플 상세 조회
Expand All @@ -35,10 +35,10 @@ public class PeopleQueryController extends ControllerSupport {
@GetMapping("/{peopleId}")
public ResponseEntity<? extends ApiSuccessResult<?>> getPeople(@PathVariable final Long peopleId) {
if (isAuthenticated()) {
final DetailPeopleResponse response = peopleDao.findDetailPeopleById(peopleId);
final DetailPeopleResponse response = getPeopleQuery.getDetailById(peopleId);
return ApiResponse.success(HttpStatus.OK, response);
}
final PublicDetailPeopleResponse response = peopleDao.findPublicDetailPeopleById(peopleId);
final PublicDetailPeopleResponse response = getPeopleQuery.getPublicDetailById(peopleId);
return ApiResponse.success(HttpStatus.OK, response);
}

Expand All @@ -51,7 +51,7 @@ public ResponseEntity<? extends ApiSuccessResult<?>> getPeople(@PathVariable fin
@GetMapping
public ResponseEntity<ApiSuccessResult<PageResponse<CardPeopleResponse>>> getCardPeoplePage(
@PageableDefault(sort = "peopleId", direction = Sort.Direction.DESC) final Pageable pageable) {
final PageResponse<CardPeopleResponse> response = PageResponse.from(peopleDao.findCardPeoplePage(pageable));
final PageResponse<CardPeopleResponse> response = PageResponse.from(getPeopleQuery.getPagedCards(pageable));
return ApiResponse.success(HttpStatus.OK, response);
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package es.princip.getp.api.controller.people.query.dto.people;

import es.princip.getp.api.controller.people.query.dto.peopleProfile.CardPeopleProfileResponse;
import es.princip.getp.domain.people.command.domain.PeopleType;
import es.princip.getp.domain.people.model.PeopleType;

public record CardPeopleResponse(
Long peopleId,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package es.princip.getp.api.controller.people.query.dto.people;

import es.princip.getp.api.controller.people.query.dto.peopleProfile.DetailPeopleProfileResponse;
import es.princip.getp.domain.people.command.domain.PeopleType;
import es.princip.getp.domain.people.model.PeopleType;

public record DetailPeopleResponse(
Long peopleId,
Expand Down
Loading

0 comments on commit d93e89a

Please sign in to comment.