diff --git a/src/entities/additional-service/api/use-extension-link-pay-detail-mutation.ts b/src/entities/additional-service/api/use-extension-link-pay-detail-mutation.ts new file mode 100644 index 0000000..e69de29 diff --git a/src/entities/additional-service/api/use-extension-link-pay-history-list-mutation.ts b/src/entities/additional-service/api/use-extension-link-pay-history-list-mutation.ts new file mode 100644 index 0000000..a627a71 --- /dev/null +++ b/src/entities/additional-service/api/use-extension-link-pay-history-list-mutation.ts @@ -0,0 +1,31 @@ +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 { + ExtensionKeyinListParams, + ExtensionKeyinListResponse, + ExtensionLinkPayHistoryListParams, + ExtensionLinkPayHistoryListResponse +} from '../model/types'; +import { + useMutation, + UseMutationOptions +} from '@tanstack/react-query'; + +export const extensionLinkPayHistoryListParam = (params: ExtensionLinkPayHistoryListParams) => { + return resultify( + axios.post(API_URL_ADDITIONAL_SERVICE.extensionLinkPaymentHistoryList(), params), + ); +}; + +export const useExtensionLinkPayHistoryListMutation = (options?: UseMutationOptions) => { + const mutation = useMutation({ + ...options, + mutationFn: (params: ExtensionLinkPayHistoryListParams) => extensionLinkPayHistoryListParam(params), + }); + + return { + ...mutation, + }; +}; diff --git a/src/entities/additional-service/model/types.ts b/src/entities/additional-service/model/types.ts index 13d5760..6c63b3e 100644 --- a/src/entities/additional-service/model/types.ts +++ b/src/entities/additional-service/model/types.ts @@ -50,6 +50,16 @@ export interface DetailInfo { requestWay?: string; //요청 구분 } +export interface PaymentInfo { + buyerName?: string; + sendMethod?: string; + sendDate?: string; + paymentStatus?: string; + paymentMethod?: string; + paymentDate?: string; + paymentLimitDate?: string; +} + // 상세정보 Info Enum export enum InfoWrapKeys { Title = 'Title', @@ -187,22 +197,22 @@ export enum LinkPaymentSendingStatus { } export interface LinkPaymentShippingListItem { - transactionId?: string; - customerName?: string; - status?: string; - channel?: string; - amount?: number; + tid?: string; + // TODO : buyerName 필요 + paymentDate?: string; + paymentStatus?: string; sendDate?: string; - transactionDate?: string; + sendStatus?: string; + sendMethod?: string; + amount?: number; } export interface LinkPaymentPendingListItem { - transactionId?: string; - customerName?: string; - status?: string; - channel?: string; + tid?: string; + scheduledSendDate?: string; + sendMethod?: string; + processStatus?: string; amount?: number; - requestDate?: string; } export interface LinkPaymentShippingListProps { @@ -261,6 +271,7 @@ export enum DetailInfoSectionKeys { export interface DetailResponse { titleInfo?: TitleInfo //최상단 섹션 detailInfo?: DetailInfo // '상세 정보' 섹션 + paymentInfo?: PaymentInfo // '결제 정보' 섹션 } export interface DetailInfoSectionProps extends DetailResponse { @@ -305,7 +316,10 @@ export interface SettlementAgencyBottomAgreeProps { // 공통 리스트 관련 타입들 // ======================================== -export interface ListItemProps extends KeyInPaymentListItem, AccountHolderSearchListItem, LinkPaymentShippingListItem, LinkPaymentPendingListItem { +export interface ListItemProps extends +KeyInPaymentListItem, AccountHolderSearchListItem, +LinkPaymentShippingListItem, LinkPaymentPendingListItem +{ additionalServiceCategory?: AdditionalServiceCategory; mid?: string } @@ -329,6 +343,34 @@ export interface AdditionalServiceListProps { export interface ExtensionRequestParams { mid: string; } +// 링크 결제 - 발송,대기 조회 확장 서비스 +// ======================================== +export interface ExtensionLinkPayHistoryListParams extends ExtensionRequestParams { + searchCl: string; + searchValue: string; + paymentMethod: string; + fromDate: string; + toDate: string; + paymentStatus: string; + sendStatus: string; + sendMethod: string; + page?: DefaultRequestPagination; +} + +export interface ExtensionLinkPayHistoryListResponse extends DefaulResponsePagination { + content: Array +} + +export interface ExtensionLinkPayWaitListParams extends ExtensionRequestParams { + searchCl: string; + searchValue: string; + fromDate: string; + toDate: string; + sendStatus: string; + sendMethod: string; + processStatus: string; + page?: DefaultRequestPagination; +} // 계좌 성명 조회 확장 서비스 // ======================================== @@ -345,10 +387,6 @@ export interface ExtensionAccountHolderSearchListResponse extends DefaulResponse content: Array } -export interface ExtensionAccountHolderSearchListItemProps { // Response - content - -} - export interface ExtensionAccountHolderSearchDetailParams extends ExtensionRequestParams { // Request tid: string; } diff --git a/src/entities/additional-service/ui/info-wrap/payment-info-wrap.tsx b/src/entities/additional-service/ui/info-wrap/payment-info-wrap.tsx new file mode 100644 index 0000000..6321e68 --- /dev/null +++ b/src/entities/additional-service/ui/info-wrap/payment-info-wrap.tsx @@ -0,0 +1,8 @@ + +import { DetailInfoSectionProps } from '../../model/types'; + +export const PaymentInfoWrap = ({ + additionalServiceCategory, +}: DetailInfoSectionProps) => { + +} \ No newline at end of file diff --git a/src/entities/additional-service/ui/link-payment/link-payment-shipping-history-list.tsx b/src/entities/additional-service/ui/link-payment/link-payment-shipping-history-list.tsx index ff1bb9c..93f120a 100644 --- a/src/entities/additional-service/ui/link-payment/link-payment-shipping-history-list.tsx +++ b/src/entities/additional-service/ui/link-payment/link-payment-shipping-history-list.tsx @@ -1,7 +1,7 @@ import { LinkPaymentShippingListProps } from '../../model/types'; import { ListDateGroup } from '../list-date-group'; -export const LinkPaymentSHippingHistoryList = ({ +export const LinkPaymentShippingHistoryList = ({ additionalServiceCategory, listItems }: LinkPaymentShippingListProps) => { diff --git a/src/entities/additional-service/ui/link-payment/link-payment-shipping-history-wrap.tsx b/src/entities/additional-service/ui/link-payment/link-payment-shipping-history-wrap.tsx index b7c6576..1d907fb 100644 --- a/src/entities/additional-service/ui/link-payment/link-payment-shipping-history-wrap.tsx +++ b/src/entities/additional-service/ui/link-payment/link-payment-shipping-history-wrap.tsx @@ -4,10 +4,13 @@ import { useState, useEffect } from "react"; import { LinkPaymentShippingHistoryFilter } from "./filter/link-payment-shipping-history-filter"; import { useNavigate } from '@/shared/lib/hooks/use-navigate'; import { PATHS } from "@/shared/constants/paths"; -import { LinkPaymentSHippingHistoryList } from "./link-payment-shipping-history-list"; +import { LinkPaymentShippingHistoryList } from "./link-payment-shipping-history-list"; import { SortOptionsBox } from "../sort-options-box"; -import { AdditionalServiceCategory, LinkPaymentSendMethod, LinkPaymentTransactionStatus, ProcessResult, SortByKeys } from "../../model/types"; +import { AdditionalServiceCategory, LinkPaymentSendMethod, LinkPaymentShippingListItem, LinkPaymentTransactionStatus, ProcessResult, SortByKeys } from "../../model/types"; import { LinkPaymentSearchType, } from "../../model/types"; +import { useExtensionLinkPayHistoryListMutation } from '../../api/use-extension-link-pay-history-list-mutation'; +import { DEFAULT_PAGE_PARAM } from '@/entities/common/model/constant'; +import { todo } from 'node:test'; const processResultBtnGroup = [ { name: '전체', value: ProcessResult.ALL }, @@ -21,6 +24,7 @@ export const LinkPaymentShippingHistoryWrap = () => { const [filterOn, setFilterOn] = useState(false); const [sortBy, setSortBy] = useState(SortByKeys.New); const [listItems, setListItems] = useState({}); + const [pageParam, setPageParam] = useState(DEFAULT_PAGE_PARAM); const [mid, setMid] = useState('nictest001m'); const [searchType, setSearchType] = useState(LinkPaymentSearchType.ALL) const [searchKeyword, setSearchKeyword] = useState(''); @@ -30,68 +34,75 @@ export const LinkPaymentShippingHistoryWrap = () => { const [processResult, setProcessResult] = useState(ProcessResult.ALL) const [sendMethod, setSendMethod] = useState(LinkPaymentSendMethod.ALL) - const onClickToOpenFilter = () => { - setFilterOn(!filterOn); - }; + const { mutateAsync: linkPayHistoryList } = useExtensionLinkPayHistoryListMutation(); + + const onClickToNavigate = () => { navigate(PATHS.additionalService.linkPayment.request) } + + + + const callList = (option?: { + sortBy?: string, + val?: string + }) => { + pageParam.sortBy = (option?.sortBy) ? option.sortBy : sortBy; + setPageParam(pageParam); + + let listParams = { + mid: mid, + searchCl: searchType === LinkPaymentSearchType.ALL ? '' : searchType, + searchValue: searchKeyword, + paymentMethod: 'st', // 추후 변경 필요 빼야함 + fromDate: startDate, + toDate: endDate, + paymentStatus: transactionStatus === LinkPaymentTransactionStatus.ALL ? '' : transactionStatus, + sendStatus: processResult === ProcessResult.ALL ? '' : processResult, + sendMethod: sendMethod === LinkPaymentSendMethod.ALL ? '' : sendMethod, + page: pageParam + } + + linkPayHistoryList(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 sendDate = content[i]?.sendDate?.substring(0, 8); + let groupDate = moment(sendDate).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 = () => { + + } + + const onClickProcessResult = (val: ProcessResult) => { + setProcessResult(val); + } + const onClickToSort = (sort: SortByKeys) => { setSortBy(sort); callList({ sortBy: sort }); }; - const callList = (option?: { sortBy?: string, val?: string }) => { - setListItems({ - '20250608': [ - { - transactionId: 'txn1', - customerName: '김*환(7000)', - status: '결제완료', - channel: 'SMS', - paymentMethod: '신용카드', - amount: 5254000 - }, - { - transactionId: 'txn2', - customerName: '김*환(7000)', - status: '결제완료', - channel: '이메일', - paymentMethod: '신용카드', - amount: 5254000 - }, - { - transactionId: 'txn3', - customerName: '김*환(7000)', - status: '입금요청', - channel: '이메일', - paymentMethod: '신용카드', - amount: 5254000 - }, - { - transactionId: 'txn4', - customerName: '김*환(7000)', - status: '결제중단', - channel: 'SMS', - paymentMethod: '', - amount: 5254000 - }, - { - transactionId: 'txn5', - customerName: '김*환(7000)', - status: '결제실패', - channel: 'SMS', - paymentMethod: '', - amount: 5254000 - } - ] - }); + const onClickToOpenFilter = () => { + setFilterOn(!filterOn); }; - const onClickProcessResult = (val: ProcessResult) => { - setProcessResult(val); - } - useEffect(() => { callList(); }, []); @@ -123,6 +134,7 @@ export const LinkPaymentShippingHistoryWrap = () => { 다운로드 onClickToDownloadExcel()} /> @@ -149,10 +161,10 @@ export const LinkPaymentShippingHistoryWrap = () => { - + additionalServiceCategory={AdditionalServiceCategory.LinkPaymentShipping} + >