-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #34 from MUIT-UMC/develop
[merge] 250128 / 3rd deploy
- Loading branch information
Showing
27 changed files
with
897 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
package muit.backend.config; | ||
|
||
|
||
import org.springframework.context.annotation.Configuration; | ||
import org.springframework.web.servlet.config.annotation.CorsRegistry; | ||
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; | ||
|
||
@Configuration | ||
public class WebConfig implements WebMvcConfigurer { | ||
@Override | ||
public void addCorsMappings(CorsRegistry registry) { | ||
registry.addMapping("/**") | ||
.allowedOrigins("http://localhost:5173") | ||
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS", "HEAD", "PATCH") | ||
.allowedHeaders("*") | ||
.allowCredentials(true) | ||
.maxAge(3600); | ||
} | ||
} |
49 changes: 49 additions & 0 deletions
49
src/main/java/muit/backend/controller/AmateurTicketController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,49 @@ | ||
package muit.backend.controller; | ||
|
||
import io.swagger.v3.oas.annotations.Operation; | ||
import io.swagger.v3.oas.annotations.tags.Tag; | ||
import lombok.RequiredArgsConstructor; | ||
import muit.backend.apiPayLoad.ApiResponse; | ||
import muit.backend.converter.AmateurTicketConverter; | ||
import muit.backend.dto.amateurTicketDTO.AmateurTicketRequestDTO; | ||
import muit.backend.dto.amateurTicketDTO.AmateurTicketResponseDTO; | ||
import muit.backend.service.AmateurTicketService; | ||
import org.springdoc.core.annotations.ParameterObject; | ||
import org.springframework.data.domain.Page; | ||
import org.springframework.data.domain.Pageable; | ||
import org.springframework.web.bind.annotation.*; | ||
|
||
import java.util.Set; | ||
|
||
@Tag(name = "어드민이 소극장 티켓 관리") | ||
@RestController | ||
@RequiredArgsConstructor | ||
@RequestMapping("/admin/amateur-tickets") | ||
public class AmateurTicketController { | ||
|
||
private final AmateurTicketService amateurTicketService; | ||
|
||
@Operation(summary = "전체 소극장 티켓 조회") | ||
@GetMapping | ||
public ApiResponse<Page<AmateurTicketResponseDTO.AmateurTicketResultListDTO>> getAllTickets(@ParameterObject Pageable pageable, | ||
@RequestParam(required = false) String keyword, | ||
@RequestParam(required = false) Set<String> selectedFields) { | ||
Page<AmateurTicketResponseDTO.AmateurTicketResultListDTO> tickets = amateurTicketService.getAllTickets(pageable, keyword, selectedFields); | ||
return ApiResponse.onSuccess(tickets); | ||
} | ||
|
||
@Operation(summary = "특정 소극장 티켓 조회") | ||
@GetMapping("/{amateurShowId}") | ||
public ApiResponse<AmateurTicketResponseDTO.AmateurTicketResultDTO> getTicket(@PathVariable("amateurShowId") Long amateurShowId) { | ||
AmateurTicketResponseDTO.AmateurTicketResultDTO ticket = amateurTicketService.getTicket(amateurShowId); | ||
return ApiResponse.onSuccess(ticket); | ||
} | ||
|
||
@Operation(summary = "특정 소극장 티켓 정보 수정") | ||
@PatchMapping("/{amateurShowId}/update") | ||
public ApiResponse<AmateurTicketResponseDTO.AmateurTicketResultDTO> updateTicket(@PathVariable("amateurShowId") Long amateurShowId, | ||
@RequestBody AmateurTicketRequestDTO.AmateurTicketUpdateDTO requestDTO) { | ||
AmateurTicketResponseDTO.AmateurTicketResultDTO ticket = amateurTicketService.updateTicket(amateurShowId, requestDTO); | ||
return ApiResponse.onSuccess(ticket); | ||
} | ||
} |
60 changes: 60 additions & 0 deletions
60
src/main/java/muit/backend/controller/ManageAmateurShowController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
package muit.backend.controller; | ||
|
||
import io.swagger.v3.oas.annotations.Operation; | ||
import io.swagger.v3.oas.annotations.media.Schema; | ||
import io.swagger.v3.oas.annotations.tags.Tag; | ||
import jakarta.validation.constraints.NotNull; | ||
import lombok.RequiredArgsConstructor; | ||
import muit.backend.apiPayLoad.ApiResponse; | ||
import muit.backend.domain.enums.AmateurStatus; | ||
import muit.backend.dto.manageAmateurShowDTO.ManageAmateurShowRequestDTO; | ||
import muit.backend.dto.manageAmateurShowDTO.ManageAmateurShowResponseDTO; | ||
import muit.backend.service.ManageAmateurShowService; | ||
import org.springdoc.core.annotations.ParameterObject; | ||
import org.springframework.data.domain.Page; | ||
import org.springframework.data.domain.Pageable; | ||
import org.springframework.web.bind.annotation.*; | ||
|
||
import java.util.Set; | ||
|
||
@Tag(name = "어드민이 소극장 공연 관리") | ||
@RestController | ||
@RequiredArgsConstructor | ||
@RequestMapping("/admin/amateur-shows") | ||
public class ManageAmateurShowController { | ||
|
||
private final ManageAmateurShowService manageAmateurShowService; | ||
|
||
@Operation(summary = "전체 소극장 공연 조회") | ||
@GetMapping | ||
public ApiResponse<Page<ManageAmateurShowResponseDTO.ManageAmateurShowResultListDTO>> getAllAmateurShows(@ParameterObject Pageable pageable, | ||
@RequestParam(required = false) String keyword, | ||
@RequestParam(required = false) Set<String> selectedFields) { | ||
Page<ManageAmateurShowResponseDTO.ManageAmateurShowResultListDTO> amateurShows = manageAmateurShowService.getAllAmateurShows(pageable, keyword, selectedFields); | ||
return ApiResponse.onSuccess(amateurShows); | ||
} | ||
|
||
@Operation(summary = "특정 소극장 공연 상세 조회") | ||
@GetMapping("/{amateurShowId}") | ||
public ApiResponse<ManageAmateurShowResponseDTO.ManageAmateurShowResultDTO> getAmateurShow(@PathVariable("amateurShowId") Long amateurShowId) { | ||
ManageAmateurShowResponseDTO.ManageAmateurShowResultDTO amateurShow = manageAmateurShowService.getAmateurShow(amateurShowId); | ||
return ApiResponse.onSuccess(amateurShow); | ||
} | ||
|
||
|
||
@Operation(summary = "특정 소극장 공연 정보 수정") | ||
@PatchMapping("/{amateurShowId}/update") | ||
public ApiResponse<ManageAmateurShowResponseDTO.ManageAmateurShowResultDTO> updateAmateurShow(@PathVariable("amateurShowId") Long amateurShowId, @RequestBody ManageAmateurShowRequestDTO.ManageAmateurShowUpdateDTO requestDTO) { | ||
ManageAmateurShowResponseDTO.ManageAmateurShowResultDTO amateurShow = manageAmateurShowService.updateAmateurShow(amateurShowId, requestDTO); | ||
return ApiResponse.onSuccess(amateurShow); | ||
} | ||
|
||
@Operation(summary = "소극장 공연 최종 등록/반려") | ||
@PatchMapping("/{amateurShowId}/decision") | ||
public ApiResponse<ManageAmateurShowResponseDTO.ManageAmateurShowDecideDTO> decideAmateurShow(@PathVariable("amateurShowId") Long amateurShowId, @RequestParam AmateurStatus amateurStatus, @RequestBody ManageAmateurShowRequestDTO.ManageAmateurShowDecideDTO requestDTO) { | ||
ManageAmateurShowResponseDTO.ManageAmateurShowDecideDTO amateurShow = manageAmateurShowService.decideAmateurShow(amateurShowId, amateurStatus, requestDTO); | ||
return ApiResponse.onSuccess(amateurShow); | ||
} | ||
|
||
} | ||
|
36 changes: 36 additions & 0 deletions
36
src/main/java/muit/backend/controller/ManageReservController.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,36 @@ | ||
package muit.backend.controller; | ||
|
||
import io.swagger.v3.oas.annotations.Operation; | ||
import io.swagger.v3.oas.annotations.tags.Tag; | ||
import lombok.RequiredArgsConstructor; | ||
import muit.backend.apiPayLoad.ApiResponse; | ||
import muit.backend.dto.manageReservDTO.ManageReservResponseDTO; | ||
import muit.backend.service.ManageReservService; | ||
import org.springdoc.core.annotations.ParameterObject; | ||
import org.springframework.data.domain.Page; | ||
import org.springframework.data.domain.Pageable; | ||
import org.springframework.web.bind.annotation.GetMapping; | ||
import org.springframework.web.bind.annotation.RequestMapping; | ||
import org.springframework.web.bind.annotation.RequestParam; | ||
import org.springframework.web.bind.annotation.RestController; | ||
|
||
import java.util.Set; | ||
|
||
@Tag(name = "어드민이 공연 예약 관리") | ||
@RestController | ||
@RequiredArgsConstructor | ||
@RequestMapping("/admin/amateur-reservations") | ||
public class ManageReservController { | ||
|
||
private final ManageReservService manageReservService; | ||
|
||
@Operation(summary = "전체 공연 예약 조회") | ||
@GetMapping | ||
public ApiResponse<Page<ManageReservResponseDTO.ManageReservResultListDTO>> getAllReservations(@ParameterObject Pageable pageable, | ||
@RequestParam(required = false) String keyword, | ||
@RequestParam(required = false) Set<String> selectedFields) { | ||
Page<ManageReservResponseDTO.ManageReservResultListDTO> reservations = manageReservService.getAllReservations(pageable, keyword, selectedFields); | ||
return ApiResponse.onSuccess(reservations); | ||
} | ||
|
||
} |
42 changes: 42 additions & 0 deletions
42
src/main/java/muit/backend/converter/AmateurTicketConverter.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
package muit.backend.converter; | ||
|
||
import muit.backend.domain.entity.amateur.AmateurShow; | ||
import muit.backend.dto.amateurTicketDTO.AmateurTicketResponseDTO; | ||
|
||
import java.util.Set; | ||
|
||
public class AmateurTicketConverter { | ||
|
||
public static AmateurTicketResponseDTO.AmateurTicketResultListDTO toAmateurTicketResultListDTO(AmateurShow amateurShow, Set<String> selectedFields, boolean isKeywordSearch) { | ||
|
||
// 키워드 검색이거나 전체 조회인 경우 모든 필드 포함 | ||
if (isKeywordSearch || selectedFields == null || selectedFields.isEmpty()) { | ||
return AmateurTicketResponseDTO.AmateurTicketResultListDTO.builder() | ||
.amateurShowId(amateurShow.getId()) | ||
.name(amateurShow.getName()) | ||
.schedule(amateurShow.getSchedule()) | ||
.soldTicket(amateurShow.getSoldTicket()) | ||
.totalTicket(amateurShow.getTotalTicket()) | ||
.build(); | ||
} | ||
|
||
// selectedFields로 특정 필드만 선택한 경우 | ||
return AmateurTicketResponseDTO.AmateurTicketResultListDTO.builder() | ||
.amateurShowId(amateurShow.getId()) // ID는 항상 포함 | ||
.name(selectedFields.contains("name") ? amateurShow.getName() : null) | ||
.schedule(selectedFields.contains("schedule") ? amateurShow.getSchedule() : null) | ||
.soldTicket(selectedFields.contains("reservationStatus") ? amateurShow.getSoldTicket() : null) | ||
.totalTicket(selectedFields.contains("reservationStatus") ? amateurShow.getTotalTicket() : null) | ||
.build(); | ||
} | ||
|
||
public static AmateurTicketResponseDTO.AmateurTicketResultDTO toAmateurTicketResultDTO(AmateurShow amateurShow) { | ||
return AmateurTicketResponseDTO.AmateurTicketResultDTO.builder() | ||
.amateurShowId(amateurShow.getId()) | ||
.name(amateurShow.getName()) | ||
.schedule(amateurShow.getSchedule()) | ||
.soldTicket(amateurShow.getSoldTicket()) | ||
.totalTicket(amateurShow.getTotalTicket()) | ||
.build(); | ||
} | ||
} |
61 changes: 61 additions & 0 deletions
61
src/main/java/muit/backend/converter/ManageAmateurShowConverter.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,61 @@ | ||
package muit.backend.converter; | ||
|
||
import muit.backend.domain.entity.amateur.AmateurShow; | ||
import muit.backend.domain.entity.member.Member; | ||
import muit.backend.domain.enums.AmateurStatus; | ||
import muit.backend.dto.manageAmateurShowDTO.ManageAmateurShowRequestDTO; | ||
import muit.backend.dto.manageAmateurShowDTO.ManageAmateurShowResponseDTO; | ||
import muit.backend.dto.manageMemberDTO.ManageMemberResponseDTO; | ||
|
||
import java.util.Set; | ||
|
||
public class ManageAmateurShowConverter { | ||
|
||
public static ManageAmateurShowResponseDTO.ManageAmateurShowResultListDTO toManageAmateurShowResultListDTO(AmateurShow amateurShow, Set<String> selectedFields, boolean isKeywordSearch) { | ||
|
||
// 키워드 검색이거나 전체 조회인 경우 모든 필드 포함 | ||
if (isKeywordSearch || selectedFields == null || selectedFields.isEmpty()) { | ||
return ManageAmateurShowResponseDTO.ManageAmateurShowResultListDTO.builder() | ||
.amateurShowId(amateurShow.getId()) | ||
.amateurShowName(amateurShow.getName()) | ||
.schedule(amateurShow.getSchedule()) | ||
.memberName(amateurShow.getMember().getName()) | ||
.amateurStatus(amateurShow.getAmateurStatus()) | ||
.build(); | ||
} | ||
|
||
// selectedFields로 특정 필드만 선택한 경우 | ||
return ManageAmateurShowResponseDTO.ManageAmateurShowResultListDTO.builder() | ||
.amateurShowId(amateurShow.getId()) // ID는 항상 포함 | ||
.amateurShowName(selectedFields.contains("amateurShowName") ? amateurShow.getName() : null) | ||
.schedule(selectedFields.contains("schedule") ? amateurShow.getSchedule() : null) | ||
.memberName(selectedFields.contains("memberName") ? amateurShow.getMember().getName() : null) | ||
.build(); | ||
} | ||
|
||
public static ManageAmateurShowResponseDTO.ManageAmateurShowResultDTO toManageAmateurShowResultDTO(AmateurShow amateurShow) { | ||
return ManageAmateurShowResponseDTO.ManageAmateurShowResultDTO.builder() | ||
.amateurShowId(amateurShow.getId()) | ||
.amateurShowName(amateurShow.getName()) | ||
.memberName(amateurShow.getMember().getName()) | ||
.username(amateurShow.getMember().getUsername()) | ||
.schedule(amateurShow.getSchedule()) | ||
.hashtag(amateurShow.getHashtag()) | ||
.content(amateurShow.getAmateurSummary().getContent()) | ||
.account(amateurShow.getAccount()) | ||
.contact(amateurShow.getContact()) | ||
.amateurStatus(amateurShow.getAmateurStatus()) | ||
.build(); | ||
} | ||
|
||
public static ManageAmateurShowResponseDTO.ManageAmateurShowDecideDTO toManageAmateurShowDecideDTO(AmateurShow amateurShow) { | ||
return ManageAmateurShowResponseDTO.ManageAmateurShowDecideDTO.builder() | ||
.amateurShowId(amateurShow.getId()) | ||
.amateurShowName(amateurShow.getName()) | ||
.memberName(amateurShow.getMember().getName()) | ||
.username(amateurShow.getMember().getUsername()) | ||
.amateurStatus(amateurShow.getAmateurStatus()) | ||
.rejectReason(amateurShow.getRejectReason()) | ||
.build(); | ||
} | ||
} |
53 changes: 53 additions & 0 deletions
53
src/main/java/muit/backend/converter/ManageReservConverter.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,53 @@ | ||
package muit.backend.converter; | ||
|
||
import muit.backend.domain.entity.amateur.AmateurShow; | ||
import muit.backend.domain.entity.member.MemberTicket; | ||
import muit.backend.domain.entity.member.Reservation; | ||
import muit.backend.dto.manageReservDTO.ManageReservResponseDTO; | ||
|
||
import java.util.Set; | ||
|
||
public class ManageReservConverter { | ||
|
||
// reservation에서 amateurshow 가져오기 | ||
private static AmateurShow getAmateurShowFromReservation(Reservation reservation) { | ||
return reservation.getMemberTicketList().stream() | ||
.findFirst() // 아무 티켓이나 봐도 같은 공연이니 첫 번째 것 사용 | ||
.map(memberTicket -> memberTicket.getAmateurTicket().getAmateurShow()) | ||
.orElse(null); | ||
} | ||
|
||
public static ManageReservResponseDTO.ManageReservResultListDTO toManageReservResultListDTO(Reservation reservation, Set<String> selectedFields, boolean isKeywordSearch) { | ||
|
||
// 키워드 검색이거나 전체 조회인 경우 모든 필드 포함 | ||
if (isKeywordSearch || selectedFields == null || selectedFields.isEmpty()) { | ||
AmateurShow amateurShow = getAmateurShowFromReservation(reservation); | ||
|
||
return ManageReservResponseDTO.ManageReservResultListDTO.builder() | ||
.reservationId(reservation.getId()) | ||
.memberName(reservation.getMember().getName()) | ||
.amateurShowName(amateurShow.getName()) | ||
.schedule(amateurShow.getSchedule()) | ||
.place(amateurShow.getPlace()) | ||
.quantity(reservation.getMemberTicketList().stream() | ||
.findFirst() | ||
.map(MemberTicket::getQuantity) | ||
.orElse(null)) | ||
.reservationStatus(reservation.getStatus()) | ||
.build(); | ||
} | ||
|
||
// selectedFields로 특정 필드만 선택한 경우 | ||
AmateurShow amateurShow = getAmateurShowFromReservation(reservation); | ||
return ManageReservResponseDTO.ManageReservResultListDTO.builder() | ||
.reservationId(reservation.getId()) // ID는 항상 포함 | ||
.amateurShowName(selectedFields.contains("amateurShowName") ? | ||
(amateurShow != null ? amateurShow.getName() : null) : null) | ||
.schedule(selectedFields.contains("schedule") ? | ||
(amateurShow != null ? amateurShow.getSchedule() : null) : null) | ||
.reservationStatus(selectedFields.contains("reservationStatus") ? | ||
reservation.getStatus() : null) | ||
.build(); | ||
} | ||
|
||
} |
Oops, something went wrong.