Skip to content
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import cc.backend.admin.amateurShow.dto.AdminAmateurShowSummaryResponseDTO;
import cc.backend.admin.amateurShow.service.AdminAmateurShowService;
import cc.backend.apiPayLoad.ApiResponse;
import cc.backend.apiPayLoad.PageResponse;
import cc.backend.apiPayLoad.SliceResponse;
import com.google.protobuf.Api;
import io.swagger.v3.oas.annotations.Operation;
Expand All @@ -16,6 +17,7 @@
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Slice;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
Expand Down Expand Up @@ -44,7 +46,7 @@ public class AdminAmateurShowController {
)
}
)
public ApiResponse<SliceResponse<AdminAmateurShowListResponseDTO>> showList(
public ApiResponse<PageResponse<AdminAmateurShowListResponseDTO>> showList(
@Parameter(description = "페이지 번호(0부터)", example = "0")
@RequestParam(defaultValue = "0") int page,

Expand All @@ -54,8 +56,8 @@ public ApiResponse<SliceResponse<AdminAmateurShowListResponseDTO>> showList(
@Parameter(description = "검색 키워드, 공연면", example = "실종")
@RequestParam(required = false) String keyword
) {
Slice<AdminAmateurShowListResponseDTO> slice = adminAmateurShowService.getShowList(page, size, keyword);
return ApiResponse.onSuccess(SliceResponse.of(slice)); }

return ApiResponse.onSuccess(adminAmateurShowService.getShowList(page, size, keyword)); }

@GetMapping("/{showId}")
@Operation(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,15 @@
import cc.backend.admin.amateurShow.service.AdminAmateurShowService;
import cc.backend.admin.amateurShow.service.AdminApprovalService;
import cc.backend.apiPayLoad.ApiResponse;
import cc.backend.apiPayLoad.PageResponse;
import cc.backend.apiPayLoad.SliceResponse;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.media.Content;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Slice;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;
Expand All @@ -31,7 +33,7 @@ public class AdminApprovalController {
summary = "소극장 공연 관리 - 등록 요청 관리",
description = "등록 요청 관리 첫페이지, 리스트 조회입니다."
)
public ApiResponse<SliceResponse<AdminApprovalListResponseDTO>> getApprovalList(
public ApiResponse<PageResponse<AdminApprovalListResponseDTO>> getApprovalList(
@Parameter(description = "페이지 번호(0부터 시작)", example = "0")
@RequestParam(defaultValue = "0") int page,

Expand All @@ -41,8 +43,8 @@ public ApiResponse<SliceResponse<AdminApprovalListResponseDTO>> getApprovalList(
@Parameter(description = "검색 키워드, 공연 명으로 검색", example = "실종")
@RequestParam(required = false) String keyword
){
Slice<AdminApprovalListResponseDTO> slice = adminApprovalService.getApprovalList(page, size, keyword);
return ApiResponse.onSuccess(SliceResponse.of(slice));

return ApiResponse.onSuccess(adminApprovalService.getApprovalList(page, size, keyword));
}

@PatchMapping("/{showId}/approve")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import cc.backend.amateurShow.entity.AmateurShow;
import cc.backend.amateurShow.repository.AmateurShowRepository;
import cc.backend.apiPayLoad.ApiResponse;
import cc.backend.apiPayLoad.PageResponse;
import cc.backend.apiPayLoad.SliceResponse;
import cc.backend.apiPayLoad.code.status.ErrorStatus;
import cc.backend.apiPayLoad.exception.GeneralException;
Expand All @@ -30,23 +31,17 @@
@Transactional(readOnly = true)
public class AdminAmateurShowService {
private final AmateurShowRepository amateurShowRepository;
private final ApplicationEventPublisher eventPublisher;

public Slice<AdminAmateurShowListResponseDTO> getShowList(int page, int size, String keyword){
public PageResponse<AdminAmateurShowListResponseDTO> getShowList(int page, int size, String keyword){
Pageable pageable = PageRequest.of(page, size, Sort.by("id").ascending());

Page<AmateurShow> pageResult;
if (keyword != null && !keyword.isBlank()) {
pageResult = amateurShowRepository.findByNameContainingIgnoreCase(keyword, pageable);
} else {
pageResult = amateurShowRepository.findAll(pageable);
}
keyword = (keyword == null) ? "" : keyword.trim();
Page<AmateurShow> pageResult = amateurShowRepository.findByNameContainingIgnoreCase(keyword, pageable);

List<AdminAmateurShowListResponseDTO> rows = pageResult.getContent().stream()
.map(this::toListDto)
.toList();

return new SliceImpl<>(rows, pageable, pageResult.hasNext());
Page<AdminAmateurShowListResponseDTO> dtoPage = pageResult.map(this::toListDto);

return PageResponse.of(dtoPage);
}

private AdminAmateurShowListResponseDTO toListDto(AmateurShow show){
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import cc.backend.admin.amateurShow.dto.AdminApprovalListResponseDTO;
import cc.backend.amateurShow.entity.AmateurShow;
import cc.backend.amateurShow.repository.AmateurShowRepository;
import cc.backend.apiPayLoad.PageResponse;
import cc.backend.apiPayLoad.code.status.ErrorStatus;
import cc.backend.apiPayLoad.exception.GeneralException;
import cc.backend.event.entity.ApproveShowEvent;
Expand Down Expand Up @@ -52,19 +53,17 @@ public AdminAmateurShowSummaryResponseDTO rejectShow(Long showId, AdminAmateurSh
return AdminAmateurShowSummaryResponseDTO.from(show);
}

public Slice<AdminApprovalListResponseDTO> getApprovalList(int page, int size, String keyword) {
public PageResponse<AdminApprovalListResponseDTO> getApprovalList(int page, int size, String keyword) {
Pageable pageable = PageRequest.of(page, size, Sort.by("id").ascending());

Page<AmateurShow> pageResult =
(keyword != null && !keyword.isBlank())
? amateurShowRepository.findByNameContainingIgnoreCase(keyword, pageable)
: amateurShowRepository.findAll(pageable);

List<AdminApprovalListResponseDTO> content = pageResult.getContent().stream()
.map(this::toApprovalDto)
.toList();
Page<AdminApprovalListResponseDTO> dtoPage = pageResult.map(this::toApprovalDto);

return new SliceImpl<>(content, pageable, pageResult.hasNext());
return PageResponse.of(dtoPage);
}

private AdminApprovalListResponseDTO toApprovalDto(AmateurShow show) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import cc.backend.admin.board.dto.response.AdminReportSummary;
import cc.backend.admin.board.service.AdminBoardService;
import cc.backend.admin.board.service.AdminReportService;
import cc.backend.apiPayLoad.PageResponse;
import cc.backend.apiPayLoad.SliceResponse;
import cc.backend.board.entity.enums.ReportTarget;
import io.swagger.v3.oas.annotations.Operation;
Expand All @@ -14,6 +15,7 @@
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Slice;
import org.springframework.http.ResponseEntity;
import org.springframework.security.access.prepost.PreAuthorize;
Expand Down Expand Up @@ -83,16 +85,15 @@ public ResponseEntity<Void> deleteTarget(
)
})
@GetMapping
public cc.backend.apiPayLoad.ApiResponse<SliceResponse<AdminBoardListResponse>> getAllBoardsForAdmin(
public cc.backend.apiPayLoad.ApiResponse<PageResponse<AdminBoardListResponse>> getAllBoardsForAdmin(
@Parameter(description = "페이지 번호 (0부터 시작)", example = "0")
@RequestParam(defaultValue = "0") int page,
@Parameter(description = "페이지 크기", example = "20")
@RequestParam(defaultValue = "20") int size,
@Parameter(description = "검색 키워드, 게시글 제목", example = "예매 방법 꿀팁")
@RequestParam(required = false) String keyword) {

Slice<AdminBoardListResponse> slice = adminBoardService.getAllBoardsForAdmin(page, size, keyword);
return cc.backend.apiPayLoad.ApiResponse.onSuccess(SliceResponse.of(slice));
return cc.backend.apiPayLoad.ApiResponse.onSuccess(adminBoardService.getAllBoardsForAdmin(page, size, keyword));
}

@Operation(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import cc.backend.admin.board.dto.response.AdminBoardDetailResponse;
import cc.backend.admin.board.dto.response.AdminBoardDetailWithCommentsResponse;
import cc.backend.admin.board.dto.response.AdminBoardListResponse;
import cc.backend.apiPayLoad.PageResponse;
import cc.backend.apiPayLoad.code.status.ErrorStatus;
import cc.backend.apiPayLoad.exception.GeneralException;
import cc.backend.board.dto.response.CommentResponse;
Expand All @@ -16,10 +17,7 @@
import cc.backend.image.entity.Image;
import cc.backend.image.repository.ImageRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Slice;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.*;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

Expand All @@ -39,14 +37,18 @@ public class AdminBoardService {

//게시글 목록 조회
@Transactional(readOnly = true)
public Slice<AdminBoardListResponse> getAllBoardsForAdmin(int page, int size, String keyword) {
public PageResponse<AdminBoardListResponse> getAllBoardsForAdmin(int page, int size, String keyword) {
// 관리자는 삭제된 게시글도 볼 수 있도록 @SQLDelete 우회
Pageable pageable = PageRequest.of(page, size, Sort.by("id").descending());
Slice<Board> boards = (keyword != null && !keyword.isBlank())

Page<Board> boards = (keyword != null && !keyword.isBlank())
? boardRepository.searchBoardsIncludingDeletedByTitle(keyword, pageable)
: boardRepository.findAllBoardsIncludingDeleted(pageable);

return boards.map(AdminBoardListResponse::from);
List<AdminBoardListResponse> content = boards.getContent().stream()
.map(AdminBoardListResponse::from)
.toList();
return new PageResponse<>(content, boards.getNumber(), boards.getSize(), boards.getTotalElements(), boards.getTotalPages());
}

//게시글 상세조회
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import cc.backend.admin.dashboard.dto.VisitResponseDTO;
import cc.backend.admin.dashboard.service.DashboardService;
import cc.backend.apiPayLoad.ApiResponse;
import cc.backend.apiPayLoad.PageResponse;
import cc.backend.apiPayLoad.SliceResponse;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
Expand Down Expand Up @@ -41,27 +42,27 @@ public ApiResponse<List<VisitResponseDTO.MonthlyVisitorDTO>> getMonthlyVisits()

@GetMapping("/approval")
@Operation(summary = "등록 요청 - 간편보기", description = "대쉬보드에서 등록 요청 리스트를 조회합니다.")
public ApiResponse<SliceResponse<ApprovalSummaryResponseDTO>> getApprovalSummary(
public ApiResponse<PageResponse<ApprovalSummaryResponseDTO>> getApprovalSummary(
@Parameter(description = "페이지 번호(0부터 시작)", example = "0")
@RequestParam(defaultValue = "0") int page,

@Parameter(description = "페이지 크기", example = "10")
@RequestParam(defaultValue = "10") int size
){
Slice<ApprovalSummaryResponseDTO> slice = dashBoardService.getApprovalList(page, size);
return ApiResponse.onSuccess(SliceResponse.of(slice));

return ApiResponse.onSuccess(dashBoardService.getApprovalList(page, size));
}

@GetMapping("/reservation")
@Operation(summary = "예약 현황 - 간편보기", description = "대쉬보드에서 예약 현황 리스트를 조회합니다.")
public ApiResponse<SliceResponse<ReservationSummaryResponseDTO>> getReservationSummary(
public ApiResponse<PageResponse<ReservationSummaryResponseDTO>> getReservationSummary(
@Parameter(description = "페이지 번호(0부터 시작)", example = "0")
@RequestParam(defaultValue = "0") int page,

@Parameter(description = "페이지 크기", example = "10")
@RequestParam(defaultValue = "10") int size
){
Slice<ReservationSummaryResponseDTO> slice = dashBoardService.getReservationList(page, size);
return ApiResponse.onSuccess(SliceResponse.of(slice)); }
return ApiResponse.onSuccess(dashBoardService.getReservationList(page, size)
); }

}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import cc.backend.amateurShow.entity.AmateurShow;
import cc.backend.amateurShow.repository.AmateurRoundsRepository;
import cc.backend.amateurShow.repository.AmateurShowRepository;
import cc.backend.apiPayLoad.PageResponse;
import com.google.analytics.data.v1beta.*;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.*;
Expand Down Expand Up @@ -81,21 +82,20 @@ public List<VisitResponseDTO.MonthlyVisitorDTO> getMonthlyVisits() {
private static final DateTimeFormatter DT_FMT =
DateTimeFormatter.ofPattern("yyyy-MM-dd / HH:mm");

public Slice<ApprovalSummaryResponseDTO> getApprovalList(int page, int size) {
public PageResponse<ApprovalSummaryResponseDTO> getApprovalList(int page, int size) {
Pageable pageable = PageRequest.of(page, size, Sort.by("id").ascending());

Page<AmateurShow> result = amateurShowRepository.findAll(pageable);

List<ApprovalSummaryResponseDTO> content = result.getContent().stream()
.map(this::toSummaryDto)
.toList();
Page<ApprovalSummaryResponseDTO> dtoPage = result.map(this::toSummaryDto);

return new SliceImpl<>(content, pageable, result.hasNext());
return PageResponse.of(dtoPage);
}

private ApprovalSummaryResponseDTO toSummaryDto(AmateurShow s) {
String dateTime = s.getCreatedAt().format(DT_FMT);
int capacity = s.getTotalSoldTicket();
int capacity = s.getTotalSoldTicket() != null ? s.getTotalSoldTicket() : 0; // null이면 0으로 처리


return ApprovalSummaryResponseDTO.builder()
.showId(s.getId())
Expand All @@ -105,7 +105,7 @@ private ApprovalSummaryResponseDTO toSummaryDto(AmateurShow s) {
.build();
}

public Slice<ReservationSummaryResponseDTO> getReservationList(int page, int size) {
public PageResponse<ReservationSummaryResponseDTO> getReservationList(int page, int size) {
Sort sort = Sort.by(
Sort.Order.asc("performanceDateTime"),
Sort.Order.asc("id")
Expand All @@ -114,11 +114,8 @@ public Slice<ReservationSummaryResponseDTO> getReservationList(int page, int siz

Page<AmateurRounds> result = amateurRoundsRepository.findAll(pageable);

List<ReservationSummaryResponseDTO> content = result.getContent().stream()
.map(this::toDto)
.toList();

return new SliceImpl<>(content, pageable, result.hasNext());
Page<ReservationSummaryResponseDTO> dtoPage = result.map(this::toDto);
return PageResponse.of(dtoPage);
}

private ReservationSummaryResponseDTO toDto(AmateurRounds r) {
Expand Down
14 changes: 4 additions & 10 deletions src/main/java/cc/backend/admin/inquiry/AdminInquiryController.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,14 @@
import cc.backend.admin.inquiry.dto.AdminInquiryRequestDTO;
import cc.backend.admin.inquiry.dto.AdminInquiryResponseDTO;
import cc.backend.apiPayLoad.ApiResponse;
import cc.backend.apiPayLoad.PageResponse;
import cc.backend.apiPayLoad.SliceResponse;
import com.google.protobuf.Api;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.Parameter;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.RequiredArgsConstructor;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Slice;
import org.springframework.data.domain.Sort;
import org.springframework.data.domain.*;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

Expand Down Expand Up @@ -42,7 +40,7 @@ public ApiResponse<AdminInquiryResponseDTO.AdminInquiryDetailResponseDTO> replyI
@Operation(summary = "관리자 문의 리스트/검색 API",
description = "관리자가 문의 리스트를 합니다. keyword로 제목/내용 검색을 합니다.")
@GetMapping("")
public ApiResponse<SliceResponse<AdminInquiryResponseDTO.AdminInquirySummaryResponseDTO>> getInquiryList(
public ApiResponse<PageResponse<AdminInquiryResponseDTO.AdminInquirySummaryResponseDTO>> getInquiryList(
@Parameter(description = "검색 키워드(제목/내용)")
@RequestParam(required = false) String keyword,
@Parameter(description = "페이지 번호(0부터 시작)", example = "0")
Expand All @@ -51,11 +49,7 @@ public ApiResponse<SliceResponse<AdminInquiryResponseDTO.AdminInquirySummaryResp
@RequestParam(defaultValue = "20") int size
) {
Pageable pageable = PageRequest.of(page, size, Sort.by(Sort.Direction.DESC, "createdAt"));

Slice<AdminInquiryResponseDTO.AdminInquirySummaryResponseDTO> slice =
adminInquiryService.getInquiryList(keyword, pageable);

return ApiResponse.onSuccess(SliceResponse.of(slice));
return ApiResponse.onSuccess(adminInquiryService.getInquiryList(keyword, pageable));
}

}
Loading