Skip to content

Commit

Permalink
Merge pull request #43 from Team-Lecue/feat/#11-mypage_get_api
Browse files Browse the repository at this point in the history
[FEAT] 마이페이지 조회 API 구현
  • Loading branch information
eeddiinn authored Jan 11, 2024
2 parents d55c96e + 649d5ae commit 70eb73c
Show file tree
Hide file tree
Showing 9 changed files with 139 additions and 5 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,8 @@
import org.sopt.lequuServer.domain.member.dto.request.SocialLoginRequestDto;
import org.sopt.lequuServer.domain.member.dto.response.MemberLoginResponseDto;
import org.sopt.lequuServer.domain.member.dto.response.MemberNicknameResponseDto;
import org.sopt.lequuServer.domain.member.dto.response.MypageBookResponseDto;
import org.sopt.lequuServer.domain.member.dto.response.MypageNoteResponseDto;
import org.sopt.lequuServer.domain.member.service.MemberService;
import org.sopt.lequuServer.global.auth.fegin.kakao.KakaoLoginService;
import org.sopt.lequuServer.global.auth.jwt.JwtProvider;
Expand All @@ -16,8 +18,9 @@
import org.springframework.web.bind.annotation.*;

import java.security.Principal;
import java.util.List;

import static org.sopt.lequuServer.global.exception.enums.SuccessType.SET_MEMBER_NICKNAME_SUCCESS;
import static org.sopt.lequuServer.global.exception.enums.SuccessType.*;

@RestController
@RequestMapping("/api")
Expand Down Expand Up @@ -66,4 +69,16 @@ public ApiResponse<MemberNicknameResponseDto> setMemberNickname(Principal princi

return ApiResponse.success(SET_MEMBER_NICKNAME_SUCCESS, memberService.setMemberNickname(JwtProvider.getUserFromPrincial(principal), request));
}

@GetMapping("/mypage/book")
@ResponseStatus(HttpStatus.OK)
public ApiResponse<MypageBookResponseDto> getMypageBook(Principal principal) {
return ApiResponse.success(GET_MYPAGE_BOOK_SUCCESS, memberService.getMypageBook(JwtProvider.getUserFromPrincial(principal)));
}

