diff --git a/src/entities/additional-service/api/account-holder-auth/use-extension-account-holder-auth-deatil-mutation.ts b/src/entities/additional-service/api/account-holder-auth/use-extension-account-holder-auth-deatil-mutation.ts index c72e801..4b2c2f7 100644 --- a/src/entities/additional-service/api/account-holder-auth/use-extension-account-holder-auth-deatil-mutation.ts +++ b/src/entities/additional-service/api/account-holder-auth/use-extension-account-holder-auth-deatil-mutation.ts @@ -13,35 +13,14 @@ import { } from '@tanstack/react-query'; import { ExtensionAccountHolderAuthDetailParams, ExtensionAccountHolderAuthDetailResponse } from '../../model/account-holder-auth/types'; -export const extensionAccountHolderAuthDetail = async (params: ExtensionAccountHolderAuthDetailParams): Promise => { - const response = await resultify( - axios.post(API_URL_ADDITIONAL_SERVICE.extensionAccountHolderAuthDetail(), params), - ); - - const detailResponse: DetailResponse = { - titleInfo: { - accountName: response.accountName, - accountNo: response.accountNo, - scheduledSendDate: response.requestDate //추후 발송예정일자로 수정 - } as TitleInfo, - detailInfo: { - companyName: response.companyName, - mid: response.mid, - requestDate: response.requestDate, - bankName: response.bankName, - accountNo: response.accountNo, - accountName: response.accountName, - transferStatus: response.transferStatus, - failureReason: response.failReason, - } as DetailInfo - - }; - - return detailResponse; +export const extensionAccountHolderAuthDetail = async (params: ExtensionAccountHolderAuthDetailParams): Promise => { + return resultify( + axios.post(API_URL_ADDITIONAL_SERVICE.extensionAccountHolderAuthDetail(), params), + ); }; -export const useExtensionAccountHolderAuthDetailMutation = (options?: UseMutationOptions) => { - const mutation = useMutation({ +export const useExtensionAccountHolderAuthDetailMutation = (options?: UseMutationOptions) => { + const mutation = useMutation({ ...options, mutationFn: (params: ExtensionAccountHolderAuthDetailParams) => extensionAccountHolderAuthDetail(params), }); diff --git a/src/entities/additional-service/model/account-holder-auth/constant.ts b/src/entities/additional-service/model/account-holder-auth/constant.ts index f79c9cc..bd963c1 100644 --- a/src/entities/additional-service/model/account-holder-auth/constant.ts +++ b/src/entities/additional-service/model/account-holder-auth/constant.ts @@ -1,8 +1,32 @@ -import { AuthAndTransferStatus } from "./types"; +import { AccountHolderAuthStatus } from "./types"; export const authStatusBtnGroup = [ - { name: '전체', value: AuthAndTransferStatus.ALL }, - { name: '요청', value: AuthAndTransferStatus.REQUEST}, - { name: '성공', value: AuthAndTransferStatus.SUCCESS}, - { name: '실패', value: AuthAndTransferStatus.FAIL} -] \ No newline at end of file + { name: '전체', value: AccountHolderAuthStatus.ALL }, + { name: '요청', value: AccountHolderAuthStatus.REQUEST}, + { name: '성공', value: AccountHolderAuthStatus.SUCCESS}, + { name: '실패', value: AccountHolderAuthStatus.FAIL} +] + +export const getAuthStatusText = (status?: string): string => { + if (!status) return ''; + + const AuthStatusMap: Record = { + 'REQUEST' : '요청', + 'SUCCESS' : '성공', + 'FAIL' : '실패' + } + + return AuthStatusMap[status] || status; +} + +export const getAuthResultText = (status?: string): string => { + if (!status) return ''; + + const AuthResultMap: Record = { + 'MATCHED' : '예금주명 일치', + 'NOT_MATCHED' : '예금주명 불일치', + 'FAILED' : '인증실패 (계좌 오류 등)' + } + + return AuthResultMap[status] || status; +} \ No newline at end of file diff --git a/src/entities/additional-service/model/account-holder-auth/types.ts b/src/entities/additional-service/model/account-holder-auth/types.ts index c3019ef..c2bcb56 100644 --- a/src/entities/additional-service/model/account-holder-auth/types.ts +++ b/src/entities/additional-service/model/account-holder-auth/types.ts @@ -2,20 +2,26 @@ import { DefaulResponsePagination, DefaultRequestPagination } from "@/entities/c import { AdditionalServiceCategory, ExtensionRequestParams, FilterProps, ListItemProps } from "../types"; // 계좌 점유 조회 관련 타입들 -export enum AuthAndTransferStatus { +export enum AccountHolderAuthStatus { ALL = "", REQUEST = "REQUEST", SUCCESS = "SUCCESS", FAIL = "FAIL" } +export enum AccountHolderAuthResult { + MATCHED = "MATCHED", + NOT_MATCHED = "NOT_MATCHED", + FAILED = "FAILED" +} + export interface AccountHolderAuthListItem { tid?: string; accountName?: string; accountNo?: string; requestDate?: string; bankName?: string; - transferStatus?: AuthAndTransferStatus; + authStatus?: AccountHolderAuthStatus; } export interface AccountHolderAuthListProps { additionalServiceCategory: AdditionalServiceCategory; @@ -26,11 +32,11 @@ export interface AccountHolderAuthFilterProps extends FilterProps { mid: string; startDate: string; endDate: string; - authStatus: AuthAndTransferStatus; + authStatus: AccountHolderAuthStatus; setMid: (mid: string) => void; setStartDate: (startDate: string) => void; setEndDate: (endDate: string) => void; - setAuthStatus: (authStatus: AuthAndTransferStatus) => void; + setAuthStatus: (authStatus: AccountHolderAuthStatus) => void; } // 계좌 점유 인증 확장 서비스 @@ -53,14 +59,14 @@ export interface ExtensionAccountHolderAuthContentItem { accountNo?: string; requestDate?: string; bankName?: string; - authStatus?: AuthAndTransferStatus; + authStatus?: AccountHolderAuthStatus; } export interface ExtensionAccountHolderAuthDownloadExcelParams extends ExtensionRequestParams { mid: string; fromDate: string; toDate: string; - authStatus: AuthAndTransferStatus; + authStatus: AccountHolderAuthStatus; } export interface ExtensionAccountHolderAuthDownloadExcelResponse { @@ -79,6 +85,8 @@ export interface ExtensionAccountHolderAuthDetailResponse { requestDate: string; companyName: string; bankName: string; - transferStatus: AuthAndTransferStatus; - failReason: string; + authStatus: AccountHolderAuthStatus; + authResult: AccountHolderAuthResult; + authAmount: number; + requestName: string; } \ No newline at end of file diff --git a/src/entities/additional-service/model/types.ts b/src/entities/additional-service/model/types.ts index f85753f..a90dede 100644 --- a/src/entities/additional-service/model/types.ts +++ b/src/entities/additional-service/model/types.ts @@ -8,7 +8,7 @@ import type { ExtensionSmsDetailResponse } from './sms-payment/types'; import { FaceAuthListItem } from './face-auth/types'; import { AccountHolderSearchListItem } from './account-holder-search/types'; import { KeyInPaymentListItem } from './key-in/types'; -import { AccountHolderAuthListItem, AuthAndTransferStatus } from './account-holder-auth/types'; +import { AccountHolderAuthListItem, AccountHolderAuthStatus } from './account-holder-auth/types'; import { LinkContentType, LinkPaymentHistoryListItem, LinkPaymentSendMethod, LinkPaymentWaitListItem } from './link-pay/types'; // ======================================== @@ -56,6 +56,7 @@ export interface TitleInfo { corpName?: string, accountNo?: string, accountName?: string, + authDate?: string, bankName?: string, requestDate?: string, sendDate?: string, @@ -66,10 +67,13 @@ export interface DetailInfo { accountName?: string; // 예금주 requestDate?: string; // 조회 일시 resultStatus?: string; // 결과 + authDate?: string; bankName?: string; // 은행 명 failureReason?: string; // 실패사유 accountNo?: string; // 계좌번호 requestWay?: string; //요청 구분 + authStatus?: string; + authResult?: string; mid?: string; companyName?: string; @@ -77,7 +81,7 @@ export interface DetailInfo { phoneNumber: string; goodsName: string; moid: string; - transferStatus: AuthAndTransferStatus; + transferStatus: AccountHolderAuthStatus; } 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 68851b9..9ceac02 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 @@ -4,59 +4,61 @@ import { AccountHolderAuthListProps, ExtensionAccountHolderAuthContentItem } fro import { JSX } from 'react'; export const AccountHolderAuthList = ({ - additionalServiceCategory, - listItems, - mid + additionalServiceCategory, + listItems, + mid }: AccountHolderAuthListProps) => { const getListDateGroup = () => { - let rs: JSX.Element[] = []; + let rs = []; let date = ''; - let list: ExtensionAccountHolderAuthContentItem[] = []; + let list = []; for (let i = 0; i < listItems.length; i++) { - - // sendDate(발송일자) 기준 - let requestDate = listItems[i]?.requestDate || ''; - let itemDate = requestDate.substring(0, 8); - if (i === 0) { - date = itemDate; - } - if (date !== itemDate) { - if (list.length > 0) { - rs.push( - - ); + let items = listItems[i]; + if (!!items) { + let requestDate = items?.requestDate; + requestDate = requestDate?.substring(0, 8); + if (!!requestDate) { + if (i === 0) { + date = requestDate; + } + if (date !== requestDate) { + date = requestDate; + if (list.length > 0) { + rs.push( + + ); + } + list = []; + } + list.push(items); } - date = itemDate; - list = []; } - list.push(listItems[i] as any); } if (list.length > 0) { rs.push( - ); + ) } return rs; }; - return ( - <> -
- {getListDateGroup()} -
- - ) + return ( + <> +
+ {getListDateGroup()} +
+ + ) } \ No newline at end of file diff --git a/src/entities/additional-service/ui/account-holder-auth/filter/account-holder-auth-filter.tsx b/src/entities/additional-service/ui/account-holder-auth/filter/account-holder-auth-filter.tsx index 2278df7..e0a63ec 100644 --- a/src/entities/additional-service/ui/account-holder-auth/filter/account-holder-auth-filter.tsx +++ b/src/entities/additional-service/ui/account-holder-auth/filter/account-holder-auth-filter.tsx @@ -8,7 +8,7 @@ import { FilterButtonGroups } from '@/shared/ui/filter/button-groups'; import { authStatusBtnGroup } from '@/entities/additional-service/model/account-holder-auth/constant'; import { FilterMotionDuration, FilterMotionStyle, FilterMotionVariants } from '@/entities/common/model/constant'; import { useStore } from '@/shared/model/store'; -import { AccountHolderAuthFilterProps, AuthAndTransferStatus } from '@/entities/additional-service/model/account-holder-auth/types'; +import { AccountHolderAuthFilterProps, AccountHolderAuthStatus } from '@/entities/additional-service/model/account-holder-auth/types'; export const AccountHolderAuthFilter = ({ filterOn, @@ -26,7 +26,7 @@ export const AccountHolderAuthFilter = ({ const [filterMid, setFilterMid] = useState(mid); const [filterStartDate, setFilterStartDate] = useState(moment(startDate).format('YYYY.MM.DD')); const [filterEndDate, setFilterEndDate] = useState(moment(endDate).format('YYYY.MM.DD')); - const [filterAuthStatus, setFilterAuthStatus] = useState(authStatus); + const [filterAuthStatus, setFilterAuthStatus] = useState(authStatus); const midOptions = useStore.getState().UserStore.selectOptionsMids; diff --git a/src/entities/additional-service/ui/list-date-group.tsx b/src/entities/additional-service/ui/list-date-group.tsx index 930d0df..edbf480 100644 --- a/src/entities/additional-service/ui/list-date-group.tsx +++ b/src/entities/additional-service/ui/list-date-group.tsx @@ -35,7 +35,6 @@ export const ListDateGroup = ({ bankName={ items[i]?.bankName} accountName={ items[i]?.accountName} accountNo={ items[i]?.accountNo } - transferStatus={ items[i]?.transferStatus} resultStatus={ items[i]?.resultStatus } resultMessage={ items[i]?.resultMessage } applicationDate={ items[i]?.applicationDate } @@ -62,7 +61,7 @@ export const ListDateGroup = ({ requestId={ items[i]?.requestId} detailExposure={ items[i]?.detailExposure} receiverInfo={ items[i]?.receiverInfo} - + authStatus= { items[i]?.authStatus} alimCl={ items[i]?.alimCl } sendType={ items[i]?.sendType } diff --git a/src/entities/additional-service/ui/list-item.tsx b/src/entities/additional-service/ui/list-item.tsx index 6e47885..c6a756e 100644 --- a/src/entities/additional-service/ui/list-item.tsx +++ b/src/entities/additional-service/ui/list-item.tsx @@ -20,7 +20,7 @@ export const ListItem = ({ applicationDate, requestDate, bankName, accountNo, resultStatus, resultMessage, amount, sendMethod, processStatus,registDate, - accountName, transferStatus, + accountName, submallId, settlementDate, companyName, disbursementStatus, disbursementAmount, @@ -32,6 +32,7 @@ export const ListItem = ({ requestId,subReqId, buyerName,receiverInfo, seq,serviceCode,sendDate, + authStatus, smsCl,groupId,userMallId,transType, authResult,failReason,requestTime, @@ -73,9 +74,9 @@ export const ListItem = ({ } else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderAuth) { - if (transferStatus === "REQUEST" || transferStatus === "SUCCESS") { + if (authStatus === "REQUEST" || authStatus === "SUCCESS") { rs = 'blue'; - } else if (transferStatus === "FAIL") { + } else if (authStatus === "FAIL") { rs = 'gray'; } } @@ -307,7 +308,7 @@ export const ListItem = ({ statusText = resultStatus || ''; } else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderAuth) { - statusText = transferStatus || ''; + statusText = authStatus || ''; } else if (additionalServiceCategory === AdditionalServiceCategory.FaceAuth) { statusText = getTransTypeText(transType) @@ -531,8 +532,8 @@ export const ListItem = ({ } else if (additionalServiceCategory === AdditionalServiceCategory.AccountHolderAuth) { rs.push( -
- {(transferStatus === 'REQUEST' || transferStatus === 'SUCCESS') ? '성공' : '실패'} +
+ {(authStatus === 'REQUEST' || authStatus === 'SUCCESS') ? '성공' : '실패'}
); } diff --git a/src/pages/additional-service/account-holder-auth/account-holder-auth-page.tsx b/src/pages/additional-service/account-holder-auth/account-holder-auth-page.tsx index a825f09..9601bad 100644 --- a/src/pages/additional-service/account-holder-auth/account-holder-auth-page.tsx +++ b/src/pages/additional-service/account-holder-auth/account-holder-auth-page.tsx @@ -19,7 +19,7 @@ import { AccountHolderAuthList } from '@/entities/additional-service/ui/account- import { useExtensionAccountHolderAuthDownloadExcelMutation } from '@/entities/additional-service/api/account-holder-auth/use-extension-account-holder-auth-download-excel-mutation'; import { AccountHolderAuthFilter } from '@/entities/additional-service/ui/account-holder-auth/filter/account-holder-auth-filter'; import { useStore } from '@/shared/model/store'; -import { AccountHolderAuthListItem, AuthAndTransferStatus, ExtensionAccountHolderAuthContentItem, ExtensionAccountHolderAuthDownloadExcelParams, ExtensionAccountHolderAuthDownloadExcelResponse } from '@/entities/additional-service/model/account-holder-auth/types'; +import { AccountHolderAuthListItem, AccountHolderAuthStatus, ExtensionAccountHolderAuthContentItem, ExtensionAccountHolderAuthDownloadExcelParams, ExtensionAccountHolderAuthDownloadExcelResponse } from '@/entities/additional-service/model/account-holder-auth/types'; import { AdditionalServiceCategory } from '@/entities/additional-service/model/types'; import { EmailBottomSheet } from '@/entities/common/ui/email-bottom-sheet'; @@ -35,7 +35,7 @@ export const AccountHolderAuthPage = () => { const [mid, setMid] = useState(userMid); const [fromDate, setFromDate] = useState(moment().format('YYYYMMDD')); const [toDate, setToDate] = useState(moment().format('YYYYMMDD')); - const [authStatus, setAuthStatus] = useState(AuthAndTransferStatus.ALL) + const [authStatus, setAuthStatus] = useState(AccountHolderAuthStatus.ALL) const [emailBottomSheetOn, setEmailBottomSheetOn] = useState(false); useSetHeaderTitle('계좌점유인증'); useSetHeaderType(HeaderType.LeftArrow); @@ -49,7 +49,7 @@ export const AccountHolderAuthPage = () => { const callList = (option?: { sortType?: SortTypeKeys, - status?: AuthAndTransferStatus + status?: AccountHolderAuthStatus }) => { let listParams = { mid: mid, @@ -81,7 +81,7 @@ export const AccountHolderAuthPage = () => { }); }; - const onClickToAuthStatus = (val: AuthAndTransferStatus) => { + const onClickToAuthStatus = (val: AccountHolderAuthStatus) => { setAuthStatus(val); callList({ status: val diff --git a/src/pages/additional-service/account-holder-auth/detail-page.tsx b/src/pages/additional-service/account-holder-auth/detail-page.tsx index 1ab785e..9f4a38b 100644 --- a/src/pages/additional-service/account-holder-auth/detail-page.tsx +++ b/src/pages/additional-service/account-holder-auth/detail-page.tsx @@ -13,7 +13,10 @@ import { TitleInfoWrap } from '@/entities/additional-service/ui/info-wrap/title- import { useLocation } from 'react-router'; import { DetailInfoWrap } from '@/entities/additional-service/ui/info-wrap/detail-info-wrap'; import { useExtensionAccountHolderAuthDetailMutation } from '@/entities/additional-service/api/account-holder-auth/use-extension-account-holder-auth-deatil-mutation'; -import { ExtensionAccountHolderAuthDetailParams } from '@/entities/additional-service/model/account-holder-auth/types'; +import { ExtensionAccountHolderAuthDetailParams, ExtensionAccountHolderAuthDetailResponse } from '@/entities/additional-service/model/account-holder-auth/types'; +import moment from 'moment'; +import { getAuthStatusText } from '@/entities/additional-service/model/account-holder-auth/constant'; +import { getAuthResultStatusText } from '@/entities/additional-service/model/face-auth/constant'; export const AccountHolderAuthDetailPage = () => { const { navigate } = useNavigate(); @@ -21,8 +24,7 @@ export const AccountHolderAuthDetailPage = () => { const { mid, tid } = location.state || {}; - const [titleInfo, setTitleInfo] = useState(); - const [detailInfo, setDetailInfo] = useState(); + const [detail, setDetail] = useState(); useSetHeaderTitle('계좌점유인증 상세'); useSetHeaderType(HeaderType.LeftArrow); @@ -38,32 +40,71 @@ export const AccountHolderAuthDetailPage = () => { mid: mid, tid: tid } - accountHolderAuthDetail(accountHolderAuthDetailParams).then((rs: DetailResponse) => { - console.log("Detail Info: ", rs) - setTitleInfo(rs.titleInfo); - setDetailInfo(rs.detailInfo); + accountHolderAuthDetail(accountHolderAuthDetailParams).then((rs: ExtensionAccountHolderAuthDetailResponse) => { + setDetail(rs); }); }; useEffect(() => { callDetail(); }, []); + + const getDate = (date?: string) => { + return (date) ? moment(date, 'YYYYMMDDHHmmss').format('YYYY.MM.DD HH:mm:ss') : ''; + }; return ( <>
- +
+ {detail?.accountName} + {detail?.accountNo} +
+
{getDate(detail?.requestDate)}
+
-
- +
상세 정보
+
    +
  • + 가맹점상호 + {detail?.companyName} +
  • +
  • + MID + {detail?.mid} +
  • +
  • + 요청일시 + {getDate(detail?.requestDate)} +
  • +
  • + 은행 + {detail?.bankName} +
  • +
  • + 계좌번호 + {detail?.bankName} +
  • +
  • + 예금주 + {detail?.accountName} +
  • +
  • + 결과 + {getAuthStatusText(detail?.authStatus)} +
  • +
  • + 실패 사유 + {detail?.authResult !== "MATCHED" && + {getAuthResultStatusText(detail?.authResult)} + } + {detail?.authResult === "MATCHED" && + - + } +
  • +