Skip to content

Commit

Permalink
refactor: PeopleController에서 내 피플과 내 피플 프로필 기능을 분리 (#71)
Browse files Browse the repository at this point in the history
  • Loading branch information
scv1702 committed Jul 9, 2024
1 parent a10f082 commit 8d3569a
Show file tree
Hide file tree
Showing 44 changed files with 733 additions and 422 deletions.
5 changes: 2 additions & 3 deletions gradle/wrapper/gradle-wrapper.properties
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
#Tue Jul 09 18:32:55 KST 2024
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip
networkTimeout=10000
validateDistributionUrl=true
distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
20 changes: 16 additions & 4 deletions src/docs/asciidoc/index.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,26 @@ include::{docdir}/member/upload-profile-image.adoc[]

== 피플

=== 피플 정보 등록
include::{docdir}/people/create-people.adoc[]

=== 피플 상세 조회
include::{docdir}/people/get-people.adoc[]

=== 피플 목록 조회
include::{docdir}/people/get-card-people-page.adoc[]

=== 내 피플 정보 등록
include::{docdir}/my-people/create-my-people.adoc[]

=== 내 피플 정보 조회
include::{docdir}/people/get-my-people.adoc[]
include::{docdir}/my-people/get-my-people.adoc[]

=== 내 피플 정보 수정
include::{docdir}/my-people/update-my-people.adoc[]

=== 내 피플 프로필 등록
include::{docdir}/my-people-profile/create-my-people-profile.adoc[]

=== 내 피플 프로필 조회
include::{docdir}/my-people-profile/get-my-people-profile.adoc[]

=== 내 피플 프로필 수정
include::{docdir}/my-people-profile/update-my-people-profile.adoc[]
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
operation::/create-my-people-profile/create-my-people-profile[snippets="http-request,request-headers,request-fields,http-response"]
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
operation::/get-my-people-profile/get-my-people-profile[snippets="http-request,request-headers,http-response,response-fields-data"]
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
operation::/update-my-people-profile/update-my-people-profile[snippets="http-request,request-headers,request-fields,http-response"]
1 change: 1 addition & 0 deletions src/docs/asciidoc/my-people/create-my-people.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
operation::/create-my-people/create-my-people[snippets="http-request,request-headers,request-fields,http-response"]
1 change: 1 addition & 0 deletions src/docs/asciidoc/my-people/get-my-people.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
operation::/get-my-people/get-my-people[snippets="http-request,request-headers,http-response,response-fields-data"]
1 change: 1 addition & 0 deletions src/docs/asciidoc/my-people/update-my-people.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
operation::/update-my-people/update-my-people[snippets="http-request,request-headers,request-fields,http-response"]
1 change: 0 additions & 1 deletion src/docs/asciidoc/people/create-people.adoc

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ public ResponseEntity<?> uploadProfileImage(
@RequestPart MultipartFile image
) {
Member member = principalDetails.getMember();
return ResponseEntity.created(memberService.updateProfileImage(member, image))
return ResponseEntity.created(memberService.updateProfileImage(member.getMemberId(), image))
.body(ApiResponse.success(HttpStatus.CREATED));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import lombok.Getter;
import lombok.NoArgsConstructor;

import java.net.URI;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
Expand Down Expand Up @@ -72,7 +73,6 @@ public Member(
public void update(final UpdateMemberRequest request) {
this.nickname = request.nickname();
this.phoneNumber = request.phoneNumber();
this.profileImageUri = request.profileImageUri();
}

public static Member from(final CreateMemberRequest request) {
Expand All @@ -82,4 +82,12 @@ public static Member from(final CreateMemberRequest request) {
.memberType(request.memberType())
.build();
}

public void updateProfileImageUri(URI profileImageUri) {
this.profileImageUri = profileImageUri.toString();
}

public boolean hasProfileImage() {
return profileImageUri != null;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,39 +7,34 @@

public record UpdateMemberRequest(
String nickname,
String phoneNumber,
String profileImageUri
String phoneNumber
) {

public static UpdateMemberRequest from(final CreatePeopleRequest request) {
return new UpdateMemberRequest(
request.nickname(),
request.phoneNumber(),
request.profileImageUri()
request.phoneNumber()
);
}

public static UpdateMemberRequest from(final UpdatePeopleRequest request) {
return new UpdateMemberRequest(
request.nickname(),
request.phoneNumber(),
request.profileImageUri()
request.phoneNumber()
);
}

public static UpdateMemberRequest from(final CreateClientRequest request) {
return new UpdateMemberRequest(
request.nickname(),
request.phoneNumber(),
request.profileImageUri()
request.phoneNumber()
);
}

public static UpdateMemberRequest from(final UpdateClientRequest request) {
return new UpdateMemberRequest(
request.nickname(),
request.phoneNumber(),
request.profileImageUri()
request.phoneNumber()
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -73,12 +73,15 @@ public Member create(CreateMemberRequest request) {
}

@Transactional
public URI updateProfileImage(Member member, MultipartFile image) {
if (member.getProfileImageUri() != null) {
imageStorageService.deleteImage(Paths.get(member.getProfileImageUri()));
public URI updateProfileImage(Long memberId, MultipartFile image) {
Member member = getByMemberId(memberId);
if (member.hasProfileImage()) {
imageStorageService.deleteImage(Paths.get(member.getProfileImageUri()));
}
Path path = Paths.get(String.valueOf(member.getMemberId())).resolve("profile");
return URI.create("/" + PathUtil.toURI(imageStorageService.storeImage(path, image)));
URI profileImageUri = URI.create("/" + PathUtil.toURI(imageStorageService.storeImage(path, image)));
member.updateProfileImageUri(profileImageUri);
return profileImageUri;
}

@Transactional
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,10 @@
package es.princip.getp.domain.people.controller;

import es.princip.getp.domain.member.domain.entity.Member;
import es.princip.getp.domain.people.dto.request.CreatePeopleProfileRequest;
import es.princip.getp.domain.people.dto.request.UpdatePeopleProfileRequest;
import es.princip.getp.domain.people.dto.request.CreatePeopleRequest;
import es.princip.getp.domain.people.dto.request.UpdatePeopleRequest;
import es.princip.getp.domain.people.dto.response.people.CreatePeopleResponse;
import es.princip.getp.domain.people.dto.response.people.PeopleResponse;
import es.princip.getp.domain.people.dto.response.people.UpdatePeopleResponse;
import es.princip.getp.domain.people.dto.response.peopleProfile.CreatePeopleProfileResponse;
import es.princip.getp.domain.people.dto.response.peopleProfile.DetailPeopleProfileResponse;
import es.princip.getp.domain.people.dto.response.peopleProfile.UpdatePeopleProfileResponse;
import es.princip.getp.domain.people.service.PeopleProfileService;
import es.princip.getp.domain.people.service.PeopleService;
import es.princip.getp.global.security.details.PrincipalDetails;
import es.princip.getp.global.util.ApiResponse;
Expand All @@ -20,12 +15,7 @@
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/people/me")
Expand All @@ -34,83 +24,52 @@ public class MyPeopleController {

private final PeopleService peopleService;

private final PeopleProfileService peopleProfileService;

/**
* 내 피플 정보 수정
*
* @param request 수정할 피플 정보
* @return 수정 완료된 피플 정보
* 내 피플 정보 등록
*
* @param request 등록할 피플 정보
* @return 등록된 피플 정보
*/
@PutMapping
@PreAuthorize("isAuthenticated()")
public ResponseEntity<ApiSuccessResult<UpdatePeopleResponse>> updatePeople(
@RequestBody @Valid UpdatePeopleRequest request,
@AuthenticationPrincipal PrincipalDetails principalDetails) {
Member member = principalDetails.getMember();
UpdatePeopleResponse response = UpdatePeopleResponse.from(peopleService.update(member.getMemberId(), request));
return ResponseEntity.ok().body(ApiResponse.success(HttpStatus.OK, response));
@PostMapping
@PreAuthorize("hasRole('PEOPLE') and isAuthenticated()")
public ResponseEntity<ApiSuccessResult<CreatePeopleResponse>> createMyPeople(
@RequestBody @Valid CreatePeopleRequest request,
@AuthenticationPrincipal PrincipalDetails principalDetails) {
Long memberId = principalDetails.getMember().getMemberId();
CreatePeopleResponse response = CreatePeopleResponse.from(peopleService.create(memberId, request));
return ResponseEntity.status(HttpStatus.CREATED)
.body(ApiResponse.success(HttpStatus.CREATED, response));
}

/**
* 내 피플 정보 조회
*
*
* @return 내 피플 정보
*/
@GetMapping
@PreAuthorize("hasRole('PEOPLE') and isAuthenticated()")
public ResponseEntity<ApiSuccessResult<PeopleResponse>> getMyPeople(
@AuthenticationPrincipal PrincipalDetails principalDetails) {
Member member = principalDetails.getMember();
PeopleResponse response = PeopleResponse.from(peopleService.getByMemberId(member.getMemberId()));
return ResponseEntity.ok().body(ApiResponse.success(HttpStatus.OK, response));
}

/**
* 피플 프로필 등록
*
* @param request 등록할 피플 프로필 정보
* @return 등록된 피플 프로필 정보
*/
@PostMapping("/profile")
@PreAuthorize("hasRole('PEOPLE') and isAuthenticated()")
public ResponseEntity<ApiSuccessResult<CreatePeopleProfileResponse>> createPeopleProfile(
@RequestBody @Valid CreatePeopleProfileRequest request,
@AuthenticationPrincipal PrincipalDetails principalDetails) {
Member member = principalDetails.getMember();
CreatePeopleProfileResponse response =
CreatePeopleProfileResponse.from(peopleProfileService.create(member.getMemberId(), request));
return ResponseEntity.status(HttpStatus.CREATED)
.body(ApiResponse.success(HttpStatus.CREATED, response));
PeopleResponse response = PeopleResponse.from(peopleService.getByMemberId(member.getMemberId()));
return ResponseEntity.ok()
.body(ApiResponse.success(HttpStatus.OK, response));
}

/**
* 내 피플 프로필 조회
* 내 피플 정보 수정
*
* @return 내 피플 프로필 정보
* @param request 수정할 피플 정보
* @return 수정된 피플 정보
*/
@GetMapping("/profile")
@PutMapping
@PreAuthorize("hasRole('PEOPLE') and isAuthenticated()")
public ResponseEntity<ApiSuccessResult<DetailPeopleProfileResponse>> getMyPeopleProfile(
@AuthenticationPrincipal PrincipalDetails principalDetails) {
Member member = principalDetails.getMember();
DetailPeopleProfileResponse response = DetailPeopleProfileResponse.from(peopleProfileService.getByMemberId(member.getMemberId()));
return ResponseEntity.ok().body(ApiResponse.success(HttpStatus.OK, response));
}

/**
* 내 피플 프로필 수정
*
* @param request 수정할 피플 프로필 정보
* @return 수정 완료된 피플 프로필 정보
*/
@PutMapping("/profile")
@PreAuthorize("isAuthenticated()")
public ResponseEntity<ApiSuccessResult<UpdatePeopleProfileResponse>> updatePeopleProfile(
@RequestBody @Valid UpdatePeopleProfileRequest request,
public ResponseEntity<ApiSuccessResult<?>> updateMyPeople(
@RequestBody @Valid UpdatePeopleRequest request,
@AuthenticationPrincipal PrincipalDetails principalDetails) {
Member member = principalDetails.getMember();
UpdatePeopleProfileResponse response = UpdatePeopleProfileResponse.from(peopleProfileService.update(member.getMemberId(), request));
return ResponseEntity.ok().body(ApiResponse.success(HttpStatus.OK, response));
peopleService.update(member.getMemberId(), request);
return ResponseEntity.status(HttpStatus.CREATED)
.body(ApiResponse.success(HttpStatus.CREATED));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
package es.princip.getp.domain.people.controller;

import es.princip.getp.domain.member.domain.entity.Member;
import es.princip.getp.domain.people.dto.request.CreatePeopleProfileRequest;
import es.princip.getp.domain.people.dto.request.UpdatePeopleProfileRequest;
import es.princip.getp.domain.people.dto.response.peopleProfile.DetailPeopleProfileResponse;
import es.princip.getp.domain.people.service.PeopleProfileService;
import es.princip.getp.global.security.details.PrincipalDetails;
import es.princip.getp.global.util.ApiResponse;
import es.princip.getp.global.util.ApiResponse.ApiSuccessResult;
import jakarta.validation.Valid;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/people/me/profile")
@RequiredArgsConstructor
public class MyPeopleProfileController {

private final PeopleProfileService peopleProfileService;

/**
* 내 피플 프로필 등록
*
* @param request 등록할 피플 프로필 정보
* @return 등록된 피플 프로필 정보
*/
@PostMapping
@PreAuthorize("hasRole('PEOPLE') and isAuthenticated()")
public ResponseEntity<ApiSuccessResult<?>> createMyPeopleProfile(
@RequestBody @Valid CreatePeopleProfileRequest request,
@AuthenticationPrincipal PrincipalDetails principalDetails) {
Member member = principalDetails.getMember();
peopleProfileService.create(member.getMemberId(), request);
return ResponseEntity.status(HttpStatus.CREATED)
.body(ApiResponse.success(HttpStatus.CREATED));
}

/**
* 내 피플 프로필 조회
*
* @return 내 피플 프로필 정보
*/
@GetMapping
@PreAuthorize("hasRole('PEOPLE') and isAuthenticated()")
public ResponseEntity<ApiSuccessResult<DetailPeopleProfileResponse>> getMyPeopleProfile(
@AuthenticationPrincipal PrincipalDetails principalDetails) {
Member member = principalDetails.getMember();
DetailPeopleProfileResponse response = DetailPeopleProfileResponse.from(peopleProfileService.getByMemberId(member.getMemberId()));
return ResponseEntity.ok()
.body(ApiResponse.success(HttpStatus.OK, response));
}

/**
* 내 피플 프로필 수정
*
* @param request 수정할 피플 프로필 정보
* @return 수정된 피플 프로필 정보
*/
@PutMapping
@PreAuthorize("hasRole('PEOPLE') and isAuthenticated()")
public ResponseEntity<ApiSuccessResult<?>> updateMyPeopleProfile(
@RequestBody @Valid UpdatePeopleProfileRequest request,
@AuthenticationPrincipal PrincipalDetails principalDetails) {
Member member = principalDetails.getMember();
peopleProfileService.update(member.getMemberId(), request);
return ResponseEntity.status(HttpStatus.CREATED)
.body(ApiResponse.success(HttpStatus.CREATED));
}
}
Loading

0 comments on commit 8d3569a

Please sign in to comment.