diff --git a/src/main/java/com/gamegoo/converter/MemberConverter.java b/src/main/java/com/gamegoo/converter/MemberConverter.java index 1791f68b..132638e5 100644 --- a/src/main/java/com/gamegoo/converter/MemberConverter.java +++ b/src/main/java/com/gamegoo/converter/MemberConverter.java @@ -53,7 +53,7 @@ public static MemberResponse.myProfileMemberDTO toMyProfileDTO(Member member) { if (member.getMemberChampionList() != null) { championResponseDTOList = member.getMemberChampionList().stream() .map(memberChampion -> MemberResponse.ChampionResponseDTO.builder() - .championId(memberChampion.getMember().getId()) + .championId(memberChampion.getChampion().getId()) .championName(memberChampion.getChampion().getName()) .build()).collect(Collectors.toList()); } @@ -81,46 +81,46 @@ public static MemberResponse.myProfileMemberDTO toMyProfileDTO(Member member) { } - public static MemberResponse.myProfileDTO profileDTO(Member member, Double mannerScoreRank) { + public static MemberResponse.myProfileDTO profileDTO(Member member, Double mannerScoreRank) { List gameStyleResponseDTOList = null; if (member.getMemberGameStyleList() != null) { gameStyleResponseDTOList = member.getMemberGameStyleList().stream() - .map(memberGameStyle -> MemberResponse.GameStyleResponseDTO.builder() - .gameStyleId(memberGameStyle.getGameStyle().getId()) - .gameStyleName(memberGameStyle.getGameStyle().getStyleName()) - .build()).collect(Collectors.toList()); + .map(memberGameStyle -> MemberResponse.GameStyleResponseDTO.builder() + .gameStyleId(memberGameStyle.getGameStyle().getId()) + .gameStyleName(memberGameStyle.getGameStyle().getStyleName()) + .build()).collect(Collectors.toList()); } List championResponseDTOList = null; if (member.getMemberChampionList() != null) { championResponseDTOList = member.getMemberChampionList().stream() - .map(memberChampion -> MemberResponse.ChampionResponseDTO.builder() - .championId(memberChampion.getMember().getId()) - .championName(memberChampion.getChampion().getName()) - .build()).collect(Collectors.toList()); + .map(memberChampion -> MemberResponse.ChampionResponseDTO.builder() + .championId(memberChampion.getChampion().getId()) + .championName(memberChampion.getChampion().getName()) + .build()).collect(Collectors.toList()); } return MemberResponse.myProfileDTO.builder() - .id(member.getId()) - .mike(member.getMike()) - .email(member.getEmail()) - .gameName(member.getGameName()) - .tag(member.getTag()) - .tier(member.getTier()) - .rank(member.getRank()) - .profileImg(member.getProfileImage()) - .mannerLevel(member.getMannerLevel()) - .mannerRank(mannerScoreRank) - .mainP(member.getMainPosition()) - .subP(member.getSubPosition()) - .isAgree(member.getIsAgree()) - .isBlind(member.getBlind()) - .winrate(member.getWinRate()) - .loginType(String.valueOf(member.getLoginType())) - .updatedAt(String.valueOf(member.getUpdatedAt())) - .gameStyleResponseDTOList(gameStyleResponseDTOList) - .championResponseDTOList(championResponseDTOList) - .build(); + .id(member.getId()) + .mike(member.getMike()) + .email(member.getEmail()) + .gameName(member.getGameName()) + .tag(member.getTag()) + .tier(member.getTier()) + .rank(member.getRank()) + .profileImg(member.getProfileImage()) + .mannerLevel(member.getMannerLevel()) + .mannerRank(mannerScoreRank) + .mainP(member.getMainPosition()) + .subP(member.getSubPosition()) + .isAgree(member.getIsAgree()) + .isBlind(member.getBlind()) + .winrate(member.getWinRate()) + .loginType(String.valueOf(member.getLoginType())) + .updatedAt(String.valueOf(member.getUpdatedAt())) + .gameStyleResponseDTOList(gameStyleResponseDTOList) + .championResponseDTOList(championResponseDTOList) + .build(); } @@ -139,7 +139,7 @@ public static MemberResponse.memberProfileDTO toMemberProfileDTO(Member member, if (targetMember.getMemberChampionList() != null) { championResponseDTOList = targetMember.getMemberChampionList().stream() .map(memberChampion -> MemberResponse.ChampionResponseDTO.builder() - .championId(memberChampion.getMember().getId()) + .championId(memberChampion.getChampion().getId()) .championName(memberChampion.getChampion().getName()) .build()).collect(Collectors.toList()); } diff --git a/src/main/java/com/gamegoo/service/board/BoardService.java b/src/main/java/com/gamegoo/service/board/BoardService.java index ba26a3cd..a4d79173 100644 --- a/src/main/java/com/gamegoo/service/board/BoardService.java +++ b/src/main/java/com/gamegoo/service/board/BoardService.java @@ -20,6 +20,11 @@ import com.gamegoo.service.manner.MannerService; import com.gamegoo.service.member.FriendService; import com.gamegoo.util.MemberUtils; +import java.util.ArrayList; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; import lombok.RequiredArgsConstructor; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.PageRequest; @@ -28,12 +33,6 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.stream.Collectors; - @Service @RequiredArgsConstructor public class BoardService { @@ -54,7 +53,7 @@ public class BoardService { public Board save(BoardRequest.boardInsertDTO request, Long memberId, Member memberProfile) { Member member = memberRepository.findById(memberId) - .orElseThrow(() -> new MemberHandler(ErrorStatus.MEMBER_NOT_FOUND)); + .orElseThrow(() -> new MemberHandler(ErrorStatus.MEMBER_NOT_FOUND)); // 게임 모드 값 검증. (1 ~ 4 값만 가능) if (request.getGameMode() < 1 || request.getGameMode() > 4) { @@ -88,9 +87,9 @@ public Board save(BoardRequest.boardInsertDTO request, Long memberId, Member mem // 게임 스타일 실제 존재 여부 검증. List gameStyleList = request.getGameStyles().stream() - .map(gameStyleId -> gameStyleRepository.findById(gameStyleId) - .orElseThrow(() -> new BoardHandler(ErrorStatus._BAD_REQUEST))) - .collect(Collectors.toList()); + .map(gameStyleId -> gameStyleRepository.findById(gameStyleId) + .orElseThrow(() -> new BoardHandler(ErrorStatus._BAD_REQUEST))) + .collect(Collectors.toList()); // 게시판 글 작성 - 프로필 이미지 수정 여부 검증. Integer boardProfileImage; @@ -102,16 +101,16 @@ public Board save(BoardRequest.boardInsertDTO request, Long memberId, Member mem } Board board = Board.builder() - .mode(request.getGameMode()) - .mainPosition(request.getMainPosition()) - .subPosition(request.getSubPosition()) - .wantPosition(request.getWantPosition()) - .mike(request.getMike()) - .boardGameStyles(new ArrayList<>()) - .content(request.getContents()) - .boardProfileImage(boardProfileImage) - .deleted(false) - .build(); + .mode(request.getGameMode()) + .mainPosition(request.getMainPosition()) + .subPosition(request.getSubPosition()) + .wantPosition(request.getWantPosition()) + .mike(request.getMike()) + .boardGameStyles(new ArrayList<>()) + .content(request.getContents()) + .boardProfileImage(boardProfileImage) + .deleted(false) + .build(); board.setMember(member); @@ -120,8 +119,8 @@ public Board save(BoardRequest.boardInsertDTO request, Long memberId, Member mem // BoardGameStyle 엔티티 생성 및 연관관계 매핑. gameStyleList.forEach(gameStyle -> { BoardGameStyle boardGameStyle = BoardGameStyle.builder() - .gameStyle(gameStyle) - .build(); + .gameStyle(gameStyle) + .build(); boardGameStyle.setBoard(saveBoard); boardGameStyleRepository.save(boardGameStyle); @@ -135,7 +134,7 @@ public Board save(BoardRequest.boardInsertDTO request, Long memberId, Member mem public Board update(BoardRequest.boardUpdateDTO request, Long memberId, Long boardId) { Board board = boardRepository.findById(boardId) - .orElseThrow(() -> new BoardHandler(ErrorStatus.BOARD_NOT_FOUND)); + .orElseThrow(() -> new BoardHandler(ErrorStatus.BOARD_NOT_FOUND)); // 게시글 작성자가 맞는지 검증. if (!board.getMember().getId().equals(memberId)) { @@ -143,7 +142,7 @@ public Board update(BoardRequest.boardUpdateDTO request, Long memberId, Long boa } // 삭제된 게시글인지 검증. - if(board.getDeleted()){ + if (board.getDeleted()) { throw new BoardHandler(ErrorStatus.BOARD_DELETED); } @@ -174,9 +173,9 @@ public Board update(BoardRequest.boardUpdateDTO request, Long memberId, Long boa // 게임 스타일 실제 존재 여부 검증. List gameStyleList = request.getGameStyles().stream() - .map(gameStyleId -> gameStyleRepository.findById(gameStyleId) - .orElseThrow(() -> new BoardHandler(ErrorStatus._BAD_REQUEST))) - .collect(Collectors.toList()); + .map(gameStyleId -> gameStyleRepository.findById(gameStyleId) + .orElseThrow(() -> new BoardHandler(ErrorStatus._BAD_REQUEST))) + .collect(Collectors.toList()); // 게시판 글 수정 - 프로필 이미지 수정 여부 검증. Integer boardProfileImage; @@ -194,25 +193,25 @@ public Board update(BoardRequest.boardUpdateDTO request, Long memberId, Long boa // 게시판 글 데이터 수정 board.updateBoard( - request.getGameMode(), - request.getMainPosition(), - request.getSubPosition(), - request.getWantPosition(), - request.getMike(), - request.getContents(), - boardProfileImage + request.getGameMode(), + request.getMainPosition(), + request.getSubPosition(), + request.getWantPosition(), + request.getMike(), + request.getContents(), + boardProfileImage ); // 기존 BoardGameStyle 엔티티 업데이트 Map existingGameStyles = board.getBoardGameStyles().stream() - .collect(Collectors.toMap( - boardGameStyle -> boardGameStyle.getGameStyle().getId(), - boardGameStyle -> boardGameStyle, - (existing, replacement) -> existing)); + .collect(Collectors.toMap( + boardGameStyle -> boardGameStyle.getGameStyle().getId(), + boardGameStyle -> boardGameStyle, + (existing, replacement) -> existing)); Set newGameStyleIds = gameStyleList.stream() - .map(GameStyle::getId) - .collect(Collectors.toSet()); + .map(GameStyle::getId) + .collect(Collectors.toSet()); // 삭제할 엔티티를 검색 List toRemove = new ArrayList<>(); @@ -228,8 +227,8 @@ public Board update(BoardRequest.boardUpdateDTO request, Long memberId, Long boa BoardGameStyle boardGameStyle = existingGameStyles.get(gameStyle.getId()); if (boardGameStyle == null) { boardGameStyle = BoardGameStyle.builder() - .gameStyle(gameStyle) - .build(); + .gameStyle(gameStyle) + .build(); // 연관관계 메소드 사용 boardGameStyle.setBoard(board); } else { @@ -246,7 +245,7 @@ public Board update(BoardRequest.boardUpdateDTO request, Long memberId, Long boa public void delete(Long boardId, Long memberId) { Board board = boardRepository.findById(boardId) - .orElseThrow(() -> new BoardHandler(ErrorStatus.BOARD_NOT_FOUND)); + .orElseThrow(() -> new BoardHandler(ErrorStatus.BOARD_NOT_FOUND)); // 게시글 작성자가 맞는지 검증. if (!board.getMember().getId().equals(memberId)) { @@ -262,7 +261,7 @@ public void delete(Long boardId, Long memberId) { // 게시판 글 목록 조회 @Transactional(readOnly = true) public BoardResponse.boardResponseDTO getBoardList(Integer mode, Tier tier, - Integer mainPosition, Boolean mike, int pageIdx) { + Integer mainPosition, Boolean mike, int pageIdx) { // pageIdx 값 검증. if (pageIdx <= 0) { @@ -280,55 +279,55 @@ public BoardResponse.boardResponseDTO getBoardList(Integer mode, Tier tier, if (totalCount == 0) { totalPage = 1; - }else{ + } else { totalPage = (int) Math.ceil((double) totalCount / PAGE_SIZE); } // 사용자로부터 받은 pageIdx를 1 감소 -> pageIdx=1 일 때, 1 페이지. Pageable pageable = PageRequest.of(pageIdx - 1, PAGE_SIZE, - Sort.by(Sort.Direction.DESC, "createdAt")); + Sort.by(Sort.Direction.DESC, "createdAt")); List boards = boardRepository.findByFilters(mode, tier, mainPosition, mike, pageable) - .getContent(); + .getContent(); - List boardList = boards.stream().map(board -> { + List boardList = boards.stream().map(board -> { Member member = board.getMember(); List championResponseDTOList = null; if (member.getMemberChampionList() != null) { championResponseDTOList = member.getMemberChampionList().stream() - .map(memberChampion -> MemberResponse.ChampionResponseDTO.builder() - .championId(memberChampion.getMember().getId()) - .championName(memberChampion.getChampion().getName()) - .build()).collect(Collectors.toList()); + .map(memberChampion -> MemberResponse.ChampionResponseDTO.builder() + .championId(memberChampion.getChampion().getId()) + .championName(memberChampion.getChampion().getName()) + .build()).collect(Collectors.toList()); } return BoardResponse.boardListResponseDTO.builder() - .boardId(board.getId()) - .memberId(member.getId()) - .profileImage(board.getBoardProfileImage()) - .gameName(member.getGameName()) - .mannerLevel(member.getMannerLevel()) - .tier(member.getTier()) - .rank(member.getRank()) - .gameMode(board.getMode()) - .mainPosition(board.getMainPosition()) - .subPosition(board.getSubPosition()) - .wantPosition(board.getWantPosition()) - .championResponseDTOList(championResponseDTOList) - .winRate(member.getWinRate()) - .createdAt(board.getCreatedAt()) - .mike(board.getMike()) - .build(); + .boardId(board.getId()) + .memberId(member.getId()) + .profileImage(board.getBoardProfileImage()) + .gameName(member.getGameName()) + .mannerLevel(member.getMannerLevel()) + .tier(member.getTier()) + .rank(member.getRank()) + .gameMode(board.getMode()) + .mainPosition(board.getMainPosition()) + .subPosition(board.getSubPosition()) + .wantPosition(board.getWantPosition()) + .championResponseDTOList(championResponseDTOList) + .winRate(member.getWinRate()) + .createdAt(board.getCreatedAt()) + .mike(board.getMike()) + .build(); }).collect(Collectors.toList()); return BoardResponse.boardResponseDTO.builder() - .totalPage(totalPage) - .totalCount(totalCount) - .boards(boardList) - .build(); + .totalPage(totalPage) + .totalCount(totalCount) + .boards(boardList) + .build(); } // 비회원 게시판 글 조회 @@ -336,9 +335,9 @@ public BoardResponse.boardResponseDTO getBoardList(Integer mode, Tier tier, public BoardResponse.boardByIdResponseDTO getBoardById(Long boardId) { Board board = boardRepository.findById(boardId) - .orElseThrow(() -> new BoardHandler(ErrorStatus.BOARD_NOT_FOUND)); + .orElseThrow(() -> new BoardHandler(ErrorStatus.BOARD_NOT_FOUND)); - if(board.getDeleted()){ + if (board.getDeleted()) { throw new BoardHandler(ErrorStatus.BOARD_DELETED); } @@ -347,99 +346,97 @@ public BoardResponse.boardByIdResponseDTO getBoardById(Long boardId) { List championResponseDTOList = null; if (poster.getMemberChampionList() != null) { championResponseDTOList = poster.getMemberChampionList().stream() - .map(memberChampion -> MemberResponse.ChampionResponseDTO.builder() - .championId(memberChampion.getMember().getId()) - .championName(memberChampion.getChampion().getName()) - .build()).collect(Collectors.toList()); + .map(memberChampion -> MemberResponse.ChampionResponseDTO.builder() + .championId(memberChampion.getChampion().getId()) + .championName(memberChampion.getChampion().getName()) + .build()).collect(Collectors.toList()); } - return BoardResponse.boardByIdResponseDTO.builder() - .boardId(board.getId()) - .memberId(poster.getId()) - .createdAt(board.getCreatedAt()) - .profileImage(board.getBoardProfileImage()) - .gameName(poster.getGameName()) - .tag(poster.getTag()) - .mannerLevel(poster.getMannerLevel()) - .tier(poster.getTier()) - .rank(poster.getRank()) - .championResponseDTOList(championResponseDTOList) - .mike(board.getMike()) - .gameMode(board.getMode()) - .mainPosition(board.getMainPosition()) - .subPosition(board.getSubPosition()) - .wantPosition(board.getWantPosition()) - .recentGameCount(poster.getGameCount()) - .winRate(poster.getWinRate()) - .gameStyles(board.getBoardGameStyles().stream() - .map(boardGameStyle -> boardGameStyle.getGameStyle().getId()) - .collect(Collectors.toList())) - .contents(board.getContent()) - .build(); + .boardId(board.getId()) + .memberId(poster.getId()) + .createdAt(board.getCreatedAt()) + .profileImage(board.getBoardProfileImage()) + .gameName(poster.getGameName()) + .tag(poster.getTag()) + .mannerLevel(poster.getMannerLevel()) + .tier(poster.getTier()) + .rank(poster.getRank()) + .championResponseDTOList(championResponseDTOList) + .mike(board.getMike()) + .gameMode(board.getMode()) + .mainPosition(board.getMainPosition()) + .subPosition(board.getSubPosition()) + .wantPosition(board.getWantPosition()) + .recentGameCount(poster.getGameCount()) + .winRate(poster.getWinRate()) + .gameStyles(board.getBoardGameStyles().stream() + .map(boardGameStyle -> boardGameStyle.getGameStyle().getId()) + .collect(Collectors.toList())) + .contents(board.getContent()) + .build(); } // 회원 게시판 글 조회 @Transactional(readOnly = true) public BoardResponse.boardByIdResponseForMemberDTO getBoardByIdForMember(Long boardId, - Long memberId) { + Long memberId) { Board board = boardRepository.findById(boardId) - .orElseThrow(() -> new BoardHandler(ErrorStatus.BOARD_NOT_FOUND)); + .orElseThrow(() -> new BoardHandler(ErrorStatus.BOARD_NOT_FOUND)); - if (board.getDeleted()){ + if (board.getDeleted()) { throw new BoardHandler(ErrorStatus.BOARD_DELETED); } Member member = memberRepository.findById(memberId) - .orElseThrow(() -> new MemberHandler(ErrorStatus.MEMBER_NOT_FOUND)); + .orElseThrow(() -> new MemberHandler(ErrorStatus.MEMBER_NOT_FOUND)); Member poster = board.getMember(); List mannerKeywordDTOs = mannerService.mannerKeyword( - poster); + poster); List mannerKeywords = mannerService.sortMannerKeywordDTOs( - mannerKeywordDTOs); + mannerKeywordDTOs); List championResponseDTOList = null; if (member.getMemberChampionList() != null) { championResponseDTOList = member.getMemberChampionList().stream() - .map(memberChampion -> MemberResponse.ChampionResponseDTO.builder() - .championId(memberChampion.getMember().getId()) - .championName(memberChampion.getChampion().getName()) - .build()).collect(Collectors.toList()); + .map(memberChampion -> MemberResponse.ChampionResponseDTO.builder() + .championId(memberChampion.getChampion().getId()) + .championName(memberChampion.getChampion().getName()) + .build()).collect(Collectors.toList()); } - return BoardResponse.boardByIdResponseForMemberDTO.builder() - .boardId(board.getId()) - .memberId(poster.getId()) - .isBlocked(MemberUtils.isBlocked(member, poster)) - .isFriend(friendService.isFriend(member, poster)) - .friendRequestMemberId(friendService.getFriendRequestMemberId(member, poster)) - .createdAt(board.getCreatedAt()) - .profileImage(board.getBoardProfileImage()) - .gameName(poster.getGameName()) - .tag(poster.getTag()) - .mannerLevel(poster.getMannerLevel()) - .mannerKeywords(mannerKeywords) - .tier(poster.getTier()) - .rank(poster.getRank()) - .championResponseDTOList(championResponseDTOList) - .mike(board.getMike()) - .gameMode(board.getMode()) - .mainPosition(board.getMainPosition()) - .subPosition(board.getSubPosition()) - .wantPosition(board.getWantPosition()) - .recentGameCount(poster.getGameCount()) - .winRate(poster.getWinRate()) - .gameStyles(board.getBoardGameStyles().stream() - .map(boardGameStyle -> boardGameStyle.getGameStyle().getId()) - .collect(Collectors.toList())) - .contents(board.getContent()) - .build(); + .boardId(board.getId()) + .memberId(poster.getId()) + .isBlocked(MemberUtils.isBlocked(member, poster)) + .isFriend(friendService.isFriend(member, poster)) + .friendRequestMemberId(friendService.getFriendRequestMemberId(member, poster)) + .createdAt(board.getCreatedAt()) + .profileImage(board.getBoardProfileImage()) + .gameName(poster.getGameName()) + .tag(poster.getTag()) + .mannerLevel(poster.getMannerLevel()) + .mannerKeywords(mannerKeywords) + .tier(poster.getTier()) + .rank(poster.getRank()) + .championResponseDTOList(championResponseDTOList) + .mike(board.getMike()) + .gameMode(board.getMode()) + .mainPosition(board.getMainPosition()) + .subPosition(board.getSubPosition()) + .wantPosition(board.getWantPosition()) + .recentGameCount(poster.getGameCount()) + .winRate(poster.getWinRate()) + .gameStyles(board.getBoardGameStyles().stream() + .map(boardGameStyle -> boardGameStyle.getGameStyle().getId()) + .collect(Collectors.toList())) + .contents(board.getContent()) + .build(); } // 내가 작성한 게시판 글 목록 조회 @@ -462,37 +459,38 @@ public BoardResponse.myBoardResponseDTO getMyBoardList(Long memberId, int pageId if (totalCount == 0) { totalPage = 1; - }else{ + } else { totalPage = (int) Math.ceil((double) totalCount / 10); } // 사용자로부터 받은 pageIdx를 1 감소 -> pageIdx=1 일 때, 1 페이지. 페이지당 표시할 게시물 수 = 10개. Pageable pageable = PageRequest.of(pageIdx - 1, 10, - Sort.by(Sort.Direction.DESC, "createdAt")); + Sort.by(Sort.Direction.DESC, "createdAt")); - List boards = boardRepository.findByMemberIdAndDeletedFalse(memberId, pageable).getContent(); + List boards = boardRepository.findByMemberIdAndDeletedFalse(memberId, pageable) + .getContent(); List myBoardList = boards.stream().map(board -> { Member member = board.getMember(); return BoardResponse.myBoardListResponseDTO.builder() - .boardId(board.getId()) - .memberId(member.getId()) - .profileImage(board.getBoardProfileImage()) - .gameName(member.getGameName()) - .tag(member.getTag()) - .tier(member.getTier()) - .rank(member.getRank()) - .contents(board.getContent()) - .createdAt(board.getCreatedAt()) - .build(); + .boardId(board.getId()) + .memberId(member.getId()) + .profileImage(board.getBoardProfileImage()) + .gameName(member.getGameName()) + .tag(member.getTag()) + .tier(member.getTier()) + .rank(member.getRank()) + .contents(board.getContent()) + .createdAt(board.getCreatedAt()) + .build(); }).collect(Collectors.toList()); return BoardResponse.myBoardResponseDTO.builder() - .totalPage(totalPage) - .totalCount(totalCount) - .myBoards(myBoardList) - .build(); + .totalPage(totalPage) + .totalCount(totalCount) + .myBoards(myBoardList) + .build(); } /** @@ -503,6 +501,6 @@ public BoardResponse.myBoardResponseDTO getMyBoardList(Long memberId, int pageId */ public Board findBoard(Long boardId) { return boardRepository.findById(boardId) - .orElseThrow(() -> new BoardHandler(ErrorStatus.BOARD_NOT_FOUND)); + .orElseThrow(() -> new BoardHandler(ErrorStatus.BOARD_NOT_FOUND)); } }