전투시스템 상태 및 처리
This commit is contained in:
@@ -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 {
|
||||
|
||||
@@ -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'
|
||||
},
|
||||
};
|
||||
@@ -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' &&
|
||||
<SingleDatePicker
|
||||
label="종료일자"
|
||||
disabled={false}
|
||||
disabled={!isView('end_dt')}
|
||||
dateLabel="종료 일자"
|
||||
onDateChange={handleEndDateChange}
|
||||
selectedDate={resultData?.event_end_dt}
|
||||
|
||||
@@ -158,8 +158,8 @@ const BattleEventSearchBar = ({ searchParams, onSearch, onReset, configData, rew
|
||||
<SelectInput value={searchParams.configId} onChange={e => onSearch({ configId: e.target.value })}>
|
||||
<option value="ALL">전체</option>
|
||||
{configData?.map((data, index) => (
|
||||
<option key={index} value={data.value}>
|
||||
{data.name}
|
||||
<option key={index} value={data.id}>
|
||||
{data.desc}
|
||||
</option>
|
||||
))}
|
||||
</SelectInput>
|
||||
@@ -169,8 +169,8 @@ const BattleEventSearchBar = ({ searchParams, onSearch, onReset, configData, rew
|
||||
<SelectInput value={searchParams.rewardId} onChange={e => onSearch({ rewardId: e.target.value })}>
|
||||
<option value='ALL'>전체</option>
|
||||
{rewardData?.map((data, index) => (
|
||||
<option key={index} value={data.value}>
|
||||
{data.name}
|
||||
<option key={index} value={data.id}>
|
||||
{data.desc}
|
||||
</option>
|
||||
))}
|
||||
</SelectInput>
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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 = () => {
|
||||
<th width="70">이벤트 ID</th>
|
||||
<th width="200">이벤트명</th>
|
||||
<th width="80">반복</th>
|
||||
<th width="100">기간 시작일(KST)</th>
|
||||
<th width="100">기간 종료일(KST)</th>
|
||||
<th width="100">이벤트 시작시간(KST)</th>
|
||||
<th width="100">이벤트 종료시간(KST)</th>
|
||||
<th width="90">이벤트 상태</th>
|
||||
@@ -285,8 +285,6 @@ const BattleEvent = () => {
|
||||
<th width="90">배정포드</th>
|
||||
<th width="70">라운드 수</th>
|
||||
<th width="70">핫타임</th>
|
||||
<th width="100">기간 시작일(KST)</th>
|
||||
<th width="100">기간 종료일(KST)</th>
|
||||
<th width="100">확인 / 수정</th>
|
||||
<th width="150">히스토리</th>
|
||||
</tr>
|
||||
@@ -307,6 +305,8 @@ const BattleEvent = () => {
|
||||
{battleRepeatType.find(data => data.value === battle.repeat_type).name}
|
||||
</StatusLabel>
|
||||
</StatusWapper>
|
||||
<td>{getDateOnly(convertKTCDate(battle.event_start_dt))}</td>
|
||||
<td>{getDateOnly(battle.event_end_dt)}</td>
|
||||
<td>{getTimeOnly(convertKTCDate(battle.event_start_dt))}</td>
|
||||
<td>{getTimeOnly(endTime(convertKTCDate(battle.event_start_dt), battle.event_operation_time))}</td>
|
||||
<StatusWapper>
|
||||
@@ -318,8 +318,6 @@ const BattleEvent = () => {
|
||||
<td>{battle.reward_group_id}</td>
|
||||
<td>{battle.round_count}</td>
|
||||
<td>{battle.hot_time}</td>
|
||||
<td>{getDateOnly(convertKTCDate(battle.event_start_dt))}</td>
|
||||
<td>{getDateOnly(convertKTCDate(battle.event_end_dt))}</td>
|
||||
<td>
|
||||
<Button theme="line" text="상세보기"
|
||||
handleClick={e => handleModalSubmit('detail', battle.id)} />
|
||||
|
||||
@@ -33,7 +33,12 @@ export const getTimeOnly = (dateString) => {
|
||||
|
||||
export const getDateOnly = (dateString) => {
|
||||
const date = new Date(dateString);
|
||||
return date.toISOString().slice(0, 10);
|
||||
return date.toLocaleDateString('ko-KR', {
|
||||
year: 'numeric',
|
||||
month: '2-digit',
|
||||
day: '2-digit',
|
||||
timeZone: 'Asia/Seoul'
|
||||
}).replace(/\. /g, '-').replace('.', '');
|
||||
}
|
||||
|
||||
export const msToMinutes = (ms) => {
|
||||
|
||||
Reference in New Issue
Block a user