부가서비스
- 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;
|
bottomSmsPaymentDetailResendOn: boolean;
|
||||||
setBottomSmsPaymentDetailResendOn: (bottomSmsPaymentDetailResendOn: boolean) => void;
|
setBottomSmsPaymentDetailResendOn: (bottomSmsPaymentDetailResendOn: boolean) => void;
|
||||||
smsDetailData: ExtensionSmsDetailResponse | null;
|
smsDetailData: ExtensionSmsDetailResponse | null;
|
||||||
|
mid: string;
|
||||||
|
tid: string;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,17 +1,47 @@
|
|||||||
import { motion } from 'framer-motion';
|
import { motion } from 'framer-motion';
|
||||||
import { IMAGE_ROOT } from '@/shared/constants/common';
|
import { IMAGE_ROOT } from '@/shared/constants/common';
|
||||||
import { SmsPaymentDetailResendProps } from '../../../additional-service/model/sms-payment/types';
|
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 = ({
|
export const SmsPaymentDetailResend = ({
|
||||||
bottomSmsPaymentDetailResendOn,
|
bottomSmsPaymentDetailResendOn,
|
||||||
setBottomSmsPaymentDetailResendOn,
|
setBottomSmsPaymentDetailResendOn,
|
||||||
smsDetailData
|
smsDetailData,
|
||||||
|
mid,
|
||||||
|
tid
|
||||||
}: SmsPaymentDetailResendProps) => {
|
}: SmsPaymentDetailResendProps) => {
|
||||||
|
|
||||||
const variants = {
|
const variants = {
|
||||||
hidden: { y: '100%' },
|
hidden: { y: '100%' },
|
||||||
visible: { y: '0%' },
|
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 = () => {
|
const onClickToClose = () => {
|
||||||
// close
|
// close
|
||||||
setBottomSmsPaymentDetailResendOn(false);
|
setBottomSmsPaymentDetailResendOn(false);
|
||||||
@@ -52,7 +82,14 @@ export const SmsPaymentDetailResend = ({
|
|||||||
<p className="resend-text">{smsDetailData?.sendMessage || '-'}</p>
|
<p className="resend-text">{smsDetailData?.sendMessage || '-'}</p>
|
||||||
</div>
|
</div>
|
||||||
<div className="bottomsheet-footer">
|
<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>
|
</div>
|
||||||
</motion.div>
|
</motion.div>
|
||||||
</>
|
</>
|
||||||
|
|||||||
@@ -59,8 +59,8 @@ export const SmsPaymentFilter = ({
|
|||||||
|
|
||||||
let smsTypeOption = [
|
let smsTypeOption = [
|
||||||
{ name: '전체', value: SmsType.ALL },
|
{ name: '전체', value: SmsType.ALL },
|
||||||
{ name: '가상계좌요청', value: SmsType.VACCOUNT_REQ },
|
{ name: '가상계좌\n요청', value: SmsType.VACCOUNT_REQ },
|
||||||
{ name: '가상계좌 요청+입금', value: SmsType.VACCOUNT_REQ_DEPOSIT },
|
{ name: '가상계좌\n요청+입금', value: SmsType.VACCOUNT_REQ_DEPOSIT },
|
||||||
]
|
]
|
||||||
|
|
||||||
const onClickToClose = () => {
|
const onClickToClose = () => {
|
||||||
|
|||||||
@@ -27,7 +27,8 @@ export const SmsPaymentPage = () => {
|
|||||||
const [pageParam, setPageParam] = useState(DEFAULT_PAGE_PARAM);
|
const [pageParam, setPageParam] = useState(DEFAULT_PAGE_PARAM);
|
||||||
const [filterOn, setFilterOn] = useState<boolean>(false);
|
const [filterOn, setFilterOn] = useState<boolean>(false);
|
||||||
const [mid, setMid] = useState<string>('nictest001m');
|
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 [searchCl, setSearchCl] = useState<SmsPaymentSearchType>(SmsPaymentSearchType.BUYER_NAME)
|
||||||
const [searchValue, setSearchValue] = useState<string>('')
|
const [searchValue, setSearchValue] = useState<string>('')
|
||||||
const [fromDate, setFromDate] = useState(moment().format('YYYY-MM-DD'));
|
const [fromDate, setFromDate] = useState(moment().format('YYYY-MM-DD'));
|
||||||
@@ -107,20 +108,15 @@ export const SmsPaymentPage = () => {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
const onClickToOpenFilter = () => {
|
const onClickToOpenFilter = () => {
|
||||||
setFilterOn(!filterOn);
|
setFilterOn(!filterOn);
|
||||||
};
|
};
|
||||||
|
|
||||||
const onClickToSort = (sort: SortByKeys) => {
|
|
||||||
setSortBy(sort);
|
|
||||||
callList({ sortBy: sort })
|
|
||||||
};
|
|
||||||
|
|
||||||
|
const onClickToShowDetail = (itemMid: string, itemTid: string) => {
|
||||||
const onClickToShowDetail = (selectedMid: string, selectedTid: string) => {
|
setSelectedMid(itemMid);
|
||||||
setTid(selectedTid);
|
setSelectedTid(itemTid);
|
||||||
callDetail(selectedMid, selectedTid);
|
callDetail(itemMid, itemTid);
|
||||||
setBottomSmsPaymentDetailResendOn(true);
|
setBottomSmsPaymentDetailResendOn(true);
|
||||||
};
|
};
|
||||||
|
|
||||||
@@ -179,6 +175,8 @@ export const SmsPaymentPage = () => {
|
|||||||
bottomSmsPaymentDetailResendOn={bottomSmsPaymentDetailResendOn}
|
bottomSmsPaymentDetailResendOn={bottomSmsPaymentDetailResendOn}
|
||||||
setBottomSmsPaymentDetailResendOn={setBottomSmsPaymentDetailResendOn}
|
setBottomSmsPaymentDetailResendOn={setBottomSmsPaymentDetailResendOn}
|
||||||
smsDetailData={smsDetailData}
|
smsDetailData={smsDetailData}
|
||||||
|
mid={selectedMid}
|
||||||
|
tid={selectedTid}
|
||||||
></SmsPaymentDetailResend>
|
></SmsPaymentDetailResend>
|
||||||
|
|
||||||
<SmsPaymentFilter
|
<SmsPaymentFilter
|
||||||
|
|||||||
Reference in New Issue
Block a user