From 8f873c3f74be1b25c82085a3cbf8d3d49216edd4 Mon Sep 17 00:00:00 2001 From: HyeonJongKim Date: Fri, 21 Nov 2025 13:53:58 +0900 Subject: [PATCH] =?UTF-8?q?-=20=EB=A7=81=ED=81=AC=EA=B2=B0=EC=A0=9C=20?= =?UTF-8?q?=EB=88=84=EB=9D=BD=EB=90=9C=20=EA=B2=B0=EC=A0=9C=EC=88=98?= =?UTF-8?q?=EB=8B=A8=20=ED=95=84=ED=84=B0=20=EB=B0=8F=20=EB=A6=AC=EC=8A=A4?= =?UTF-8?q?=ED=8A=B8=20=EB=88=84=EB=9D=BD=ED=95=AD=EB=AA=A9=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 --- .../model/link-pay/constant.ts | 36 +++++++++++++++++-- .../model/link-pay/types.ts | 4 +++ .../filter/link-payment-history-filter.tsx | 17 +++++++-- .../link-payment-history-wrap.tsx | 5 ++- .../additional-service/ui/list-item.tsx | 15 +++++--- src/locales/en.json | 13 ++++++- src/locales/ko.json | 18 ++++++++-- 7 files changed, 93 insertions(+), 15 deletions(-) diff --git a/src/entities/additional-service/model/link-pay/constant.ts b/src/entities/additional-service/model/link-pay/constant.ts index a655cb0..8c21cf0 100644 --- a/src/entities/additional-service/model/link-pay/constant.ts +++ b/src/entities/additional-service/model/link-pay/constant.ts @@ -1,8 +1,40 @@ import { TFunction } from 'i18next'; -import { LinkPaymentProcessStatus } from "./types"; +import { LinkPaymentPaymentMethod, LinkPaymentProcessStatus } from "./types"; export const getProcessStatusBtnGroup = (t: TFunction) => [ { name: t('transaction.constants.all'), value: LinkPaymentProcessStatus.ALL }, { name: t('additionalService.linkPay.sendRequest'), value: LinkPaymentProcessStatus.SEND_REQUEST }, { name: t('additionalService.linkPay.sendCancel'), value: LinkPaymentProcessStatus.SEND_CANCEL } -] \ No newline at end of file +] + +export const getPaymentMethodOptionGroup = (t: TFunction) => [ + { name: t('additionalService.linkPayment.paymentMethod.all'), value: '' }, + { name: t('additionalService.linkPayment.paymentMethod.card'), value: LinkPaymentPaymentMethod.CARD}, + { name: t('additionalService.linkPayment.paymentMethod.bank'), value: LinkPaymentPaymentMethod.BANK}, + { name: t('additionalService.linkPayment.paymentMethod.virtualAccount'), value: LinkPaymentPaymentMethod.VIRTURE_BANK}, + { name: t('additionalService.linkPayment.paymentMethod.phone'), value: LinkPaymentPaymentMethod.PHONE}, + { name: t('additionalService.linkPayment.paymentMethod.cultureland'), value: LinkPaymentPaymentMethod.CULTURELAND}, + { name: t('additionalService.linkPayment.paymentMethod.ssgMoney'), value: LinkPaymentPaymentMethod.SSG_MONEY}, + { name: t('additionalService.linkPayment.paymentMethod.ssgBank'), value: LinkPaymentPaymentMethod.SSG_BANK}, + { name: t('additionalService.linkPayment.paymentMethod.cmsBank'), value: LinkPaymentPaymentMethod.CMS_BANK}, //계좌간편결제 + { name: t('additionalService.linkPayment.paymentMethod.tmoneyPay'), value: LinkPaymentPaymentMethod.TMONEY_PAY}, +] + +export const getPaymentMethodText = (t: TFunction) => (status?: string): string => { + if (!status) return ''; + + const paymentMethodMap: Record = { + [LinkPaymentPaymentMethod.ALL]: t('additionalService.linkPayment.paymentMethod.all'), + [LinkPaymentPaymentMethod.CARD]: t('additionalService.linkPayment.paymentMethod.card'), + [LinkPaymentPaymentMethod.BANK]: t('additionalService.linkPayment.paymentMethod.bank'), + [LinkPaymentPaymentMethod.VIRTURE_BANK]: t('additionalService.linkPayment.paymentMethod.virtualAccount'), + [LinkPaymentPaymentMethod.PHONE]: t('additionalService.linkPayment.paymentMethod.phone'), + [LinkPaymentPaymentMethod.CULTURELAND]: t('additionalService.linkPayment.paymentMethod.cultureland'), + [LinkPaymentPaymentMethod.SSG_MONEY]: t('additionalService.linkPayment.paymentMethod.ssgMoney'), + [LinkPaymentPaymentMethod.SSG_BANK]: t('additionalService.linkPayment.paymentMethod.ssgBank'), + [LinkPaymentPaymentMethod.CMS_BANK]: t('additionalService.linkPayment.paymentMethod.cmsBank'), + [LinkPaymentPaymentMethod.TMONEY_PAY]: t('additionalService.linkPayment.paymentMethod.tmoneyPay') + } + + return paymentMethodMap[status as LinkPaymentPaymentMethod] || status; +} \ No newline at end of file diff --git a/src/entities/additional-service/model/link-pay/types.ts b/src/entities/additional-service/model/link-pay/types.ts index 819197f..a51e75e 100644 --- a/src/entities/additional-service/model/link-pay/types.ts +++ b/src/entities/additional-service/model/link-pay/types.ts @@ -20,6 +20,7 @@ export enum LinkPaymentSearchCl { } export enum LinkPaymentPaymentMethod { + ALL = "", CARD = "CARD", BANK = "BANK", VIRTURE_BANK = "VIRTURE_BANK", @@ -124,6 +125,7 @@ export interface LinkPaymentHistoryFilterProps extends FilterProps { mid: string; searchCl: LinkPaymentSearchCl; searchValue: string; + paymentMethod: LinkPaymentPaymentMethod; fromDate: string; toDate: string; paymentStatus: LinkPaymentPaymentStatus; @@ -132,6 +134,7 @@ export interface LinkPaymentHistoryFilterProps extends FilterProps { setMid: (mid: string) => void; setSearchType: (searchType: LinkPaymentSearchCl) => void; setSearchKeyword: (searchKeyWorld: string) => void; + setPaymentMethod: (paymentMethod: LinkPaymentPaymentMethod) => void; setStartDate: (startDate: string) => void; setEndDate: (endDate: string) => void; setPaymentStatus: (transactionStatus: LinkPaymentPaymentStatus) => void; @@ -161,6 +164,7 @@ export interface LinkPaymentWaitFilterProps extends FilterProps { export interface ExtensionLinkPayHistoryListParams extends ExtensionRequestParams { searchCl: string; searchValue: string; + paymentMethod: LinkPaymentPaymentMethod; fromDate: string; toDate: string; paymentStatus: LinkPaymentPaymentStatus; diff --git a/src/entities/additional-service/ui/link-payment/filter/link-payment-history-filter.tsx b/src/entities/additional-service/ui/link-payment/filter/link-payment-history-filter.tsx index 13dbecd..dfd538a 100644 --- a/src/entities/additional-service/ui/link-payment/filter/link-payment-history-filter.tsx +++ b/src/entities/additional-service/ui/link-payment/filter/link-payment-history-filter.tsx @@ -13,11 +13,12 @@ import { FilterCalendar } from '@/shared/ui/filter/calendar'; import { FilterButtonGroups } from '@/shared/ui/filter/button-groups'; import { FilterMotionDuration, FilterMotionStyle, FilterMotionVariants } from '@/entities/common/model/constant'; import { useStore } from '@/shared/model/store'; -import { LinkPaymentHistoryFilterProps, LinkPaymentPaymentStatus, LinkPaymentSearchCl, LinkPaymentSendMethod, LinkPaymentSendStatus } from '@/entities/additional-service/model/link-pay/types'; +import { LinkPaymentHistoryFilterProps, LinkPaymentPaymentMethod, LinkPaymentPaymentStatus, LinkPaymentSearchCl, LinkPaymentSendMethod, LinkPaymentSendStatus } from '@/entities/additional-service/model/link-pay/types'; import { FilterSelectMid } from '@/shared/ui/filter/select-mid'; import { useTranslation } from 'react-i18next'; import { FullMenuClose } from '@/entities/common/ui/full-menu-close'; import { useKeyboardAware } from '@/shared/lib/hooks'; +import { getPaymentMethodOptionGroup } from '@/entities/additional-service/model/link-pay/constant'; export const LinkPaymentHistoryFilter = ({ filterOn, @@ -25,6 +26,7 @@ export const LinkPaymentHistoryFilter = ({ mid, searchCl, searchValue, + paymentMethod, fromDate, toDate, paymentStatus, @@ -33,6 +35,7 @@ export const LinkPaymentHistoryFilter = ({ setMid, setSearchType, setSearchKeyword, + setPaymentMethod, setStartDate, setEndDate, setPaymentStatus, @@ -44,6 +47,7 @@ export const LinkPaymentHistoryFilter = ({ const [filterMid, setFilterMid] = useState(mid); const [filterSearchCl, setFilterSearchCl] = useState(searchCl); const [filterSearchValue, setFilterSearchValue] = useState(searchValue); + const [filterPaymentMethod, setFilterPaymentMethod] = useState(paymentMethod); const [filterStartDate, setFilterStartDate] = useState(fromDate); const [filterEndDate, setFilterEndDate] = useState(toDate); const [filterTransactionStatus, setFilterTransactionStatus] = useState(paymentStatus) @@ -85,6 +89,7 @@ export const LinkPaymentHistoryFilter = ({ setMid(filterMid); setSearchType(filterSearchCl); setSearchKeyword(filterSearchValue); + setPaymentMethod(filterPaymentMethod); setStartDate(filterStartDate); setEndDate(filterEndDate); setPaymentStatus(filterTransactionStatus); @@ -112,7 +117,7 @@ export const LinkPaymentHistoryFilter = ({
@@ -131,8 +136,14 @@ export const LinkPaymentHistoryFilter = ({ selectOptions={searchTypeOption} inputValue={filterSearchValue} inputSetter={setFilterSearchValue} - handleInputFocus={ handleInputFocus } + handleInputFocus={handleInputFocus} > + { mid: mid, searchCl: searchCl, searchValue: searchValue, + paymentMethod: paymentMethod, fromDate: fromDate, toDate: toDate, paymentStatus: paymentStatus, @@ -333,6 +334,7 @@ export const LinkPaymentHistoryWrap = () => { mid={mid} searchCl={searchCl} searchValue={searchValue} + paymentMethod={paymentMethod} fromDate={fromDate} toDate={toDate} paymentStatus={paymentStatus} @@ -341,6 +343,7 @@ export const LinkPaymentHistoryWrap = () => { setMid={setMid} setSearchType={setSearchCl} setSearchKeyword={setSearchValue} + setPaymentMethod={setPaymentMethod} setStartDate={setFromDate} setEndDate={setToDate} setPaymentStatus={setPaymentStatus} diff --git a/src/entities/additional-service/ui/list-item.tsx b/src/entities/additional-service/ui/list-item.tsx index 4665fa7..ca76dca 100644 --- a/src/entities/additional-service/ui/list-item.tsx +++ b/src/entities/additional-service/ui/list-item.tsx @@ -14,6 +14,7 @@ import { ServiceCode } from '../model/alimtalk/types'; import { getAlimtalkAlimClText, getAlimtalkSendClTypeText, getAlimtalkSendTypeText, getAlimtalkServiceCodeText } from '../model/alimtalk/constant'; import { getAuthResultStatusText, getTransTypeText } from '../model/face-auth/constant'; import { getPayoutStatusText } from '../model/payout/constant'; +import { getPaymentMethodText } from '../model/link-pay/constant'; export const ListItem = ({ additionalServiceCategory, @@ -376,9 +377,9 @@ export const ListItem = ({ } else if (additionalServiceCategory === AdditionalServiceCategory.LinkPaymentHistory ) { - str = `${getMaskedName(buyerName)}`; + str = receiverInfo ? `${getMaskedName(buyerName)}(${receiverInfo})` : `${getMaskedName(buyerName)}`; } else if (additionalServiceCategory === AdditionalServiceCategory.LinkPaymentWait) { - str = `${getMaskedName(buyerName)}(${receiverInfo})`; + str = receiverInfo ? `${getMaskedName(buyerName)}(${receiverInfo})` : `${getMaskedName(buyerName)}`; } else if (additionalServiceCategory === AdditionalServiceCategory.Payout) { str = companyName; @@ -452,7 +453,7 @@ export const ListItem = ({ ); } else if (additionalServiceCategory === AdditionalServiceCategory.LinkPaymentHistory) { - if (paymentStatus === "0" || paymentStatus === "3" || paymentStatus === "4") { + if (paymentStatus === "2" || paymentStatus === "4") { rs.push(
{getPaymentStatusText(t)(paymentStatus)} @@ -466,8 +467,12 @@ export const ListItem = ({ {getPaymentStatusText(t)(paymentStatus)} | {getSendMethodText(t)(sendMethod)} - | - {paymentMethod} + {paymentMethod && ( + <> + | + {getPaymentMethodText(t)(paymentMethod)} + + )}
); } diff --git a/src/locales/en.json b/src/locales/en.json index b2b0702..959a7af 100644 --- a/src/locales/en.json +++ b/src/locales/en.json @@ -1291,7 +1291,18 @@ "apply": "Apply", "sendRequest": "Send Request", "sendCancel": "Send Cancel", - "progressStatus": "Progress Status" + "progressStatus": "Progress Status", + "paymentMethod": { + "card": "Credit Card", + "bank": "Bank Transfer", + "virtualAccount": "Virtual Account", + "phone": "Mobile Phone", + "cultureland": "Cultureland", + "ssgMoney": "SSG Money", + "ssgBank": "SSG Bank", + "cmsBank": "Easy Account Payment", + "tmoneyPay": "T-money Pay" + } }, "infoWrap": { "paymentInfo": "Payment Information", diff --git a/src/locales/ko.json b/src/locales/ko.json index e94a57d..4da06cf 100644 --- a/src/locales/ko.json +++ b/src/locales/ko.json @@ -1286,13 +1286,25 @@ "kakao": "카카오", "merchant": "가맹점", "phoneNumberEmail": "휴대폰번호/이메일", - "transactionStatus": "거래 상태", - "sendResult": "발송 결과", + "transactionStatus": "결제 상태", + "sendResult": "전송결과", "sendMethod": "발송수단", "apply": "적용", "sendRequest": "발송요청", "sendCancel": "발송취소", - "progressStatus": "진행상태" + "progressStatus": "진행상태", + "paymentMethod": { + "all": "전체", + "card": "신용카드", + "bank": "계좌이체", + "virtualAccount": "가상계좌", + "phone": "휴대폰", + "cultureland": "문화상품권", + "ssgMoney": "SSG머니", + "ssgBank": "SSG뱅크", + "cmsBank": "계좌간편결제", + "tmoneyPay": "티머니페이" + } }, "infoWrap": { "paymentInfo": "결제 정보",