api 추가

This commit is contained in:
focp212@naver.com
2025-11-12 11:17:18 +09:00
parent 8924019980
commit eef0152526
8 changed files with 138 additions and 5 deletions

View File

@@ -0,0 +1,39 @@
import axios from 'axios';
import { API_URL_TRANSACTION } from '@/shared/api/api-url-transaction';
import { resultify } from '@/shared/lib/resultify';
import { NiceAxiosError } from '@/shared/@types/error';
import {
CashReceiptReceiptSendEmailParams,
CashReceiptReceiptSendEmailResponse
} from '../model/types';
import {
useMutation,
UseMutationOptions
} from '@tanstack/react-query';
import { getHeaderUserAgent } from '@/shared/constants/url';
export const cashReceiptReceiptSendEmail = (params: CashReceiptReceiptSendEmailParams) => {
let headerOptions = {
menuId: 32,
apiType: 'DOWNLOAD'
};
let options = {
headers: {
'X-User-Agent': getHeaderUserAgent(headerOptions)
}
};
return resultify(
axios.post<CashReceiptReceiptSendEmailResponse>(API_URL_TRANSACTION.cashReceiptReceiptSendEmail(), params, options),
);
};
export const useCashReceiptReceiptSendEmailMutation = (options?: UseMutationOptions<CashReceiptReceiptSendEmailResponse, NiceAxiosError, CashReceiptReceiptSendEmailParams>) => {
const mutation = useMutation<CashReceiptReceiptSendEmailResponse, NiceAxiosError, CashReceiptReceiptSendEmailParams>({
...options,
mutationFn: (params: CashReceiptReceiptSendEmailParams) => cashReceiptReceiptSendEmail(params),
});
return {
...mutation,
};
};

View File

