부가서비스
- SMS결제통보_재발송 API 추가
This commit is contained in:
@@ -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 {
|
||||
ExtensionSmsDetailParams,
|
||||
ExtensionSmsDetailResponse
|
||||
} from '../../model/sms-payment/types';
|
||||
import {
|
||||
useMutation,
|
||||
UseMutationOptions
|
||||
} from '@tanstack/react-query';
|
||||
|
||||
export const extensionSmsDetail = (params: ExtensionSmsDetailParams) => {
|
||||
return resultify(
|
||||
axios.post<ExtensionSmsDetailResponse>(API_URL_ADDITIONAL_SERVICE.extensionSmsDetail(), params),
|
||||
);
|
||||
};
|
||||
|
||||
export const useExtensionSmsDetailMutation = (options?: UseMutationOptions<ExtensionSmsDetailResponse, CBDCAxiosError, ExtensionSmsDetailParams>) => {
|
||||
const mutation = useMutation<ExtensionSmsDetailResponse, CBDCAxiosError, ExtensionSmsDetailParams>({
|
||||
...options,
|
||||
mutationFn: (params: ExtensionSmsDetailParams) => extensionSmsDetail(params),
|
||||
});
|
||||
|
||||
return {
|
||||
...mutation,
|
||||
};
|
||||
};
|
||||
@@ -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 {
|
||||
ExtensionSmsResendParams,
|
||||
ExtensionSmsResendResponse
|
||||
} from '../../model/sms-payment/types';
|
||||
import {
|
||||
useMutation,
|
||||
UseMutationOptions
|
||||
} from '@tanstack/react-query';
|
||||
|
||||
export const extensionSmsResend = (params: ExtensionSmsResendParams) => {
|
||||
return resultify(
|
||||
axios.post<ExtensionSmsResendResponse>(API_URL_ADDITIONAL_SERVICE.extensionSmsResend(), params),
|
||||
);
|
||||
};
|
||||
|
||||
export const useExtensionSmsResendMutation = (options?: UseMutationOptions<ExtensionSmsResendResponse, CBDCAxiosError, ExtensionSmsResendParams>) => {
|
||||
const mutation = useMutation<ExtensionSmsResendResponse, CBDCAxiosError, ExtensionSmsResendParams>({
|
||||
...options,
|
||||
mutationFn: (params: ExtensionSmsResendParams) => extensionSmsResend(params),
|
||||
});
|
||||
|
||||
return {
|
||||
...mutation,
|
||||
};
|
||||
};
|
||||
@@ -90,4 +90,6 @@ export interface SmsPaymentDetailResendProps {
|
||||
bottomSmsPaymentDetailResendOn: boolean;
|
||||
setBottomSmsPaymentDetailResendOn: (bottomSmsPaymentDetailResendOn: boolean) => void;
|
||||
smsDetailData: ExtensionSmsDetailResponse | null;
|
||||
mid: string;
|
||||
tid: string;
|
||||
}
|
||||
|
||||
@@ -1,17 +1,47 @@
|
||||
import { motion } from 'framer-motion';
|
||||
import { IMAGE_ROOT } from '@/shared/constants/common';
|
||||
import { SmsPaymentDetailResendProps } from '../../../additional-service/model/sms-payment/types';
|
||||
import { useExtensionSmsResendMutation } from '../../api/sms-payment/use-extension-sms-resend-mutation';
|
||||
import appBridge from '@/shared/lib/appBridge';
|
||||
|
||||
export const SmsPaymentDetailResend = ({
|
||||
bottomSmsPaymentDetailResendOn,
|
||||
setBottomSmsPaymentDetailResendOn,
|
||||
smsDetailData
|
||||
smsDetailData,
|
||||
mid,
|
||||
tid
|
||||
}: SmsPaymentDetailResendProps) => {
|
||||
|
||||
const variants = {
|
||||
hidden: { y: '100%' },
|
||||
visible: { y: '0%' },
|
||||
};
|
||||
|
||||
const {mutateAsync : resendMessage } = useExtensionSmsResendMutation();
|
||||
|
||||
const onClickResend = () => {
|
||||
// sendMessage가 없으면 재발송 불가
|
||||
if (!smsDetailData?.sendMessage) {
|
||||
return;
|
||||
}
|
||||
|
||||
resendMessage({
|
||||
mid: mid,
|
||||
tid: tid
|
||||
}).then((rs) => {
|
||||
console.log("Resend 성공: ", rs);
|
||||
appBridge.showToast("SMS 발송을 성공하였습니다.");
|
||||
setBottomSmsPaymentDetailResendOn(false);
|
||||
}).catch((error) => {
|
||||
console.error("Resend 실패: ", error);
|
||||
|
||||
// 실패 토스트 메시지 표시
|
||||
const errorMessage = error?.message || "알 수 없는 오류";
|
||||
const failMessage = `[실패] ${errorMessage}`;
|
||||
appBridge.showToast(failMessage);
|
||||
});
|
||||
}
|
||||
|
||||
const onClickToClose = () => {
|
||||
// close
|
||||
setBottomSmsPaymentDetailResendOn(false);
|
||||
@@ -52,7 +82,14 @@ export const SmsPaymentDetailResend = ({
|
||||
<p className="resend-text">{smsDetailData?.sendMessage || '-'}</p>
|
||||
</div>
|
||||
<div className="bottomsheet-footer">
|
||||
<button className="btn-50 btn-blue flex-1" type="button">신청</button>
|
||||
<button
|
||||
className={`btn-50 flex-1 ${smsDetailData?.sendMessage ? 'btn-blue' : 'btn-gray'}`}
|
||||
type="button"
|
||||
onClick={onClickResend}
|
||||
disabled={!smsDetailData?.sendMessage}
|
||||
>
|
||||
신청
|
||||
</button>
|
||||
</div>
|
||||
</motion.div>
|
||||
</>
|
||||
|
||||
@@ -59,8 +59,8 @@ export const SmsPaymentFilter = ({
|
||||
|
||||
let smsTypeOption = [
|
||||
{ name: '전체', value: SmsType.ALL },
|
||||
{ name: '가상계좌요청', value: SmsType.VACCOUNT_REQ },
|
||||
{ name: '가상계좌 요청+입금', value: SmsType.VACCOUNT_REQ_DEPOSIT },
|
||||
{ name: '가상계좌\n요청', value: SmsType.VACCOUNT_REQ },
|
||||
{ name: '가상계좌\n요청+입금', value: SmsType.VACCOUNT_REQ_DEPOSIT },
|
||||
]
|
||||
|
||||
const onClickToClose = () => {
|
||||
|
||||
@@ -27,7 +27,8 @@ export const SmsPaymentPage = () => {
|
||||
const [pageParam, setPageParam] = useState(DEFAULT_PAGE_PARAM);
|
||||
const [filterOn, setFilterOn] = useState<boolean>(false);
|
||||
const [mid, setMid] = useState<string>('nictest001m');
|
||||
const [tid, setTid] = useState<string>('');
|
||||
const [selectedTid, setSelectedTid] = useState<string>('');
|
||||
const [selectedMid, setSelectedMid] = useState<string>('');
|
||||
const [searchCl, setSearchCl] = useState<SmsPaymentSearchType>(SmsPaymentSearchType.BUYER_NAME)
|
||||
const [searchValue, setSearchValue] = useState<string>('')
|
||||
const [fromDate, setFromDate] = useState(moment().format('YYYY-MM-DD'));
|
||||
@@ -107,20 +108,15 @@ export const SmsPaymentPage = () => {
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
const onClickToOpenFilter = () => {
|
||||
setFilterOn(!filterOn);
|
||||
};
|
||||
|
||||
const onClickToSort = (sort: SortByKeys) => {
|
||||
setSortBy(sort);
|
||||
callList({ sortBy: sort })
|
||||
};
|
||||
|
||||
|
||||
const onClickToShowDetail = (selectedMid: string, selectedTid: string) => {
|
||||
setTid(selectedTid);
|
||||
callDetail(selectedMid, selectedTid);
|
||||
const onClickToShowDetail = (itemMid: string, itemTid: string) => {
|
||||
setSelectedMid(itemMid);
|
||||
setSelectedTid(itemTid);
|
||||
callDetail(itemMid, itemTid);
|
||||
setBottomSmsPaymentDetailResendOn(true);
|
||||
};
|
||||
|
||||
@@ -179,6 +175,8 @@ export const SmsPaymentPage = () => {
|
||||
bottomSmsPaymentDetailResendOn={bottomSmsPaymentDetailResendOn}
|
||||
setBottomSmsPaymentDetailResendOn={setBottomSmsPaymentDetailResendOn}
|
||||
smsDetailData={smsDetailData}
|
||||
mid={selectedMid}
|
||||
tid={selectedTid}
|
||||
></SmsPaymentDetailResend>
|
||||
|
||||
<SmsPaymentFilter
|
||||
|
||||
Reference in New Issue
Block a user