diff --git a/game-server/app/services/guildTrainService.ts b/game-server/app/services/guildTrainService.ts index 92cabe002..aa21b7015 100644 --- a/game-server/app/services/guildTrainService.ts +++ b/game-server/app/services/guildTrainService.ts @@ -9,7 +9,7 @@ import { ARMY } from '../pubUtils/dicParam'; import { lockData } from './redLockService'; import { pinus } from 'pinus'; import { MailModel, MailType } from '../db/Mail'; -import { resResult, getRandSingleEelm } from '../pubUtils/util'; +import { resResult, getRandSingleEelm, shouldRefresh } from '../pubUtils/util'; import { STATUS } from '../consts/statusCode'; import { GuildTrainReportModel } from '../db/GuildTrainReport'; import { DATA_NAME } from '../consts/dataName'; @@ -23,26 +23,12 @@ import { getGuildChannelSid } from './chatChannelService'; */ export async function refreshTrain(userGuild: UserGuildType, roleId: string, serverId: number) { let { trainCount, trainTime, buyTrainCount, guildCode} = userGuild; - let trainId = await resetTrain(guildCode, serverId);//检查重置练兵场 + await resetTrain(guildCode, serverId);//检查重置练兵场 if (trainTime < getZeroPoint()) {//重置挑战次数和购买次数 trainCount = ARMY.ARMY_TRAIN_BUYTIMES; buyTrainCount = 0; userGuild = await UserGuildModel.updateInfo(roleId, {trainCount, trainTime: nowSeconds(), buyTrainCount}, {}); - if(trainId) { - - let { trainInstances } = getArmyTrainJuDian(trainId); - // 初始化 - let instances = trainInstances.map(trainInstance => { - let t = new TrainInstance(); - t.hid = trainInstance.hid; - t.progress = 0; - t.endTime = 0; - t.trainBoxs = []; - return t; - }); - await GuildTrainModel.updateGuildTrain(guildCode, trainId, { trainInstances: instances }); - } } return userGuild; @@ -155,7 +141,23 @@ export async function resetTrain(code: string, serverId: number) { let res:any = await lockData(serverId, DATA_NAME.GUILD, code);//加锁 if (!!res.err) return; - let { structure, trainId } = await GuildModel.findGuild(code, serverId, 'structure trainId'); + let { structure, trainId, resetTrainTimeDaily } = await GuildModel.findGuild(code, serverId, 'structure trainId resetTrainTimeDaily'); + if(trainId && shouldRefresh(resetTrainTimeDaily, new Date())) { + let { trainInstances } = getArmyTrainJuDian(trainId); + // 初始化 + let instances = trainInstances.map(trainInstance => { + let t = new TrainInstance(); + t.hid = trainInstance.hid; + t.progress = 0; + t.endTime = 0; + t.trainBoxs = []; + return t; + }); + await GuildTrainModel.updateGuildTrain(code, trainId, { trainInstances: instances }); + await GuildModel.updateInfo(code, { resetTrainTimeDaily: new Date() }); + } + + let { lv } = findWhere(structure, {id: GUILD_STRUCTURE.TRAIN}); let guild = await GuildModel.resetGuildTrain(code, serverId, lv); res.releaseCallback();//解锁 diff --git a/shared/db/Guild.ts b/shared/db/Guild.ts index 5dc0a3355..67f052ab9 100644 --- a/shared/db/Guild.ts +++ b/shared/db/Guild.ts @@ -103,6 +103,9 @@ export default class Guild extends BaseModel { @prop({ required: true, default: () => { return getZeroPoint(SHOP_REFRESH_TYPE.WEEKLY) } }) resetTrainTime: number;//上次刷新挑战训练场次数的时间 + @prop({ required: true, default: () => { return new Date()} }) + resetTrainTimeDaily: Date; + @prop({ required: true, default: getZeroPointD }) refOpenBossTime: Date; // 开启boss本刷新时间