@@ -841,6 +841,15 @@ export interface CashReceiptManualIssueResponse {
issueDateTime: string,
issueResult: SuccessResult
};
export interface CashReceiptReceiptSendEmailParams {
tid: string;
email: string;
};
export interface CashReceiptReceiptSendEmailResponse {
message?: string;
};
export interface BillingChargeParams {
billKey: string;
productName: string;

View File

@@ -1,7 +1,7 @@
import moment from 'moment';
import { useTranslation } from 'react-i18next';
import { SectionTitleArrow } from '@/entities/common/ui/section-title-arrow';
import { AmountInfo, CashReceiptReceiptDownloadParams, CashReceiptReceiptDownloadResponse, CustomerInfo, InfoSectionKeys, InfoSectionProps, IssueInfo, MerchantInfo, ProductInfo, TransactionCategory, TransactionInfo } from '../../model/types';
import { AmountInfo, CashReceiptReceiptDownloadParams, CashReceiptReceiptDownloadResponse, CashReceiptReceiptSendEmailParams, CashReceiptReceiptSendEmailResponse, CustomerInfo, InfoSectionKeys, InfoSectionProps, IssueInfo, MerchantInfo, ProductInfo, TransactionCategory, TransactionInfo } from '../../model/types';
import { SlideDown } from 'react-slidedown';
import 'react-slidedown/lib/slidedown.css';
import { snackBar } from '@/shared/lib';
@@ -9,6 +9,7 @@ import { useCashReceiptReceiptDownloadMutation } from '../../api/use-cash-receip
import { useState } from 'react';
import { DownloadBottomSheet, DownloadSelectedMode } from '@/entities/common/ui/download-bottom-sheet';
import { CashReceiptSample } from '@/entities/common/ui/cash-receipt-sample';
import { useCashReceiptReceiptSendEmailMutation } from '../../api/use-cash-receipt-receipt-send-email-mutation';
export const AmountInfoSection = ({
transactionCategory,
@@ -22,6 +23,8 @@ export const AmountInfoSection = ({
const { t } = useTranslation();
const { mutateAsync: cashReceiptReceiptDownload } = useCashReceiptReceiptDownloadMutation();
const { mutateAsync: cashReceiptReceiptSendEamil } = useCashReceiptReceiptSendEmailMutation();
const [downloadBottomSheetOn, setDownloadBottomSheetOn] = useState<boolean>(false);
const [cashReceiptSampleOn, setCashReceiptSampleOn] = useState<boolean>(false);
@@ -207,7 +210,19 @@ export const AmountInfoSection = ({
if(selectedMode === DownloadSelectedMode.EMAIL
&& !!userEmail
){
// 추가 api 필요
let params: CashReceiptReceiptSendEmailParams = {
tid: tid,
email: userEmail
};
cashReceiptReceiptSendEamil(params).then((rs: CashReceiptReceiptSendEmailResponse) => {
console.log(rs);
snackBar('이메일로 현금영수증 요청이 완료되었습니다.');
}).catch((e: any) => {
if(e.response?.data?.error?.message){
snackBar(e.response?.data?.error?.message);
return;
}
});
}
else if(selectedMode === DownloadSelectedMode.IMAGE){
let params: CashReceiptReceiptDownloadParams = {

View File

@@ -0,0 +1,39 @@
import axios from 'axios';
import { API_URL_VAT_RETURN } from '@/shared/api/api-url-vat-return';
import { resultify } from '@/shared/lib/resultify';
import { NiceAxiosError } from '@/shared/@types/error';
import {
VatReturnTaxInvoiceSendEmailResponse,
VatReturnTaxInvoiceSendEmailParams,
} from '../model/types';
import {
useMutation,
UseMutationOptions
} from '@tanstack/react-query';
import { getHeaderUserAgent } from '@/shared/constants/url';
export const vatReturnTaxInvoiceSendEmail = (params: VatReturnTaxInvoiceSendEmailParams) => {
let headerOptions = {
menuId: 48,
apiType: 'DOWNLOAD'
};
let options = {
headers: {
'X-User-Agent': getHeaderUserAgent(headerOptions)
}
};
return resultify(
axios.post<VatReturnTaxInvoiceSendEmailResponse>(API_URL_VAT_RETURN.vatReturnTaxInvoiceSendEmail(), params, options),
);
};
export const useVatReturnTaxInvoiceSendEmailMutation = (options?: UseMutationOptions<VatReturnTaxInvoiceSendEmailResponse, NiceAxiosError, VatReturnTaxInvoiceSendEmailParams>) => {
const mutation = useMutation<VatReturnTaxInvoiceSendEmailResponse, NiceAxiosError, VatReturnTaxInvoiceSendEmailParams>({
...options,
mutationFn: (params: VatReturnTaxInvoiceSendEmailParams) => vatReturnTaxInvoiceSendEmail(params),
});
return {
...mutation,
};
};

View File

@@ -175,3 +175,11 @@ export interface VatReturnDownloadExcelParams {
targetType: VatReturnTargetType;
};
export interface VatReturnDownloadExcelResponse {};
export interface VatReturnTaxInvoiceSendEmailParams {
taxInvoiceNumber: string;
email: string;
};
export interface VatReturnTaxInvoiceSendEmailResponse {
message?: string;
};

View File

@@ -1,6 +1,6 @@
import moment from 'moment';
import { useTranslation } from 'react-i18next';
import { RecipientInfo, SupplierInfo, TransactionDetails, VatReturnDetailResponse, VatReturnTaxInvoiceParams, VatReturnTaxInvoiceResponse } from '../../model/types';
import { RecipientInfo, SupplierInfo, TransactionDetails, VatReturnDetailResponse, VatReturnTaxInvoiceParams, VatReturnTaxInvoiceResponse, VatReturnTaxInvoiceSendEmailParams, VatReturnTaxInvoiceSendEmailResponse } from '../../model/types';
import { SectionTitleArrow } from '@/entities/common/ui/section-title-arrow';
import SlideDown from 'react-slidedown';
import 'react-slidedown/lib/slidedown.css';
@@ -8,6 +8,8 @@ import { useState } from 'react';
import { DownloadBottomSheet, DownloadSelectedMode } from '@/entities/common/ui/download-bottom-sheet';
import { useVatReturnTaxInvoiceMutation } from '../../api/use-vat-return-tax-invoice-mutation';
import { TaxInvoiceSample } from '@/entities/common/ui/tax-invoice-sample';
import { useVatReturnTaxInvoiceSendEmailMutation } from '../../api/use-vat-return-tax-invoice-send-email-mutation';
import { snackBar } from '@/shared/lib';
export interface AmountSectionProps {
taxInvoiceNumber: string;
@@ -33,6 +35,7 @@ export const AmountSection = ({
const [transactionDetails, setTransactionDetails] = useState<TransactionDetails>();
const { mutateAsync: vatReturnTaxInvoice } = useVatReturnTaxInvoiceMutation();
const { mutateAsync: vatReturnTaxInvoiceSendEmail } = useVatReturnTaxInvoiceSendEmailMutation();
const openSection = () => {
const status = !isOpen;
@@ -46,7 +49,19 @@ export const AmountSection = ({
if(selectedMode === DownloadSelectedMode.EMAIL
&& !!userEmail
){
// 추가 API 필요
let params: VatReturnTaxInvoiceSendEmailParams = {
taxInvoiceNumber: taxInvoiceNumber,
email: userEmail
};
vatReturnTaxInvoiceSendEmail(params).then((rs: VatReturnTaxInvoiceSendEmailResponse) => {
console.log(rs);
snackBar('이메일로 세금계산서 요청이 완료되었습니다.');
}).catch((e: any) => {
if(e.response?.data?.error?.message){
snackBar(e.response?.data?.error?.message);
return;
}
});
}
else if(selectedMode === DownloadSelectedMode.IMAGE){

View File

@@ -61,6 +61,10 @@ export const API_URL_TRANSACTION = {
// POST: 현금영수증 엑셀 다운로드
return `${API_BASE_URL}/api/v1/${API_URL_KEY}/cash-receipt/excel/download`;
},
cashReceiptReceiptSendEmail: () => {
// POST: 현금영수증 이메일 발송
return `${API_BASE_URL}/api/v1/${API_URL_KEY}/cash-receipt/receipt/send-email`;
},
/* Escro Management - 에스크로 API */
escrowList: () => {

View File

@@ -28,4 +28,8 @@ export const API_URL_VAT_RETURN = {
// POST: 세금계산서 엑셀 다운로드
return `${API_BASE_URL}/api/v1/${API_URL_KEY}/vat-return/download/excel`;
},
vatReturnTaxInvoiceSendEmail: () => {
// POST: 세금계산서 이메일 발송
return `${API_BASE_URL}/api/v1/${API_URL_KEY}/vat-return/tax-invoice/send-email`;
},
};