From 69bafcd2c5162881fc111b58abe04237cb294345 Mon Sep 17 00:00:00 2001 From: HyeonJongKim Date: Wed, 24 Sep 2025 16:54:35 +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=20=EA=B2=B0=EC=A0=9C=20=ED=86=B5=EB=B3=B4=20?= =?UTF-8?q?=EB=A6=AC=EC=8A=A4=ED=8A=B8=20API=20=EC=97=B0=EB=8F=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../use-extension-sms-detail-mutation.ts | 4 +- .../use-extension-sms-list-mutation.ts | 29 ---- .../use-extension-sms-resend-mutation.ts | 2 +- .../use-extension-sms-detail-mutation.ts | 29 ++++ ...e-extension-sms-download-excel-mutation.ts | 2 +- .../use-extension-sms-list-mutation.ts | 29 ++++ .../use-extension-sms-resend-mutation.ts | 29 ++++ .../model/sms-payment/constant.ts | 0 .../model/sms-payment/types.ts | 71 ++++++++ .../additional-service/model/types.ts | 3 +- .../account-holder-auth-list.tsx | 1 - .../additional-service/ui/list-date-group.tsx | 2 + .../additional-service/ui/list-item.tsx | 104 +++++++---- .../sms-payment-detail-resend.tsx | 2 +- .../{ => sms-payment}/sms-payment-filter.tsx | 0 .../ui/sms-payment/sms-payment-list.tsx | 33 ++++ .../additional-service-pages.tsx | 4 +- .../sms-payment-notification-page.tsx | 149 ---------------- .../sms-payment/sms-payment-page.tsx | 163 ++++++++++++++++++ 19 files changed, 432 insertions(+), 224 deletions(-) delete mode 100644 src/entities/additional-service/api/sms-payment-notification/use-extension-sms-list-mutation.ts create mode 100644 src/entities/additional-service/api/sms-payment/use-extension-sms-detail-mutation.ts rename src/entities/additional-service/api/{sms-payment-notification => sms-payment}/use-extension-sms-download-excel-mutation.ts (96%) create mode 100644 src/entities/additional-service/api/sms-payment/use-extension-sms-list-mutation.ts create mode 100644 src/entities/additional-service/api/sms-payment/use-extension-sms-resend-mutation.ts create mode 100644 src/entities/additional-service/model/sms-payment/constant.ts create mode 100644 src/entities/additional-service/model/sms-payment/types.ts rename src/entities/additional-service/ui/{ => sms-payment}/sms-payment-detail-resend.tsx (96%) rename src/entities/additional-service/ui/{ => sms-payment}/sms-payment-filter.tsx (100%) create mode 100644 src/entities/additional-service/ui/sms-payment/sms-payment-list.tsx delete mode 100644 src/pages/additional-service/sms-payment-notification/sms-payment-notification-page.tsx create mode 100644 src/pages/additional-service/sms-payment/sms-payment-page.tsx 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 index c71049b..8c2f433 100644 --- 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 @@ -5,7 +5,7 @@ import { CBDCAxiosError } from '@/shared/@types/error'; import { ExtensionSmsDetailParams, ExtensionSmsDetailResponse -} from '../../model/types'; +} from '../../model/sms-payment/types'; import { useMutation, UseMutationOptions @@ -17,7 +17,7 @@ export const extensionSmsDetail = (params: ExtensionSmsDetailParams) => { ); }; -export const useExtensionSmsListMutation = (options?: UseMutationOptions) => { +export const useExtensionSmsDetailMutation = (options?: UseMutationOptions) => { const mutation = useMutation({ ...options, mutationFn: (params: ExtensionSmsDetailParams) => extensionSmsDetail(params), diff --git a/src/entities/additional-service/api/sms-payment-notification/use-extension-sms-list-mutation.ts b/src/entities/additional-service/api/sms-payment-notification/use-extension-sms-list-mutation.ts deleted file mode 100644 index 6ae4e27..0000000 --- a/src/entities/additional-service/api/sms-payment-notification/use-extension-sms-list-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 { - ExtensionSmsListParams, - ExtensionSmsListResponse -} from '../../model/types'; -import { - useMutation, - UseMutationOptions -} from '@tanstack/react-query'; - -export const extensionSmsList = (params: ExtensionSmsListParams) => { - return resultify( - axios.post(API_URL_ADDITIONAL_SERVICE.extensionSmsList(), params), - ); -}; - -export const useExtensionSmsListMutation = (options?: UseMutationOptions) => { - const mutation = useMutation({ - ...options, - mutationFn: (params: ExtensionSmsListParams) => extensionSmsList(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 index 7f83497..db9505d 100644 --- 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 @@ -5,7 +5,7 @@ import { CBDCAxiosError } from '@/shared/@types/error'; import { ExtensionSmsResendParams, ExtensionSmsResendResponse -} from '../../model/types'; +} from '../../model/sms-payment/types'; import { useMutation, UseMutationOptions diff --git a/src/entities/additional-service/api/sms-payment/use-extension-sms-detail-mutation.ts b/src/entities/additional-service/api/sms-payment/use-extension-sms-detail-mutation.ts new file mode 100644 index 0000000..8c2f433 --- /dev/null +++ b/src/entities/additional-service/api/sms-payment/use-extension-sms-detail-mutation.ts @@ -0,0 +1,29 @@ +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-download-excel-mutation.ts b/src/entities/additional-service/api/sms-payment/use-extension-sms-download-excel-mutation.ts similarity index 96% rename from src/entities/additional-service/api/sms-payment-notification/use-extension-sms-download-excel-mutation.ts rename to src/entities/additional-service/api/sms-payment/use-extension-sms-download-excel-mutation.ts index eeb447e..57f2cca 100644 --- a/src/entities/additional-service/api/sms-payment-notification/use-extension-sms-download-excel-mutation.ts +++ b/src/entities/additional-service/api/sms-payment/use-extension-sms-download-excel-mutation.ts @@ -5,7 +5,7 @@ import { CBDCAxiosError } from '@/shared/@types/error'; import { ExtensionSmsDownloadExcelParams, ExtensionSmsDownloadExcelResponse -} from '../../model/types'; +} from '../../model/sms-payment/types'; import { useMutation, UseMutationOptions diff --git a/src/entities/additional-service/api/sms-payment/use-extension-sms-list-mutation.ts b/src/entities/additional-service/api/sms-payment/use-extension-sms-list-mutation.ts new file mode 100644 index 0000000..7b27d4f --- /dev/null +++ b/src/entities/additional-service/api/sms-payment/use-extension-sms-list-mutation.ts @@ -0,0 +1,29 @@ +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 { + ExtensionSmsPaymentListParams, + ExtensionSmsPaymentListResponse +} from '../../model/sms-payment/types'; +import { + useMutation, + UseMutationOptions +} from '@tanstack/react-query'; + +export const extensionSmsList = (params: ExtensionSmsPaymentListParams) => { + return resultify( + axios.post(API_URL_ADDITIONAL_SERVICE.extensionSmsList(), params), + ); +}; + +export const useExtensionSmsListMutation = (options?: UseMutationOptions) => { + const mutation = useMutation({ + ...options, + mutationFn: (params: ExtensionSmsPaymentListParams) => extensionSmsList(params), + }); + + return { + ...mutation, + }; +}; diff --git a/src/entities/additional-service/api/sms-payment/use-extension-sms-resend-mutation.ts b/src/entities/additional-service/api/sms-payment/use-extension-sms-resend-mutation.ts new file mode 100644 index 0000000..db9505d --- /dev/null +++ b/src/entities/additional-service/api/sms-payment/use-extension-sms-resend-mutation.ts @@ -0,0 +1,29 @@ +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/constant.ts b/src/entities/additional-service/model/sms-payment/constant.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/entities/additional-service/model/sms-payment/types.ts b/src/entities/additional-service/model/sms-payment/types.ts new file mode 100644 index 0000000..097bd4b --- /dev/null +++ b/src/entities/additional-service/model/sms-payment/types.ts @@ -0,0 +1,71 @@ +import { DefaulResponsePagination, DefaultRequestPagination } from '@/entities/common/model/types'; +import { ExtensionRequestParams, ListItemProps } from '../types'; + +export enum SmsType { + ALL = "ALL", + VACCOUNT_REQ = "VACCOUNT_REQ", + VACCOUNT_REQ_DEPOSIT = "VACCOUNT_REQ_DEPOSIT" +} + +export enum SmsPaymentSearchType { + BUYER_NAME = "BUYER_NAME", + RECEIVE_PHONE_NUMBER = "RECEIVE_PHONE_NUMBER" +} + +export interface SmsPaymentListItem { + mid?: string; + tid?: string; + paymentDate?: string; + paymentStatus?: string; + smsCl?: string; +} + +export interface SmsPaymentListProps { + listItems: Record>; + mid: string; +} + +export interface ExtensionSmsPaymentListParams extends ExtensionRequestParams { + searchCl: SmsPaymentSearchType; + searchValue: string; + fromDate: string; + toDate: string; + smsCl: string; + page?: DefaultRequestPagination; +} + +export interface ExtensionSmsPaymentListResponse extends DefaulResponsePagination { + content: Array +} + +export interface ExtensionSmsDownloadExcelParams extends ExtensionRequestParams { + searchCl?: SmsPaymentSearchType; + searchValue: string; + fromDate: string; + toDate: string; + smsCl?: string; +} + +export interface ExtensionSmsDownloadExcelResponse { + status: boolean; +} + +export interface ExtensionSmsDetailParams extends ExtensionRequestParams { + tid: string; +} + +export interface ExtensionSmsDetailResponse { + senderNumber: string; + senderName: string; + receiverNumber: string; + receiverName: string; + sendMessage: string; +} + +export interface ExtensionSmsResendParams extends ExtensionRequestParams { + tid: string; +} + +export interface ExtensionSmsResendResponse { + status: boolean; +} diff --git a/src/entities/additional-service/model/types.ts b/src/entities/additional-service/model/types.ts index e5c9b80..39dbc6e 100644 --- a/src/entities/additional-service/model/types.ts +++ b/src/entities/additional-service/model/types.ts @@ -3,6 +3,7 @@ import { PayoutContent } from './payout/types'; import { FundAccountTransferContentItem, FundAccountResultContentItem } from './fund-account/types'; import { ArsListContent } from './ars/types'; import { AlimtalkListContent } from './alimtalk/types'; +import { SmsPaymentListItem } from './sms-payment/types'; // ======================================== // 공통 Enums 및 타입들 @@ -391,7 +392,7 @@ export interface SettlementAgencyBottomAgreeProps { export interface ListItemProps extends KeyInPaymentListItem, AccountHolderSearchListItem, AccountHolderAuthListItem, LinkPaymentHistoryListItem, - LinkPaymentWaitListItem, + LinkPaymentWaitListItem, SmsPaymentListItem, PayoutContent, FundAccountTransferContentItem, FundAccountResultContentItem, ArsListContent, AlimtalkListContent { diff --git a/src/entities/additional-service/ui/account-holder-auth/account-holder-auth-list.tsx b/src/entities/additional-service/ui/account-holder-auth/account-holder-auth-list.tsx index e98347e..c475d17 100644 --- a/src/entities/additional-service/ui/account-holder-auth/account-holder-auth-list.tsx +++ b/src/entities/additional-service/ui/account-holder-auth/account-holder-auth-list.tsx @@ -1,4 +1,3 @@ -import { PATHS } from '@/shared/constants/paths'; import { ListDateGroup } from '../list-date-group'; import { AccountHolderAuthListProps, AdditionalServiceCategory } from '../../model/types'; diff --git a/src/entities/additional-service/ui/list-date-group.tsx b/src/entities/additional-service/ui/list-date-group.tsx index ce9e906..0b36445 100644 --- a/src/entities/additional-service/ui/list-date-group.tsx +++ b/src/entities/additional-service/ui/list-date-group.tsx @@ -63,6 +63,8 @@ export const ListDateGroup = ({ sendCl={ items[i]?.sendCl } paymentMethod={ items[i]?.paymentMethod } receiverName={ items[i]?.receiverName } + + smsCl= { items[i]?.smsCl } > ) } diff --git a/src/entities/additional-service/ui/list-item.tsx b/src/entities/additional-service/ui/list-item.tsx index 42169fd..ff2bbd0 100644 --- a/src/entities/additional-service/ui/list-item.tsx +++ b/src/entities/additional-service/ui/list-item.tsx @@ -13,19 +13,21 @@ export const ListItem = ({ amount, sendDate, sendStatus, sendMethod, scheduledSendDate, processStatus, - accountName,transferStatus, + accountName, transferStatus, submallId, settlementDate, companyName, disbursementStatus, disbursementAmount, - transferAmount, receiveBankName, + transferAmount, receiveBankName, receiveAccountNo, receiveAccountName, status, processDate, orderStatus, arsPaymentMethod, alimCl, sendType, sendCl, - paymentMethod, receiverName + paymentMethod, receiverName, + + smsCl }: ListItemProps) => { const { navigate } = useNavigate(); const getItemClass = () => { @@ -100,13 +102,21 @@ export const ListItem = ({ } else { rs = 'gray' } + } else if (additionalServiceCategory === AdditionalServiceCategory.SMSPayment) { + if (smsCl === "VACCOUNT_REQ_DEPOSIT") { + rs = 'blue' + } else { + rs = 'gray' + } } return rs; }; const onClickToNavigate = () => { - if (additionalServiceCategory === AdditionalServiceCategory.KeyInPayment) { + if (additionalServiceCategory === AdditionalServiceCategory.KeyInPayment || + additionalServiceCategory === AdditionalServiceCategory.SMSPayment + ) { return; } @@ -176,7 +186,7 @@ export const ListItem = ({ } }); } - else if (additionalServiceCategory === AdditionalServiceCategory.Ars){ + else if (additionalServiceCategory === AdditionalServiceCategory.Ars) { navigate(PATHS.additionalService.ars.detail, { state: { additionalServiceCategory: additionalServiceCategory, @@ -186,7 +196,7 @@ export const ListItem = ({ } }); } - else if (additionalServiceCategory === AdditionalServiceCategory.Alimtalk){ + else if (additionalServiceCategory === AdditionalServiceCategory.Alimtalk) { navigate(PATHS.additionalService.alimtalk.detail, { state: { additionalServiceCategory: additionalServiceCategory, @@ -220,11 +230,11 @@ export const ListItem = ({ else if (additionalServiceCategory === AdditionalServiceCategory.FundAccountResult) { timeStr = moment(requestDate).format('mm:ss'); } - else if (additionalServiceCategory === AdditionalServiceCategory.Ars){ + else if (additionalServiceCategory === AdditionalServiceCategory.Ars) { let time = paymentDate?.substring(8, 12); timeStr = time?.substring(0, 2) + ':' + time?.substring(2, 4); } - else if (additionalServiceCategory === AdditionalServiceCategory.Alimtalk){ + else if (additionalServiceCategory === AdditionalServiceCategory.Alimtalk) { let time = paymentDate?.substring(8, 12); timeStr = time?.substring(0, 2) + ':' + time?.substring(2, 4); } @@ -257,16 +267,19 @@ export const ListItem = ({ else if (additionalServiceCategory === AdditionalServiceCategory.Payout) { str = companyName; } - else if(additionalServiceCategory === AdditionalServiceCategory.FundAccountTransfer){ + else if (additionalServiceCategory === AdditionalServiceCategory.FundAccountTransfer) { str = `${receiveAccountName}(${receiveAccountNo})`; } - else if(additionalServiceCategory === AdditionalServiceCategory.FundAccountResult){ + else if (additionalServiceCategory === AdditionalServiceCategory.FundAccountResult) { str = `${receiveAccountName}(${receiveAccountNo})`; } - else if(additionalServiceCategory === AdditionalServiceCategory.Ars){ + else if (additionalServiceCategory === AdditionalServiceCategory.SMSPayment) { + str = `${paymentDate}(${paymentStatus})[추후 수정 필요]` + } + else if (additionalServiceCategory === AdditionalServiceCategory.Ars) { str = '이름(' + tid + ')'; } - else if(additionalServiceCategory === AdditionalServiceCategory.Alimtalk){ + else if (additionalServiceCategory === AdditionalServiceCategory.Alimtalk) { str = `${receiverName}(${tid})`; } @@ -277,7 +290,7 @@ export const ListItem = ({ let rs = []; if (additionalServiceCategory === AdditionalServiceCategory.KeyInPayment) { rs.push( -
+
{getTime()} | {paymentStatus} @@ -295,7 +308,7 @@ export const ListItem = ({ } else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderSearch) { rs.push( -
+
{getTime()} | {bankName} @@ -305,7 +318,7 @@ export const ListItem = ({ else if (additionalServiceCategory === AdditionalServiceCategory.LinkPaymentHistory) { if (paymentStatus === "PAYMENT_FAIL" || paymentStatus === "INACTIVE") { rs.push( -
+
{getPaymentStatusText(paymentStatus)} | {getSendMethodText(sendMethod)} @@ -313,7 +326,7 @@ export const ListItem = ({ ) } else { rs.push( -
+
{getPaymentStatusText(paymentStatus)} | {getSendMethodText(sendMethod)} @@ -325,7 +338,7 @@ export const ListItem = ({ } else if (additionalServiceCategory === AdditionalServiceCategory.LinkPaymentWait) { rs.push( -
+
{getProcessStatusText(processStatus)} | {getSendMethodText(sendMethod)} @@ -341,48 +354,57 @@ export const ListItem = ({
); } - else if(additionalServiceCategory === AdditionalServiceCategory.FundAccountTransfer){ + else if (additionalServiceCategory === AdditionalServiceCategory.FundAccountTransfer) { rs.push(
- { getTime() } + {getTime()} | - { status } + {status}
); } - else if(additionalServiceCategory === AdditionalServiceCategory.FundAccountResult){ + else if (additionalServiceCategory === AdditionalServiceCategory.FundAccountResult) { rs.push(
- { getTime() } + {getTime()} | - { status } + {status}
); } - else if(additionalServiceCategory === AdditionalServiceCategory.Ars){ + else if (additionalServiceCategory === AdditionalServiceCategory.Ars) { rs.push(
- { getTime() } + {getTime()} | - { paymentStatus } + {paymentStatus} | - { orderStatus } + {orderStatus} | - { arsPaymentMethod } + {arsPaymentMethod}
); } - else if(additionalServiceCategory === AdditionalServiceCategory.Alimtalk){ + else if (additionalServiceCategory === AdditionalServiceCategory.Alimtalk) { rs.push(
- { getTime() } + {getTime()} | - { paymentMethod } + {paymentMethod} | - { alimCl } + {alimCl}
); } + else if (additionalServiceCategory === AdditionalServiceCategory.SMSPayment) { + rs.push( +
+ {mid} + | + {smsCl} +
+ ) + } return rs; }; @@ -394,7 +416,7 @@ export const ListItem = ({ {resultStatus === 'SUCCESS' ? '성공' : '실패'}
); - } + } else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderAuth) { rs.push(
@@ -493,9 +515,17 @@ export const ListItem = ({
{ sendCl }
+ >{sendCl}
); } + else if (additionalServiceCategory === AdditionalServiceCategory.SMSPayment) { + rs.push( +
{'재발송'}
+ ) + } return rs; } @@ -509,10 +539,10 @@ export const ListItem = ({
-
{ getTitle() }
- { getDetail() } +
{getTitle()}
+ {getDetail()}
- { getAmount() } + {getAmount()}
); diff --git a/src/entities/additional-service/ui/sms-payment-detail-resend.tsx b/src/entities/additional-service/ui/sms-payment/sms-payment-detail-resend.tsx similarity index 96% rename from src/entities/additional-service/ui/sms-payment-detail-resend.tsx rename to src/entities/additional-service/ui/sms-payment/sms-payment-detail-resend.tsx index 5defb8d..91bd938 100644 --- a/src/entities/additional-service/ui/sms-payment-detail-resend.tsx +++ b/src/entities/additional-service/ui/sms-payment/sms-payment-detail-resend.tsx @@ -1,6 +1,6 @@ import { motion } from 'framer-motion'; import { IMAGE_ROOT } from '@/shared/constants/common'; -import { SmsPaymentDetailResendProps } from '../model/types'; +import { SmsPaymentDetailResendProps } from '../../model/types'; export const SmsPaymentDetailResend = ({ bottomSmsPaymentDetailResendOn, diff --git a/src/entities/additional-service/ui/sms-payment-filter.tsx b/src/entities/additional-service/ui/sms-payment/sms-payment-filter.tsx similarity index 100% rename from src/entities/additional-service/ui/sms-payment-filter.tsx rename to src/entities/additional-service/ui/sms-payment/sms-payment-filter.tsx diff --git a/src/entities/additional-service/ui/sms-payment/sms-payment-list.tsx b/src/entities/additional-service/ui/sms-payment/sms-payment-list.tsx new file mode 100644 index 0000000..d1fab73 --- /dev/null +++ b/src/entities/additional-service/ui/sms-payment/sms-payment-list.tsx @@ -0,0 +1,33 @@ +import { SmsPaymentListProps } from '../../model/sms-payment/types'; +import { AdditionalServiceCategory } from '../../model/types'; +import { ListDateGroup } from '../list-date-group'; + +export const SmsPaymentList = ({ + listItems, + mid +}: SmsPaymentListProps) => { + + const getListDateGroup = () => { + let rs = []; + for (const [key, value] of Object.entries(listItems)) { + rs.push( + + ) + } + return rs; + }; + + return ( + <> +
+ {getListDateGroup()} +
+ + ) +} \ No newline at end of file diff --git a/src/pages/additional-service/additional-service-pages.tsx b/src/pages/additional-service/additional-service-pages.tsx index 285b933..14ae267 100644 --- a/src/pages/additional-service/additional-service-pages.tsx +++ b/src/pages/additional-service/additional-service-pages.tsx @@ -7,7 +7,7 @@ import { ArsDetailPage } from './ars/detail-page'; import { ArsRequestPage } from './ars/request-page'; import { ArsRequestSuccessPage } from './ars/request-success-page'; import { KeyInPaymentPage } from './key-in-payment/key-in-payment-page'; -import { SmsPaymentNotificationPage } from './sms-payment-notification/sms-payment-notification-page'; +import { SmsPaymentPage } from './sms-payment/sms-payment-page'; import { AccountHolderSearchPage } from './account-holder-search/account-holder-search-page'; import { AccountHolderAuthPage } from './account-holder-auth/account-holder-auth-page'; import { LinkPaymentHistoryPage } from './link-payment/link-payment-history-page'; @@ -56,7 +56,7 @@ export const AdditionalServicePages = () => { } /> } /> - } /> + } /> } /> } /> diff --git a/src/pages/additional-service/sms-payment-notification/sms-payment-notification-page.tsx b/src/pages/additional-service/sms-payment-notification/sms-payment-notification-page.tsx deleted file mode 100644 index 93d3ffc..0000000 --- a/src/pages/additional-service/sms-payment-notification/sms-payment-notification-page.tsx +++ /dev/null @@ -1,149 +0,0 @@ -import { useState } from 'react'; -import { IMAGE_ROOT } from '@/shared/constants/common'; -import { SmsPaymentDetailResend } from '@/entities/additional-service/ui/sms-payment-detail-resend'; -import { HeaderType } from '@/entities/common/model/types'; -import { - useSetHeaderTitle, - useSetHeaderType, - useSetFooterMode -} from '@/widgets/sub-layout/use-sub-layout'; - -export const SmsPaymentNotificationPage = () => { - const [bottomSmsPaymentDetailResendOn, setBottomSmsPaymentDetailResendOn] = useState(false) - - useSetHeaderTitle('SMS 결제 통보'); - useSetHeaderType(HeaderType.LeftArrow); - useSetFooterMode(true); - - const onClickToShowDetail = () => { - setBottomSmsPaymentDetailResendOn(true); - }; - - return ( - <> -
-
-
-
-
-
- - -
- -
-
-
-
-
25.06.08(일)
-
onClickToShowDetail() } - > -
-
-
-
-
김*환(7000)
-
- nictest01m - - 가상계좌 요청 -
-
-
재발송
-
- -
-
-
-
-
-
최*길(010333*****)
-
- nictest01m - - 가상계좌 요청+입금 -
-
-
재발송
-
- -
-
-
-
-
-
박*준(010333*****)
-
- nictest01m - - 가상계좌 요청+입금 -
-
-
재발송
-
- -
-
-
-
-
-
이*신(010333*****)
-
- nictest01m - - 가상계좌 요청 -
-
-
재발송
-
- -
-
-
-
-
-
김*환(010333*****)
-
- nictest01m - | - 가상계좌 요청 -
-
-
재발송
-
-
-
-
-
-
- - - - ); -}; \ No newline at end of file diff --git a/src/pages/additional-service/sms-payment/sms-payment-page.tsx b/src/pages/additional-service/sms-payment/sms-payment-page.tsx new file mode 100644 index 0000000..26c36be --- /dev/null +++ b/src/pages/additional-service/sms-payment/sms-payment-page.tsx @@ -0,0 +1,163 @@ +import moment from 'moment'; +import { useEffect, useState } from 'react'; +import { useNavigate } from '@/shared/lib/hooks/use-navigate'; +import { IMAGE_ROOT } from '@/shared/constants/common'; +import { SmsPaymentDetailResend } from '@/entities/additional-service/ui/sms-payment/sms-payment-detail-resend'; +import { HeaderType, SortByKeys } from '@/entities/common/model/types'; +import { DEFAULT_PAGE_PARAM } from '@/entities/common/model/constant'; +import { + useSetHeaderTitle, + useSetHeaderType, + useSetFooterMode +} from '@/widgets/sub-layout/use-sub-layout'; +import { SmsPaymentListItem, SmsPaymentSearchType, SmsType } from '@/entities/additional-service/model/sms-payment/types'; +import { useExtensionSmsListMutation } from '@/entities/additional-service/api/sms-payment/use-extension-sms-list-mutation'; +import { useExtensionSmsDownloadExcelMutation } from '@/entities/additional-service/api/sms-payment/use-extension-sms-download-excel-mutation'; +import { SmsPaymentList } from '@/entities/additional-service/ui/sms-payment/sms-payment-list'; + + +export const SmsPaymentPage = () => { + const { navigate } = useNavigate(); + const [bottomSmsPaymentDetailResendOn, setBottomSmsPaymentDetailResendOn] = useState(false) + + const [sortBy, setSortBy] = useState(SortByKeys.New); + const [listItems, setListItems] = useState({}); + const [pageParam, setPageParam] = useState(DEFAULT_PAGE_PARAM); + const [filterOn, setFilterOn] = useState(false); + const [mid, setMid] = useState('nictest001m'); + const [searchCl, setSearchCl] = useState(SmsPaymentSearchType.BUYER_NAME) + const [searchValue, setSearchValue] = useState('') + const [fromDate, setFromDate] = useState(moment().format('YYYY-MM-DD')); + const [toDate, setToDate] = useState(moment().format('YYYY-MM-DD')); + const [smsCl, setSmsCl] = useState(SmsType.ALL); + + const { mutateAsync: smsPaymentList } = useExtensionSmsListMutation(); + const { mutateAsync: downloadExcel } = useExtensionSmsDownloadExcelMutation(); + + useSetHeaderTitle('SMS 결제 통보'); + useSetHeaderType(HeaderType.LeftArrow); + useSetFooterMode(true); + + const callList = (option?: { + sortBy?: string, + val?: string + }) => { + pageParam.sortBy = (option?.sortBy) ? option.sortBy : sortBy; + setPageParam(pageParam); + + let listParams = { + mid: mid, + searchCl: searchCl, + searchValue: searchValue, + fromDate: fromDate, + toDate: toDate, + smsCl: smsCl === SmsType.ALL ? '' : smsCl, + page: pageParam + } + + smsPaymentList(listParams).then((rs) => { + setListItems(assembleData(rs.content)); + }) + } + + const assembleData = (content: Array) => { + let data: any = {}; + if (content && content.length > 0) { + for (let i = 0; i < content?.length; i++) { + let paymentDate = content[i]?.paymentDate?.substring(0, 8); + let groupDate = moment(paymentDate).format('YYYYMMDD'); + if (!!groupDate && !data.hasOwnProperty(groupDate)) { + data[groupDate] = []; + } + if (!!groupDate && data.hasOwnProperty(groupDate)) { + data[groupDate].push(content[i]); + } + } + } + console.log('Data : ', data) + return data; + }; + + const onClickToDownloadExcel = () => { + downloadExcel({ + mid: mid, + searchCl: searchCl, + searchValue: searchValue, + fromDate: fromDate, + toDate: toDate, + smsCl: smsCl === SmsType.ALL ? '' : smsCl, + }) + } + + + const onClickToOpenFilter = () => { + setFilterOn(!filterOn); + }; + + const onClickToSort = (sort: SortByKeys) => { + setSortBy(sort); + callList({ sortBy: sort }) + }; + + + const onClickToShowDetail = () => { + setBottomSmsPaymentDetailResendOn(true); + }; + + useEffect(() => { + callList(); + }, []); + + return ( + <> +
+
+
+
+
+
+ + +
+ +
+
+
+ +
+
+
+ + + + ); +}; \ No newline at end of file