diff --git a/backend/src/main/java/com/graphy/backend/domain/member/controller/MemberController.java b/backend/src/main/java/com/graphy/backend/domain/member/controller/MemberController.java index f2d79f83..17a124b5 100644 --- a/backend/src/main/java/com/graphy/backend/domain/member/controller/MemberController.java +++ b/backend/src/main/java/com/graphy/backend/domain/member/controller/MemberController.java @@ -1,10 +1,10 @@ package com.graphy.backend.domain.member.controller; +import com.graphy.backend.domain.auth.util.annotation.CurrentUser; import com.graphy.backend.domain.member.domain.Member; import com.graphy.backend.domain.member.dto.response.GetMemberResponse; import com.graphy.backend.domain.member.dto.response.GetMyPageResponse; import com.graphy.backend.domain.member.service.MemberService; -import com.graphy.backend.domain.auth.util.annotation.CurrentUser; import com.graphy.backend.domain.project.service.ProjectService; import com.graphy.backend.global.result.ResultCode; import com.graphy.backend.global.result.ResultResponse; @@ -39,4 +39,11 @@ public ResponseEntity myPage(@CurrentUser Member member) { GetMyPageResponse result = projectService.myPage(member); return ResponseEntity.ok(ResultResponse.of(ResultCode.MYPAGE_GET_SUCCESS, result)); } + + @Operation(summary = "get myPage by nickname", description = "사용자 닉네임으로 마이페이지 조회") + @GetMapping("/mypage/{nickname}") + public ResponseEntity mypageByNickname(@PathVariable String nickname) { + GetMyPageResponse result = projectService.myPageByNickname(nickname); + return ResponseEntity.ok(ResultResponse.of(ResultCode.MYPAGE_GET_SUCCESS, result)); + } } diff --git a/backend/src/main/java/com/graphy/backend/domain/member/repository/MemberRepository.java b/backend/src/main/java/com/graphy/backend/domain/member/repository/MemberRepository.java index 6d74d269..41161cd1 100644 --- a/backend/src/main/java/com/graphy/backend/domain/member/repository/MemberRepository.java +++ b/backend/src/main/java/com/graphy/backend/domain/member/repository/MemberRepository.java @@ -2,8 +2,6 @@ import com.graphy.backend.domain.member.domain.Member; import org.springframework.data.jpa.repository.JpaRepository; -import org.springframework.data.jpa.repository.Modifying; -import org.springframework.data.jpa.repository.Query; import java.util.List; import java.util.Optional; @@ -11,4 +9,6 @@ public interface MemberRepository extends JpaRepository, MemberCustomRepository { Optional findByEmail(String email); List findMemberByNicknameStartingWith(String nickname); + + Optional findFirstByNickname(String nickname); } diff --git a/backend/src/main/java/com/graphy/backend/domain/member/service/MemberService.java b/backend/src/main/java/com/graphy/backend/domain/member/service/MemberService.java index 2e98a41f..31f64e45 100644 --- a/backend/src/main/java/com/graphy/backend/domain/member/service/MemberService.java +++ b/backend/src/main/java/com/graphy/backend/domain/member/service/MemberService.java @@ -49,4 +49,11 @@ public Member findMemberByEmail(String email) { () -> new EmptyResultException(MEMBER_NOT_EXIST) ); } + + public Member findMemberByNickname(String nickname) { + return memberRepository.findFirstByNickname(nickname).orElseThrow( + () -> new EmptyResultException(MEMBER_NOT_EXIST) + ); + } + } diff --git a/backend/src/main/java/com/graphy/backend/domain/project/dto/response/GetProjectInfoResponse.java b/backend/src/main/java/com/graphy/backend/domain/project/dto/response/GetProjectInfoResponse.java index 2f8795e2..ec4de5f4 100644 --- a/backend/src/main/java/com/graphy/backend/domain/project/dto/response/GetProjectInfoResponse.java +++ b/backend/src/main/java/com/graphy/backend/domain/project/dto/response/GetProjectInfoResponse.java @@ -1,7 +1,10 @@ package com.graphy.backend.domain.project.dto.response; import com.graphy.backend.domain.project.domain.Project; -import lombok.*; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Getter; +import lombok.NoArgsConstructor; @Getter @Builder @@ -13,13 +16,13 @@ public class GetProjectInfoResponse { private String projectName; - private String description; + private String content; public static GetProjectInfoResponse from(Project project) { return GetProjectInfoResponse.builder() .id(project.getId()) .projectName(project.getProjectName()) - .description(project.getDescription()) + .content(project.getContent()) .build(); } } \ No newline at end of file diff --git a/backend/src/main/java/com/graphy/backend/domain/project/service/ProjectService.java b/backend/src/main/java/com/graphy/backend/domain/project/service/ProjectService.java index dafc4a3f..4297239d 100644 --- a/backend/src/main/java/com/graphy/backend/domain/project/service/ProjectService.java +++ b/backend/src/main/java/com/graphy/backend/domain/project/service/ProjectService.java @@ -13,6 +13,7 @@ import com.graphy.backend.domain.project.dto.request.UpdateProjectRequest; import com.graphy.backend.domain.project.dto.response.*; import com.graphy.backend.domain.project.repository.ProjectRepository; +import com.graphy.backend.domain.project.repository.TagRepository; import com.graphy.backend.global.chatgpt.dto.GptCompletionDto.GptCompletionRequest; import com.graphy.backend.global.chatgpt.dto.GptCompletionDto.GptCompletionResponse; import com.graphy.backend.global.chatgpt.service.GPTChatRestService; @@ -46,6 +47,7 @@ public class ProjectService { private final CommentService commentService; private final TagService tagService; private final GPTChatRestService gptChatRestService; + private final TagRepository tagRepository; // @PostConstruct // public void initTag() throws IOException { @@ -124,6 +126,12 @@ public GetMyPageResponse myPage(Member member) { return GetMyPageResponse.of(member, projectInfoList); } + public GetMyPageResponse myPageByNickname(String nickname) { + Member member = memberService.findMemberByNickname(nickname); + List projectInfoList = this.findProjectInfoList(member.getId()); + return GetMyPageResponse.of(member, projectInfoList); + } + public Project getProjectById(Long id) { return projectRepository.findById(id).orElseThrow(() -> new EmptyResultException(ErrorCode.PROJECT_DELETED_OR_NOT_EXIST)); diff --git a/backend/src/main/java/com/graphy/backend/global/config/SecurityConfig.java b/backend/src/main/java/com/graphy/backend/global/config/SecurityConfig.java index 62e691c9..fba011cf 100644 --- a/backend/src/main/java/com/graphy/backend/global/config/SecurityConfig.java +++ b/backend/src/main/java/com/graphy/backend/global/config/SecurityConfig.java @@ -39,6 +39,7 @@ public SecurityFilterChain securityFilterChain(HttpSecurity httpSecurity) throws "/api/v1/auth/signin", "/api/v1/auth/logout", "/api/v1/projects", + "/api/v1/members/**", "/swagger-ui/**").permitAll() .antMatchers(HttpMethod.GET, "/api/v1/projects/{projectId}").permitAll() .antMatchers(HttpMethod.GET, "/api/v1/comments/{commentId}").permitAll() diff --git a/backend/src/test/java/com/graphy/backend/domain/member/controller/MemberControllerTest.java b/backend/src/test/java/com/graphy/backend/domain/member/controller/MemberControllerTest.java index 1605f9cc..1855b6f7 100644 --- a/backend/src/test/java/com/graphy/backend/domain/member/controller/MemberControllerTest.java +++ b/backend/src/test/java/com/graphy/backend/domain/member/controller/MemberControllerTest.java @@ -24,10 +24,11 @@ import java.util.List; import static org.hamcrest.Matchers.hasSize; -import static org.mockito.Mockito.*; +import static org.mockito.Mockito.any; +import static org.mockito.Mockito.when; import static org.springframework.restdocs.mockmvc.MockMvcRestDocumentation.document; -import static org.springframework.restdocs.payload.PayloadDocumentation.*; import static org.springframework.restdocs.payload.PayloadDocumentation.fieldWithPath; +import static org.springframework.restdocs.payload.PayloadDocumentation.responseFields; import static org.springframework.restdocs.request.RequestDocumentation.parameterWithName; import static org.springframework.restdocs.request.RequestDocumentation.requestParameters; import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; @@ -133,8 +134,8 @@ void getMyPageTest() throws Exception { .followerCount(member1.getFollowerCount()) .followingCount(member1.getFollowingCount()) .getProjectInfoResponseList(Arrays.asList( - GetProjectInfoResponse.builder().id(1L).projectName("project1").description("description1").build(), - GetProjectInfoResponse.builder().id(2L).projectName("project2").description("description2").build() + GetProjectInfoResponse.builder().id(1L).projectName("project1").content("content1").build(), + GetProjectInfoResponse.builder().id(2L).projectName("project2").content("content2").build() )) .build(); @@ -156,11 +157,11 @@ void getMyPageTest() throws Exception { .andExpect(jsonPath("$.data.getProjectInfoResponseList[0].id").value(1)) .andExpect(jsonPath("$.data.getProjectInfoResponseList[0].projectName").value("project1")) - .andExpect(jsonPath("$.data.getProjectInfoResponseList[0].description").value("description1")) + .andExpect(jsonPath("$.data.getProjectInfoResponseList[0].content").value("content1")) .andExpect(jsonPath("$.data.getProjectInfoResponseList[1].id").value(2)) .andExpect(jsonPath("$.data.getProjectInfoResponseList[1].projectName").value("project2")) - .andExpect(jsonPath("$.data.getProjectInfoResponseList[1].description").value("description2")) + .andExpect(jsonPath("$.data.getProjectInfoResponseList[1].content").value("content2")) .andDo(document("members/myPage/find/success", responseFields( @@ -176,7 +177,7 @@ void getMyPageTest() throws Exception { fieldWithPath("data.getProjectInfoResponseList[].id").description("프로젝트 ID"), fieldWithPath("data.getProjectInfoResponseList[].projectName").description("프로젝트 이름"), - fieldWithPath("data.getProjectInfoResponseList[].description").description("프로젝트 설명") + fieldWithPath("data.getProjectInfoResponseList[].content").description("프로젝트 소개") ))); } } diff --git a/backend/src/test/java/com/graphy/backend/domain/project/service/ProjectServiceTest.java b/backend/src/test/java/com/graphy/backend/domain/project/service/ProjectServiceTest.java index d388ea59..98a44b8f 100644 --- a/backend/src/test/java/com/graphy/backend/domain/project/service/ProjectServiceTest.java +++ b/backend/src/test/java/com/graphy/backend/domain/project/service/ProjectServiceTest.java @@ -202,7 +202,7 @@ void myPageTest() { .projectName("project1") .description("description1") .thumbNail("thumb") - .content("content") + .content("content1") .build(); Project project2 = Project.builder() @@ -211,19 +211,19 @@ void myPageTest() { .projectName("project2") .description("description2") .thumbNail("thumb") - .content("content") + .content("content2") .build(); GetProjectInfoResponse response1 = GetProjectInfoResponse.builder() .id(1L) .projectName("project1") - .description("description1") + .content("content1") .build(); GetProjectInfoResponse response2 = GetProjectInfoResponse.builder() .id(2L) .projectName("project2") - .description("description2") + .content("content2") .build(); List responseList = Arrays.asList(response1, response2);