Skip to content

Commit

Permalink
Merge pull request #170 from Gamegoo-repo/feat/161
Browse files Browse the repository at this point in the history
[Feat/161] λ‚΄κ°€ μž‘μ„±ν•œ κ²Œμ‹œνŒ κΈ€ λͺ©λ‘ 쑰회 API
  • Loading branch information
Eunjin3395 authored Jan 20, 2025
2 parents 99158bf + 617f133 commit cbb364a
Show file tree
Hide file tree
Showing 6 changed files with 109 additions and 1 deletion.
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import com.gamegoo.gamegoo_v2.content.board.dto.response.BoardInsertResponse;
import com.gamegoo.gamegoo_v2.content.board.dto.response.BoardResponse;
import com.gamegoo.gamegoo_v2.content.board.dto.response.BoardUpdateResponse;
import com.gamegoo.gamegoo_v2.content.board.dto.response.MyBoardResponse;
import com.gamegoo.gamegoo_v2.content.board.service.BoardFacadeService;
import com.gamegoo.gamegoo_v2.core.common.ApiResponse;
import com.gamegoo.gamegoo_v2.core.common.annotation.ValidPage;
Expand Down Expand Up @@ -110,5 +111,12 @@ public ApiResponse<String> delete(@PathVariable Long boardId, @AuthMember Member
return ApiResponse.ok("κ²Œμ‹œκΈ€μ„ μ‚­μ œν•˜μ˜€μŠ΅λ‹ˆλ‹€.");
}

@GetMapping("/my")
@Operation(summary = "λ‚΄κ°€ μž‘μ„±ν•œ κ²Œμ‹œνŒ κΈ€ λͺ©λ‘ 쑰회 API", description = "λ‚΄κ°€ μž‘μ„±ν•œ κ²Œμ‹œνŒ 글을 μ‘°νšŒν•˜λŠ” API μž…λ‹ˆλ‹€. νŽ˜μ΄μ§€ λ‹Ή 10개의 κ²Œμ‹œλ¬Όμ΄ ν‘œμ‹œλ©λ‹ˆλ‹€.")
@Parameter(name = "pageIdx", description = "μ‘°νšŒν•  νŽ˜μ΄μ§€ 번호λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš”.")
public ApiResponse<MyBoardResponse> getMyBoardList(@ValidPage @RequestParam(name = "page") Integer page,
@AuthMember Member member) {
return ApiResponse.ok(boardFacadeService.getMyBoardList(member, page));
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package com.gamegoo.gamegoo_v2.content.board.dto.response;

import com.gamegoo.gamegoo_v2.account.member.domain.Member;
import com.gamegoo.gamegoo_v2.account.member.domain.Tier;
import com.gamegoo.gamegoo_v2.content.board.domain.Board;
import lombok.Builder;
import lombok.Getter;

import java.time.LocalDateTime;

@Getter
@Builder
public class MyBoardListResponse {

long boardId;
long memberId;
Integer profileImage;
String gameName;
String tag;
Tier tier;
int rank;
String contents;
LocalDateTime createdAt;

public static MyBoardListResponse of(Board board) {
Member member = board.getMember();
return MyBoardListResponse.builder()
.boardId(board.getId())
.memberId(member.getId())
.profileImage(board.getBoardProfileImage())
.gameName(member.getGameName())
.tag(member.getTag())
.tier(member.getTier())
.rank(member.getGameRank())
.createdAt(board.getCreatedAt())
.build();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package com.gamegoo.gamegoo_v2.content.board.dto.response;

import com.gamegoo.gamegoo_v2.content.board.domain.Board;
import lombok.Builder;
import lombok.Getter;
import org.springframework.data.domain.Page;

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

@Getter
@Builder
public class MyBoardResponse {

Integer totalPage;
Integer totalCount;
List<MyBoardListResponse> myBoards;

public static MyBoardResponse of(Page<Board> boardPage) {
// 전체 νŽ˜μ΄μ§€/개수 μΆ”μΆœ
int totalCount = (int) boardPage.getTotalElements();
int totalPage = (boardPage.getTotalPages() == 0) ? 1 : boardPage.getTotalPages();

// Board -> MyBoardListResponse λ³€ν™˜
List<MyBoardListResponse> boardList = boardPage.getContent().stream()
.map(MyBoardListResponse::of)
.collect(Collectors.toList());

// DTO 생성
return MyBoardResponse.builder()
.totalPage(totalPage)
.totalCount(totalCount)
.myBoards(boardList)
.build();
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,8 @@ Page<Board> findByFilters(@Param("mode") Integer mode,


Optional<Board> findByIdAndDeleted(Long boardId, boolean b);



Page<Board> findByMemberIdAndDeletedFalse(Long memberId, Pageable pageable);

}
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import com.gamegoo.gamegoo_v2.content.board.dto.response.BoardInsertResponse;
import com.gamegoo.gamegoo_v2.content.board.dto.response.BoardResponse;
import com.gamegoo.gamegoo_v2.content.board.dto.response.BoardUpdateResponse;
import com.gamegoo.gamegoo_v2.content.board.dto.response.MyBoardResponse;
import com.gamegoo.gamegoo_v2.core.common.annotation.ValidPage;
import com.gamegoo.gamegoo_v2.social.block.service.BlockService;
import com.gamegoo.gamegoo_v2.social.friend.service.FriendService;
Expand Down Expand Up @@ -117,5 +118,13 @@ public void deleteBoard(Member member, Long boardId) {
boardService.deleteBoard(boardId, member.getId());
}

/**
* λ‚΄κ°€ μž‘μ„±ν•œ κ²Œμ‹œκΈ€ λͺ©λ‘ 쑰회 (νŒŒμ‚¬λ“œ)
*/
public MyBoardResponse getMyBoardList(Member member, int pageIdx) {
Page<Board> boardPage = boardService.getMyBoards(member.getId(), pageIdx);
return MyBoardResponse.of(boardPage);
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ public class BoardService {

private final BoardRepository boardRepository;
public static final int PAGE_SIZE = 20;
public static final int MY_PAGE_SIZE = 10;

/**
* κ²Œμ‹œκΈ€ μ—”ν‹°ν‹° 생성 및 μ €μž₯
Expand Down Expand Up @@ -112,6 +113,18 @@ public void deleteBoard(Long boardId, Long memberId) {
boardRepository.save(board);
}

/**
* λ‚΄κ°€ μž‘μ„±ν•œ κ²Œμ‹œκΈ€(Page) 쑰회
*/
public Page<Board> getMyBoards(Long memberId, int pageIdx) {
if (pageIdx <= 0) {
throw new IllegalArgumentException("pageIdxλŠ” 1 μ΄μƒμ˜ 값이어야 ν•©λ‹ˆλ‹€.");
}
// PageRequest.of의 첫 번째 인자(pageIdx - 1)λŠ” 0-based index
Pageable pageable = PageRequest.of(pageIdx - 1, MY_PAGE_SIZE, Sort.by(Sort.Direction.DESC, "createdAt"));
return boardRepository.findByMemberIdAndDeletedFalse(memberId, pageable);
}

/**
* Board μ €μž₯
*/
Expand Down

0 comments on commit cbb364a

Please sign in to comment.