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" />
+ {resource === currencyCodeTypes.calium && }
{isItemNullValue && 필수값을 입력해주세요.}
@@ -588,10 +626,7 @@ const MailRegist = () => {
type="submit"
size="large"
width="100%"
- handleClick={() => {
- doubleSubmitFlag || handleRegistMail();
- setDoubleSubmitFlag(true);
- }}
+ handleClick={() => {handleRegistMail();}}
/>
@@ -630,6 +665,13 @@ const MailRegist = () => {
/>
+ {/* 경고 모달 */}
+ setAlertMsg('')}
+ />
{loading && }
>
)}