전투시스템 스케줄러 game mode 방식 변경

This commit is contained in:
2025-06-19 18:54:15 +09:00
parent 495243a1a3
commit b2b579ead1
4 changed files with 84 additions and 36 deletions

View File

@@ -129,4 +129,21 @@ export const BattleRewardView = async (token) => {
throw new Error('BattleRewardView Error', e);
}
}
};
export const GameModeView = async (token) => {
try {
const res = await Axios.get(
`/api/v1/battle/game-mode/list`,
{
headers: { Authorization: `Bearer ${token}` },
},
);
return res.data.data.game_mode_list;
} catch (e) {
if (e instanceof Error) {
throw new Error('GameModeView Error', e);
}
}
};

View File

@@ -33,7 +33,7 @@ import { isValidDayRange } from '../../utils/date';
import { useAlert } from '../../context/AlertProvider';
import { useLoading } from '../../context/LoadingProvider';
const BattleEventModal = ({ modalType, detailView, handleDetailView, content, setDetailData, configData, rewardData }) => {
const BattleEventModal = ({ modalType, detailView, handleDetailView, content, setDetailData, configData, rewardData, gameModeData }) => {
const { t } = useTranslation();
const token = sessionStorage.getItem('token');
const { showToast, showModal } = useAlert();
@@ -46,7 +46,8 @@ 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,
id: content.id,
event_id: content.id,
event_name: content.event_name,
repeat_type: content.repeat_type,
config_id: content.config_id,
@@ -54,6 +55,7 @@ const BattleEventModal = ({ modalType, detailView, handleDetailView, content, se
round_count: content.round_count,
hot_time: content.hot_time,
round_time: content.round_time,
game_mode_id: content.game_mode_id,
status: content.status,
event_start_dt: convertKTCDate(content.event_start_dt),
event_end_dt: content.event_end_dt,
@@ -262,6 +264,7 @@ const BattleEventModal = ({ modalType, detailView, handleDetailView, content, se
case "reward":
case "round":
case "hot":
case "mode":
return modalType === TYPE_REGISTRY || (modalType === TYPE_MODIFY &&(content?.status === battleEventStatusType.stop));
default:
return modalType === TYPE_MODIFY && (content?.status !== battleEventStatusType.stop);
@@ -326,14 +329,14 @@ const BattleEventModal = ({ modalType, detailView, handleDetailView, content, se
}
</FormRowGroup>
<FormRowGroup>
<FormLabel>라운드 시간</FormLabel>
<SelectInput value={resultData.config_id} onChange={handleConfigChange} disabled={!isView('config')} width="200px">
{configData && configData?.map((data, index) => (
<option key={index} value={data.id}>
{data.desc}({data.id})
</option>
))}
</SelectInput>
{/*<FormLabel>라운드 시간</FormLabel>*/}
{/*<SelectInput value={resultData.config_id} onChange={handleConfigChange} disabled={!isView('config')} width="200px">*/}
{/* {configData && configData?.map((data, index) => (*/}
{/* <option key={index} value={data.id}>*/}
{/* {data.desc}({data.id})*/}
{/* </option>*/}
{/* ))}*/}
{/*</SelectInput>*/}
<FormLabel>라운드 </FormLabel>
<SelectInput value={resultData.round_count} onChange={e => setResultData({ ...resultData, round_count: e.target.value })} disabled={!isView('round')} width="100px">
{battleEventRoundCount.map((data, index) => (
@@ -344,11 +347,19 @@ const BattleEventModal = ({ modalType, detailView, handleDetailView, content, se
</SelectInput>
</FormRowGroup>
<FormRowGroup>
<FormLabel>배정 포드</FormLabel>
<SelectInput value={resultData.reward_group_id} onChange={e => setResultData({ ...resultData, reward_group_id: e.target.value })} disabled={!isView('reward')} width="200px">
{rewardData && rewardData?.map((data, index) => (
<option key={index} value={data.group_id}>
{data.desc}({data.group_id})
{/*<FormLabel>배정 포드</FormLabel>*/}
{/*<SelectInput value={resultData.reward_group_id} onChange={e => setResultData({ ...resultData, reward_group_id: e.target.value })} disabled={!isView('reward')} width="200px">*/}
{/* {rewardData && rewardData?.map((data, index) => (*/}
{/* <option key={index} value={data.group_id}>*/}
{/* {data.desc}({data.group_id})*/}
{/* </option>*/}
{/* ))}*/}
{/*</SelectInput>*/}
<FormLabel>게임 모드</FormLabel>
<SelectInput value={resultData.game_mode_id} onChange={e => setResultData({ ...resultData, game_mode_id: e.target.value })} disabled={!isView('mode')} width="200px">
{gameModeData && gameModeData?.map((data, index) => (
<option key={index} value={data.id}>
{data.desc}({data.id})
</option>
))}
</SelectInput>
@@ -421,6 +432,7 @@ export const initData = {
reward_group_id: 1,
round_count: 1,
hot_time: 1,
game_mode_id: 1,
event_start_dt: '',
event_end_dt: ''
}

View File

@@ -126,7 +126,7 @@ export const useBattleEventSearch = (token, initialPageSize) => {
};
};
const BattleEventSearchBar = ({ searchParams, onSearch, onReset, configData, rewardData }) => {
const BattleEventSearchBar = ({ searchParams, onSearch, onReset, configData, rewardData, gameModeData }) => {
const handleSubmit = event => {
event.preventDefault();
@@ -153,22 +153,33 @@ const BattleEventSearchBar = ({ searchParams, onSearch, onReset, configData, rew
</InputGroup>
</>,
<>
<InputLabel>라운드 시간</InputLabel>
{/*<InputLabel>라운드 시간</InputLabel>*/}
{/*<InputGroup>*/}
{/* <SelectInput value={searchParams.configId} onChange={e => onSearch({ configId: e.target.value })}>*/}
{/* <option value="ALL">전체</option>*/}
{/* {configData?.map((data, index) => (*/}
{/* <option key={index} value={data.id}>*/}
{/* {data.desc}*/}
{/* </option>*/}
{/* ))}*/}
{/* </SelectInput>*/}
{/*</InputGroup>*/}
{/*<InputLabel>배정 포드</InputLabel>*/}
{/*<InputGroup>*/}
{/* <SelectInput value={searchParams.rewardId} onChange={e => onSearch({ rewardId: e.target.value })}>*/}
{/* <option value='ALL'>전체</option>*/}
{/* {rewardData?.map((data, index) => (*/}
{/* <option key={index} value={data.id}>*/}
{/* {data.desc}*/}
{/* </option>*/}
{/* ))}*/}
{/* </SelectInput>*/}
{/*</InputGroup>*/}
<InputLabel>게임모드</InputLabel>
<InputGroup>
<SelectInput value={searchParams.configId} onChange={e => onSearch({ configId: e.target.value })}>
<option value="ALL">전체</option>
{configData?.map((data, index) => (
<option key={index} value={data.id}>
{data.desc}
</option>
))}
</SelectInput>
</InputGroup>
<InputLabel>배정 포드</InputLabel>
<InputGroup>
<SelectInput value={searchParams.rewardId} onChange={e => onSearch({ rewardId: e.target.value })}>
<SelectInput value={searchParams.game_mode_id} onChange={e => onSearch({ game_mode_id: e.target.value })}>
<option value='ALL'>전체</option>
{rewardData?.map((data, index) => (
{gameModeData?.map((data, index) => (
<option key={index} value={data.id}>
{data.desc}
</option>

View File

@@ -8,7 +8,7 @@ import {
BattleEventDelete,
BattleEventDetailView, BattleEventStop,
BattleEventView,
BattleRewardView,
BattleRewardView, GameModeView,
} from '../../apis/Battle';
import { authList } from '../../store/authList';
@@ -91,6 +91,10 @@ const BattleEvent = () => {
data: battleRewardData
} = useDataFetch(() => BattleRewardView(token), [token]);
const {
data: gameModeData
} = useDataFetch(() => GameModeView(token), [token]);
const endTime = (start_dt, operation_time) =>{
const startDate = new Date(start_dt);
@@ -262,6 +266,7 @@ const BattleEvent = () => {
onReset={handleReset}
configData={battleConfigData}
rewardData={battleRewardData}
gameModeData={gameModeData}
/>
</FormWrapper>
<ViewTableInfo total={dataList?.total} total_all={dataList?.total_all} handleOrderBy={handleOrderByChange} handlePageSize={handlePageSizeChange}>
@@ -296,8 +301,9 @@ const BattleEvent = () => {
<th width="100">이벤트 시작시간(KST)</th>
<th width="100">이벤트 종료시간(KST)</th>
<th width="90">이벤트 상태</th>
<th width="90">라운드 시간</th>
<th width="90">배정포드</th>
<th width="90">게임모드</th>
{/*<th width="90">라운드 시간</th>*/}
{/*<th width="90">배정포드</th>*/}
<th width="70">라운드 </th>
<th width="70">핫타임</th>
<th width="100">확인 / 수정</th>
@@ -313,7 +319,7 @@ const BattleEvent = () => {
checked={isRowSelected(battle.id)} />
</td>
<td>{battle.group_id}</td>
<td>{battle.event_id}</td>
<td>{battle.id}</td>
<td>{battle.event_name}</td>
<StatusWapper>
<StatusLabel $status={battle.repeat_type}>
@@ -329,8 +335,9 @@ const BattleEvent = () => {
{battleEventStatus.find(data => data.value === battle.status).name}
</StatusLabel>
</StatusWapper>
<td>{secondToMinutes(battle.round_time)}</td>
<td>{battle.reward_group_id}</td>
<td>{battle.game_mode_id}</td>
{/*<td>{secondToMinutes(battle.round_time)}분</td>*/}
{/*<td>{battle.reward_group_id}</td>*/}
<td>{battle.round_count}</td>
<td>{battle.hot_time}</td>
<td>
@@ -359,6 +366,7 @@ const BattleEvent = () => {
setDetailData={setDetailData}
configData={battleConfigData}
rewardData={battleRewardData}
gameModeData={gameModeData}
/>
<LogDetailModal