@GetMapping("/mypage/note")
@ResponseStatus(HttpStatus.OK)
public ApiResponse<List<MypageNoteResponseDto>> getMypageNote(Principal principal) {
return ApiResponse.success(GET_MYPAGE_NOTE_SUCCESS, memberService.getMypageNote(JwtProvider.getUserFromPrincial(principal)));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package org.sopt.lequuServer.domain.member.dto.response;

import org.sopt.lequuServer.domain.book.model.Book;

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;

public record MypageBookListResponseDto(

Long bookId,
String bookUuid,
String title,
String bookDate,
int bookBackgroundColor,

int noteNum
) {
public static MypageBookListResponseDto of(Book book) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.MM.dd");
String bookDate = book.getCreatedAt().format(formatter);

return new MypageBookListResponseDto(
book.getId(),
book.getUuid(),
book.getTitle(),
bookDate,
book.getBackgroundColor(),
book.getNotes().size()
);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package org.sopt.lequuServer.domain.member.dto.response;

import org.sopt.lequuServer.domain.book.model.Book;

import java.util.List;

public record MypageBookResponseDto(
String memberNickname,
List<MypageBookListResponseDto> mypageBookList
) {
public static MypageBookResponseDto of(String nickName, List<Book> books) {
List<MypageBookListResponseDto> mypageBookList = books.stream()
.map(MypageBookListResponseDto::of)
.toList();

return new MypageBookResponseDto(nickName, mypageBookList);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
package org.sopt.lequuServer.domain.member.dto.response;

import org.sopt.lequuServer.domain.note.model.Note;

import java.time.format.DateTimeFormatter;

public record MypageNoteResponseDto(
String bookUuid,

String title,

Long noteId,
String content,

String noteDate,

int noteBackgroundColor,
String noteBackgroundImage
) {
public static MypageNoteResponseDto of(Note note) {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy.MM.dd");
String noteDate = note.getCreatedAt().format(formatter);

String background = note.getBackground();
if (background.endsWith(".jpg")) {
return new MypageNoteResponseDto(note.getBook().getUuid(), note.getBook().getTitle(),
note.getId(), note.getContent(), noteDate, -1, background);
}
return new MypageNoteResponseDto(note.getBook().getUuid(), note.getBook().getTitle(),
note.getId(), note.getContent(), noteDate, Integer.parseInt(background), "");
}
}
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
package org.sopt.lequuServer.domain.member.repository;

import java.util.Optional;
import org.sopt.lequuServer.domain.member.model.Member;
import org.sopt.lequuServer.domain.member.model.SocialPlatform;
import org.sopt.lequuServer.global.exception.enums.ErrorType;
import org.sopt.lequuServer.global.exception.model.CustomException;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.Optional;

public interface MemberRepository extends JpaRepository<Member, Long> {

boolean existsBySocialPlatformAndSocialId(SocialPlatform socialPlatform, String socialId);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
package org.sopt.lequuServer.domain.member.service;

import lombok.RequiredArgsConstructor;
import org.sopt.lequuServer.domain.book.model.Book;
import org.sopt.lequuServer.domain.member.dto.request.MemberNicknameRequestDto;
import org.sopt.lequuServer.domain.member.dto.request.SocialLoginRequestDto;
import org.sopt.lequuServer.domain.member.dto.response.MemberLoginResponseDto;
import org.sopt.lequuServer.domain.member.dto.response.MemberNicknameResponseDto;
import org.sopt.lequuServer.domain.member.dto.response.MypageBookResponseDto;
import org.sopt.lequuServer.domain.member.dto.response.MypageNoteResponseDto;
import org.sopt.lequuServer.domain.member.model.Member;
import org.sopt.lequuServer.domain.member.model.SocialPlatform;
import org.sopt.lequuServer.domain.member.repository.MemberRepository;
import org.sopt.lequuServer.domain.note.model.Note;
import org.sopt.lequuServer.global.auth.fegin.kakao.KakaoLoginService;
import org.sopt.lequuServer.global.auth.jwt.JwtProvider;
import org.sopt.lequuServer.global.auth.jwt.TokenDto;
Expand All @@ -16,6 +20,9 @@
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.List;
import java.util.stream.Collectors;

import static org.sopt.lequuServer.global.exception.enums.ErrorType.*;

@Service
Expand Down Expand Up @@ -110,4 +117,32 @@ public MemberNicknameResponseDto setMemberNickname(Long memberId, MemberNickname

return MemberNicknameResponseDto.of(memberId);
}
}

public MypageBookResponseDto getMypageBook(Long memberId) {

// 회원 id 찾기
Member member = memberRepository.findByIdOrThrow(memberId);

// 회원 id로 memberNickname 조회
String nickname = member.getNickname();

// 회원이 소유한 Book 리스트 가져오기
List<Book> books = member.getBooks();

return MypageBookResponseDto.of(nickname, books);
}

public List<MypageNoteResponseDto> getMypageNote(Long memberId) {

// 회원 id 찾기
Member member = memberRepository.findByIdOrThrow(memberId);

// 회원이 소유한 Note 리스트 가져오기
List<Note> notes = member.getNotes();

return notes.stream()
.map(MypageNoteResponseDto::of)
.collect(Collectors.toList());
}
}

Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ public record NoteCreateDto(
String content,
@Schema(example = "0")
int textColor,
@Schema(example = "0")
@Schema(example = "0 or ~.jpg")
String background
) {
}
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,6 @@ public NoteCreateResponseDto createNote(Long userId, NoteCreateDto noteCreateDto
background = s3Service.getURL(NOTE_BACKGROUND_IMAGE_FOLDER_NAME.getValue() + noteCreateDto.background());
}

return noteService.saveNote(Note.of(noteCreateDto.content(), background, noteCreateDto.textColor(), member, book), member, book);
return noteService.saveNote(Note.of(noteCreateDto.content(), noteCreateDto.background(), noteCreateDto.textColor(), member, book), member, book);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@ public enum SuccessType {
STICKER_PACK_LIST_SUCCESS(HttpStatus.OK, "스티커팩 목록 조회에 성공했습니다."),
GET_SPLASH_SUCCESS(HttpStatus.OK, "스플래시 조회에 성공했습니다."),
GET_HOME_SUCCESS(HttpStatus.OK, "홈 화면 조회에 성공했습니다."),
GET_MYPAGE_BOOK_SUCCESS(HttpStatus.OK, "마이페이지의 유저 닉네임과 내 레큐북 조회에 성공했습니다."),
GET_MYPAGE_NOTE_SUCCESS(HttpStatus.OK, "마이페이지 내 레큐노트 조회에 성공했습니다."),

/**
* 201 CREATED
Expand Down

0 comments on commit 70eb73c

Please sign in to comment.