diff --git a/src/apis/Mail.js b/src/apis/Mail.js index 3542dc0..1873ea9 100644 --- a/src/apis/Mail.js +++ b/src/apis/Mail.js @@ -36,6 +36,20 @@ export const MailDetailView = async (token, id) => { } }; +export const MailCaliumTotalView = async (token) => { + try { + const res = await Axios.get(`/api/v1/mail/calium`, { + headers: { Authorization: `Bearer ${token}` }, + }); + + return res.data.data.stock_calium; + } catch (e) { + if (e instanceof Error) { + throw new Error('MailCaliumTotalView Error', e); + } + } +}; + // 우편 단일 등록 export const MailSingleRegist = async (token, params) => { try { @@ -43,7 +57,7 @@ export const MailSingleRegist = async (token, params) => { headers: { Authorization: `Bearer ${token}` }, }); - return res; + return res.data; } catch (e) { if (e instanceof Error) { throw new Error('MailRegist Error', e); diff --git a/src/assets/data/options.js b/src/assets/data/options.js index 487e488..b4b8c86 100644 --- a/src/assets/data/options.js +++ b/src/assets/data/options.js @@ -73,6 +73,7 @@ export const wellType = [ { value: '19010001', name: '골드' }, { value: '19010002', name: '사파이어' }, { value: '19010005', name: '루비' }, + { value: '19010003', name: '칼리움' }, ]; export const logOption = [ @@ -177,9 +178,10 @@ export const CurrencyType = [ export const battleEventStatus = [ { value: 'ALL', name: '전체' }, - { value: 'WAIT', name: '중단' }, + { value: 'WAIT', name: '대기' }, { value: 'REGISTER', name: '예약완료' }, { value: 'CANCEL', name: '예약취소' }, + { value: 'STOP', name: '중단' }, { value: 'END', name: '종료' }, { value: 'RUNNING', name: '진행중' }, { value: 'FAIL', name: '실패' }, diff --git a/src/assets/data/types.js b/src/assets/data/types.js index cfa06c6..a2e750b 100644 --- a/src/assets/data/types.js +++ b/src/assets/data/types.js @@ -118,4 +118,11 @@ export const battleEventStatusType = { fail: "FAIL", cancel: "CANCEL", running: "RUNNING", +} + +export const currencyCodeTypes = { + gold: "19010001", + sapphire: "19010002", + ruby: "19010005", + calium: "19010003" } \ No newline at end of file diff --git a/src/pages/ServiceManage/MailRegist.js b/src/pages/ServiceManage/MailRegist.js index fd15a9c..6655742 100644 --- a/src/pages/ServiceManage/MailRegist.js +++ b/src/pages/ServiceManage/MailRegist.js @@ -10,13 +10,13 @@ import { Title, BtnWrapper, TextInput, SelectInput, Label, InputLabel, DatePicke import IconDelete from '../../assets/img/icon/icon-delete.png'; import CloseIcon from '../../assets/img/icon/icon-close.png'; -import { HourList, MinuteList, wellType } from '../../assets/data'; +import { HourList, MinuteList, modalTypes, wellType } from '../../assets/data'; import { useNavigate } from 'react-router-dom'; import MailRegistUploadBtn from '../../components/ServiceManage/MailRegistUploadBtn'; import DatePickerComponent from '../../components/common/Date/DatePickerComponent'; import Modal from '../../components/common/modal/Modal'; -import { MailIsItem, MailMultiRegsit, MailSingleRegist } from '../../apis'; +import { MailCaliumTotalView, MailIsItem, MailMultiRegsit, MailSingleRegist } from '../../apis'; import { authList } from '../../store/authList'; import { useRecoilValue } from 'recoil'; @@ -24,12 +24,17 @@ import { useTranslation } from 'react-i18next'; import { MailReceiver, RegistInputRow } from '../../styles/ModuleComponents'; import AuthModal from '../../components/common/modal/AuthModal'; import { authType } from '../../assets/data'; +import { useDataFetch } from '../../utils/hook'; +import { BattleConfigView } from '../../apis/Battle'; +import { currencyCodeTypes } from '../../assets/data/types'; +import { DynamicModal } from '../../components/common'; const MailRegist = () => { const navigate = useNavigate(); const userInfo = useRecoilValue(authList); const { t } = useTranslation(); const environment = process.env.REACT_APP_ENV; + const token = sessionStorage.getItem('token'); const [doubleSubmitFlag, setDoubleSubmitFlag] = useState(false); @@ -55,6 +60,11 @@ const MailRegist = () => { const [confirmText, setConfirmText] = useState(''); const [alertMessage, setAlertMessage] = useState(''); const [loading, setLoading] = useState(false); + const [alertMsg, setAlertMsg] = useState(''); + + const { + data: caliumTotalData + } = useDataFetch(() => MailCaliumTotalView(token), [token]); const [resultData, setResultData] = useState({ is_reserve: false, @@ -109,7 +119,7 @@ const MailRegist = () => { } item.length === 0 || itemCount.length === 0 ? setIsItemNullValue(true) : setIsItemNullValue(false); - const token = sessionStorage.getItem('token'); + // const token = sessionStorage.getItem('token'); const result = await MailIsItem(token, {item: item}); if(result.data.result === "ERROR"){ @@ -183,8 +193,20 @@ const MailRegist = () => { if (itemIndex !== -1) { const item_cnt = resultData.item_list[itemIndex].item_cnt; + if(resource === currencyCodeTypes.calium){ + if((Number(resourceCount) + Number(item_cnt)) > caliumTotalData){ + setAlertMsg(t('MAIL_ITEM_CALIUM_TOTAL_OVER_WARNING')) + return; + } + } resultData.item_list[itemIndex].item_cnt = Number(item_cnt) + Number(resourceCount); } else { + if(resource === currencyCodeTypes.calium){ + if(Number(resourceCount) > caliumTotalData){ + setAlertMsg(t('MAIL_ITEM_CALIUM_TOTAL_OVER_WARNING')) + return; + } + } const name = wellType.find(well => well.value === resource).name; const newItem = { item: resource, item_cnt: resourceCount, item_name: name }; resultData.item_list.push(newItem); @@ -266,19 +288,33 @@ const MailRegist = () => { const handleRegistMail = async () => { setLoading(true); - const token = sessionStorage.getItem('token'); - const message = await MailSingleRegist(token, resultData); - - if (message.data.data.message === t('EXCEL_SELECT')) { - setConfirmText('파일 내 중복된 유저 정보가 있습니다. \n 파일을 다시 확인 후 이용해주세요.'); - } else if (message.data.data.message === '저장 하였습니다.') { - setConfirmText('우편이 정상 등록되었습니다.'); - } else { - setConfirmText(message.data.data.message); - } - setLoading(false); - handleCompleteModal(); - handleSubmitModal(); + await MailSingleRegist(token, resultData).then(data => { + setLoading(false); + handleSubmitModal(); + console.log(data); + if(data.result === "ERROR"){ + if(data.data.message === "ERROR_MAIL_ITEM_CALIUM_OVER"){ + setAlertMsg(t('MAIL_ITEM_CALIUM_TOTAL_OVER_WARNING')); + }else if(data.data.message === "NOT_EXIT_EXCEL"){ + setAlertMsg(t('EXCEL_SELECT')); + }else if(data.data.message === "GUID_CHECK"){ + setAlertMsg(t('WARNING_GUID_CHECK')); + }else if(data.data.message === "NICKNAME_CHECK"){ + setAlertMsg(t('WARNING_NICKNAME_CHECK')); + }else if(data.data.message === "EMAIL_CHECK"){ + setAlertMsg(t('WARNING_EMAIL_CHECK')); + }else if(data.data.message === "USERTYPE_CHECK_EXCEL") { + setAlertMsg(t('WARNING_TYPE_CHECK')); + }else{ + setAlertMsg(data.data.message); + } + }else{ + setConfirmText('우편이 정상 등록되었습니다.'); + handleCompleteModal(); + } + }).catch(error => { + setAlertMsg(t('API_FAIL')); + }); }; const handleSingleBtn = () => { @@ -524,9 +560,11 @@ const MailRegist = () => { + handleResourceCount(e)} width="200px" />