diff --git a/src/main/java/com/leets/team2/xclone/domain/member/controller/MemberController.java b/src/main/java/com/leets/team2/xclone/domain/member/controller/MemberController.java index 3b5af96..096232c 100644 --- a/src/main/java/com/leets/team2/xclone/domain/member/controller/MemberController.java +++ b/src/main/java/com/leets/team2/xclone/domain/member/controller/MemberController.java @@ -3,7 +3,9 @@ import com.leets.team2.xclone.common.ApiData; import com.leets.team2.xclone.domain.member.dto.MemberDTO; import com.leets.team2.xclone.domain.member.dto.requests.CheckTagDuplicationGetRequest; +import com.leets.team2.xclone.domain.member.dto.requests.MemberFindGetRequest; import com.leets.team2.xclone.domain.member.dto.responses.CheckTagDuplicationGetResponse; +import com.leets.team2.xclone.domain.member.dto.responses.MemberFindGetResponse; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.media.Content; import io.swagger.v3.oas.annotations.media.Schema; @@ -20,7 +22,7 @@ public interface MemberController { ResponseEntity> getCheckTagDuplication( CheckTagDuplicationGetRequest request); - @Operation(summary = "Member 찾기 API", description = "해당하는 멤버를 찾습니다.") + @Operation(summary = "멤버 정보 가져오기 API", description = "Tag로 멤버 정보를 찾습니다.") ResponseEntity> getMemberInfo(@RequestParam String tag); @Operation(summary = "프로필 사진 수정 API", description = "자신의 프로필 사진을 수정합니다.") diff --git a/src/main/java/com/leets/team2/xclone/domain/member/controller/MemberControllerImpl.java b/src/main/java/com/leets/team2/xclone/domain/member/controller/MemberControllerImpl.java index b7eebfb..137c4ba 100644 --- a/src/main/java/com/leets/team2/xclone/domain/member/controller/MemberControllerImpl.java +++ b/src/main/java/com/leets/team2/xclone/domain/member/controller/MemberControllerImpl.java @@ -46,6 +46,7 @@ public ResponseEntity> getMemberInfo(@RequestParam S return ApiData.ok(response); } + @Override @UseGuards({MemberGuard.class}) @PatchMapping("/profile/picture") public ResponseEntity> updateProfilePicture(@RequestPart(value="image",required = false) MultipartFile image){ diff --git a/src/main/java/com/leets/team2/xclone/domain/member/dto/requests/MemberFindGetRequest.java b/src/main/java/com/leets/team2/xclone/domain/member/dto/requests/MemberFindGetRequest.java new file mode 100644 index 0000000..2c8748a --- /dev/null +++ b/src/main/java/com/leets/team2/xclone/domain/member/dto/requests/MemberFindGetRequest.java @@ -0,0 +1,12 @@ +package com.leets.team2.xclone.domain.member.dto.requests; + +import jakarta.validation.constraints.NotEmpty; +import jakarta.validation.constraints.NotNull; + +public record MemberFindGetRequest( + @NotNull(message = "tag는 필수입니다.") + @NotEmpty(message = "tag는 필수입니다.") + String tag +) { + +} diff --git a/src/main/java/com/leets/team2/xclone/domain/member/dto/responses/MemberFindGetResponse.java b/src/main/java/com/leets/team2/xclone/domain/member/dto/responses/MemberFindGetResponse.java new file mode 100644 index 0000000..2d56c54 --- /dev/null +++ b/src/main/java/com/leets/team2/xclone/domain/member/dto/responses/MemberFindGetResponse.java @@ -0,0 +1,34 @@ +package com.leets.team2.xclone.domain.member.dto.responses; + +import com.leets.team2.xclone.domain.member.entities.Member; +import java.util.ArrayList; +import java.util.List; + +public record MemberFindGetResponse( + List memberInfo +) { + + public static MemberFindGetResponse empty() { + return new MemberFindGetResponse(new ArrayList<>()); + } + + record MemberInfo( + String tag, + String birthDate, + String nickname, + String introduction + ) { + public static MemberInfo of(Member member) { + return new MemberInfo( + member.getTag(), + member.getBirthDate().toString(), + member.getNickname(), + member.getIntroduction() + ); + } + } + + public void add(Member member) { + this.memberInfo.add(MemberInfo.of(member)); + } +} diff --git a/src/main/java/com/leets/team2/xclone/domain/member/repository/MemberRepository.java b/src/main/java/com/leets/team2/xclone/domain/member/repository/MemberRepository.java index 548bf04..55d9d06 100644 --- a/src/main/java/com/leets/team2/xclone/domain/member/repository/MemberRepository.java +++ b/src/main/java/com/leets/team2/xclone/domain/member/repository/MemberRepository.java @@ -1,6 +1,7 @@ package com.leets.team2.xclone.domain.member.repository; import com.leets.team2.xclone.domain.member.entities.Member; +import java.util.List; import java.util.Optional; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; @@ -15,4 +16,6 @@ public interface MemberRepository extends JpaRepository { boolean existsByKakaoId(Long kakaoId); Optional findByKakaoId(Long kakaoId); + + List findByTagContaining(String tag); } diff --git a/src/main/java/com/leets/team2/xclone/domain/member/service/MemberService.java b/src/main/java/com/leets/team2/xclone/domain/member/service/MemberService.java index 7378c6e..3df2297 100644 --- a/src/main/java/com/leets/team2/xclone/domain/member/service/MemberService.java +++ b/src/main/java/com/leets/team2/xclone/domain/member/service/MemberService.java @@ -1,11 +1,14 @@ package com.leets.team2.xclone.domain.member.service; import com.leets.team2.xclone.domain.member.dto.MemberDTO; +import com.leets.team2.xclone.domain.member.dto.responses.MemberFindGetResponse; import com.leets.team2.xclone.domain.member.entities.Member; import com.leets.team2.xclone.domain.member.repository.MemberRepository; import com.leets.team2.xclone.exception.NoSuchMemberException; + import java.util.List; import java.util.Optional; + import com.leets.team2.xclone.image.service.ImageSaveService; import lombok.RequiredArgsConstructor; import org.apache.commons.logging.Log; @@ -13,6 +16,8 @@ import org.springframework.stereotype.Service; import org.springframework.web.multipart.MultipartFile; +import java.util.NoSuchElementException; + @Service @RequiredArgsConstructor public class MemberService { @@ -51,6 +56,13 @@ public Member findMemberByTag(String tag){ NoSuchMemberException::new); } + public MemberFindGetResponse findMembersByTag(String tag) { + MemberFindGetResponse memberFindGetResponse = MemberFindGetResponse.empty(); + + this.memberRepository.findByTagContaining(tag).forEach(memberFindGetResponse::add); + return memberFindGetResponse; + } + public MemberDTO.Response updateProfilePicture(Member currentMember, MultipartFile image) { if(!image.isEmpty()){