Skip to content

Commit

Permalink
swagger setting + 관리자 목록 API 수정
Browse files Browse the repository at this point in the history
  • Loading branch information
jjongwon7 committed Mar 19, 2023
1 parent 6c7fba1 commit 576dd1d
Show file tree
Hide file tree
Showing 12 changed files with 95 additions and 49 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ bootJar {
dependencies {

implementation 'org.springframework.boot:spring-boot-starter-batch' // batch

implementation 'org.springdoc:springdoc-openapi-ui:1.6.15' // swagger
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-jdbc'
implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
Expand Down
26 changes: 16 additions & 10 deletions src/main/java/com/dashboardbe/api/controller/AdminController.java
Original file line number Diff line number Diff line change
@@ -1,33 +1,36 @@
package com.dashboardbe.api.controller;

import com.dashboardbe.api.dto.AdminDTO;
import com.dashboardbe.api.dto.AdminResponseDTO;
import com.dashboardbe.api.dto.LoginDTO;
import com.dashboardbe.api.dto.PageResponseDTO;
import com.dashboardbe.api.repository.AdminRepository;
import com.dashboardbe.api.service.AdminService;
import com.dashboardbe.common.SessionUtil;
import com.dashboardbe.common.response.BaseResponseBody;
import com.dashboardbe.domain.Admin;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Pageable;
import org.springframework.data.web.PageableDefault;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import java.util.List;
import java.util.Optional;

@RestController
@RequiredArgsConstructor
@Tag(name = "Admin Controller", description = "관리자 컨트롤러")
public class AdminController {

private final AdminService adminService;
private final AdminRepository adminRepository;
/***
* 회원가입 컨트롤러
*/
@Operation(summary = "[테스트용] 회원가입 API", description = "관리자 회원가입")
@PostMapping("/admin/save")
public String save(@RequestBody AdminDTO adminDTO) {
adminService.save(adminDTO);
Expand All @@ -37,6 +40,7 @@ public String save(@RequestBody AdminDTO adminDTO) {
/**
* 관리자 로그인 컨트롤러
*/
@Operation(summary = "[관리자] 로그인 API", description = "관리자 로그인 처리하고 세션 생성")
@PostMapping("/admin/login")
public ResponseEntity<BaseResponseBody<String>> login(@RequestBody LoginDTO loginDTO, HttpServletRequest request) {
String loginId = adminService.login(loginDTO);
Expand Down Expand Up @@ -83,6 +87,7 @@ else if (loginId.equals("WRONG_PWD")) {
/**
* 로그아웃 컨트롤러
*/
@Operation(summary = "[관리자] 로그아웃 API", description = "관리자 로그아웃 처리하고 세션 소멸")
@PostMapping("/admin/logout")
public String logout(HttpServletRequest request) {
// false 옵션 -> 세션이 없는 경우 새로 생성하지 않도록
Expand All @@ -98,24 +103,25 @@ public String logout(HttpServletRequest request) {
/**
* 관리자 목록 컨트롤러
*/
@Operation(summary = "[관리자] 관리자 목록 API", description = "사이드바 상단에 보여주는 관리자 목록")
@GetMapping("/admin/list")
public ResponseEntity<BaseResponseBody<PageResponseDTO>> list(@PageableDefault(page = 0, size = 4, sort = "id") Pageable pageable, HttpSession session) {
public ResponseEntity<BaseResponseBody<List<AdminResponseDTO>>> list(HttpSession session) {
String loginId = SessionUtil.getLoginId(session);
Optional<Admin> optionalAdmin = adminRepository.findById(loginId);
// 올바른 관리자인 경우
if (optionalAdmin.isPresent()) {
PageResponseDTO pageResponseDTO = adminService.list(pageable);
return new ResponseEntity<BaseResponseBody<PageResponseDTO>>(
new BaseResponseBody<PageResponseDTO>(
List<AdminResponseDTO> list = adminService.list();
return new ResponseEntity<BaseResponseBody<List<AdminResponseDTO>>>(
new BaseResponseBody<List<AdminResponseDTO>>(
HttpStatus.OK.value(),
"성공",
pageResponseDTO
list
),
HttpStatus.OK
);
} else {
return new ResponseEntity<BaseResponseBody<PageResponseDTO>>(
new BaseResponseBody<PageResponseDTO>(
return new ResponseEntity<BaseResponseBody<List<AdminResponseDTO>>>(
new BaseResponseBody<List<AdminResponseDTO>>(
HttpStatus.NOT_FOUND.value(),
"존재하지 않는 Admin ID입니다.",
null
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@
import com.dashboardbe.common.SessionUtil;
import com.dashboardbe.common.response.BaseResponseBody;
import com.dashboardbe.domain.Admin;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
Expand All @@ -22,14 +24,16 @@

@RestController
@RequiredArgsConstructor
@Tag(name = "Board Controller", description = "게시판 컨트롤러")
public class BoardController {

private final BoardService boardService;
private final AdminRepository adminRepository;

/**
* 게시물 등록 컨트롤러
* 게시물 작성 컨트롤러
*/
@Operation(summary = "[테스트용] 게시물 작성 API", description = "게시물 작성")
@PostMapping("/board")
@LoginCheck
public ResponseEntity<BaseResponseBody<String>> addMemo(@RequestBody BoardRequestDTO dto, HttpSession session) {
Expand Down Expand Up @@ -62,6 +66,7 @@ public ResponseEntity<BaseResponseBody<String>> addMemo(@RequestBody BoardReques
/**
* 게시물 리스트 컨트롤러
*/
@Operation(summary = "[게시판] 게시물 리스트 API", description = "게시물 리스트")
@GetMapping("/board/list")
@LoginCheck
public ResponseEntity<BaseResponseBody<List<BoardResponseDTO>>> list(HttpSession session) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
import com.dashboardbe.api.service.ContentsService;
import com.dashboardbe.common.response.BaseResponseBody;
import com.dashboardbe.domain.Contents;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
Expand All @@ -15,6 +17,7 @@

@RestController
@RequiredArgsConstructor
@Tag(name = "Contents Controller", description = "동영상 콘텐츠 컨트롤러")
public class ContentsController {

private final ContentsService contentsService;
Expand All @@ -23,6 +26,7 @@ public class ContentsController {
/**
* 조회수 증가 + 콘텐츠 조회 기록 저장 컨트롤러
*/
@Operation(summary = "[테스트용] 조회수 증가 API", description = "콘텐츠 클릭 시 조회수 증가시키고 콘텐츠 조회 기록을 저장한다.")
@GetMapping("/contents")
public ResponseEntity<BaseResponseBody<Long>> addHits(@RequestParam Long contentsId) {
Optional<Contents> optionalContents = contentsRepository.findById(contentsId);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
import com.dashboardbe.api.service.MemberService;
import com.dashboardbe.common.SessionUtil;
import com.dashboardbe.common.response.BaseResponseBody;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
Expand All @@ -16,13 +18,15 @@

@RestController
@RequiredArgsConstructor
@Tag(name = "Member Controller", description = "회원 컨트롤러")
public class MemberController {

private final MemberService memberService;

/**
* 회원 로그인 + 방문자 기록 저장 컨트롤러
*/
@Operation(summary = "[테스트용] 회원 로그인 API", description = "회원 로그인 처리 후 방문자 기록을 저장한다.")
@PostMapping("/member/login")
public ResponseEntity<BaseResponseBody<String>> login(@RequestBody LoginDTO loginDTO, HttpServletRequest request) {
String loginId = memberService.login(loginDTO);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@
import com.dashboardbe.common.response.BaseResponseBody;
import com.dashboardbe.domain.Admin;
import com.dashboardbe.domain.Todolist;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
Expand All @@ -21,12 +23,17 @@

@RestController
@RequiredArgsConstructor
@Tag(name = "Todolist Controller", description = "오늘의 할 일 컨트롤러")
public class TodolistController {

private final TodolistService todolistService;
private final AdminRepository adminRepository;
private final TodolistRepository todolistRepository;

/**
* 오늘의 할 일 추가 컨트롤러
*/
@Operation(summary = "[테스트용] 오늘의 할 일 추가 API", description = "오늘의 할 일 추가")
@PostMapping("/memo")
@LoginCheck
public ResponseEntity<BaseResponseBody<String>> addMemo(@RequestBody TodoRequestDTO dto, HttpSession session) {
Expand Down Expand Up @@ -56,6 +63,10 @@ public ResponseEntity<BaseResponseBody<String>> addMemo(@RequestBody TodoRequest
}
}

/**
* 오늘의 할 일 삭제 컨트롤러
*/
@Operation(summary = "[테스트용] 오늘의 할 일 삭제 API", description = "오늘의 할 일 삭제")
@GetMapping("/memo/delete")
@LoginCheck
public ResponseEntity<BaseResponseBody<String>> deleteMemo(@RequestParam Long todolistId, HttpSession session) {
Expand Down Expand Up @@ -98,6 +109,10 @@ public ResponseEntity<BaseResponseBody<String>> deleteMemo(@RequestParam Long to
}
}

/**
* 오늘의 할 일 목록 컨트롤러
*/
@Operation(summary = "[테스트용] 오늘의 할 일 목록 API", description = "오늘의 할 일 목록")
@GetMapping("/memo/list")
@LoginCheck
public ResponseEntity<BaseResponseBody<List<TodoResponseDTO>>> list(HttpSession session) {
Expand Down
17 changes: 0 additions & 17 deletions src/main/java/com/dashboardbe/api/dto/PageResponseDTO.java

This file was deleted.

6 changes: 4 additions & 2 deletions src/main/java/com/dashboardbe/api/service/AdminService.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@
package com.dashboardbe.api.service;

import com.dashboardbe.api.dto.AdminResponseDTO;
import com.dashboardbe.api.dto.LoginDTO;
import com.dashboardbe.api.dto.PageResponseDTO;
import com.dashboardbe.api.dto.AdminDTO;
import org.springframework.data.domain.Pageable;

import java.util.List;

public interface AdminService {

void save(AdminDTO adminDTO);
String login(LoginDTO loginDTO);
PageResponseDTO list(Pageable pageable);
List<AdminResponseDTO> list();
}
22 changes: 5 additions & 17 deletions src/main/java/com/dashboardbe/api/service/AdminServiceImpl.java
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,9 @@
import com.dashboardbe.api.dto.AdminDTO;
import com.dashboardbe.api.dto.AdminResponseDTO;
import com.dashboardbe.api.dto.LoginDTO;
import com.dashboardbe.api.dto.PageResponseDTO;
import com.dashboardbe.api.repository.AdminRepository;
import com.dashboardbe.domain.Admin;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Pageable;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
Expand Down Expand Up @@ -70,26 +66,18 @@ public String login(LoginDTO loginDTO) {
*/
@Override
@LoginCheck
public PageResponseDTO list(Pageable pageable) {
Page<Admin> adminList = adminRepository.findAll(pageable);
List<AdminResponseDTO> adminResponseDTOList = new ArrayList<>();

public List<AdminResponseDTO> list() {
List<AdminResponseDTO> list = new ArrayList<>();
List<Admin> adminList = adminRepository.findAll();
for (Admin admin : adminList) {
AdminResponseDTO adminResponseDTO = AdminResponseDTO.builder()
.adminId(admin.getId())
.name(admin.getName())
.phoneNumber(admin.getPhoneNumber())
.role(admin.getRole())
.build();
adminResponseDTOList.add(adminResponseDTO);
list.add(adminResponseDTO);
}

Page<AdminResponseDTO> page = new PageImpl<>(adminResponseDTOList, pageable, adminList.getTotalElements());

PageResponseDTO pageResponseDTO = PageResponseDTO.builder()
.page(page)
.build();

return pageResponseDTO;
return list;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ public class BoardServiceImpl implements BoardService {
private final BoardRepository boardRepository;

/**
* 게시물 등록 서비스 로직
* 게시물 작성 서비스 로직
*/
@Override
public void save(String content, Admin admin) {
Expand Down
27 changes: 27 additions & 0 deletions src/main/java/com/dashboardbe/common/SwaggerConfig.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.dashboardbe.common;

import io.swagger.v3.oas.annotations.OpenAPIDefinition;
import lombok.RequiredArgsConstructor;
import org.springdoc.core.GroupedOpenApi;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@OpenAPIDefinition(
info = @io.swagger.v3.oas.annotations.info.Info(
title = "ST Dashboard API 명세서",
description = "동아ST 기업 프로젝트 API 명세서입니다.",
version = "v1")
)
@RequiredArgsConstructor
@Configuration
public class SwaggerConfig {

@Bean
public GroupedOpenApi stOpenApi() {

return GroupedOpenApi.builder()
.group("대시보드 API v1")
.pathsToMatch("/**")
.build();
}
}
12 changes: 12 additions & 0 deletions src/main/resources/application.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,18 @@ spring:
jdbc:
initialize-schema: always

# swagger 설정
springdoc:
swagger-ui:
path: /api-docs
disable-swagger-default-url: true
display-request-duration: true
operations-sorter: alpha # 정렬 기준
default-consumes-media-type: application/json
default-produces-media-type: application/json
paths-to-match:
- /**

logging:
level:
sql: info

0 comments on commit 576dd1d

Please sign in to comment.