Skip to content

Commit

Permalink
[Refactor] 상속을 통해 코드를 더 단순화 하였음
Browse files Browse the repository at this point in the history
  • Loading branch information
NARUBROWN committed Jan 19, 2024
1 parent 2936a3e commit 0901f97
Show file tree
Hide file tree
Showing 23 changed files with 445 additions and 550 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import org.springframework.web.bind.annotation.*;
import server.inuappcenter.kr.common.data.dto.CommonResponseDto;
import server.inuappcenter.kr.data.dto.request.FaqBoardRequestDto;
import server.inuappcenter.kr.data.dto.response.FaqBoardResponseDto;
import server.inuappcenter.kr.data.dto.response.BoardResponseDto;
import server.inuappcenter.kr.service.boardService.BoardService;
import server.inuappcenter.kr.service.boardService.FaqBoardService;

Expand All @@ -25,18 +25,16 @@ public class FaqController {

@Operation(summary = "FAQ 한 개 가져오기", description = "조회할 faq_id를 입력해주세요")
@GetMapping("public/{id}")
public ResponseEntity<FaqBoardResponseDto> getFaqBoard(final @PathVariable("id") Long id) {
public ResponseEntity<BoardResponseDto> getFaqBoard(final @PathVariable("id") Long id) {
log.info("사용자가 id: " + id + "을(를) 가진 FAQ를 요청했습니다.");
FaqBoardResponseDto faqBoardResponseDto = faqBoardService.getFaqBoard(id);
return ResponseEntity.status(HttpStatus.OK).body(faqBoardResponseDto);
return ResponseEntity.status(HttpStatus.OK).body(boardService.findBoard(id));
}

@Operation(summary = "FAQ 전체 가져오기", description = "전체 FAQ 목록을 가져옵니다.")
@GetMapping("public/all-faq-boards")
public ResponseEntity<List<FaqBoardResponseDto>> getFaqBoardList() {
public ResponseEntity<List<BoardResponseDto>> getFaqBoardList() {
log.info("사용자가 전체 FAQ 목록을 요청했습니다.");
List<FaqBoardResponseDto> faqBoardResponseDtoList = faqBoardService.getFaqBoardList();
return ResponseEntity.status(HttpStatus.OK).body(faqBoardResponseDtoList);
return ResponseEntity.status(HttpStatus.OK).body(faqBoardService.findFaqBoardList());
}

@Operation(summary = "FAQ 한 개 작성", description = "저장할 FAQ JSON을 보내주세요")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import org.springframework.web.bind.annotation.*;
import server.inuappcenter.kr.common.data.dto.CommonResponseDto;
import server.inuappcenter.kr.data.dto.request.IntroBoardRequestDto;
import server.inuappcenter.kr.data.dto.response.IntroBoardResponseDto;
import server.inuappcenter.kr.data.dto.response.BoardResponseDto;
import server.inuappcenter.kr.exception.customExceptions.CustomModelAttributeException;
import server.inuappcenter.kr.service.boardService.BoardService;
import server.inuappcenter.kr.service.boardService.IntroBoardService;
Expand All @@ -32,10 +32,9 @@ public class IntroBoardController {
@Operation(summary = "게시글 (1개) 가져오기", description = "가져올 게시글의 id를 입력해주세요")
@Parameter(name = "id", description = "게시판 id", required = true)
@GetMapping("/public/{id}")
public ResponseEntity<IntroBoardResponseDto> getBoard(final @PathVariable("id") Long id) {
public ResponseEntity<BoardResponseDto> getBoard(final @PathVariable("id") Long id) {
log.info("사용자가 id: " + id + "을(를) 가진 IntroBoard를 요청했습니다.");
IntroBoardResponseDto boardResponseDto = introBoardService.getIntroBoard(id);
return ResponseEntity.status(HttpStatus.OK).body(boardResponseDto);
return ResponseEntity.status(HttpStatus.OK).body(boardService.findBoard(id));
}
@Operation(summary = "게시글 (1개) 저장하기", description = "게시글을 저장합니다. (첫번째 사진은 게시글의 썸네일로 사용됩니다.)")
@PostMapping(consumes = {MediaType.MULTIPART_FORM_DATA_VALUE})
Expand All @@ -61,10 +60,9 @@ public ResponseEntity<CommonResponseDto> deleteBoard(final @PathVariable("id") L

@Operation(summary = "앱 소개 글 (전체) 조회", description = "앱 소개 글을 모두 반환합니다.")
@GetMapping("/public/all-boards-contents")
public ResponseEntity<List<IntroBoardResponseDto>> findAllBoard() {
public ResponseEntity<List<BoardResponseDto>> findAllBoard() {
log.info("사용자가 전체 IntroBoard 목록을 요청했습니다.");
List<IntroBoardResponseDto> dto_list = introBoardService.findAllIntroBoard();
return ResponseEntity.status(HttpStatus.OK).body(dto_list);
return ResponseEntity.status(HttpStatus.OK).body(introBoardService.findIntroBoardList());
}


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
import org.springframework.web.bind.annotation.*;
import server.inuappcenter.kr.common.data.dto.CommonResponseDto;
import server.inuappcenter.kr.data.dto.request.PhotoBoardRequestDto;
import server.inuappcenter.kr.data.dto.response.PhotoBoardResponseDto;
import server.inuappcenter.kr.data.dto.response.BoardResponseDto;
import server.inuappcenter.kr.exception.customExceptions.CustomModelAttributeException;
import server.inuappcenter.kr.service.boardService.BoardService;
import server.inuappcenter.kr.service.boardService.PhotoBoardService;
Expand All @@ -31,10 +31,9 @@ public class PhotoBoardController {
@Operation(summary = "게시글 (1개) 가져오기", description = "가져올 게시글의 id를 입력해주세요")
@Parameter(name = "id", description = "게시판 id")
@GetMapping("/public/{id}")
public ResponseEntity<PhotoBoardResponseDto> getBoard(final @PathVariable("id") Long id) {
public ResponseEntity<BoardResponseDto> getBoard(final @PathVariable("id") Long id) {
log.info("사용자가 id: " + id + "을(를) 가진 PhotoBoard를 요청했습니다.");
PhotoBoardResponseDto photoBoardResponseDto = photoBoardService.getPhotoBoard(id);
return ResponseEntity.status(HttpStatus.OK).body(photoBoardResponseDto);
return ResponseEntity.status(HttpStatus.OK).body(boardService.findBoard(id));
}

@Operation(summary = "게시글 (1개) 저장하기", description = "게시글을 저장합니다. (첫번째 사진은 게시글의 썸네일로 사용됩니다.)")
Expand Down Expand Up @@ -77,10 +76,9 @@ public ResponseEntity<CommonResponseDto> deleteBoard(final @PathVariable("id") L

@Operation(summary = "사진 글 (전체) 조회", description = "사진 글을 모두 반환합니다.")
@GetMapping("/public/all-boards-contents")
public ResponseEntity<List<PhotoBoardResponseDto>> findAllBoard() {
public ResponseEntity<List<BoardResponseDto>> findAllBoard() {
log.info("사용자가 전체 PhotoBoard 목록을 요청했습니다.");
List<PhotoBoardResponseDto> dto_list = photoBoardService.findAllPhotoBoard();
return ResponseEntity.status(HttpStatus.OK).body(dto_list);
return ResponseEntity.status(HttpStatus.OK).body(photoBoardService.findPhotoBoardList());
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@
import lombok.Getter;
import server.inuappcenter.kr.common.data.domain.BaseTimeEntity;
import server.inuappcenter.kr.data.dto.request.BoardRequestDto;
import server.inuappcenter.kr.data.dto.response.BoardResponseDto;

import javax.persistence.*;
import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;

Expand All @@ -23,6 +25,8 @@ public abstract class Board extends BaseTimeEntity {

public abstract void updateImage(List<Image> images);

public abstract BoardResponseDto createResponse(HttpServletRequest request);

@OneToMany(cascade = CascadeType.ALL)
@JoinColumn(name = "board_id")
private List<Image> images = new ArrayList<>();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,11 @@
import lombok.NoArgsConstructor;
import server.inuappcenter.kr.data.dto.request.BoardRequestDto;
import server.inuappcenter.kr.data.dto.request.FaqBoardRequestDto;
import server.inuappcenter.kr.data.dto.response.BoardResponseDto;
import server.inuappcenter.kr.data.dto.response.FaqBoardResponseDto;

import javax.persistence.Entity;
import javax.servlet.http.HttpServletRequest;
import java.util.List;

@Getter
Expand All @@ -31,17 +33,6 @@ public void updateFaqBoard(FaqBoardRequestDto faqBoardRequestDto) {
this.answer = faqBoardRequestDto.getAnswer();
}

public FaqBoardResponseDto toResponseDto(FaqBoard faqBoard) {
return new FaqBoardResponseDto(
faqBoard.getId(),
faqBoard.getPart(),
faqBoard.getQuestion(),
faqBoard.getAnswer(),
faqBoard.getCreatedDate(),
faqBoard.getLastModifiedDate()
);
}

@Override
public void modifyBoard(BoardRequestDto boardRequestDto) {
this.updateFaqBoard((FaqBoardRequestDto) boardRequestDto);
Expand All @@ -50,4 +41,11 @@ public void modifyBoard(BoardRequestDto boardRequestDto) {
@Override
public void updateImage(List<Image> image) {
}

@Override
public BoardResponseDto createResponse(HttpServletRequest request) {
return new FaqBoardResponseDto(
this.getId(), this.part, this.question, this.answer, this.getCreatedDate(), this.getLastModifiedDate()
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,15 @@
import org.springframework.web.multipart.MultipartFile;
import server.inuappcenter.kr.data.dto.request.BoardRequestDto;
import server.inuappcenter.kr.data.dto.request.IntroBoardRequestDto;
import server.inuappcenter.kr.data.dto.response.BoardResponseDto;
import server.inuappcenter.kr.data.dto.response.IntroBoardResponseDto;
import server.inuappcenter.kr.data.utils.BoardUtils;

import javax.persistence.Entity;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Getter
@Entity
Expand Down Expand Up @@ -50,22 +51,6 @@ public void updateBoard(IntroBoardRequestDto introBoardRequestDto) {
this.body = introBoardRequestDto.getBody();
}

public IntroBoardResponseDto toBoardResponseDto(IntroBoard introBoard, String image) {
Map<Long,String> imageMap = new HashMap<>();
imageMap.put(1L, image);
return IntroBoardResponseDto.builder()
.id(introBoard.getId())
.androidStoreLink(introBoard.getAndroidStoreLink())
.appleStoreLink(introBoard.getAppleStoreLink())
.body(introBoard.getBody())
.createdDate(introBoard.getCreatedDate())
.images(imageMap)
.lastModifiedDate(introBoard.getLastModifiedDate())
.subTitle(introBoard.getSubTitle())
.title(introBoard.getTitle())
.build();
}

// 새 이미지 객체를 만들어 PhotoBoard(부모객체)와 매핑시킵니다.
public List<Image> mappingPhotoAndEntity(List<MultipartFile> multipartFiles) {
List<Image> imageEntityList = new ArrayList<>();
Expand All @@ -90,4 +75,19 @@ public void modifyBoard(BoardRequestDto boardRequestDto) {
public void updateImage(List<Image> images) {
this.images.addAll(images);
}

@Override
public BoardResponseDto createResponse(HttpServletRequest request) {
return IntroBoardResponseDto.builder()
.id(this.getId())
.body(this.body)
.title(this.title)
.subTitle(this.subTitle)
.androidStoreLink(this.androidStoreLink)
.appleStoreLink(this.androidStoreLink)
.images(BoardUtils.returnImageURL(request, this.images))
.createdDate(this.getCreatedDate())
.lastModifiedDate(this.getLastModifiedDate())
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,15 @@
import org.springframework.web.multipart.MultipartFile;
import server.inuappcenter.kr.data.dto.request.BoardRequestDto;
import server.inuappcenter.kr.data.dto.request.PhotoBoardRequestDto;
import server.inuappcenter.kr.data.dto.response.BoardResponseDto;
import server.inuappcenter.kr.data.dto.response.PhotoBoardResponseDto;
import server.inuappcenter.kr.data.utils.BoardUtils;

import javax.persistence.Entity;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Getter
@Entity
Expand All @@ -28,7 +29,7 @@ public PhotoBoard(PhotoBoardRequestDto photoBoardRequestDto) {
if (photoBoardRequestDto.getMultipartFiles() != null) {
this.images = mappingPhotoAndEntity(photoBoardRequestDto.getMultipartFiles());
}
this.body = photoBoardRequestDto.getBody();
body = photoBoardRequestDto.getBody();
}

public void InjectImageListForTest(List<Image> images) {
Expand All @@ -39,18 +40,6 @@ public void updateBoard(PhotoBoardRequestDto photoBoardRequestDto) {
this.body = photoBoardRequestDto.getBody();
}

public PhotoBoardResponseDto toBoardResponseDto(PhotoBoard photoBoard, String image) {
Map<Long,String> imageMap = new HashMap<>();
imageMap.put(1L, image);
return PhotoBoardResponseDto.builder()
.board_id(photoBoard.getId())
.images(imageMap)
.body(photoBoard.getBody())
.createdDate(photoBoard.getCreatedDate())
.lastModifiedDate(photoBoard.getLastModifiedDate())
.build();
}

public List<Image> mappingPhotoAndEntity(List<MultipartFile> multipartFiles) {
List<Image> imageEntityList = new ArrayList<>();
for (MultipartFile file: multipartFiles) {
Expand All @@ -74,4 +63,15 @@ public void modifyBoard(BoardRequestDto photoBoardRequestDto) {
public void updateImage(List<Image> images) {
this.images = images;
}

@Override
public BoardResponseDto createResponse(HttpServletRequest request) {
return PhotoBoardResponseDto.builder()
.id(this.getId())
.body(this.body)
.images(BoardUtils.returnImageURL(request, this.images))
.createdDate(this.getCreatedDate())
.lastModifiedDate(this.getLastModifiedDate())
.build();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
import server.inuappcenter.kr.data.domain.board.PhotoBoard;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import java.util.List;

@Getter
Expand All @@ -25,7 +24,6 @@ public class PhotoBoardRequestDto extends BoardRequestDto{
@Schema(
description = "이미지를 배열로 받습니다."
)
@NotNull(message = "이미지가 최소 1개 이상 필요합니다. (첫번째 이미지는 썸네일입니다.)")
private List<MultipartFile> multipartFiles;

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package server.inuappcenter.kr.data.dto.response;

import lombok.Getter;

import java.time.LocalDateTime;

@Getter
public abstract class BoardResponseDto {
protected Long id;
protected String body;
protected LocalDateTime createdDate;
protected LocalDateTime lastModifiedDate;
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,11 @@
import java.time.LocalDateTime;

@Getter
public class FaqBoardResponseDto {
private final Long id;
public class FaqBoardResponseDto extends BoardResponseDto{
private final String part;
private final String question;
private final String answer;
private final LocalDateTime createdDate;
private final LocalDateTime lastModifiedDate;


public FaqBoardResponseDto(Long id, String part, String question, String answer, LocalDateTime createdDate, LocalDateTime lastModifiedDate) {
this.id = id;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,12 @@
import java.util.Map;

@Getter
public class IntroBoardResponseDto {
private final Long id;
public class IntroBoardResponseDto extends BoardResponseDto {
public final String title;
public final String subTitle;
public final String androidStoreLink;
public final String appleStoreLink;
public final String body;
private final Map<Long, String> images;
private final LocalDateTime createdDate;
private final LocalDateTime lastModifiedDate;

@Builder
private IntroBoardResponseDto (Long id, String title, String subTitle, String androidStoreLink, String appleStoreLink, String body, Map<Long, String> images,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,16 +11,12 @@
import java.util.Map;

@Getter
public class PhotoBoardResponseDto {
private final Long board_id;
private final String body;
public class PhotoBoardResponseDto extends BoardResponseDto{
private final Map<Long, String> images;
private final LocalDateTime createdDate;
private final LocalDateTime lastModifiedDate;

@Builder
private PhotoBoardResponseDto (Long board_id, String body, Map<Long, String> images, LocalDateTime createdDate, LocalDateTime lastModifiedDate) {
this.board_id = board_id;
private PhotoBoardResponseDto (Long id, String body, Map<Long, String> images, LocalDateTime createdDate, LocalDateTime lastModifiedDate) {
this.id = id;
this.body = body;
this.images = images;
this.createdDate = createdDate;
Expand All @@ -30,7 +26,7 @@ private PhotoBoardResponseDto (Long board_id, String body, Map<Long, String> ima
public static PhotoBoardResponseDto entityToDto(HttpServletRequest request, Board board) {
PhotoBoard photoBoard = createBoard(board);
return PhotoBoardResponseDto.builder()
.board_id(photoBoard.getId())
.id(photoBoard.getId())
.body(photoBoard.getBody())
.images(BoardUtils.returnImageURL(request, photoBoard.getImages()))
.createdDate(photoBoard.getCreatedDate())
Expand Down
Loading

0 comments on commit 0901f97

Please sign in to comment.