From d8245283365f1eca476890906e228c138d800e9a Mon Sep 17 00:00:00 2001 From: HyeonJongKim Date: Thu, 25 Sep 2025 10:03:23 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B6=80=EA=B0=80=EC=84=9C=EB=B9=84=EC=8A=A4?= =?UTF-8?q?=20-=20SMS=EA=B2=B0=EC=A0=9C=ED=86=B5=EB=B3=B4=5F=EC=9E=AC?= =?UTF-8?q?=EB=B0=9C=EC=86=A1=20API=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../use-extension-sms-detail-mutation.ts | 29 ------------- .../use-extension-sms-resend-mutation.ts | 29 ------------- .../model/sms-payment/types.ts | 2 + .../sms-payment/sms-payment-detail-resend.tsx | 41 ++++++++++++++++++- .../ui/sms-payment/sms-payment-filter.tsx | 4 +- .../sms-payment/sms-payment-page.tsx | 18 ++++---- 6 files changed, 51 insertions(+), 72 deletions(-) delete mode 100644 src/entities/additional-service/api/sms-payment-notification/use-extension-sms-detail-mutation.ts delete mode 100644 src/entities/additional-service/api/sms-payment-notification/use-extension-sms-resend-mutation.ts diff --git a/src/entities/additional-service/api/sms-payment-notification/use-extension-sms-detail-mutation.ts b/src/entities/additional-service/api/sms-payment-notification/use-extension-sms-detail-mutation.ts deleted file mode 100644 index 8c2f433..0000000 --- a/src/entities/additional-service/api/sms-payment-notification/use-extension-sms-detail-mutation.ts +++ /dev/null @@ -1,29 +0,0 @@ -import axios from 'axios'; -import { API_URL_ADDITIONAL_SERVICE } from '@/shared/api/api-url-additional-service'; -import { resultify } from '@/shared/lib/resultify'; -import { CBDCAxiosError } from '@/shared/@types/error'; -import { - ExtensionSmsDetailParams, - ExtensionSmsDetailResponse -} from '../../model/sms-payment/types'; -import { - useMutation, - UseMutationOptions -} from '@tanstack/react-query'; - -export const extensionSmsDetail = (params: ExtensionSmsDetailParams) => { - return resultify( - axios.post(API_URL_ADDITIONAL_SERVICE.extensionSmsDetail(), params), - ); -}; - -export const useExtensionSmsDetailMutation = (options?: UseMutationOptions) => { - const mutation = useMutation({ - ...options, - mutationFn: (params: ExtensionSmsDetailParams) => extensionSmsDetail(params), - }); - - return { - ...mutation, - }; -}; diff --git a/src/entities/additional-service/api/sms-payment-notification/use-extension-sms-resend-mutation.ts b/src/entities/additional-service/api/sms-payment-notification/use-extension-sms-resend-mutation.ts deleted file mode 100644 index db9505d..0000000 --- a/src/entities/additional-service/api/sms-payment-notification/use-extension-sms-resend-mutation.ts +++ /dev/null @@ -1,29 +0,0 @@ -import axios from 'axios'; -import { API_URL_ADDITIONAL_SERVICE } from '@/shared/api/api-url-additional-service'; -import { resultify } from '@/shared/lib/resultify'; -import { CBDCAxiosError } from '@/shared/@types/error'; -import { - ExtensionSmsResendParams, - ExtensionSmsResendResponse -} from '../../model/sms-payment/types'; -import { - useMutation, - UseMutationOptions -} from '@tanstack/react-query'; - -export const extensionSmsResend = (params: ExtensionSmsResendParams) => { - return resultify( - axios.post(API_URL_ADDITIONAL_SERVICE.extensionSmsResend(), params), - ); -}; - -export const useExtensionSmsResendMutation = (options?: UseMutationOptions) => { - const mutation = useMutation({ - ...options, - mutationFn: (params: ExtensionSmsResendParams) => extensionSmsResend(params), - }); - - return { - ...mutation, - }; -}; diff --git a/src/entities/additional-service/model/sms-payment/types.ts b/src/entities/additional-service/model/sms-payment/types.ts index d8fd13c..b110e8b 100644 --- a/src/entities/additional-service/model/sms-payment/types.ts +++ b/src/entities/additional-service/model/sms-payment/types.ts @@ -90,4 +90,6 @@ export interface SmsPaymentDetailResendProps { bottomSmsPaymentDetailResendOn: boolean; setBottomSmsPaymentDetailResendOn: (bottomSmsPaymentDetailResendOn: boolean) => void; smsDetailData: ExtensionSmsDetailResponse | null; + mid: string; + tid: string; } diff --git a/src/entities/additional-service/ui/sms-payment/sms-payment-detail-resend.tsx b/src/entities/additional-service/ui/sms-payment/sms-payment-detail-resend.tsx index ceb17cd..c760d54 100644 --- a/src/entities/additional-service/ui/sms-payment/sms-payment-detail-resend.tsx +++ b/src/entities/additional-service/ui/sms-payment/sms-payment-detail-resend.tsx @@ -1,17 +1,47 @@ import { motion } from 'framer-motion'; import { IMAGE_ROOT } from '@/shared/constants/common'; import { SmsPaymentDetailResendProps } from '../../../additional-service/model/sms-payment/types'; +import { useExtensionSmsResendMutation } from '../../api/sms-payment/use-extension-sms-resend-mutation'; +import appBridge from '@/shared/lib/appBridge'; export const SmsPaymentDetailResend = ({ bottomSmsPaymentDetailResendOn, setBottomSmsPaymentDetailResendOn, - smsDetailData + smsDetailData, + mid, + tid }: SmsPaymentDetailResendProps) => { const variants = { hidden: { y: '100%' }, visible: { y: '0%' }, }; + + const {mutateAsync : resendMessage } = useExtensionSmsResendMutation(); + + const onClickResend = () => { + // sendMessage가 없으면 재발송 불가 + if (!smsDetailData?.sendMessage) { + return; + } + + resendMessage({ + mid: mid, + tid: tid + }).then((rs) => { + console.log("Resend 성공: ", rs); + appBridge.showToast("SMS 발송을 성공하였습니다."); + setBottomSmsPaymentDetailResendOn(false); + }).catch((error) => { + console.error("Resend 실패: ", error); + + // 실패 토스트 메시지 표시 + const errorMessage = error?.message || "알 수 없는 오류"; + const failMessage = `[실패] ${errorMessage}`; + appBridge.showToast(failMessage); + }); + } + const onClickToClose = () => { // close setBottomSmsPaymentDetailResendOn(false); @@ -52,7 +82,14 @@ export const SmsPaymentDetailResend = ({

{smsDetailData?.sendMessage || '-'}

- +
diff --git a/src/entities/additional-service/ui/sms-payment/sms-payment-filter.tsx b/src/entities/additional-service/ui/sms-payment/sms-payment-filter.tsx index 93135f8..22278a8 100644 --- a/src/entities/additional-service/ui/sms-payment/sms-payment-filter.tsx +++ b/src/entities/additional-service/ui/sms-payment/sms-payment-filter.tsx @@ -59,8 +59,8 @@ export const SmsPaymentFilter = ({ let smsTypeOption = [ { name: '전체', value: SmsType.ALL }, - { name: '가상계좌요청', value: SmsType.VACCOUNT_REQ }, - { name: '가상계좌 요청+입금', value: SmsType.VACCOUNT_REQ_DEPOSIT }, + { name: '가상계좌\n요청', value: SmsType.VACCOUNT_REQ }, + { name: '가상계좌\n요청+입금', value: SmsType.VACCOUNT_REQ_DEPOSIT }, ] const onClickToClose = () => { diff --git a/src/pages/additional-service/sms-payment/sms-payment-page.tsx b/src/pages/additional-service/sms-payment/sms-payment-page.tsx index e82f0b9..8654cf9 100644 --- a/src/pages/additional-service/sms-payment/sms-payment-page.tsx +++ b/src/pages/additional-service/sms-payment/sms-payment-page.tsx @@ -27,7 +27,8 @@ export const SmsPaymentPage = () => { const [pageParam, setPageParam] = useState(DEFAULT_PAGE_PARAM); const [filterOn, setFilterOn] = useState(false); const [mid, setMid] = useState('nictest001m'); - const [tid, setTid] = useState(''); + const [selectedTid, setSelectedTid] = useState(''); + const [selectedMid, setSelectedMid] = useState(''); const [searchCl, setSearchCl] = useState(SmsPaymentSearchType.BUYER_NAME) const [searchValue, setSearchValue] = useState('') const [fromDate, setFromDate] = useState(moment().format('YYYY-MM-DD')); @@ -107,20 +108,15 @@ export const SmsPaymentPage = () => { }); } - const onClickToOpenFilter = () => { setFilterOn(!filterOn); }; - const onClickToSort = (sort: SortByKeys) => { - setSortBy(sort); - callList({ sortBy: sort }) - }; - - const onClickToShowDetail = (selectedMid: string, selectedTid: string) => { - setTid(selectedTid); - callDetail(selectedMid, selectedTid); + const onClickToShowDetail = (itemMid: string, itemTid: string) => { + setSelectedMid(itemMid); + setSelectedTid(itemTid); + callDetail(itemMid, itemTid); setBottomSmsPaymentDetailResendOn(true); }; @@ -179,6 +175,8 @@ export const SmsPaymentPage = () => { bottomSmsPaymentDetailResendOn={bottomSmsPaymentDetailResendOn} setBottomSmsPaymentDetailResendOn={setBottomSmsPaymentDetailResendOn} smsDetailData={smsDetailData} + mid={selectedMid} + tid={selectedTid} >