From 09c961fed3f71f164a4669bb00a89bc67b5b55d9 Mon Sep 17 00:00:00 2001 From: ocahs9 Date: Mon, 26 Aug 2024 16:33:00 +0900 Subject: [PATCH 01/44] =?UTF-8?q?feat:=20step2(=EC=8A=A4=ED=83=9C=ED=94=84?= =?UTF-8?q?=EB=A6=AC=EC=8A=A4=ED=8A=B8,=EC=BA=90=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=EB=A6=AC=EC=8A=A4=ED=8A=B8=20=EC=88=98=EC=A0=95)=20=EB=B6=80?= =?UTF-8?q?=ED=99=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/modifyManage/ModifyManage.tsx | 27 ++++++++++--------- .../modifyManage/components/RoleWrapper.tsx | 2 +- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/pages/modifyManage/ModifyManage.tsx b/src/pages/modifyManage/ModifyManage.tsx index 546762c0..96baa8aa 100644 --- a/src/pages/modifyManage/ModifyManage.tsx +++ b/src/pages/modifyManage/ModifyManage.tsx @@ -35,6 +35,7 @@ import PosterThumbnail from "./components/PosterThumbnail"; import StepperModifyManageBox from "./components/StepperModifyManageBox"; import TimePickerModifyManageBox from "./components/TimePickerModifyManageBox"; import { GENRE_LIST } from "./constants/genreList"; +import ModifyManageMaker from "./ModifyMaker"; import * as S from "./ModifyManage.styled"; import { BANK_TYPE, Cast, DataProps, Schedule, Staff } from "./typings/gigInfo"; import { isAllFieldsFilled } from "./utils/handleEvent"; @@ -195,6 +196,8 @@ const ModifyManage = () => { leftOnClick: handleLeftBtn, rightOnClick: handleRightBtn, }); + + console.log("현재 스텝:", modifyState.modifyManageStep); }, [modifyState.modifyManageStep, modifyState.isBookerExist]); const handleInputChange = (field: keyof State, value: State[keyof State]) => { @@ -604,19 +607,19 @@ const ModifyManage = () => { ); } - // if (modifyManageStep === 2) { - // return ( - // console.log("")} - // /> - // ); - // } - if (modifyState.modifyManageStep === 2) { + return ( + console.log("")} + /> + ); + } + + if (modifyState.modifyManageStep === 3) { return ( <> diff --git a/src/pages/modifyManage/components/RoleWrapper.tsx b/src/pages/modifyManage/components/RoleWrapper.tsx index 11db2ccd..ae6be6a4 100644 --- a/src/pages/modifyManage/components/RoleWrapper.tsx +++ b/src/pages/modifyManage/components/RoleWrapper.tsx @@ -50,7 +50,7 @@ const RoleWrapper = ({ id, role, removeRole, onUpdateRole }: RoleWrapperProps) = {previewImg ? ( - {/* removeRole(id)} /> */} + removeRole(id)} /> ) : ( <> From b75551990104f3347604c6e3aeb12a8d8ce4075e Mon Sep 17 00:00:00 2001 From: ocahs9 Date: Mon, 26 Aug 2024 22:04:19 +0900 Subject: [PATCH 02/44] =?UTF-8?q?fix:=20=EC=9E=85=EB=A0=A5=20=EA=B0=80?= =?UTF-8?q?=EB=8A=A5=ED=95=98=EB=8F=84=EB=A1=9D=20=EB=B3=80=EA=B2=BD,=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C=20=EB=B2=84=ED=8A=BC=20=ED=99=9C=EC=84=B1?= =?UTF-8?q?=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/modifyManage/components/RoleWrapper.tsx | 7 ++++--- src/pages/register/components/RoleWrapper.tsx | 8 ++++---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/pages/modifyManage/components/RoleWrapper.tsx b/src/pages/modifyManage/components/RoleWrapper.tsx index ae6be6a4..17e8cf33 100644 --- a/src/pages/modifyManage/components/RoleWrapper.tsx +++ b/src/pages/modifyManage/components/RoleWrapper.tsx @@ -58,10 +58,11 @@ const RoleWrapper = ({ id, role, removeRole, onUpdateRole }: RoleWrapperProps) = type="file" id={`file-${id}`} onChange={uploadFile} - disabled={true} + disabled={false} /> + removeRole(id)} /> )} @@ -76,7 +77,7 @@ const RoleWrapper = ({ id, role, removeRole, onUpdateRole }: RoleWrapperProps) = filter={nameFilter} narrow={true} placeholder="이름" - disabled={true} + disabled={false} /> diff --git a/src/pages/register/components/RoleWrapper.tsx b/src/pages/register/components/RoleWrapper.tsx index e844e2e7..84dae9cc 100644 --- a/src/pages/register/components/RoleWrapper.tsx +++ b/src/pages/register/components/RoleWrapper.tsx @@ -1,9 +1,9 @@ -import Spacing from "@components/commons/spacing/Spacing"; -import * as S from "../Register.styled"; -import TextField from "@components/commons/input/textField/TextField"; import { IconCamera } from "@assets/svgs"; -import { ChangeEvent, useState } from "react"; +import TextField from "@components/commons/input/textField/TextField"; +import Spacing from "@components/commons/spacing/Spacing"; import { nameFilter } from "@utils/useInputFilter"; +import { ChangeEvent, useState } from "react"; +import * as S from "../Register.styled"; interface Role { id: number; From 6a0444260389488985361ab9ab97c10041c054fd Mon Sep 17 00:00:00 2001 From: ocahs9 Date: Tue, 27 Aug 2024 00:37:37 +0900 Subject: [PATCH 03/44] =?UTF-8?q?feat:=20=ED=83=80=EC=9E=85=20=EC=B5=9C?= =?UTF-8?q?=EC=8B=A0=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/modifyManage/ModifyManage.tsx | 7 + src/typings/api/schema/index.ts | 3116 ++++++++++++----------- 2 files changed, 1683 insertions(+), 1440 deletions(-) diff --git a/src/pages/modifyManage/ModifyManage.tsx b/src/pages/modifyManage/ModifyManage.tsx index 96baa8aa..4be64cdc 100644 --- a/src/pages/modifyManage/ModifyManage.tsx +++ b/src/pages/modifyManage/ModifyManage.tsx @@ -222,6 +222,13 @@ const ModifyManage = () => { ); try { + console.log("수정하기 요청 보내기 직전 데이터:", { + performanceId: Number(performanceId), + ...dataState, + castList: filteredCastList, + staffList: filteredStaffList, + }); + const res = await updatePerformance({ performanceId: Number(performanceId), ...dataState, diff --git a/src/typings/api/schema/index.ts b/src/typings/api/schema/index.ts index bdbb3240..ac9c249a 100644 --- a/src/typings/api/schema/index.ts +++ b/src/typings/api/schema/index.ts @@ -4,1513 +4,1749 @@ */ export interface paths { - "/api/tickets/{performanceId}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * 예매자 목록 조회 API - * @description 메이커가 자신의 공연에 대한 예매자 목록을 조회하는 GET API입니다. - */ - get: operations["getTickets"]; - /** - * 예매자 입금여부 수정 및 웹발신 API - * @description 메이커가 자신의 공연에 대한 예매자의 입금여부 정보를 수정한 뒤 예매확정 웹발신을 보내는 PUT API입니다. - */ - put: operations["updateTickets"]; - post?: never; - /** - * 예매자 삭제 API - * @description 메이커가 자신의 공연에 대한 예매자의 정보를 삭제하는 DELETE API입니다. - */ - delete: operations["deleteTickets"]; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/performances": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - /** - * 공연 정보 수정 API - * @description 공연 정보를 수정하는 PUT API입니다. - */ - put: operations["updatePerformance"]; - /** - * 공연 생성 API - * @description 공연을 생성하는 POST API입니다. - */ - post: operations["createPerformance"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/users/sign-up": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** - * 로그인/회원가입 API - * @description 로그인/회원가입하는 POST API입니다. - */ - post: operations["signUp"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/users/sign-out": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** - * 로그아웃 API - * @description 로그아웃하는 POST API입니다. - */ - post: operations["signOut"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/bookings/member": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** - * 회원 예매 API - * @description 회원이 예매를 요청하는 POST API입니다. - */ - post: operations["createMemberBooking"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/bookings/guest": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** - * 비회원 예매 API - * @description 비회원이 예매를 요청하는 POST API입니다. - */ - post: operations["createGuestBookings"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/bookings/guest/retrieve": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get?: never; - put?: never; - /** - * 비회원 예매 조회 API - * @description 비회원이 예매를 조회하는 POST API입니다. - */ - post: operations["getGuestBookings"]; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/health-check": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get: operations["healthcheck"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/users/refresh-token": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * access token 재발급 API - * @description refresh token으로 access token을 재발급하는 GET API입니다. - */ - get: operations["refreshToken"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/schedules/{scheduleId}/availability": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - get: operations["getTicketAvailability"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/performances/{performanceId}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * 공연 수정 페이지 정보 조회 API - * @description 공연 정보를 조회하는 GET API입니다. - */ - get: operations["getPerformanceForEdit"]; - put?: never; - post?: never; - /** - * 공연 삭제 API - * @description 공연을 삭제하는 DELETE API입니다. - */ - delete: operations["deletePerformance"]; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/performances/user": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * 회원이 등록한 공연 목록 조회 API - * @description 회원이 등록한 공연 목록을 조회하는 GET API입니다. - */ - get: operations["getUserPerformances"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/performances/detail/{performanceId}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * 공연 상세정보 조회 API - * @description 공연 상세페이지의 공연 상세정보를 조회하는 GET API입니다. - */ - get: operations["getPerformanceDetail"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/performances/booking/{performanceId}": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * 예매하기 관련 공연 정보 조회 API - * @description 예매하기 페이지에서 필요한 예매 관련 공연 정보를 조회하는 GET API입니다. - */ - get: operations["getBookingPerformanceDetail"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/main": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * 전체공연목록, 홍보목록 조회 API - * @description 홈화면에서 전체공연목록, 홍보목록을 조회하는 GET API입니다. - */ - get: operations["getHomePerformanceList"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/files/presigned-url": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * presigned-url API - * @description S3에 업로드 할 수 있는 유효한 url을 주는 GET API입니다. - */ - get: operations["getPresignedUrls"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; - }; - "/api/bookings/member/retrieve": { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - /** - * 회원 예매 조회 API - * @description 회원이 예매를 조회하는 GET API입니다. - */ - get: operations["getMemberBookings"]; - put?: never; - post?: never; - delete?: never; - options?: never; - head?: never; - patch?: never; - trace?: never; + "/api/tickets": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + /** + * 예매자 입금여부 수정 및 웹발신 API + * @description 메이커가 자신의 공연에 대한 예매자의 입금여부 정보를 수정한 뒤 예매확정 웹발신을 보내는 PUT API입니다. + */ + put: operations["updateTickets"]; + post?: never; + /** + * 예매자 삭제 API + * @description 메이커가 자신의 공연에 대한 예매자의 정보를 삭제하는 DELETE API입니다. + */ + delete: operations["deleteTickets"]; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/performances": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + /** + * 공연 정보 수정 API + * @description 공연 정보를 수정하는 PUT API입니다. + */ + put: operations["updatePerformance"]; + /** + * 공연 생성 API + * @description 공연을 생성하는 POST API입니다. + */ + post: operations["createPerformance"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/users/sign-up": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * 로그인/회원가입 API + * @description 로그인/회원가입하는 POST API입니다. + */ + post: operations["signUp"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/users/sign-out": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * 로그아웃 API + * @description 로그아웃하는 POST API입니다. + */ + post: operations["signOut"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/bookings/member": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * 회원 예매 API + * @description 회원이 예매를 요청하는 POST API입니다. + */ + post: operations["createMemberBooking"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/bookings/guest": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * 비회원 예매 API + * @description 비회원이 예매를 요청하는 POST API입니다. + */ + post: operations["createGuestBookings"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/bookings/guest/retrieve": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get?: never; + put?: never; + /** + * 비회원 예매 조회 API + * @description 비회원이 예매를 조회하는 POST API입니다. + */ + post: operations["getGuestBookings"]; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/health-check": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get: operations["healthcheck"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/users/refresh-token": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * access token 재발급 API + * @description refresh token으로 access token을 재발급하는 GET API입니다. + */ + get: operations["refreshToken"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/tickets/{performanceId}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * 예매자 목록 조회 API + * @description 메이커가 자신의 공연에 대한 예매자 목록을 조회하는 GET API입니다. + */ + get: operations["getTickets"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/schedules/{scheduleId}/availability": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + get: operations["getTicketAvailability"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/performances/{performanceId}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * 공연 수정 페이지 정보 조회 API + * @description 공연 정보를 조회하는 GET API입니다. + */ + get: operations["getPerformanceForEdit"]; + put?: never; + post?: never; + /** + * 공연 삭제 API + * @description 공연을 삭제하는 DELETE API입니다. + */ + delete: operations["deletePerformance"]; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/performances/user": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * 회원이 등록한 공연 목록 조회 API + * @description 회원이 등록한 공연 목록을 조회하는 GET API입니다. + */ + get: operations["getUserPerformances"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/performances/detail/{performanceId}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * 공연 상세정보 조회 API + * @description 공연 상세페이지의 공연 상세정보를 조회하는 GET API입니다. + */ + get: operations["getPerformanceDetail"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/performances/booking/{performanceId}": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * 예매하기 관련 공연 정보 조회 API + * @description 예매하기 페이지에서 필요한 예매 관련 공연 정보를 조회하는 GET API입니다. + */ + get: operations["getBookingPerformanceDetail"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/main": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; }; + /** + * 전체공연목록, 홍보목록 조회 API + * @description 홈화면에서 전체공연목록, 홍보목록을 조회하는 GET API입니다. + */ + get: operations["getHomePerformanceList"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/files/presigned-url": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * presigned-url API + * @description S3에 업로드 할 수 있는 유효한 url을 주는 GET API입니다. + */ + get: operations["getPresignedUrls"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; + "/api/bookings/member/retrieve": { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + /** + * 회원 예매 조회 API + * @description 회원이 예매를 조회하는 GET API입니다. + */ + get: operations["getMemberBookings"]; + put?: never; + post?: never; + delete?: never; + options?: never; + head?: never; + patch?: never; + trace?: never; + }; } export type webhooks = Record; export interface components { - schemas: { - TicketUpdateDetail: { - /** Format: int64 */ - bookingId?: number; - bookerName?: string; - bookerPhoneNumber?: string; - /** Format: int64 */ - scheduleId?: number; - /** Format: int32 */ - purchaseTicketCount?: number; - /** Format: date-time */ - createdAt?: string; - isPaymentCompleted?: boolean; - scheduleNumber?: string; - }; - TicketUpdateRequest: { - /** Format: int64 */ - performanceId?: number; - performanceTitle?: string; - /** Format: int32 */ - totalScheduleCount?: number; - bookingList?: components["schemas"]["TicketUpdateDetail"][]; - }; - SuccessResponseVoid: { - /** Format: int32 */ - status?: number; - message?: string; - data?: Record; - }; - CastUpdateRequest: { - /** Format: int64 */ - castId?: number; - castName?: string; - castRole?: string; - castPhoto?: string; - }; - PerformanceUpdateRequest: { - /** Format: int64 */ - performanceId?: number; - performanceTitle?: string; - /** @enum {string} */ - genre?: "BAND" | "PLAY" | "DANCE" | "ETC"; - /** Format: int32 */ - runningTime?: number; - performanceDescription?: string; - performanceAttentionNote?: string; - /** @enum {string} */ - bankName?: "NH_NONGHYUP" | "KAKAOBANK" | "KB_KOOKMIN" | "TOSSBANK" | "SHINHAN" | "WOORI" | "IBK_GIUP" | "HANA" | "SAEMAUL" | "BUSAN" | "IMBANK_DAEGU" | "SINHYEOP" | "WOOCHAEGUK" | "SCJEIL" | "SUHYEOP" | "NONE"; - accountNumber?: string; - accountHolder?: string; - posterImage?: string; - performanceTeamName?: string; - performanceVenue?: string; - performanceContact?: string; - performancePeriod?: string; - /** Format: int32 */ - totalScheduleCount?: number; - scheduleList?: components["schemas"]["ScheduleUpdateRequest"][]; - castList?: components["schemas"]["CastUpdateRequest"][]; - staffList?: components["schemas"]["StaffUpdateRequest"][]; - }; - ScheduleUpdateRequest: { - /** Format: int64 */ - scheduleId?: number; - /** Format: date-time */ - performanceDate?: string; - /** Format: int32 */ - totalTicketCount?: number; - scheduleNumber?: string; - }; - StaffUpdateRequest: { - /** Format: int64 */ - staffId?: number; - staffName?: string; - staffRole?: string; - staffPhoto?: string; - }; - CastUpdateResponse: { - /** Format: int64 */ - castId?: number; - castName?: string; - castRole?: string; - castPhoto?: string; - }; - PerformanceUpdateResponse: { - /** Format: int64 */ - userId?: number; - /** Format: int64 */ - performanceId?: number; - performanceTitle?: string; - /** @enum {string} */ - genre?: "BAND" | "PLAY" | "DANCE" | "ETC"; - /** Format: int32 */ - runningTime?: number; - performanceDescription?: string; - performanceAttentionNote?: string; - /** @enum {string} */ - bankName?: "NH_NONGHYUP" | "KAKAOBANK" | "KB_KOOKMIN" | "TOSSBANK" | "SHINHAN" | "WOORI" | "IBK_GIUP" | "HANA" | "SAEMAUL" | "BUSAN" | "IMBANK_DAEGU" | "SINHYEOP" | "WOOCHAEGUK" | "SCJEIL" | "SUHYEOP" | "NONE"; - accountNumber?: string; - accountHolder?: string; - posterImage?: string; - performanceTeamName?: string; - performanceVenue?: string; - performanceContact?: string; - performancePeriod?: string; - /** Format: int32 */ - ticketPrice?: number; - /** Format: int32 */ - totalScheduleCount?: number; - scheduleList?: components["schemas"]["ScheduleUpdateResponse"][]; - castList?: components["schemas"]["CastUpdateResponse"][]; - staffList?: components["schemas"]["StaffUpdateResponse"][]; - }; - ScheduleUpdateResponse: { - /** Format: int64 */ - scheduleId?: number; - /** Format: date-time */ - performanceDate?: string; - /** Format: int32 */ - totalTicketCount?: number; - /** Format: int32 */ - dueDate?: number; - /** @enum {string} */ - scheduleNumber?: "FIRST" | "SECOND" | "THIRD"; - }; - StaffUpdateResponse: { - /** Format: int64 */ - staffId?: number; - staffName?: string; - staffRole?: string; - staffPhoto?: string; - }; - SuccessResponsePerformanceUpdateResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["PerformanceUpdateResponse"]; - }; - MemberLoginRequest: { - /** @enum {string} */ - socialType: "KAKAO"; - }; - LoginSuccessResponse: { - accessToken?: string; - refreshToken?: string; - nickname?: string; - }; - SuccessResponseLoginSuccessResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["LoginSuccessResponse"]; - }; - CastRequest: { - castName?: string; - castRole?: string; - castPhoto?: string; - }; - PerformanceRequest: { - performanceTitle?: string; - /** @enum {string} */ - genre?: "BAND" | "PLAY" | "DANCE" | "ETC"; - /** Format: int32 */ - runningTime?: number; - performanceDescription?: string; - performanceAttentionNote?: string; - /** @enum {string} */ - bankName?: "NH_NONGHYUP" | "KAKAOBANK" | "KB_KOOKMIN" | "TOSSBANK" | "SHINHAN" | "WOORI" | "IBK_GIUP" | "HANA" | "SAEMAUL" | "BUSAN" | "IMBANK_DAEGU" | "SINHYEOP" | "WOOCHAEGUK" | "SCJEIL" | "SUHYEOP" | "NONE"; - accountNumber?: string; - accountHolder?: string; - posterImage?: string; - performanceTeamName?: string; - performanceVenue?: string; - performanceContact?: string; - performancePeriod?: string; - /** Format: int32 */ - ticketPrice?: number; - /** Format: int32 */ - totalScheduleCount?: number; - scheduleList?: components["schemas"]["ScheduleRequest"][]; - castList?: components["schemas"]["CastRequest"][]; - staffList?: components["schemas"]["StaffRequest"][]; - }; - ScheduleRequest: { - /** Format: date-time */ - performanceDate?: string; - /** Format: int32 */ - totalTicketCount?: number; - /** @enum {string} */ - scheduleNumber?: "FIRST" | "SECOND" | "THIRD"; - }; - StaffRequest: { - staffName?: string; - staffRole?: string; - staffPhoto?: string; - }; - CastResponse: { - /** Format: int64 */ - castId?: number; - castName?: string; - castRole?: string; - castPhoto?: string; - }; - PerformanceResponse: { - /** Format: int64 */ - userId?: number; - /** Format: int64 */ - performanceId?: number; - performanceTitle?: string; - /** @enum {string} */ - genre?: "BAND" | "PLAY" | "DANCE" | "ETC"; - /** Format: int32 */ - runningTime?: number; - performanceDescription?: string; - performanceAttentionNote?: string; - /** @enum {string} */ - bankName?: "NH_NONGHYUP" | "KAKAOBANK" | "KB_KOOKMIN" | "TOSSBANK" | "SHINHAN" | "WOORI" | "IBK_GIUP" | "HANA" | "SAEMAUL" | "BUSAN" | "IMBANK_DAEGU" | "SINHYEOP" | "WOOCHAEGUK" | "SCJEIL" | "SUHYEOP" | "NONE"; - accountNumber?: string; - accountHolder?: string; - posterImage?: string; - performanceTeamName?: string; - performanceVenue?: string; - performanceContact?: string; - performancePeriod?: string; - /** Format: int32 */ - ticketPrice?: number; - /** Format: int32 */ - totalScheduleCount?: number; - scheduleList?: components["schemas"]["ScheduleResponse"][]; - castList?: components["schemas"]["CastResponse"][]; - staffList?: components["schemas"]["StaffResponse"][]; - }; - ScheduleResponse: { - /** Format: int64 */ - scheduleId?: number; - /** Format: date-time */ - performanceDate?: string; - /** Format: int32 */ - totalTicketCount?: number; - /** Format: int32 */ - dueDate?: number; - /** @enum {string} */ - scheduleNumber?: "FIRST" | "SECOND" | "THIRD"; - }; - StaffResponse: { - /** Format: int64 */ - staffId?: number; - staffName?: string; - staffRole?: string; - staffPhoto?: string; - }; - SuccessResponsePerformanceResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["PerformanceResponse"]; - }; - MemberBookingRequest: { - /** Format: int64 */ - scheduleId?: number; - /** @enum {string} */ - scheduleNumber?: "FIRST" | "SECOND" | "THIRD"; - /** Format: int32 */ - purchaseTicketCount?: number; - bookerName?: string; - bookerPhoneNumber?: string; - isPaymentCompleted?: boolean; - /** Format: int32 */ - totalPaymentAmount?: number; - }; - MemberBookingResponse: { - /** Format: int64 */ - bookingId?: number; - /** Format: int64 */ - scheduleId?: number; - /** Format: int64 */ - userId?: number; - /** Format: int32 */ - purchaseTicketCount?: number; - /** @enum {string} */ - scheduleNumber?: "FIRST" | "SECOND" | "THIRD"; - bookerName?: string; - bookerPhoneNumber?: string; - isPaymentCompleted?: boolean; - /** @enum {string} */ - bankName?: "NH_NONGHYUP" | "KAKAOBANK" | "KB_KOOKMIN" | "TOSSBANK" | "SHINHAN" | "WOORI" | "IBK_GIUP" | "HANA" | "SAEMAUL" | "BUSAN" | "IMBANK_DAEGU" | "SINHYEOP" | "WOOCHAEGUK" | "SCJEIL" | "SUHYEOP" | "NONE"; - accountNumber?: string; - /** Format: int32 */ - totalPaymentAmount?: number; - /** Format: date-time */ - createdAt?: string; - }; - SuccessResponseMemberBookingResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["MemberBookingResponse"]; - }; - GuestBookingRequest: { - /** Format: int64 */ - scheduleId?: number; - /** Format: int32 */ - purchaseTicketCount?: number; - /** @enum {string} */ - scheduleNumber?: "FIRST" | "SECOND" | "THIRD"; - bookerName?: string; - bookerPhoneNumber?: string; - birthDate?: string; - password?: string; - /** Format: int32 */ - totalPaymentAmount?: number; - isPaymentCompleted?: boolean; - }; - GuestBookingResponse: { - /** Format: int64 */ - bookingId?: number; - /** Format: int64 */ - scheduleId?: number; - /** Format: int64 */ - userId?: number; - /** Format: int32 */ - purchaseTicketCount?: number; - /** @enum {string} */ - scheduleNumber?: "FIRST" | "SECOND" | "THIRD"; - bookerName?: string; - bookerPhoneNumber?: string; - isPaymentCompleted?: boolean; - /** @enum {string} */ - bankName?: "NH_NONGHYUP" | "KAKAOBANK" | "KB_KOOKMIN" | "TOSSBANK" | "SHINHAN" | "WOORI" | "IBK_GIUP" | "HANA" | "SAEMAUL" | "BUSAN" | "IMBANK_DAEGU" | "SINHYEOP" | "WOOCHAEGUK" | "SCJEIL" | "SUHYEOP" | "NONE"; - accountNumber?: string; - /** Format: int32 */ - totalPaymentAmount?: number; - /** Format: date-time */ - createdAt?: string; - }; - SuccessResponseGuestBookingResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["GuestBookingResponse"]; - }; - GuestBookingRetrieveRequest: { - bookerName?: string; - birthDate?: string; - bookerPhoneNumber?: string; - password?: string; - }; - GuestBookingRetrieveResponse: { - /** Format: int64 */ - bookingId?: number; - /** Format: int64 */ - scheduleId?: number; - /** Format: int64 */ - performanceId?: number; - performanceTitle?: string; - /** Format: date-time */ - performanceDate?: string; - performanceVenue?: string; - /** Format: int32 */ - purchaseTicketCount?: number; - /** @enum {string} */ - scheduleNumber?: "FIRST" | "SECOND" | "THIRD"; - bookerName?: string; - performanceContact?: string; - /** @enum {string} */ - bankName?: "NH_NONGHYUP" | "KAKAOBANK" | "KB_KOOKMIN" | "TOSSBANK" | "SHINHAN" | "WOORI" | "IBK_GIUP" | "HANA" | "SAEMAUL" | "BUSAN" | "IMBANK_DAEGU" | "SINHYEOP" | "WOOCHAEGUK" | "SCJEIL" | "SUHYEOP" | "NONE"; - accountNumber?: string; - /** Format: int32 */ - dueDate?: number; - isPaymentCompleted?: boolean; - /** Format: date-time */ - createdAt?: string; - posterImage?: string; - /** Format: int32 */ - totalPaymentAmount?: number; - }; - SuccessResponseListGuestBookingRetrieveResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["GuestBookingRetrieveResponse"][]; - }; - AccessTokenGetSuccess: { - accessToken?: string; - }; - SuccessResponseAccessTokenGetSuccess: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["AccessTokenGetSuccess"]; - }; - SuccessResponseTicketRetrieveResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["TicketRetrieveResponse"]; - }; - TicketDetail: { - /** Format: int64 */ - bookingId?: number; - bookerName?: string; - bookerPhoneNumber?: string; - /** Format: int64 */ - scheduleId?: number; - /** Format: int32 */ - purchaseTicketCount?: number; - /** Format: date-time */ - createdAt?: string; - isPaymentCompleted?: boolean; - scheduleNumber?: string; - }; - TicketRetrieveResponse: { - performanceTitle?: string; - /** Format: int32 */ - totalScheduleCount?: number; - bookingList?: components["schemas"]["TicketDetail"][]; - }; - SuccessResponseTicketAvailabilityResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["TicketAvailabilityResponse"]; - }; - TicketAvailabilityResponse: { - /** Format: int64 */ - scheduleId?: number; - scheduleNumber?: string; - /** Format: int32 */ - totalTicketCount?: number; - /** Format: int32 */ - soldTicketCount?: number; - /** Format: int32 */ - availableTicketCount?: number; - /** Format: int32 */ - requestedTicketCount?: number; - isAvailable?: boolean; - }; - PerformanceEditResponse: { - /** Format: int64 */ - userId?: number; - /** Format: int64 */ - performanceId?: number; - performanceTitle?: string; - /** @enum {string} */ - genre?: "BAND" | "PLAY" | "DANCE" | "ETC"; - /** Format: int32 */ - runningTime?: number; - performanceDescription?: string; - performanceAttentionNote?: string; - /** @enum {string} */ - bankName?: "NH_NONGHYUP" | "KAKAOBANK" | "KB_KOOKMIN" | "TOSSBANK" | "SHINHAN" | "WOORI" | "IBK_GIUP" | "HANA" | "SAEMAUL" | "BUSAN" | "IMBANK_DAEGU" | "SINHYEOP" | "WOOCHAEGUK" | "SCJEIL" | "SUHYEOP" | "NONE"; - accountNumber?: string; - accountHolder?: string; - posterImage?: string; - performanceTeamName?: string; - performanceVenue?: string; - performanceContact?: string; - performancePeriod?: string; - /** Format: int32 */ - ticketPrice?: number; - /** Format: int32 */ - totalScheduleCount?: number; - isBookerExist?: boolean; - scheduleList?: components["schemas"]["ScheduleResponse"][]; - castList?: components["schemas"]["CastResponse"][]; - staffList?: components["schemas"]["StaffResponse"][]; - }; - SuccessResponsePerformanceEditResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["PerformanceEditResponse"]; - }; - MakerPerformanceDetail: { - /** Format: int64 */ - performanceId?: number; - genre?: string; - performanceTitle?: string; - posterImage?: string; - performancePeriod?: string; - }; - MakerPerformanceResponse: { - /** Format: int64 */ - userId?: number; - performances?: components["schemas"]["MakerPerformanceDetail"][]; - }; - SuccessResponseMakerPerformanceResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["MakerPerformanceResponse"]; - }; - PerformanceDetailCast: { - /** Format: int64 */ - castId?: number; - castName?: string; - castRole?: string; - castPhoto?: string; - }; - PerformanceDetailResponse: { - /** Format: int64 */ - performanceId?: number; - performanceTitle?: string; - performancePeriod?: string; - scheduleList?: components["schemas"]["PerformanceDetailSchedule"][]; - /** Format: int32 */ - ticketPrice?: number; - genre?: string; - posterImage?: string; - /** Format: int32 */ - runningTime?: number; - performanceVenue?: string; - performanceDescription?: string; - performanceAttentionNote?: string; - performanceContact?: string; - performanceTeamName?: string; - castList?: components["schemas"]["PerformanceDetailCast"][]; - staffList?: components["schemas"]["PerformanceDetailStaff"][]; - }; - PerformanceDetailSchedule: { - /** Format: int64 */ - scheduleId?: number; - /** Format: date-time */ - performanceDate?: string; - scheduleNumber?: string; - }; - PerformanceDetailStaff: { - /** Format: int64 */ - staffId?: number; - staffName?: string; - staffRole?: string; - staffPhoto?: string; - }; - SuccessResponsePerformanceDetailResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["PerformanceDetailResponse"]; - }; - BookingPerformanceDetailResponse: { - /** Format: int64 */ - performanceId?: number; - performanceTitle?: string; - performancePeriod?: string; - scheduleList?: components["schemas"]["BookingPerformanceDetailSchedule"][]; - /** Format: int32 */ - ticketPrice?: number; - genre?: string; - posterImage?: string; - performanceVenue?: string; - performanceTeamName?: string; - bankName?: string; - accountNumber?: string; - accountHolder?: string; - }; - BookingPerformanceDetailSchedule: { - /** Format: int64 */ - scheduleId?: number; - /** Format: date-time */ - performanceDate?: string; - scheduleNumber?: string; - /** Format: int32 */ - availableTicketCount?: number; - isBooking?: boolean; - }; - SuccessResponseBookingPerformanceDetailResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["BookingPerformanceDetailResponse"]; - }; - HomePerformanceDetail: { - /** Format: int64 */ - performanceId?: number; - performanceTitle?: string; - performancePeriod?: string; - /** Format: int32 */ - ticketPrice?: number; - /** Format: int32 */ - dueDate?: number; - genre?: string; - posterImage?: string; - performanceVenue?: string; - }; - HomePromotionDetail: { - /** Format: int64 */ - promotionId?: number; - promotionPhoto?: string; - /** Format: int64 */ - performanceId?: number; - }; - HomeResponse: { - promotionList?: components["schemas"]["HomePromotionDetail"][]; - performanceList?: components["schemas"]["HomePerformanceDetail"][]; - }; - SuccessResponseHomeResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["HomeResponse"]; - }; - MemberBookingRetrieveResponse: { - /** Format: int64 */ - userId?: number; - /** Format: int64 */ - bookingId?: number; - /** Format: int64 */ - scheduleId?: number; - /** Format: int64 */ - performanceId?: number; - performanceTitle?: string; - /** Format: date-time */ - performanceDate?: string; - performanceVenue?: string; - /** Format: int32 */ - purchaseTicketCount?: number; - /** @enum {string} */ - scheduleNumber?: "FIRST" | "SECOND" | "THIRD"; - bookerName?: string; - performanceContact?: string; - /** @enum {string} */ - bankName?: "NH_NONGHYUP" | "KAKAOBANK" | "KB_KOOKMIN" | "TOSSBANK" | "SHINHAN" | "WOORI" | "IBK_GIUP" | "HANA" | "SAEMAUL" | "BUSAN" | "IMBANK_DAEGU" | "SINHYEOP" | "WOOCHAEGUK" | "SCJEIL" | "SUHYEOP" | "NONE"; - accountNumber?: string; - /** Format: int32 */ - dueDate?: number; - isPaymentCompleted?: boolean; - /** Format: date-time */ - createdAt?: string; - posterImage?: string; - /** Format: int32 */ - totalPaymentAmount?: number; - }; - SuccessResponseMemberBookingRetrieveResponse: { - /** Format: int32 */ - status?: number; - message?: string; - data?: components["schemas"]["MemberBookingRetrieveResponse"]; - }; - TicketDeleteRequest: { - /** Format: int64 */ - performanceId?: number; - bookingList?: number[]; - }; + schemas: { + TicketUpdateDetail: { + /** Format: int64 */ + bookingId?: number; + bookerName?: string; + bookerPhoneNumber?: string; + /** Format: int64 */ + scheduleId?: number; + /** Format: int32 */ + purchaseTicketCount?: number; + /** Format: date-time */ + createdAt?: string; + isPaymentCompleted?: boolean; + scheduleNumber?: string; + }; + TicketUpdateRequest: { + /** Format: int64 */ + performanceId?: number; + performanceTitle?: string; + /** Format: int32 */ + totalScheduleCount?: number; + bookingList?: components["schemas"]["TicketUpdateDetail"][]; + }; + SuccessResponseVoid: { + /** Format: int32 */ + status?: number; + message?: string; + data?: Record; + }; + CastModifyRequest: { + /** Format: int64 */ + castId?: number; + castName?: string; + castRole?: string; + castPhoto?: string; + }; + PerformanceImageModifyRequest: { + /** Format: int64 */ + performanceImageId?: number; + performanceImage?: string; + }; + PerformanceModifyRequest: { + /** Format: int64 */ + performanceId?: number; + performanceTitle?: string; + /** @enum {string} */ + genre?: "BAND" | "PLAY" | "DANCE" | "ETC"; + /** Format: int32 */ + runningTime?: number; + performanceDescription?: string; + performanceAttentionNote?: string; + /** @enum {string} */ + bankName?: + | "NH_NONGHYUP" + | "KAKAOBANK" + | "KB_KOOKMIN" + | "TOSSBANK" + | "SHINHAN" + | "WOORI" + | "IBK_GIUP" + | "HANA" + | "SAEMAUL" + | "BUSAN" + | "IMBANK_DAEGU" + | "SINHYEOP" + | "WOOCHAEGUK" + | "SCJEIL" + | "SUHYEOP" + | "NONE"; + accountNumber?: string; + accountHolder?: string; + posterImage?: string; + performanceTeamName?: string; + performanceVenue?: string; + performanceContact?: string; + performancePeriod?: string; + /** Format: int32 */ + totalScheduleCount?: number; + /** Format: int32 */ + ticketPrice?: number; + scheduleModifyRequests?: components["schemas"]["ScheduleModifyRequest"][]; + castModifyRequests?: components["schemas"]["CastModifyRequest"][]; + staffModifyRequests?: components["schemas"]["StaffModifyRequest"][]; + performanceImageModifyRequests?: components["schemas"]["PerformanceImageModifyRequest"][]; + }; + ScheduleModifyRequest: { + /** Format: int64 */ + scheduleId?: number; + /** Format: date-time */ + performanceDate?: string; + /** Format: int32 */ + totalTicketCount?: number; + }; + StaffModifyRequest: { + /** Format: int64 */ + staffId?: number; + staffName?: string; + staffRole?: string; + staffPhoto?: string; + }; + CastModifyResponse: { + /** Format: int64 */ + castId?: number; + castName?: string; + castRole?: string; + castPhoto?: string; + }; + PerformanceImageModifyResponse: { + /** Format: int64 */ + performanceImageId?: number; + performanceImage?: string; + }; + PerformanceModifyResponse: { + /** Format: int64 */ + userId?: number; + /** Format: int64 */ + performanceId?: number; + performanceTitle?: string; + /** @enum {string} */ + genre?: "BAND" | "PLAY" | "DANCE" | "ETC"; + /** Format: int32 */ + runningTime?: number; + performanceDescription?: string; + performanceAttentionNote?: string; + /** @enum {string} */ + bankName?: + | "NH_NONGHYUP" + | "KAKAOBANK" + | "KB_KOOKMIN" + | "TOSSBANK" + | "SHINHAN" + | "WOORI" + | "IBK_GIUP" + | "HANA" + | "SAEMAUL" + | "BUSAN" + | "IMBANK_DAEGU" + | "SINHYEOP" + | "WOOCHAEGUK" + | "SCJEIL" + | "SUHYEOP" + | "NONE"; + accountNumber?: string; + accountHolder?: string; + posterImage?: string; + performanceTeamName?: string; + performanceVenue?: string; + performanceContact?: string; + performancePeriod?: string; + /** Format: int32 */ + ticketPrice?: number; + /** Format: int32 */ + totalScheduleCount?: number; + scheduleModifyResponses?: components["schemas"]["ScheduleModifyResponse"][]; + castModifyResponses?: components["schemas"]["CastModifyResponse"][]; + staffModifyResponses?: components["schemas"]["StaffModifyResponse"][]; + performanceImageModifyResponses?: components["schemas"]["PerformanceImageModifyResponse"][]; + }; + ScheduleModifyResponse: { + /** Format: int64 */ + scheduleId?: number; + /** Format: date-time */ + performanceDate?: string; + /** Format: int32 */ + totalTicketCount?: number; + /** Format: int32 */ + dueDate?: number; + /** @enum {string} */ + scheduleNumber?: "FIRST" | "SECOND" | "THIRD"; + }; + StaffModifyResponse: { + /** Format: int64 */ + staffId?: number; + staffName?: string; + staffRole?: string; + staffPhoto?: string; + }; + SuccessResponsePerformanceModifyResponse: { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["PerformanceModifyResponse"]; + }; + MemberLoginRequest: { + /** @enum {string} */ + socialType: "KAKAO"; + }; + LoginSuccessResponse: { + accessToken?: string; + refreshToken?: string; + nickname?: string; + }; + SuccessResponseLoginSuccessResponse: { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["LoginSuccessResponse"]; + }; + CastRequest: { + castName?: string; + castRole?: string; + castPhoto?: string; + }; + PerformanceImageRequest: { + performanceImage?: string; + }; + PerformanceRequest: { + performanceTitle?: string; + /** @enum {string} */ + genre?: "BAND" | "PLAY" | "DANCE" | "ETC"; + /** Format: int32 */ + runningTime?: number; + performanceDescription?: string; + performanceAttentionNote?: string; + /** @enum {string} */ + bankName?: + | "NH_NONGHYUP" + | "KAKAOBANK" + | "KB_KOOKMIN" + | "TOSSBANK" + | "SHINHAN" + | "WOORI" + | "IBK_GIUP" + | "HANA" + | "SAEMAUL" + | "BUSAN" + | "IMBANK_DAEGU" + | "SINHYEOP" + | "WOOCHAEGUK" + | "SCJEIL" + | "SUHYEOP" + | "NONE"; + accountNumber?: string; + accountHolder?: string; + posterImage?: string; + performanceTeamName?: string; + performanceVenue?: string; + performanceContact?: string; + performancePeriod?: string; + /** Format: int32 */ + ticketPrice?: number; + /** Format: int32 */ + totalScheduleCount?: number; + scheduleList?: components["schemas"]["ScheduleRequest"][]; + castList?: components["schemas"]["CastRequest"][]; + staffList?: components["schemas"]["StaffRequest"][]; + performanceImageList?: components["schemas"]["PerformanceImageRequest"][]; + }; + ScheduleRequest: { + /** Format: date-time */ + performanceDate?: string; + /** Format: int32 */ + totalTicketCount?: number; + /** @enum {string} */ + scheduleNumber?: "FIRST" | "SECOND" | "THIRD"; + }; + StaffRequest: { + staffName?: string; + staffRole?: string; + staffPhoto?: string; + }; + CastResponse: { + /** Format: int64 */ + castId?: number; + castName?: string; + castRole?: string; + castPhoto?: string; + }; + PerformanceImageResponse: { + /** Format: int64 */ + imageId?: number; + imageUrl?: string; + }; + PerformanceResponse: { + /** Format: int64 */ + userId?: number; + /** Format: int64 */ + performanceId?: number; + performanceTitle?: string; + /** @enum {string} */ + genre?: "BAND" | "PLAY" | "DANCE" | "ETC"; + /** Format: int32 */ + runningTime?: number; + performanceDescription?: string; + performanceAttentionNote?: string; + /** @enum {string} */ + bankName?: + | "NH_NONGHYUP" + | "KAKAOBANK" + | "KB_KOOKMIN" + | "TOSSBANK" + | "SHINHAN" + | "WOORI" + | "IBK_GIUP" + | "HANA" + | "SAEMAUL" + | "BUSAN" + | "IMBANK_DAEGU" + | "SINHYEOP" + | "WOOCHAEGUK" + | "SCJEIL" + | "SUHYEOP" + | "NONE"; + accountNumber?: string; + accountHolder?: string; + posterImage?: string; + performanceTeamName?: string; + performanceVenue?: string; + performanceContact?: string; + performancePeriod?: string; + /** Format: int32 */ + ticketPrice?: number; + /** Format: int32 */ + totalScheduleCount?: number; + scheduleList?: components["schemas"]["ScheduleResponse"][]; + castList?: components["schemas"]["CastResponse"][]; + staffList?: components["schemas"]["StaffResponse"][]; + performanceImageList?: components["schemas"]["PerformanceImageResponse"][]; + }; + ScheduleResponse: { + /** Format: int64 */ + scheduleId?: number; + /** Format: date-time */ + performanceDate?: string; + /** Format: int32 */ + totalTicketCount?: number; + /** Format: int32 */ + dueDate?: number; + /** @enum {string} */ + scheduleNumber?: "FIRST" | "SECOND" | "THIRD"; + }; + StaffResponse: { + /** Format: int64 */ + staffId?: number; + staffName?: string; + staffRole?: string; + staffPhoto?: string; + }; + SuccessResponsePerformanceResponse: { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["PerformanceResponse"]; + }; + MemberBookingRequest: { + /** Format: int64 */ + scheduleId?: number; + /** @enum {string} */ + scheduleNumber?: "FIRST" | "SECOND" | "THIRD"; + /** Format: int32 */ + purchaseTicketCount?: number; + bookerName?: string; + bookerPhoneNumber?: string; + isPaymentCompleted?: boolean; + /** Format: int32 */ + totalPaymentAmount?: number; + }; + MemberBookingResponse: { + /** Format: int64 */ + bookingId?: number; + /** Format: int64 */ + scheduleId?: number; + /** Format: int64 */ + userId?: number; + /** Format: int32 */ + purchaseTicketCount?: number; + /** @enum {string} */ + scheduleNumber?: "FIRST" | "SECOND" | "THIRD"; + bookerName?: string; + bookerPhoneNumber?: string; + isPaymentCompleted?: boolean; + /** @enum {string} */ + bankName?: + | "NH_NONGHYUP" + | "KAKAOBANK" + | "KB_KOOKMIN" + | "TOSSBANK" + | "SHINHAN" + | "WOORI" + | "IBK_GIUP" + | "HANA" + | "SAEMAUL" + | "BUSAN" + | "IMBANK_DAEGU" + | "SINHYEOP" + | "WOOCHAEGUK" + | "SCJEIL" + | "SUHYEOP" + | "NONE"; + accountNumber?: string; + /** Format: int32 */ + totalPaymentAmount?: number; + /** Format: date-time */ + createdAt?: string; + }; + SuccessResponseMemberBookingResponse: { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["MemberBookingResponse"]; + }; + GuestBookingRequest: { + /** Format: int64 */ + scheduleId?: number; + /** Format: int32 */ + purchaseTicketCount?: number; + /** @enum {string} */ + scheduleNumber?: "FIRST" | "SECOND" | "THIRD"; + bookerName?: string; + bookerPhoneNumber?: string; + birthDate?: string; + password?: string; + /** Format: int32 */ + totalPaymentAmount?: number; + isPaymentCompleted?: boolean; }; - responses: never; - parameters: never; - requestBodies: never; - headers: never; - pathItems: never; + GuestBookingResponse: { + /** Format: int64 */ + bookingId?: number; + /** Format: int64 */ + scheduleId?: number; + /** Format: int64 */ + userId?: number; + /** Format: int32 */ + purchaseTicketCount?: number; + /** @enum {string} */ + scheduleNumber?: "FIRST" | "SECOND" | "THIRD"; + bookerName?: string; + bookerPhoneNumber?: string; + isPaymentCompleted?: boolean; + /** @enum {string} */ + bankName?: + | "NH_NONGHYUP" + | "KAKAOBANK" + | "KB_KOOKMIN" + | "TOSSBANK" + | "SHINHAN" + | "WOORI" + | "IBK_GIUP" + | "HANA" + | "SAEMAUL" + | "BUSAN" + | "IMBANK_DAEGU" + | "SINHYEOP" + | "WOOCHAEGUK" + | "SCJEIL" + | "SUHYEOP" + | "NONE"; + accountNumber?: string; + /** Format: int32 */ + totalPaymentAmount?: number; + /** Format: date-time */ + createdAt?: string; + }; + SuccessResponseGuestBookingResponse: { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["GuestBookingResponse"]; + }; + GuestBookingRetrieveRequest: { + bookerName?: string; + birthDate?: string; + bookerPhoneNumber?: string; + password?: string; + }; + GuestBookingRetrieveResponse: { + /** Format: int64 */ + bookingId?: number; + /** Format: int64 */ + scheduleId?: number; + /** Format: int64 */ + performanceId?: number; + performanceTitle?: string; + /** Format: date-time */ + performanceDate?: string; + performanceVenue?: string; + /** Format: int32 */ + purchaseTicketCount?: number; + /** @enum {string} */ + scheduleNumber?: "FIRST" | "SECOND" | "THIRD"; + bookerName?: string; + performanceContact?: string; + /** @enum {string} */ + bankName?: + | "NH_NONGHYUP" + | "KAKAOBANK" + | "KB_KOOKMIN" + | "TOSSBANK" + | "SHINHAN" + | "WOORI" + | "IBK_GIUP" + | "HANA" + | "SAEMAUL" + | "BUSAN" + | "IMBANK_DAEGU" + | "SINHYEOP" + | "WOOCHAEGUK" + | "SCJEIL" + | "SUHYEOP" + | "NONE"; + accountNumber?: string; + accountHolder?: string; + /** Format: int32 */ + dueDate?: number; + isPaymentCompleted?: boolean; + /** Format: date-time */ + createdAt?: string; + posterImage?: string; + /** Format: int32 */ + totalPaymentAmount?: number; + }; + SuccessResponseListGuestBookingRetrieveResponse: { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["GuestBookingRetrieveResponse"][]; + }; + AccessTokenGetSuccess: { + accessToken?: string; + }; + SuccessResponseAccessTokenGetSuccess: { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["AccessTokenGetSuccess"]; + }; + SuccessResponseTicketRetrieveResponse: { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["TicketRetrieveResponse"]; + }; + TicketDetail: { + /** Format: int64 */ + bookingId?: number; + bookerName?: string; + bookerPhoneNumber?: string; + /** Format: int64 */ + scheduleId?: number; + /** Format: int32 */ + purchaseTicketCount?: number; + /** Format: date-time */ + createdAt?: string; + isPaymentCompleted?: boolean; + scheduleNumber?: string; + }; + TicketRetrieveResponse: { + performanceTitle?: string; + /** Format: int32 */ + totalScheduleCount?: number; + bookingList?: components["schemas"]["TicketDetail"][]; + }; + SuccessResponseTicketAvailabilityResponse: { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["TicketAvailabilityResponse"]; + }; + TicketAvailabilityResponse: { + /** Format: int64 */ + scheduleId?: number; + scheduleNumber?: string; + /** Format: int32 */ + totalTicketCount?: number; + /** Format: int32 */ + soldTicketCount?: number; + /** Format: int32 */ + availableTicketCount?: number; + /** Format: int32 */ + requestedTicketCount?: number; + isAvailable?: boolean; + }; + PerformanceModifyDetailResponse: { + /** Format: int64 */ + userId?: number; + /** Format: int64 */ + performanceId?: number; + performanceTitle?: string; + /** @enum {string} */ + genre?: "BAND" | "PLAY" | "DANCE" | "ETC"; + /** Format: int32 */ + runningTime?: number; + performanceDescription?: string; + performanceAttentionNote?: string; + /** @enum {string} */ + bankName?: + | "NH_NONGHYUP" + | "KAKAOBANK" + | "KB_KOOKMIN" + | "TOSSBANK" + | "SHINHAN" + | "WOORI" + | "IBK_GIUP" + | "HANA" + | "SAEMAUL" + | "BUSAN" + | "IMBANK_DAEGU" + | "SINHYEOP" + | "WOOCHAEGUK" + | "SCJEIL" + | "SUHYEOP" + | "NONE"; + accountNumber?: string; + accountHolder?: string; + posterImage?: string; + performanceTeamName?: string; + performanceVenue?: string; + performanceContact?: string; + performancePeriod?: string; + /** Format: int32 */ + ticketPrice?: number; + /** Format: int32 */ + totalScheduleCount?: number; + isBookerExist?: boolean; + scheduleList?: components["schemas"]["ScheduleResponse"][]; + castList?: components["schemas"]["CastResponse"][]; + staffList?: components["schemas"]["StaffResponse"][]; + performanceImageList?: components["schemas"]["PerformanceImageResponse"][]; + }; + SuccessResponsePerformanceModifyDetailResponse: { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["PerformanceModifyDetailResponse"]; + }; + MakerPerformanceDetailResponse: { + /** Format: int64 */ + performanceId?: number; + genre?: string; + performanceTitle?: string; + posterImage?: string; + performancePeriod?: string; + /** Format: int32 */ + minDueDate?: number; + }; + MakerPerformanceResponse: { + /** Format: int64 */ + userId?: number; + performances?: components["schemas"]["MakerPerformanceDetailResponse"][]; + }; + SuccessResponseMakerPerformanceResponse: { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["MakerPerformanceResponse"]; + }; + PerformanceDetailCastResponse: { + /** Format: int64 */ + castId?: number; + castName?: string; + castRole?: string; + castPhoto?: string; + }; + PerformanceDetailImageResponse: { + /** Format: int64 */ + performanceImageId?: number; + performanceImage?: string; + }; + PerformanceDetailResponse: { + /** Format: int64 */ + performanceId?: number; + performanceTitle?: string; + performancePeriod?: string; + scheduleList?: components["schemas"]["PerformanceDetailScheduleResponse"][]; + /** Format: int32 */ + ticketPrice?: number; + genre?: string; + posterImage?: string; + /** Format: int32 */ + runningTime?: number; + performanceVenue?: string; + performanceDescription?: string; + performanceAttentionNote?: string; + performanceContact?: string; + performanceTeamName?: string; + castList?: components["schemas"]["PerformanceDetailCastResponse"][]; + staffList?: components["schemas"]["PerformanceDetailStaffResponse"][]; + /** Format: int32 */ + minDueDate?: number; + performanceImageList?: components["schemas"]["PerformanceDetailImageResponse"][]; + }; + PerformanceDetailScheduleResponse: { + /** Format: int64 */ + scheduleId?: number; + /** Format: date-time */ + performanceDate?: string; + scheduleNumber?: string; + /** Format: int32 */ + dueDate?: number; + isBooking?: boolean; + }; + PerformanceDetailStaffResponse: { + /** Format: int64 */ + staffId?: number; + staffName?: string; + staffRole?: string; + staffPhoto?: string; + }; + SuccessResponsePerformanceDetailResponse: { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["PerformanceDetailResponse"]; + }; + BookingPerformanceDetailResponse: { + /** Format: int64 */ + performanceId?: number; + performanceTitle?: string; + performancePeriod?: string; + scheduleList?: components["schemas"]["BookingPerformanceDetailScheduleResponse"][]; + /** Format: int32 */ + ticketPrice?: number; + genre?: string; + posterImage?: string; + performanceVenue?: string; + performanceTeamName?: string; + bankName?: string; + accountNumber?: string; + accountHolder?: string; + }; + BookingPerformanceDetailScheduleResponse: { + /** Format: int64 */ + scheduleId?: number; + /** Format: date-time */ + performanceDate?: string; + scheduleNumber?: string; + /** Format: int32 */ + availableTicketCount?: number; + isBooking?: boolean; + /** Format: int32 */ + dueDate?: number; + }; + SuccessResponseBookingPerformanceDetailResponse: { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["BookingPerformanceDetailResponse"]; + }; + HomePerformanceDetail: { + /** Format: int64 */ + performanceId?: number; + performanceTitle?: string; + performancePeriod?: string; + /** Format: int32 */ + ticketPrice?: number; + /** Format: int32 */ + dueDate?: number; + genre?: string; + posterImage?: string; + performanceVenue?: string; + }; + HomePromotionDetail: { + /** Format: int64 */ + promotionId?: number; + promotionPhoto?: string; + /** Format: int64 */ + performanceId?: number; + redirectUrl?: string; + isExternal?: boolean; + }; + HomeResponse: { + promotionList?: components["schemas"]["HomePromotionDetail"][]; + performanceList?: components["schemas"]["HomePerformanceDetail"][]; + }; + SuccessResponseHomeResponse: { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["HomeResponse"]; + }; + MemberBookingRetrieveResponse: { + /** Format: int64 */ + userId?: number; + /** Format: int64 */ + bookingId?: number; + /** Format: int64 */ + scheduleId?: number; + /** Format: int64 */ + performanceId?: number; + performanceTitle?: string; + /** Format: date-time */ + performanceDate?: string; + performanceVenue?: string; + /** Format: int32 */ + purchaseTicketCount?: number; + /** @enum {string} */ + scheduleNumber?: "FIRST" | "SECOND" | "THIRD"; + bookerName?: string; + performanceContact?: string; + /** @enum {string} */ + bankName?: + | "NH_NONGHYUP" + | "KAKAOBANK" + | "KB_KOOKMIN" + | "TOSSBANK" + | "SHINHAN" + | "WOORI" + | "IBK_GIUP" + | "HANA" + | "SAEMAUL" + | "BUSAN" + | "IMBANK_DAEGU" + | "SINHYEOP" + | "WOOCHAEGUK" + | "SCJEIL" + | "SUHYEOP" + | "NONE"; + accountNumber?: string; + accountHolder?: string; + /** Format: int32 */ + dueDate?: number; + isPaymentCompleted?: boolean; + /** Format: date-time */ + createdAt?: string; + posterImage?: string; + /** Format: int32 */ + totalPaymentAmount?: number; + }; + SuccessResponseMemberBookingRetrieveResponse: { + /** Format: int32 */ + status?: number; + message?: string; + data?: components["schemas"]["MemberBookingRetrieveResponse"]; + }; + TicketDeleteRequest: { + /** Format: int64 */ + performanceId?: number; + bookingList?: number[]; + }; + }; + responses: never; + parameters: never; + requestBodies: never; + headers: never; + pathItems: never; } export type $defs = Record; export interface operations { - getTickets: { - parameters: { - query: { - memberId: number; - scheduleNumber?: "FIRST" | "SECOND" | "THIRD"; - isPaymentCompleted?: boolean; - }; - header?: never; - path: { - performanceId: number; - }; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseTicketRetrieveResponse"]; - }; - }; - }; + updateTickets: { + parameters: { + query: { + memberId: number; + }; + header?: never; + path?: never; + cookie?: never; }; - updateTickets: { - parameters: { - query: { - memberId: number; - }; - header?: never; - path: { - performanceId: number; - }; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["TicketUpdateRequest"]; - }; + requestBody: { + content: { + "application/json": components["schemas"]["TicketUpdateRequest"]; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; }; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseVoid"]; - }; - }; + content: { + "*/*": components["schemas"]["SuccessResponseVoid"]; }; + }; }; - deleteTickets: { - parameters: { - query: { - memberId: number; - }; - header?: never; - path: { - performanceId: number; - }; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["TicketDeleteRequest"]; - }; + }; + deleteTickets: { + parameters: { + query: { + memberId: number; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["TicketDeleteRequest"]; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; }; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseVoid"]; - }; - }; + content: { + "*/*": components["schemas"]["SuccessResponseVoid"]; }; + }; }; - updatePerformance: { - parameters: { - query: { - memberId: number; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["PerformanceUpdateRequest"]; - }; + }; + updatePerformance: { + parameters: { + query: { + memberId: number; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["PerformanceModifyRequest"]; + }; + }; + responses: { + /** @description 공연 정보 수정 성공 */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponsePerformanceModifyResponse"]; + }; + }; + /** @description 잘못된 요청 - 회차 최대 개수 초과 */ + 400: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponsePerformanceModifyResponse"]; + }; + }; + /** @description 권한 없음 - 해당 공연의 소유자가 아닙니다. */ + 403: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponsePerformanceModifyResponse"]; + }; + }; + /** @description 존재하지 않는 회원 ID로 수정 요청을 보낼 수 없습니다. */ + 404: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponsePerformanceModifyResponse"]; + }; + }; + /** @description 서버 내부 오류 */ + 500: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": components["schemas"]["SuccessResponsePerformanceModifyResponse"]; + }; + }; + }; + }; + createPerformance: { + parameters: { + query: { + memberId: number; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["PerformanceRequest"]; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; }; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponsePerformanceUpdateResponse"]; - }; - }; + content: { + "*/*": components["schemas"]["SuccessResponsePerformanceResponse"]; }; + }; }; - createPerformance: { - parameters: { - query: { - memberId: number; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["PerformanceRequest"]; - }; + }; + signUp: { + parameters: { + query: { + authorizationCode: string; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["MemberLoginRequest"]; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; }; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponsePerformanceResponse"]; - }; - }; + content: { + "*/*": components["schemas"]["SuccessResponseLoginSuccessResponse"]; }; + }; }; - signUp: { - parameters: { - query: { - authorizationCode: string; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["MemberLoginRequest"]; - }; + }; + signOut: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; }; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseLoginSuccessResponse"]; - }; - }; + content: { + "*/*": components["schemas"]["SuccessResponseVoid"]; }; + }; + }; + }; + createMemberBooking: { + parameters: { + query: { + memberId: number; + }; + header?: never; + path?: never; + cookie?: never; }; - signOut: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; + requestBody: { + content: { + "application/json": components["schemas"]["MemberBookingRequest"]; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseVoid"]; - }; - }; + content: { + "*/*": components["schemas"]["SuccessResponseMemberBookingResponse"]; }; + }; }; - createMemberBooking: { - parameters: { - query: { - memberId: number; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["MemberBookingRequest"]; - }; + }; + createGuestBookings: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["GuestBookingRequest"]; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; }; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseMemberBookingResponse"]; - }; - }; + content: { + "*/*": components["schemas"]["SuccessResponseGuestBookingResponse"]; }; + }; }; - createGuestBookings: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["GuestBookingRequest"]; - }; + }; + getGuestBookings: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody: { + content: { + "application/json": components["schemas"]["GuestBookingRetrieveRequest"]; + }; + }; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; }; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseGuestBookingResponse"]; - }; - }; + content: { + "*/*": components["schemas"]["SuccessResponseListGuestBookingRetrieveResponse"]; }; + }; }; - getGuestBookings: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; - }; - requestBody: { - content: { - "application/json": components["schemas"]["GuestBookingRetrieveRequest"]; - }; + }; + healthcheck: { + parameters: { + query?: never; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; }; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseListGuestBookingRetrieveResponse"]; - }; - }; + content: { + "*/*": string; }; + }; + }; + }; + refreshToken: { + parameters: { + query: { + refreshToken: string; + }; + header?: never; + path?: never; + cookie?: never; }; - healthcheck: { - parameters: { - query?: never; - header?: never; - path?: never; - cookie?: never; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": string; - }; - }; + content: { + "*/*": components["schemas"]["SuccessResponseAccessTokenGetSuccess"]; }; + }; }; - refreshToken: { - parameters: { - query: { - refreshToken: string; - }; - header?: never; - path?: never; - cookie?: never; + }; + getTickets: { + parameters: { + query: { + memberId: number; + scheduleNumber?: "FIRST" | "SECOND" | "THIRD"; + isPaymentCompleted?: boolean; + }; + header?: never; + path: { + performanceId: number; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseAccessTokenGetSuccess"]; - }; - }; + content: { + "*/*": components["schemas"]["SuccessResponseTicketRetrieveResponse"]; }; + }; }; - getTicketAvailability: { - parameters: { - query: { - purchaseTicketCount: number; - }; - header?: never; - path: { - scheduleId: number; - }; - cookie?: never; + }; + getTicketAvailability: { + parameters: { + query: { + purchaseTicketCount: number; + }; + header?: never; + path: { + scheduleId: number; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseTicketAvailabilityResponse"]; - }; - }; + content: { + "*/*": components["schemas"]["SuccessResponseTicketAvailabilityResponse"]; }; + }; }; - getPerformanceForEdit: { - parameters: { - query: { - memberId: number; - }; - header?: never; - path: { - performanceId: number; - }; - cookie?: never; + }; + getPerformanceForEdit: { + parameters: { + query: { + memberId: number; + }; + header?: never; + path: { + performanceId: number; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponsePerformanceEditResponse"]; - }; - }; + content: { + "*/*": components["schemas"]["SuccessResponsePerformanceModifyDetailResponse"]; }; + }; }; - deletePerformance: { - parameters: { - query: { - memberId: number; - }; - header?: never; - path: { - performanceId: number; - }; - cookie?: never; + }; + deletePerformance: { + parameters: { + query: { + memberId: number; + }; + header?: never; + path: { + performanceId: number; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseVoid"]; - }; - }; + content: { + "*/*": components["schemas"]["SuccessResponseVoid"]; }; + }; }; - getUserPerformances: { - parameters: { - query: { - memberId: number; - }; - header?: never; - path?: never; - cookie?: never; + }; + getUserPerformances: { + parameters: { + query: { + memberId: number; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseMakerPerformanceResponse"]; - }; - }; + content: { + "*/*": components["schemas"]["SuccessResponseMakerPerformanceResponse"]; }; + }; }; - getPerformanceDetail: { - parameters: { - query?: never; - header?: never; - path: { - performanceId: number; - }; - cookie?: never; + }; + getPerformanceDetail: { + parameters: { + query?: never; + header?: never; + path: { + performanceId: number; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponsePerformanceDetailResponse"]; - }; - }; + content: { + "*/*": components["schemas"]["SuccessResponsePerformanceDetailResponse"]; }; + }; }; - getBookingPerformanceDetail: { - parameters: { - query?: never; - header?: never; - path: { - performanceId: number; - }; - cookie?: never; + }; + getBookingPerformanceDetail: { + parameters: { + query?: never; + header?: never; + path: { + performanceId: number; + }; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseBookingPerformanceDetailResponse"]; - }; - }; + content: { + "*/*": components["schemas"]["SuccessResponseBookingPerformanceDetailResponse"]; }; + }; }; - getHomePerformanceList: { - parameters: { - query?: { - genre?: string; - }; - header?: never; - path?: never; - cookie?: never; + }; + getHomePerformanceList: { + parameters: { + query?: { + genre?: string; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseHomeResponse"]; - }; - }; + content: { + "*/*": components["schemas"]["SuccessResponseHomeResponse"]; }; + }; }; - getPresignedUrls: { - parameters: { - query: { - posterImage: string; - castImages?: string[]; - staffImages?: string[]; - }; - header?: never; - path?: never; - cookie?: never; - }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": { - [key: string]: { - [key: string]: string | undefined; - } | undefined; - }; - }; + }; + getPresignedUrls: { + parameters: { + query: { + posterImage: string; + castImages?: string[]; + staffImages?: string[]; + performanceImages?: string[]; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; + }; + content: { + "*/*": { + [key: string]: { + [key: string]: string; }; + }; }; + }; }; - getMemberBookings: { - parameters: { - query: { - memberId: number; - }; - header?: never; - path?: never; - cookie?: never; + }; + getMemberBookings: { + parameters: { + query: { + memberId: number; + }; + header?: never; + path?: never; + cookie?: never; + }; + requestBody?: never; + responses: { + /** @description OK */ + 200: { + headers: { + [name: string]: unknown; }; - requestBody?: never; - responses: { - /** @description OK */ - 200: { - headers: { - [name: string]: unknown; - }; - content: { - "*/*": components["schemas"]["SuccessResponseMemberBookingRetrieveResponse"]; - }; - }; + content: { + "*/*": components["schemas"]["SuccessResponseMemberBookingRetrieveResponse"]; }; + }; }; + }; } From 8644f2ab58c4dc259a9d72edfa96eefc06e7f163 Mon Sep 17 00:00:00 2001 From: ocahs9 Date: Tue, 27 Aug 2024 02:16:41 +0900 Subject: [PATCH 04/44] =?UTF-8?q?fix:=20=EB=B0=94=EB=80=90=20api=20?= =?UTF-8?q?=EB=AA=85=EC=84=B8=EC=97=90=20=EB=A7=9E=EA=B2=8C=20=ED=83=80?= =?UTF-8?q?=EC=9E=85=20=EC=84=A0=EC=96=B8,=20=ED=95=A8=EC=88=98=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apis/domains/performances/api.ts | 4 +- src/apis/domains/performances/queries.ts | 11 ++-- src/pages/modifyManage/ModifyMaker.tsx | 8 ++- src/pages/modifyManage/ModifyManage.tsx | 74 ++++++++++++----------- src/pages/modifyManage/typings/gigInfo.ts | 10 +-- 5 files changed, 57 insertions(+), 50 deletions(-) diff --git a/src/apis/domains/performances/api.ts b/src/apis/domains/performances/api.ts index 037fdbf8..980bc813 100644 --- a/src/apis/domains/performances/api.ts +++ b/src/apis/domains/performances/api.ts @@ -129,12 +129,12 @@ export const postPerformance = async (formData): Promise => { +): Promise => { try { const response = await put("/performances", formData); diff --git a/src/apis/domains/performances/queries.ts b/src/apis/domains/performances/queries.ts index 46832374..eccca6c5 100644 --- a/src/apis/domains/performances/queries.ts +++ b/src/apis/domains/performances/queries.ts @@ -189,7 +189,6 @@ interface Schedule { // gigInfo 타입 정의 예제 export interface PerformanceUpdateFormData { - accountHolder: string; performanceId: number; performanceTitle: string; genre: SHOW_TYPE_KEY; @@ -198,16 +197,18 @@ export interface PerformanceUpdateFormData { performanceAttentionNote: string; bankName: BANK_TYPE; accountNumber: string; + accountHolder: string; posterImage: string; performanceTeamName: string; performanceVenue: string; performanceContact: string; performancePeriod: string; - ticketPrice?: number | null; totalScheduleCount: number; - scheduleList: Schedule[]; - castList: Cast[]; - staffList: Staff[]; + ticketPrice?: number | null; + scheduleModifyRequests: Schedule[]; + castModifyRequests: Cast[]; + staffModifyRequests: Staff[]; + //performanceImageModifyRequests : 는 나중에 .. } export const useUpdatePerformance = () => { diff --git a/src/pages/modifyManage/ModifyMaker.tsx b/src/pages/modifyManage/ModifyMaker.tsx index d244ad9f..ec454dbf 100644 --- a/src/pages/modifyManage/ModifyMaker.tsx +++ b/src/pages/modifyManage/ModifyMaker.tsx @@ -7,7 +7,9 @@ interface ModifyManageMakerProps { castList: Cast[]; staffList: Staff[]; handleModifyManageStep: () => void; - updateGigInfo: (newInfo: Partial<{ castList: Cast[]; staffList: Staff[] }>) => void; + updateGigInfo: ( + newInfo: Partial<{ castModifyRequests: Cast[]; staffModifyRequests: Staff[] }> + ) => void; } const ModifyManageMaker = ({ @@ -54,7 +56,7 @@ const ModifyManageMaker = ({ } else if (title === "스태프") { setStaffList(updatedList as Staff[]); } - updateGigInfo({ castList, staffList }); + updateGigInfo({ castModifyRequests: castList, staffModifyRequests: staffList }); }; const handleList = () => { @@ -66,7 +68,7 @@ const ModifyManageMaker = ({ (staff) => staff.staffName || staff.staffRole || staff.staffPhoto ); - updateGigInfo({ castList: filteredCastList, staffList: filteredStaffList }); + updateGigInfo({ castModifyRequests: filteredCastList, staffModifyRequests: filteredStaffList }); handleModifyManageStep(); }; diff --git a/src/pages/modifyManage/ModifyManage.tsx b/src/pages/modifyManage/ModifyManage.tsx index 4be64cdc..eb297b4d 100644 --- a/src/pages/modifyManage/ModifyManage.tsx +++ b/src/pages/modifyManage/ModifyManage.tsx @@ -47,6 +47,8 @@ type State = { runningTime: number | null; performanceDescription: string; performanceAttentionNote: string; + bankName: BANK_TYPE; + accountHolder: string; accountNumber: string; posterImage: string; performanceTeamName: string; @@ -55,11 +57,10 @@ type State = { performanceContact: string; ticketPrice: number | null; totalScheduleCount: number; - scheduleList: Schedule[]; - castList: Cast[]; - staffList: Staff[]; - bankName: BANK_TYPE; - accountHolder: string; + scheduleModifyRequests: Schedule[]; + castModifyRequests: Cast[]; + staffModifyRequests: Staff[]; + //performanceImageModifyRequests : 타입[] -> 구현 예정.. }; type ModifyState = { @@ -89,9 +90,9 @@ const initialState: State = { performanceContact: "", ticketPrice: null, totalScheduleCount: 1, - scheduleList: [], - castList: [], - staffList: [], + scheduleModifyRequests: [], + castModifyRequests: [], + staffModifyRequests: [], bankName: "NONE", accountHolder: "", }; @@ -146,23 +147,23 @@ const ModifyManage = () => { performanceContact: data.performanceContact, ticketPrice: data.ticketPrice, totalScheduleCount: data.totalScheduleCount, - scheduleList: data.scheduleList.map((item) => ({ - scheduleId: item.scheduleId ?? -1, + scheduleModifyRequests: data.scheduleModifyRequests.map((item) => ({ + scheduleId: item.scheduleId ?? -1, //조회로 받아오니까 -1이 될 일이 없음. performanceDate: item.performanceDate ?? "", totalTicketCount: item.totalTicketCount ?? 0, dueDate: item.dueDate ?? 0, scheduleNumber: item.scheduleNumber ?? "FIRST", })), - castList: data.castList?.length - ? data.castList.map((item) => ({ + castModifyRequests: data.castModifyRequests?.length + ? data.castModifyRequests.map((item) => ({ castId: item.castId ?? -1, castName: item.castName ?? "", castRole: item.castRole ?? "", castPhoto: item.castPhoto ?? "", })) : [{ castId: -1, castName: "", castRole: "", castPhoto: "" }], - staffList: data.staffList?.length - ? data.staffList.map((item) => ({ + staffModifyRequests: data.staffModifyRequests?.length + ? data.staffModifyRequests.map((item) => ({ staffId: item.staffId ?? -1, staffName: item.staffName ?? "", staffRole: item.staffRole ?? "", @@ -212,12 +213,16 @@ const ModifyManage = () => { setModifyState((prev) => ({ ...prev, [field]: value })); //브래킷 표기법 필수 }; + const updateGigInfo = (newInfo: Partial) => { + dispatch({ type: "SET_DATA", payload: { ...newInfo } }); + }; + //비즈니스 로직 분리 - 공연 수정하기 PUT 요청 const handleComplete = async () => { - const filteredCastList = dataState.castList.filter( + const filteredCastModifyRequests = dataState.castModifyRequests.filter( (cast) => cast.castName || cast.castRole || cast.castPhoto ); - const filteredStaffList = dataState.staffList.filter( + const filteredstaffModifyRequests = dataState.staffModifyRequests.filter( (staff) => staff.staffName || staff.staffRole || staff.staffPhoto ); @@ -225,15 +230,15 @@ const ModifyManage = () => { console.log("수정하기 요청 보내기 직전 데이터:", { performanceId: Number(performanceId), ...dataState, - castList: filteredCastList, - staffList: filteredStaffList, + castModifyRequests: filteredCastModifyRequests, + staffModifyRequests: filteredstaffModifyRequests, }); const res = await updatePerformance({ performanceId: Number(performanceId), ...dataState, - castList: filteredCastList, - staffList: filteredStaffList, + castModifyRequests: filteredCastModifyRequests, + staffModifyRequests: filteredstaffModifyRequests, }); openAlert({ @@ -452,7 +457,7 @@ const ModifyManage = () => { - {dataState.scheduleList?.map((schedule, index) => ( + {dataState.scheduleModifyRequests?.map((schedule, index) => (
{index + 1}회차 @@ -460,9 +465,9 @@ const ModifyManage = () => { value={dayjs(schedule.performanceDate)} disabled={true} onChangeValue={(date) => { - const updatedSchedules = [...dataState.scheduleList]; + const updatedSchedules = [...dataState.scheduleModifyRequests]; updatedSchedules[index].performanceDate = date; - handleInputChange("scheduleList", updatedSchedules); + handleInputChange("scheduleModifyRequests", updatedSchedules); }} />
@@ -487,11 +492,11 @@ const ModifyManage = () => { isDisabled={false} type="input" name="totalTicketCount" - value={dataState.scheduleList?.[0]?.totalTicketCount ?? ""} + value={dataState.scheduleModifyRequests?.[0]?.totalTicketCount ?? ""} onChange={(e) => { - const updatedSchedules = [...dataState.scheduleList]; + const updatedSchedules = [...dataState.scheduleModifyRequests]; updatedSchedules[0].totalTicketCount = parseInt(e.target.value, 10); - handleInputChange("scheduleList", updatedSchedules); + handleInputChange("scheduleModifyRequests", updatedSchedules); }} placeholder="판매할 티켓의 매 수를 입력해주세요." filter={numericFilter} @@ -617,11 +622,10 @@ const ModifyManage = () => { if (modifyState.modifyManageStep === 2) { return ( console.log("")} + updateGigInfo={updateGigInfo} /> ); } @@ -640,7 +644,7 @@ const ModifyManage = () => { genre={dataState.genre as "BAND" | "DANCE" | "PLAY" | "ETC"} // 타임존 안맞아서 지금 날짜 안맞는데 로컬 타임존으로 보이게 설정하면 기간 잘 맞아요! scheduleList={ - dataState.scheduleList?.map((schedule, index) => ({ + dataState.scheduleModifyRequests?.map((schedule, index) => ({ scheduleId: index + 1, performanceDate: schedule.performanceDate?.toString() || "", scheduleNumber: (index + 1).toString(), @@ -653,17 +657,17 @@ const ModifyManage = () => { contact={dataState.performanceContact as string} teamName={dataState.performanceTeamName as string} castList={ - dataState.castList?.[0].castId === -1 + dataState.castModifyRequests?.[0].castId === -1 ? [] - : (dataState.castList?.map((cast, index) => ({ + : (dataState.castModifyRequests?.map((cast, index) => ({ ...cast, castId: index + 1, })) as Cast[]) } staffList={ - dataState.staffList?.[0].staffId === -1 + dataState.staffModifyRequests?.[0].staffId === -1 ? [] - : (dataState.staffList?.map((cast, index) => ({ + : (dataState.staffModifyRequests?.map((cast, index) => ({ ...cast, staffId: index + 1, })) as Staff[]) diff --git a/src/pages/modifyManage/typings/gigInfo.ts b/src/pages/modifyManage/typings/gigInfo.ts index 9b4f4c04..88d4cc3e 100644 --- a/src/pages/modifyManage/typings/gigInfo.ts +++ b/src/pages/modifyManage/typings/gigInfo.ts @@ -3,11 +3,11 @@ import { components } from "@typings/api/schema"; import { Dayjs } from "dayjs"; export interface Schedule { - scheduleId?: number; + scheduleId: number; performanceDate: Dayjs | null | string; totalTicketCount: number; dueDate?: number; - scheduleNumber: string; + scheduleNumber?: string; } export interface Cast { @@ -45,9 +45,9 @@ export interface DataProps { ticketPrice: number; totalScheduleCount: number; isBookerExist: boolean; - scheduleList: Schedule[]; - castList: Cast[]; - staffList: Staff[]; + scheduleModifyRequests: Schedule[]; + castModifyRequests: Cast[]; + staffModifyRequests: Staff[]; } export interface GigInfo { From 22371659de5d77d4bb64ed05261a6cc2331cee13 Mon Sep 17 00:00:00 2001 From: ocahs9 Date: Tue, 27 Aug 2024 02:23:34 +0900 Subject: [PATCH 05/44] =?UTF-8?q?fix:=20request=20=EB=B3=B4=EB=82=BC=20?= =?UTF-8?q?=EC=86=8D=EC=84=B1=20=EC=9D=B4=EB=A6=84=EC=9C=BC=EB=A1=9C=20?= =?UTF-8?q?=EC=88=98=EC=A0=95(=EC=BD=94=EB=93=9C=20=EA=B0=80=EB=8F=85?= =?UTF-8?q?=EC=84=B1=20=ED=96=A5=EC=83=81=20=EB=AA=A9=EC=A0=81)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/modifyManage/ModifyMaker.tsx | 56 ++++++++++++++----------- src/pages/modifyManage/ModifyManage.tsx | 4 +- 2 files changed, 33 insertions(+), 27 deletions(-) diff --git a/src/pages/modifyManage/ModifyMaker.tsx b/src/pages/modifyManage/ModifyMaker.tsx index ec454dbf..d3b3bb31 100644 --- a/src/pages/modifyManage/ModifyMaker.tsx +++ b/src/pages/modifyManage/ModifyMaker.tsx @@ -4,8 +4,8 @@ import RoleLayout from "./components/RoleLayout"; import * as S from "./ModifyManage.styled"; import { Cast, Staff } from "./typings/gigInfo"; interface ModifyManageMakerProps { - castList: Cast[]; - staffList: Staff[]; + castModifyRequests: Cast[]; + staffModifyRequests: Staff[]; handleModifyManageStep: () => void; updateGigInfo: ( newInfo: Partial<{ castModifyRequests: Cast[]; staffModifyRequests: Staff[] }> @@ -13,62 +13,68 @@ interface ModifyManageMakerProps { } const ModifyManageMaker = ({ - castList: prevCastList, - staffList: prevStaffList, + castModifyRequests: prevcastModifyRequests, + staffModifyRequests: prevstaffModifyRequests, handleModifyManageStep, updateGigInfo, }: ModifyManageMakerProps) => { - const [castList, setCastList] = useState(prevCastList); - const [staffList, setStaffList] = useState(prevStaffList); + const [castModifyRequests, setcastModifyRequests] = useState(prevcastModifyRequests); + const [staffModifyRequests, setstaffModifyRequests] = useState(prevstaffModifyRequests); const [isButtonDisabled, setIsButtonDisabled] = useState(true); useEffect(() => { - const allCastFieldsFilled = castList.every( + const allCastFieldsFilled = castModifyRequests.every( (cast) => cast.castName && cast.castRole && cast.castPhoto ); - const allStaffFieldsFilled = staffList.every( + const allStaffFieldsFilled = staffModifyRequests.every( (staff) => staff.staffName && staff.staffRole && staff.staffPhoto ); setIsButtonDisabled( !( - (castList?.length <= 1 && - !castList[0]?.castName && - !castList[0]?.castRole && - !castList[0]?.castPhoto) || + (castModifyRequests?.length <= 1 && + !castModifyRequests[0]?.castName && + !castModifyRequests[0]?.castRole && + !castModifyRequests[0]?.castPhoto) || allCastFieldsFilled ) || !( - (castList?.length <= 1 && - !staffList[0]?.staffName && - !staffList[0]?.staffRole && - !staffList[0]?.staffPhoto) || + (castModifyRequests?.length <= 1 && + !staffModifyRequests[0]?.staffName && + !staffModifyRequests[0]?.staffRole && + !staffModifyRequests[0]?.staffPhoto) || allStaffFieldsFilled ) ); - }, [castList, staffList]); + }, [castModifyRequests, staffModifyRequests]); const handleUpdateList = (title: string, updatedList: Cast[] | Staff[]) => { if (title === "출연진") { - setCastList(updatedList as Cast[]); + setcastModifyRequests(updatedList as Cast[]); } else if (title === "스태프") { - setStaffList(updatedList as Staff[]); + setstaffModifyRequests(updatedList as Staff[]); } - updateGigInfo({ castModifyRequests: castList, staffModifyRequests: staffList }); + updateGigInfo({ + castModifyRequests: castModifyRequests, + staffModifyRequests: staffModifyRequests, + }); }; const handleList = () => { // 모든 속성이 비어있는 객체들 필터링 - const filteredCastList = castList.filter( + const filteredcastModifyRequests = castModifyRequests.filter( (cast) => cast.castName || cast.castRole || cast.castPhoto ); - const filteredStaffList = staffList.filter( + const filteredstaffModifyRequests = staffModifyRequests.filter( (staff) => staff.staffName || staff.staffRole || staff.staffPhoto ); - updateGigInfo({ castModifyRequests: filteredCastList, staffModifyRequests: filteredStaffList }); + updateGigInfo({ + castModifyRequests: filteredcastModifyRequests, + staffModifyRequests: filteredstaffModifyRequests, + }); handleModifyManageStep(); }; @@ -77,13 +83,13 @@ const ModifyManageMaker = ({ handleUpdateList("출연진", list)} /> handleUpdateList("스태프", list)} /> diff --git a/src/pages/modifyManage/ModifyManage.tsx b/src/pages/modifyManage/ModifyManage.tsx index eb297b4d..775bd41b 100644 --- a/src/pages/modifyManage/ModifyManage.tsx +++ b/src/pages/modifyManage/ModifyManage.tsx @@ -622,8 +622,8 @@ const ModifyManage = () => { if (modifyState.modifyManageStep === 2) { return ( From f3742d75c9ca98defa7d1e34479ab61b32ca73d3 Mon Sep 17 00:00:00 2001 From: ocahs9 Date: Tue, 27 Aug 2024 02:50:45 +0900 Subject: [PATCH 06/44] =?UTF-8?q?fix:=20=EC=A2=80=20=EB=8D=94=20=EA=B0=80?= =?UTF-8?q?=EB=8F=85=EC=84=B1=20=EC=A2=8B=EB=8F=84=EB=A1=9D=20makerId?= =?UTF-8?q?=EB=A1=9C=20=EC=9D=B4=EB=A6=84=20=ED=86=B5=EC=9D=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/modifyManage/components/RoleLayout.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/modifyManage/components/RoleLayout.tsx b/src/pages/modifyManage/components/RoleLayout.tsx index 9a26c60b..970d3b29 100644 --- a/src/pages/modifyManage/components/RoleLayout.tsx +++ b/src/pages/modifyManage/components/RoleLayout.tsx @@ -6,7 +6,7 @@ import { Cast, Staff } from "../typings/gigInfo"; import RoleWrapper from "./RoleWrapper"; interface Role { - id: number; + makerId: number; makerName: string; makerRole: string; makerPhoto: string; @@ -21,7 +21,7 @@ interface RoleLayoutProps { const RoleLayout = ({ list, updateList, title }: RoleLayoutProps) => { const [makerList, setMakerList] = useState( list.map((item, index) => ({ - id: index, // ID 생성 + makerId: "castId" in item ? item.castId : item.staffId, // 공연 수정 페이지 조회 시 가져온 ID로 설정 makerName: "castName" in item ? item.castName : item.staffName, makerRole: "castRole" in item ? item.castRole : item.staffRole, makerPhoto: "castPhoto" in item ? item.castPhoto : item.staffPhoto, From 92b07ed46dd931345c568026f1d3f01542201bd9 Mon Sep 17 00:00:00 2001 From: ocahs9 Date: Tue, 27 Aug 2024 02:55:32 +0900 Subject: [PATCH 07/44] =?UTF-8?q?feat:=20=EC=83=88=EB=A1=AD=EA=B2=8C=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=EB=90=9C=20maker(staff,cast)=EC=9D=B8?= =?UTF-8?q?=EC=A7=80=20=ED=8C=90=EB=8B=A8=ED=95=98=EC=97=AC=20id=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20=EC=97=AC=EB=B6=80=EB=A5=BC=20=EA=B2=B0?= =?UTF-8?q?=EC=A0=95=ED=95=98=EB=8A=94=20=EB=A1=9C=EC=A7=81=20=EA=B5=AC?= =?UTF-8?q?=ED=98=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../modifyManage/components/RoleLayout.tsx | 47 +++++++++++++------ 1 file changed, 32 insertions(+), 15 deletions(-) diff --git a/src/pages/modifyManage/components/RoleLayout.tsx b/src/pages/modifyManage/components/RoleLayout.tsx index 970d3b29..401b4c9a 100644 --- a/src/pages/modifyManage/components/RoleLayout.tsx +++ b/src/pages/modifyManage/components/RoleLayout.tsx @@ -10,6 +10,7 @@ interface Role { makerName: string; makerRole: string; makerPhoto: string; + isNew?: boolean; } interface RoleLayoutProps { @@ -19,6 +20,7 @@ interface RoleLayoutProps { } const RoleLayout = ({ list, updateList, title }: RoleLayoutProps) => { + //결국 맨 상위 castModifyRequests나 staffModifyRequests 로 초기화 const [makerList, setMakerList] = useState( list.map((item, index) => ({ makerId: "castId" in item ? item.castId : item.staffId, // 공연 수정 페이지 조회 시 가져온 ID로 설정 @@ -32,39 +34,54 @@ const RoleLayout = ({ list, updateList, title }: RoleLayoutProps) => { setMakerList((prev) => [ ...prev, { - id: Date.now(), + makerId: Date.now(), makerName: "", makerRole: "", makerPhoto: "", + isNew: true, //새롭게 추가되었음을 표시 }, ]); }; const handleremoveRole = (id: number) => { - setMakerList((prev) => prev.filter((role) => role.id !== id)); + setMakerList((prev) => prev.filter((role) => role.makerId !== id)); }; const handleUpdateRole = (id: number, name: string, value: string) => { setMakerList((prev) => - prev.map((role) => (role.id === id ? { ...role, [name]: value } : role)) + prev.map((role) => (role.makerId === id ? { ...role, [name]: value } : role)) ); }; useEffect(() => { const newMakerList = makerList.map((role) => { if (title === "출연진") { - return { - castName: role.makerName, - castRole: role.makerRole, - castPhoto: role.makerPhoto, - }; + return role.isNew + ? { + castName: role.makerName, + castRole: role.makerRole, + castPhoto: role.makerPhoto, + } + : { + castId: role.makerId, //기존 id 유지 + castName: role.makerName, + castRole: role.makerRole, + castPhoto: role.makerPhoto, + }; } if (title === "스태프") { - return { - staffName: role.makerName, - staffRole: role.makerRole, - staffPhoto: role.makerPhoto, - }; + return role.isNew + ? { + staffName: role.makerName, + staffRole: role.makerRole, + staffPhoto: role.makerPhoto, + } + : { + staffId: role.makerId, //기존 id 유지 + staffName: role.makerName, + staffRole: role.makerRole, + staffPhoto: role.makerPhoto, + }; } }); updateList(newMakerList); @@ -77,8 +94,8 @@ const RoleLayout = ({ list, updateList, title }: RoleLayoutProps) => { {makerList.map((role) => ( Date: Tue, 27 Aug 2024 03:09:43 +0900 Subject: [PATCH 08/44] =?UTF-8?q?fix:=20id=EA=B0=80=20=EC=97=86=EB=8A=94?= =?UTF-8?q?=20=EA=B2=BD=EC=9A=B0=EB=8F=84=20=EC=9E=88=EC=9D=84=20=EA=B2=83?= =?UTF-8?q?=20=EA=B0=99=EC=95=84=EC=84=9C,=20=EC=98=B5=EC=85=94=EB=84=90?= =?UTF-8?q?=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/modifyManage/typings/gigInfo.ts | 6 ++-- src/pages/modifyManage/utils/handleEvent.ts | 32 +++++++++++---------- 2 files changed, 20 insertions(+), 18 deletions(-) diff --git a/src/pages/modifyManage/typings/gigInfo.ts b/src/pages/modifyManage/typings/gigInfo.ts index 88d4cc3e..e6eb4340 100644 --- a/src/pages/modifyManage/typings/gigInfo.ts +++ b/src/pages/modifyManage/typings/gigInfo.ts @@ -3,7 +3,7 @@ import { components } from "@typings/api/schema"; import { Dayjs } from "dayjs"; export interface Schedule { - scheduleId: number; + scheduleId?: number; performanceDate: Dayjs | null | string; totalTicketCount: number; dueDate?: number; @@ -11,14 +11,14 @@ export interface Schedule { } export interface Cast { - castId: number; + castId?: number; castName: string; castRole: string; castPhoto: string; } export interface Staff { - staffId: number; + staffId?: number; staffName: string; staffRole: string; staffPhoto: string; diff --git a/src/pages/modifyManage/utils/handleEvent.ts b/src/pages/modifyManage/utils/handleEvent.ts index e7f225ed..ed17a2a0 100644 --- a/src/pages/modifyManage/utils/handleEvent.ts +++ b/src/pages/modifyManage/utils/handleEvent.ts @@ -44,27 +44,29 @@ export const onMinusClick = (setGigInfo: Dispatch>) => return { ...prev, totalScheduleCount: newScheduleCount, - scheduleList: prev.scheduleList.slice(0, newScheduleCount), - performancePeriod: calculatePerformancePeriod(prev.scheduleList.slice(0, newScheduleCount)), + scheduleModifyRequests: prev.scheduleModifyRequests.slice(0, newScheduleCount), + performancePeriod: calculatePerformancePeriod( + prev.scheduleModifyRequests.slice(0, newScheduleCount) + ), }; }); }; export const onPlusClick = (setGigInfo: Dispatch>) => { setGigInfo((prev) => { - const newScheduleList = [ - ...prev.scheduleList, + const newscheduleModifyRequests = [ + ...prev.scheduleModifyRequests, { performanceDate: null, // 공연 일시 totalTicketCount: 0, // 총 티켓 수 - scheduleNumber: getScheduleNumber(prev.scheduleList.length), // 회차 번호 + scheduleNumber: getScheduleNumber(prev.scheduleModifyRequests.length), // 회차 번호 }, ]; return { ...prev, totalScheduleCount: prev.totalScheduleCount + 1, - scheduleList: newScheduleList, - performancePeriod: calculatePerformancePeriod(newScheduleList), + scheduleModifyRequests: newscheduleModifyRequests, + performancePeriod: calculatePerformancePeriod(newscheduleModifyRequests), }; }); }; @@ -76,12 +78,12 @@ export const handleDateChange = ( setGigInfo: Dispatch> ) => { setGigInfo((prev) => { - const newScheduleList = [...prev.scheduleList]; - newScheduleList[index].performanceDate = date; + const newscheduleModifyRequests = [...prev.scheduleModifyRequests]; + newscheduleModifyRequests[index].performanceDate = date; return { ...prev, - scheduleList: newScheduleList, - performancePeriod: calculatePerformancePeriod(newScheduleList), + scheduleModifyRequests: newscheduleModifyRequests, + performancePeriod: calculatePerformancePeriod(newscheduleModifyRequests), }; }); }; @@ -100,7 +102,7 @@ export const handleTotalTicketCountChange = ( setGigInfo((prev) => ({ ...prev, - scheduleList: prev.scheduleList.map((schedule) => ({ + scheduleModifyRequests: prev.scheduleModifyRequests.map((schedule) => ({ ...schedule, totalTicketCount: ticketCount, })), @@ -149,7 +151,7 @@ export const isAllFieldsFilled = (gigInfo: DataProps, isFree: boolean) => { ...(!isFree ? ["bankName", "accountNumber"] : []), ]; - const scheduleFilled = gigInfo.scheduleList.every( + const scheduleFilled = gigInfo.scheduleModifyRequests.every( (schedule) => schedule.performanceDate && schedule.totalTicketCount && schedule.scheduleNumber ); @@ -164,9 +166,9 @@ export const isAllFieldsFilled = (gigInfo: DataProps, isFree: boolean) => { // performancePeriod 계산 export const calculatePerformancePeriod = ( - scheduleList: { performanceDate: Dayjs | null | string }[] + scheduleModifyRequests: { performanceDate: Dayjs | null | string }[] ) => { - const dates = scheduleList + const dates = scheduleModifyRequests //dayjs로 .map((schedule) => dayjs(schedule.performanceDate)) .filter((date): date is Dayjs => date !== null) From d403a2e9a81875a39cd7052346cd7d87ba483139 Mon Sep 17 00:00:00 2001 From: ocahs9 Date: Tue, 27 Aug 2024 03:11:34 +0900 Subject: [PATCH 09/44] =?UTF-8?q?fix:=20map,=20every=EA=B0=80=20=EC=95=88?= =?UTF-8?q?=EB=90=98=EB=8A=94=20=EA=B2=BD=EC=9A=B0=EB=8F=84=20=EA=B3=A0?= =?UTF-8?q?=EB=A0=A4=ED=95=98=EC=97=AC=20=3F.=20=EC=97=B0=EC=82=B0?= =?UTF-8?q?=EC=9E=90=20=EC=82=AC=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/modifyManage/ModifyManage.tsx | 2 +- src/pages/modifyManage/utils/handleEvent.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/pages/modifyManage/ModifyManage.tsx b/src/pages/modifyManage/ModifyManage.tsx index 775bd41b..4cb09c15 100644 --- a/src/pages/modifyManage/ModifyManage.tsx +++ b/src/pages/modifyManage/ModifyManage.tsx @@ -147,7 +147,7 @@ const ModifyManage = () => { performanceContact: data.performanceContact, ticketPrice: data.ticketPrice, totalScheduleCount: data.totalScheduleCount, - scheduleModifyRequests: data.scheduleModifyRequests.map((item) => ({ + scheduleModifyRequests: data.scheduleModifyRequests?.map((item) => ({ scheduleId: item.scheduleId ?? -1, //조회로 받아오니까 -1이 될 일이 없음. performanceDate: item.performanceDate ?? "", totalTicketCount: item.totalTicketCount ?? 0, diff --git a/src/pages/modifyManage/utils/handleEvent.ts b/src/pages/modifyManage/utils/handleEvent.ts index ed17a2a0..d6434ece 100644 --- a/src/pages/modifyManage/utils/handleEvent.ts +++ b/src/pages/modifyManage/utils/handleEvent.ts @@ -151,7 +151,7 @@ export const isAllFieldsFilled = (gigInfo: DataProps, isFree: boolean) => { ...(!isFree ? ["bankName", "accountNumber"] : []), ]; - const scheduleFilled = gigInfo.scheduleModifyRequests.every( + const scheduleFilled = gigInfo.scheduleModifyRequests?.every( (schedule) => schedule.performanceDate && schedule.totalTicketCount && schedule.scheduleNumber ); From 33c312d22a04d086b1d91b78f1c8d0750c1bad44 Mon Sep 17 00:00:00 2001 From: ocahs9 Date: Tue, 27 Aug 2024 03:47:40 +0900 Subject: [PATCH 10/44] =?UTF-8?q?fix:=20undefinde=EB=9D=BC=20map=EC=9D=84?= =?UTF-8?q?=20=EC=82=AC=EC=9A=A9=ED=95=A0=20=EC=88=98=20=EC=97=86=EB=8B=A4?= =?UTF-8?q?=EB=8A=94=20=EB=AC=B8=EC=A0=9C=20=ED=95=B4=EA=B2=B0=20-=20?= =?UTF-8?q?=EB=B0=9B=EC=95=84=EC=98=A4=EB=8A=94=20=EB=8D=B0=EC=9D=B4?= =?UTF-8?q?=ED=84=B0=20=ED=83=80=EC=9E=85=20=EC=A0=9C=EB=8C=80=EB=A1=9C=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apis/domains/performances/api.ts | 6 +++--- src/pages/modifyManage/ModifyManage.tsx | 10 +++++----- src/pages/modifyManage/typings/gigInfo.ts | 2 +- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/apis/domains/performances/api.ts b/src/apis/domains/performances/api.ts index 980bc813..8e5dd027 100644 --- a/src/apis/domains/performances/api.ts +++ b/src/apis/domains/performances/api.ts @@ -18,13 +18,13 @@ export const getMakerPerformance = async (): Promise => { +): Promise => { try { - const response: AxiosResponse> = await get( + const response: AxiosResponse> = await get( `performances/${performanceId}` ); return response.data.data; diff --git a/src/pages/modifyManage/ModifyManage.tsx b/src/pages/modifyManage/ModifyManage.tsx index 4cb09c15..698c74ee 100644 --- a/src/pages/modifyManage/ModifyManage.tsx +++ b/src/pages/modifyManage/ModifyManage.tsx @@ -147,23 +147,23 @@ const ModifyManage = () => { performanceContact: data.performanceContact, ticketPrice: data.ticketPrice, totalScheduleCount: data.totalScheduleCount, - scheduleModifyRequests: data.scheduleModifyRequests?.map((item) => ({ + scheduleModifyRequests: data.scheduleList.map((item) => ({ scheduleId: item.scheduleId ?? -1, //조회로 받아오니까 -1이 될 일이 없음. performanceDate: item.performanceDate ?? "", totalTicketCount: item.totalTicketCount ?? 0, dueDate: item.dueDate ?? 0, scheduleNumber: item.scheduleNumber ?? "FIRST", })), - castModifyRequests: data.castModifyRequests?.length - ? data.castModifyRequests.map((item) => ({ + castModifyRequests: data.castList?.length + ? data.castList.map((item) => ({ castId: item.castId ?? -1, castName: item.castName ?? "", castRole: item.castRole ?? "", castPhoto: item.castPhoto ?? "", })) : [{ castId: -1, castName: "", castRole: "", castPhoto: "" }], - staffModifyRequests: data.staffModifyRequests?.length - ? data.staffModifyRequests.map((item) => ({ + staffModifyRequests: data.staffList?.length + ? data.staffList.map((item) => ({ staffId: item.staffId ?? -1, staffName: item.staffName ?? "", staffRole: item.staffRole ?? "", diff --git a/src/pages/modifyManage/typings/gigInfo.ts b/src/pages/modifyManage/typings/gigInfo.ts index e6eb4340..f7a7b604 100644 --- a/src/pages/modifyManage/typings/gigInfo.ts +++ b/src/pages/modifyManage/typings/gigInfo.ts @@ -7,7 +7,7 @@ export interface Schedule { performanceDate: Dayjs | null | string; totalTicketCount: number; dueDate?: number; - scheduleNumber?: string; + scheduleNumber: string; } export interface Cast { From e4085bfc252a41dfef3c4e713cb4fbdadd554868 Mon Sep 17 00:00:00 2001 From: ocahs9 Date: Tue, 27 Aug 2024 03:49:18 +0900 Subject: [PATCH 11/44] =?UTF-8?q?fix:=20=EC=98=B5=EC=85=94=EB=84=90?= =?UTF-8?q?=EC=97=90=20.=3F=20=EC=97=B0=EC=82=B0=EC=9E=90=EB=A5=BC=20?= =?UTF-8?q?=EC=95=88=EC=A3=BC=EC=96=B4=EC=84=9C=20=EC=83=9D=EA=B8=B4=20Can?= =?UTF-8?q?not=20read=20properties=20of=20undefined=20=ED=95=B4=EA=B2=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/modifyManage/ModifyManage.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/modifyManage/ModifyManage.tsx b/src/pages/modifyManage/ModifyManage.tsx index 698c74ee..2fdf943e 100644 --- a/src/pages/modifyManage/ModifyManage.tsx +++ b/src/pages/modifyManage/ModifyManage.tsx @@ -665,7 +665,7 @@ const ModifyManage = () => { })) as Cast[]) } staffList={ - dataState.staffModifyRequests?.[0].staffId === -1 + dataState.staffModifyRequests?.[0]?.staffId === -1 ? [] : (dataState.staffModifyRequests?.map((cast, index) => ({ ...cast, From 5b60d0baf91c560032c0ab73ab598b4987950bac Mon Sep 17 00:00:00 2001 From: ocahs9 Date: Tue, 27 Aug 2024 03:50:30 +0900 Subject: [PATCH 12/44] =?UTF-8?q?chore:=20=EC=88=98=EC=A0=95=ED=95=98?= =?UTF-8?q?=EA=B8=B0=20=EC=9A=94=EC=B2=AD=20500=EC=97=90=EB=9F=AC=20?= =?UTF-8?q?=EB=82=98=EB=8A=94=20=EC=9D=B4=EC=9C=A0=20=EC=A3=BC=EC=84=9D=20?= =?UTF-8?q?=EA=B8=B0=EC=88=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/modifyManage/ModifyManage.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/pages/modifyManage/ModifyManage.tsx b/src/pages/modifyManage/ModifyManage.tsx index 2fdf943e..19e2f489 100644 --- a/src/pages/modifyManage/ModifyManage.tsx +++ b/src/pages/modifyManage/ModifyManage.tsx @@ -61,6 +61,8 @@ type State = { castModifyRequests: Cast[]; staffModifyRequests: Staff[]; //performanceImageModifyRequests : 타입[] -> 구현 예정.. + //타입 하나 덜 있어서, 요청 자체가 500에러 뱉어냄. + //모든 곳에서 performanceImageModifyRequests 가 적용되도록 변경해야함 }; type ModifyState = { From 4d2ecdead25e743207be5eeb8dcc584d1697f3d2 Mon Sep 17 00:00:00 2001 From: ocahs9 Date: Wed, 28 Aug 2024 01:29:26 +0900 Subject: [PATCH 13/44] =?UTF-8?q?fix:=20=EC=B4=9D=20=ED=9A=8C=EC=B0=A8=20?= =?UTF-8?q?=EC=88=98=20=EB=8F=99=EC=A0=81=EC=9C=BC=EB=A1=9C=20=EC=A1=B0?= =?UTF-8?q?=EC=A0=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/ticketholderlist/TicketHolderList.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pages/ticketholderlist/TicketHolderList.tsx b/src/pages/ticketholderlist/TicketHolderList.tsx index e0ca91db..9cd7e74d 100644 --- a/src/pages/ticketholderlist/TicketHolderList.tsx +++ b/src/pages/ticketholderlist/TicketHolderList.tsx @@ -2,6 +2,7 @@ import { useTicketDelete, useTicketRetrive, useTicketUpdate } from "@apis/domain import { IconCheck } from "@assets/svgs"; import Button from "@components/commons/button/Button"; import Loading from "@components/commons/loading/Loading"; +import MetaTag from "@components/commons/meta/MetaTag"; import Toast from "@components/commons/toast/Toast"; import { NAVIGATION_STATE } from "@constants/navigationState"; import { useHeader, useModal, useToast } from "@hooks"; @@ -12,9 +13,8 @@ import Banner from "./components/banner/Banner"; import ManagerCard from "./components/managercard/ManagerCard"; import NarrowDropDown from "./components/narrowDropDown/NarrowDropDown"; import eximg from "./constants/silkagel.png"; -import { BookingListProps, RESPONSE_TICKETHOLDER } from "./constants/ticketholderlist"; +import { BookingListProps } from "./constants/ticketholderlist"; import * as S from "./TicketHolderList.styled"; -import MetaTag from "@components/commons/meta/MetaTag"; const TicketHolderList = () => { /* @@ -143,7 +143,7 @@ const TicketHolderList = () => { setDetail((prop) => !prop); }; - const count = RESPONSE_TICKETHOLDER.data.totalScheduleCount; //나중에 api로 받아와서 반영해야함. state로 바꿀 필요 있을까? + const count = data.totalScheduleCount; //api로 받아온 값 (동적 회차 수) const filteredData = responseData?.filter((obj) => { const isScheduleMatched = From d7fcc5f252bcc33b94974664f52c2f78ff24dc0d Mon Sep 17 00:00:00 2001 From: ocahs9 Date: Wed, 28 Aug 2024 01:45:54 +0900 Subject: [PATCH 14/44] =?UTF-8?q?fix:=20api=EB=A1=9C=20=EB=B0=9B=EC=95=84?= =?UTF-8?q?=EC=98=A8=20=EA=B0=92=20=EC=9D=BD=EC=A7=80=20=EB=AA=BB=ED=95=98?= =?UTF-8?q?=EB=8A=94=20=EB=B2=84=EA=B7=B8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/modifyManage/ModifyManage.tsx | 9 --------- src/pages/ticketholderlist/TicketHolderList.tsx | 2 +- 2 files changed, 1 insertion(+), 10 deletions(-) diff --git a/src/pages/modifyManage/ModifyManage.tsx b/src/pages/modifyManage/ModifyManage.tsx index 19e2f489..8b8e42a1 100644 --- a/src/pages/modifyManage/ModifyManage.tsx +++ b/src/pages/modifyManage/ModifyManage.tsx @@ -199,8 +199,6 @@ const ModifyManage = () => { leftOnClick: handleLeftBtn, rightOnClick: handleRightBtn, }); - - console.log("현재 스텝:", modifyState.modifyManageStep); }, [modifyState.modifyManageStep, modifyState.isBookerExist]); const handleInputChange = (field: keyof State, value: State[keyof State]) => { @@ -229,13 +227,6 @@ const ModifyManage = () => { ); try { - console.log("수정하기 요청 보내기 직전 데이터:", { - performanceId: Number(performanceId), - ...dataState, - castModifyRequests: filteredCastModifyRequests, - staffModifyRequests: filteredstaffModifyRequests, - }); - const res = await updatePerformance({ performanceId: Number(performanceId), ...dataState, diff --git a/src/pages/ticketholderlist/TicketHolderList.tsx b/src/pages/ticketholderlist/TicketHolderList.tsx index 9cd7e74d..827f9d9d 100644 --- a/src/pages/ticketholderlist/TicketHolderList.tsx +++ b/src/pages/ticketholderlist/TicketHolderList.tsx @@ -143,7 +143,7 @@ const TicketHolderList = () => { setDetail((prop) => !prop); }; - const count = data.totalScheduleCount; //api로 받아온 값 (동적 회차 수) + const count = data?.totalScheduleCount; //api로 받아온 값 (동적 회차 수) const filteredData = responseData?.filter((obj) => { const isScheduleMatched = From 8c66b91730b01f67671ce62d8b7e66a16f522740 Mon Sep 17 00:00:00 2001 From: ocahs9 Date: Thu, 29 Aug 2024 00:41:33 +0900 Subject: [PATCH 15/44] =?UTF-8?q?feat:=20=EC=83=81=EC=84=B8=20=EC=9D=B4?= =?UTF-8?q?=EB=AF=B8=EC=A7=80=20=ED=83=80=EC=9E=85=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/modifyManage/ModifyManage.tsx | 18 ++++++++++++++---- src/pages/modifyManage/typings/gigInfo.ts | 5 +++++ 2 files changed, 19 insertions(+), 4 deletions(-) diff --git a/src/pages/modifyManage/ModifyManage.tsx b/src/pages/modifyManage/ModifyManage.tsx index 8b8e42a1..ed5d9c60 100644 --- a/src/pages/modifyManage/ModifyManage.tsx +++ b/src/pages/modifyManage/ModifyManage.tsx @@ -37,7 +37,14 @@ import TimePickerModifyManageBox from "./components/TimePickerModifyManageBox"; import { GENRE_LIST } from "./constants/genreList"; import ModifyManageMaker from "./ModifyMaker"; import * as S from "./ModifyManage.styled"; -import { BANK_TYPE, Cast, DataProps, Schedule, Staff } from "./typings/gigInfo"; +import { + BANK_TYPE, + Cast, + DataProps, + PerformanceImageModifyRequest, + Schedule, + Staff, +} from "./typings/gigInfo"; import { isAllFieldsFilled } from "./utils/handleEvent"; // Reducer로 상태 관리 통합 @@ -60,7 +67,7 @@ type State = { scheduleModifyRequests: Schedule[]; castModifyRequests: Cast[]; staffModifyRequests: Staff[]; - //performanceImageModifyRequests : 타입[] -> 구현 예정.. + performanceImageModifyRequests: PerformanceImageModifyRequest[]; //타입 하나 덜 있어서, 요청 자체가 500에러 뱉어냄. //모든 곳에서 performanceImageModifyRequests 가 적용되도록 변경해야함 }; @@ -84,6 +91,8 @@ const initialState: State = { runningTime: null, performanceDescription: "", performanceAttentionNote: "", + bankName: "NONE", + accountHolder: "", accountNumber: "", posterImage: "", performanceTeamName: "", @@ -95,8 +104,7 @@ const initialState: State = { scheduleModifyRequests: [], castModifyRequests: [], staffModifyRequests: [], - bankName: "NONE", - accountHolder: "", + performanceImageModifyRequests: [], }; const reducer = (state: State, action: Action): State => { @@ -131,6 +139,8 @@ const ModifyManage = () => { bankOpen: false, }); + console.log(dataState); + useEffect(() => { if (data && isSuccess) { dispatch({ diff --git a/src/pages/modifyManage/typings/gigInfo.ts b/src/pages/modifyManage/typings/gigInfo.ts index f7a7b604..02cd49f1 100644 --- a/src/pages/modifyManage/typings/gigInfo.ts +++ b/src/pages/modifyManage/typings/gigInfo.ts @@ -24,6 +24,11 @@ export interface Staff { staffPhoto: string; } +export interface PerformanceImageModifyRequest { + performanceImageId: number; + performanceImage: string; +} + export type BANK_TYPE = components["schemas"]["GuestBookingRetrieveResponse"]["bankName"]; export interface DataProps { From b2df46038c1c961943aa895eea06d9ff99597b26 Mon Sep 17 00:00:00 2001 From: ocahs9 Date: Thu, 29 Aug 2024 18:38:40 +0900 Subject: [PATCH 16/44] =?UTF-8?q?fix:=20dataState=EA=B0=80=20=EC=9E=98=20?= =?UTF-8?q?=EC=B0=BC=EB=8A=94=EC=A7=80=20=ED=99=95=EC=9D=B8=ED=95=98?= =?UTF-8?q?=EA=B8=B0=20=EC=9C=84=ED=95=B4=20type=20=EC=9D=BC=EB=B6=80=20?= =?UTF-8?q?=EC=98=B5=EC=85=94=EB=85=88=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/modifyManage/typings/gigInfo.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/pages/modifyManage/typings/gigInfo.ts b/src/pages/modifyManage/typings/gigInfo.ts index 02cd49f1..3a0705bb 100644 --- a/src/pages/modifyManage/typings/gigInfo.ts +++ b/src/pages/modifyManage/typings/gigInfo.ts @@ -32,9 +32,9 @@ export interface PerformanceImageModifyRequest { export type BANK_TYPE = components["schemas"]["GuestBookingRetrieveResponse"]["bankName"]; export interface DataProps { - userId: number; + userId?: number; accountHolder: string; - performanceId: number; + performanceId?: number; performanceTitle: string; genre: SHOW_TYPE_KEY; runningTime: number | null; @@ -49,7 +49,7 @@ export interface DataProps { performancePeriod: string; ticketPrice: number; totalScheduleCount: number; - isBookerExist: boolean; + isBookerExist?: boolean; scheduleModifyRequests: Schedule[]; castModifyRequests: Cast[]; staffModifyRequests: Staff[]; From ed25e81d3b475cd3fd7ddd06f122e4f013a2990a Mon Sep 17 00:00:00 2001 From: ocahs9 Date: Thu, 29 Aug 2024 23:58:41 +0900 Subject: [PATCH 17/44] =?UTF-8?q?fix:=20=EC=83=81=EC=84=B8=EC=9D=B4?= =?UTF-8?q?=EB=AF=B8=EC=A7=80=20=EC=88=98=EC=A0=95=20=EA=B0=80=EB=8A=A5?= =?UTF-8?q?=ED=95=98=EB=8F=84=EB=A1=9D=20=ED=83=80=EC=9E=85=20=EC=A0=95?= =?UTF-8?q?=EC=9D=98,=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/pages/modifyManage/ModifyManage.styled.ts | 23 ++++ src/pages/modifyManage/ModifyManage.tsx | 11 +- .../modifyManage/components/DetailImage.tsx | 110 ++++++++++++++++++ src/pages/modifyManage/typings/gigInfo.ts | 1 + src/pages/modifyManage/utils/handleEvent.ts | 15 ++- 5 files changed, 156 insertions(+), 4 deletions(-) create mode 100644 src/pages/modifyManage/components/DetailImage.tsx diff --git a/src/pages/modifyManage/ModifyManage.styled.ts b/src/pages/modifyManage/ModifyManage.styled.ts index 97bcdf14..d9f21963 100644 --- a/src/pages/modifyManage/ModifyManage.styled.ts +++ b/src/pages/modifyManage/ModifyManage.styled.ts @@ -121,6 +121,20 @@ export const FileInputWrapper = styled.div` gap: 1.4rem; `; +export const FilesInputWrapper = styled.div` + position: relative; + + ${Generators.flexGenerator("row", "center", "start")} + gap: 1.4rem; + width: calc(100% + 2.4rem); + padding-right: 2.4rem; + overflow-x: scroll; + + &::-webkit-scrollbar { + display: none; + } +`; + export const HiddenFileInput = styled.input` display: none; `; @@ -135,6 +149,15 @@ export const CustomFileInput = styled.label<{ width?: number; height?: number }> border-radius: 6px; `; +export const CustomFileInputCounter = styled.p` + color: ${({ theme }) => theme.colors.gray_500}; + ${({ theme }) => theme.fonts["body1-normal-medi"]}; +`; + +export const CustomFileInputLength = styled.span` + color: ${({ theme }) => theme.colors.white}; +`; + export const PreviewImageWrapper = styled.article<{ width?: number; height?: number }>` position: relative; width: ${({ width }) => (width ? width : 10.8)}rem; diff --git a/src/pages/modifyManage/ModifyManage.tsx b/src/pages/modifyManage/ModifyManage.tsx index ed5d9c60..639e1f66 100644 --- a/src/pages/modifyManage/ModifyManage.tsx +++ b/src/pages/modifyManage/ModifyManage.tsx @@ -29,6 +29,7 @@ import { numericFilter, phoneNumberFilter, priceFilter } from "@utils/useInputFi import dayjs from "dayjs"; import { ChangeEvent, useEffect, useReducer, useState } from "react"; import { useNavigate, useParams } from "react-router-dom"; +import DetailImage from "./components/DetailImage"; import GenreSelect from "./components/GenreSelect"; import InputModifyManageBox from "./components/InputModifyManage"; import PosterThumbnail from "./components/PosterThumbnail"; @@ -45,10 +46,10 @@ import { Schedule, Staff, } from "./typings/gigInfo"; -import { isAllFieldsFilled } from "./utils/handleEvent"; +import { handleImagesUpload, isAllFieldsFilled } from "./utils/handleEvent"; // Reducer로 상태 관리 통합 -type State = { +export type State = { performanceTitle: string; genre: SHOW_TYPE_KEY; runningTime: number | null; @@ -416,6 +417,12 @@ const ModifyManage = () => { /> + + handleImagesUpload(performanceImage, updateGigInfo) + } + />