package com.interplug.qcast.biz.community; import com.interplug.qcast.biz.community.dto.BoardRequest; import com.interplug.qcast.biz.community.dto.BoardResponse; import com.interplug.qcast.biz.file.dto.FileRequest; import io.swagger.v3.oas.annotations.Operation; import io.swagger.v3.oas.annotations.tags.Tag; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.http.HttpStatus; import org.springframework.web.bind.annotation.*; @Slf4j @RestController @RequestMapping("/api/board") @RequiredArgsConstructor @Tag(name = "BoardController", description = "Community Board API") public class BoardController { private final BoardService boardService; @Operation(description = "커뮤니티(공지사항, FAQ, 자료다운로드) 게시글 목록을 조회한다.") @GetMapping("/list") @ResponseStatus(HttpStatus.OK) public BoardResponse getBoardList(@ModelAttribute BoardRequest boardRequest) throws Exception { return boardService.getBoardList(boardRequest); } @Operation(description = "커뮤니티(공지사항, FAQ, 자료다운로드) 게시글 상세 정보를 조회한다.") @GetMapping("/detail") @ResponseStatus(HttpStatus.OK) public BoardResponse getBoardDetail(@ModelAttribute BoardRequest boardRequest) throws Exception { return boardService.getBoardDetail(boardRequest); } @Operation(description = "문의를 저장한다.") @PostMapping("/saveQna") @ResponseStatus(HttpStatus.OK) public BoardResponse getBoardQnaSave(BoardRequest boardRequest, HttpServletRequest request) throws Exception { return boardService.getBoardQnaSave(boardRequest, request); } @Operation(description = "커뮤니티(공지사항, FAQ, 자료다운로드) 파일 다운로드를 진행한다.") @GetMapping("/file/download") @ResponseStatus(HttpStatus.OK) public void getFileDownload( HttpServletResponse response, @RequestParam(required = true) String keyNo, @RequestParam String zipYn) throws Exception { boardService.getFileDownload(response, keyNo, zipYn); } }