From 68c44cbf09f868bc7b37ad0f20dbd6c2b689c658 Mon Sep 17 00:00:00 2001 From: bcjang Date: Mon, 24 Feb 2025 17:49:09 +0900 Subject: [PATCH] =?UTF-8?q?=EC=A0=84=ED=88=AC=EC=8B=9C=EC=8A=A4=ED=85=9C?= =?UTF-8?q?=20=EC=83=81=ED=83=9C=20=EB=B0=8F=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/apis/Battle.js | 15 +++++++++++ src/assets/data/data.js | 16 ++++++++++++ .../ServiceManage/modal/BattleEventModal.js | 25 +++++++++++-------- .../searchBar/BattleEventSearchBar.js | 8 +++--- src/i18n.js | 7 +++++- src/pages/ServiceManage/BattleEvent.js | 12 ++++----- src/utils/date.js | 7 +++++- 7 files changed, 67 insertions(+), 23 deletions(-) diff --git a/src/apis/Battle.js b/src/apis/Battle.js index 6789eda..88fbf4f 100644 --- a/src/apis/Battle.js +++ b/src/apis/Battle.js @@ -66,6 +66,21 @@ export const BattleEventModify = async (token, id, params) => { } }; +//전투시스템 중단 +export const BattleEventStop = async (token, id, params) => { + try { + const res = await Axios.put(`/api/v1/battle/event/stop/${id}`, {},{ + headers: { Authorization: `Bearer ${token}` }, + }); + + return res.data; + } catch (e) { + if (e instanceof Error) { + throw new Error('BattleEventStop Error', e); + } + } +}; + // 전투시스템 삭제 export const BattleEventDelete = async (token, params) => { try { diff --git a/src/assets/data/data.js b/src/assets/data/data.js index 1865385..c4c7d77 100644 --- a/src/assets/data/data.js +++ b/src/assets/data/data.js @@ -61,4 +61,20 @@ export const STATUS_STYLES = { background: '#A37FB8', color: 'white' }, + END: { + background: '#A37FB8', + color: 'white' + }, + REGISTER: { + background: '#DEBB46', + color: 'black' + }, + STOP: { + background: '#FFB59B', + color: 'white' + }, + RUNNING: { + background: '#4287f5', + color: 'white' + }, }; \ No newline at end of file diff --git a/src/components/ServiceManage/modal/BattleEventModal.js b/src/components/ServiceManage/modal/BattleEventModal.js index 283d143..2aef89f 100644 --- a/src/components/ServiceManage/modal/BattleEventModal.js +++ b/src/components/ServiceManage/modal/BattleEventModal.js @@ -58,6 +58,7 @@ const BattleEventModal = ({ modalType, detailView, handleDetailView, content, se if(modalType === TYPE_MODIFY && content && Object.keys(content).length > 0){ setResultData({ group_id: content.group_id, + event_id: content.event_id, event_name: content.event_name, repeat_type: content.repeat_type, config_id: content.config_id, @@ -67,7 +68,8 @@ const BattleEventModal = ({ modalType, detailView, handleDetailView, content, se round_time: content.round_time, status: content.status, event_start_dt: convertKTCDate(content.event_start_dt), - event_end_dt: convertKTCDate(content.event_end_dt) + event_end_dt: content.event_end_dt, + event_operation_time: content.event_operation_time, }); } }, [modalType, content]); @@ -182,7 +184,7 @@ const BattleEventModal = ({ modalType, detailView, handleDetailView, content, se const minAllowedTime = new Date(new Date().getTime() + 10 * 60000); const startDt = resultData.event_start_dt; const endDt = resultData.event_end_dt; - if (startDt < minAllowedTime) { + if (modalType === TYPE_REGISTRY && startDt < minAllowedTime) { setAlertMsg(t('BATTLE_EVENT_MODAL_START_DT_WARNING')); return; } @@ -192,7 +194,7 @@ const BattleEventModal = ({ modalType, detailView, handleDetailView, content, se } //화면에 머물면서 상태는 안바꼈을 경우가 있기에 시작시간 지났을경우 차단 - if (modalType === TYPE_MODIFY && startDt < new Date()) { + if (modalType === TYPE_REGISTRY && startDt < new Date()) { setAlertMsg(t('BATTLE_EVENT_MODAL_START_DT_WARNING')); return; } @@ -220,6 +222,8 @@ const BattleEventModal = ({ modalType, detailView, handleDetailView, content, se handleModalClose('registConfirm'); if(data.result === "SUCCESS") { handleModalView('registComplete'); + }else if(data.result === "ERROR_BATTLE_EVENT_TIME_OVER"){ + setAlertMsg(t('BATTLE_EVENT_MODAL_TIME_CHECK_WARNING')); }else{ setAlertMsg(t('UPDATE_FAIL')); } @@ -266,20 +270,21 @@ const BattleEventModal = ({ modalType, detailView, handleDetailView, content, se const isView = (label) => { switch (label) { case "modify": - return modalType === TYPE_MODIFY && (content?.status === battleEventStatusType.register); - case "registry": + return modalType === TYPE_MODIFY && (content?.status === battleEventStatusType.stop); + case "start_dt": case "repeat": + case "registry": + return modalType === TYPE_REGISTRY + case "end_dt": case "group": case "name": case "config": case "reward": case "round": case "hot": - case "start_dt": - return modalType === TYPE_REGISTRY + return modalType === TYPE_REGISTRY || (modalType === TYPE_MODIFY &&(content?.status === battleEventStatusType.stop)); default: - return modalType === TYPE_MODIFY && (content?.status === battleEventStatusType.register - ); + return modalType === TYPE_MODIFY && (content?.status !== battleEventStatusType.stop); } } @@ -333,7 +338,7 @@ const BattleEventModal = ({ modalType, detailView, handleDetailView, content, se {resultData?.repeat_type !== 'NONE' && onSearch({ configId: e.target.value })}> {configData?.map((data, index) => ( - ))} @@ -169,8 +169,8 @@ const BattleEventSearchBar = ({ searchParams, onSearch, onReset, configData, rew onSearch({ rewardId: e.target.value })}> {rewardData?.map((data, index) => ( - ))} diff --git a/src/i18n.js b/src/i18n.js index d215e94..fd8f072 100644 --- a/src/i18n.js +++ b/src/i18n.js @@ -33,6 +33,10 @@ const resources = { EXCEL_SELECT: 'Excel 파일을 선택해주세요.', TIME_NOW_DIFF_START: '현재 시간보다 5분 이전의 시간은 선택할 수 없습니다.', TIME_START_DIFF_END: '시작 시간보다 작을 수 없습니다.', + WARNING_GUID_CHECK: 'GUID를 확인해주세요.', + WARNING_NICKNAME_CHECK: '닉네임을 확인해주세요.', + WARNING_EMAIL_CHECK: '이메일을 확인해주세요.', + WARNING_TYPE_CHECK: '타입을 확인해주세요.', //랜드 LAND_AUCTION_SELECT_DELETE: "선택된 경매를 삭제하시겠습니까?", LAND_AUCTION_WARNING_DELETE: "대기 상태의 경매만 삭제할 수 있습니다.", @@ -68,6 +72,7 @@ const resources = { MAIL_SELECT_DELETE: "선택된 우편을 삭제하시겠습니까?\r\n삭제시 설정 정보가 제거됩니다.", MAIL_ITEM_ADD_DUPL: '이미 추가된 아이템입니다. 삭제 후 다시 추가해주세요.', MAIL_ITEM_ADD_BEN: '첨부 할 수 없는 아이템입니다.', + MAIL_ITEM_CALIUM_TOTAL_OVER_WARNING: '첨부 가능한 칼리움 수량을 초과 하였습니다.', MAIL_CANCEL: '우편 등록이 취소되었습니다.', //칼리움 요청 CHARGE_COMPLTED: '해당 건에 대한 충전 처리가 완료되었습니다.', @@ -89,7 +94,7 @@ const resources = { BATTLE_EVENT_SELECT_STOP: "선택된 이벤트를 중단하시겠습니까?", BATTLE_EVENT_STOP_5MINUTES_DATE_WARNING: "이벤트 시작 5분 전에는 중단할 수 없습니다.", BATTLE_EVENT_STATUS_RUNNING_WARNING: "이벤트 진행중에는 중단할 수 없습니다.", - BATTLE_EVENT_MODAL_STATUS_WARNING: "이벤트가 진행중에는 변경이 불가합니다.", + BATTLE_EVENT_MODAL_STATUS_WARNING: "이벤트가 중단일때만 수정이 가능합니다.", //파일명칭 FILE_INDEX_USER_CONTENT: 'Caliverse_User_Index.xlsx', FILE_CALIUM_REQUEST: 'Caliverse_Calium_Request.xlsx', diff --git a/src/pages/ServiceManage/BattleEvent.js b/src/pages/ServiceManage/BattleEvent.js index 4eaabe9..2cd9843 100644 --- a/src/pages/ServiceManage/BattleEvent.js +++ b/src/pages/ServiceManage/BattleEvent.js @@ -29,10 +29,9 @@ import { ViewTableInfo, ExcelDownButton, } from '../../components/common'; import { convertKTC, convertKTCDate, convertUTC, timeDiffMinute } from '../../utils'; -import { BattleEventModal, LandAuctionModal, LandAuctionSearchBar } from '../../components/ServiceManage'; +import { BattleEventModal } from '../../components/ServiceManage'; import { INITIAL_PAGE_SIZE, INITIAL_PAGE_LIMIT } from '../../assets/data/adminConstants'; import { useDataFetch, useModal, useTable, withAuth } from '../../utils/hook'; -import { useLandAuctionSearch } from '../../components/ServiceManage/searchBar/LandAuctionSearchBar'; import { StatusWapper, StatusLabel } from '../../styles/ModuleComponents'; import { battleEventStatus, battleRepeatType } from '../../assets/data/options'; import BattleEventSearchBar, { @@ -157,7 +156,6 @@ const BattleEvent = () => { setAlertMsg(t('BATTLE_EVENT_STATUS_RUNNING_WARNING')); return; } - console.log(select_item) const isStopTimeCheck = isStopMinutes(select_item.event_start_dt); if(isStopTimeCheck){ setAlertMsg(t('BATTLE_EVENT_STOP_5MINUTES_DATE_WARNING')); @@ -278,6 +276,8 @@ const BattleEvent = () => { 이벤트 ID 이벤트명 반복 + 기간 시작일(KST) + 기간 종료일(KST) 이벤트 시작시간(KST) 이벤트 종료시간(KST) 이벤트 상태 @@ -285,8 +285,6 @@ const BattleEvent = () => { 배정포드 라운드 수 핫타임 - 기간 시작일(KST) - 기간 종료일(KST) 확인 / 수정 히스토리 @@ -307,6 +305,8 @@ const BattleEvent = () => { {battleRepeatType.find(data => data.value === battle.repeat_type).name} + {getDateOnly(convertKTCDate(battle.event_start_dt))} + {getDateOnly(battle.event_end_dt)} {getTimeOnly(convertKTCDate(battle.event_start_dt))} {getTimeOnly(endTime(convertKTCDate(battle.event_start_dt), battle.event_operation_time))} @@ -318,8 +318,6 @@ const BattleEvent = () => { {battle.reward_group_id} {battle.round_count} {battle.hot_time} - {getDateOnly(convertKTCDate(battle.event_start_dt))} - {getDateOnly(convertKTCDate(battle.event_end_dt))}