diff --git a/game-server/app/servers/gm/handler/gmRoleHandler.ts b/game-server/app/servers/gm/handler/gmRoleHandler.ts index 2ac09a7d7..40fe2be5f 100644 --- a/game-server/app/servers/gm/handler/gmRoleHandler.ts +++ b/game-server/app/servers/gm/handler/gmRoleHandler.ts @@ -27,6 +27,7 @@ import { DicWar } from '../../../pubUtils/dictionary/DicWar'; import { SchoolModel } from '../../../db/School'; import { JewelModel } from '../../../db/Jewel'; import { RoleCeModel } from '../../../db/RoleCe'; +import { setTrainLv } from '../../../services/gmService'; let timer: NodeJS.Timer; export default function (app: Application) { @@ -187,6 +188,11 @@ export class GmRoleHandler { } guild = await GuildModel.updateInfo(params.code, updateParams); + + if(params.trainLv) { + await setTrainLv(params.code, params.trainLv); + } + return resResult(STATUS.SUCCESS); } async dismissGuild(msg: { code: string }, session: BackendSession) { diff --git a/game-server/app/services/gmService.ts b/game-server/app/services/gmService.ts index a2ee72213..5e3a614e9 100644 --- a/game-server/app/services/gmService.ts +++ b/game-server/app/services/gmService.ts @@ -33,6 +33,10 @@ import { getPopUpShopData } from "./activity/popUpShopService"; import { TaskPassData } from "../domain/activityField/taskPassField"; import { ActivityGroupModel } from "../db/ActivityGroup"; import { redisClient } from "./redisService"; +import { gameData } from "../pubUtils/data"; +import { GuildModel } from "../db/Guild"; +import { GuildTrainModel } from "../db/GuildTrain"; +import { unlockTrain } from "./guildTrainService"; // —————————————— 跑马灯 —————————————— // // 初始 @@ -364,4 +368,19 @@ export async function getSurvey(roleId: string, lv: number) { let index = recs.findIndex(rec => rec.surveyId == survey.surveyId); return index == -1 }); +} + +export async function setTrainLv(guildCode: string, trainLv: string) { + let [_lv, _id] = trainLv.split('-'); + let lv = parseInt(_lv), id = parseInt(_id); + if(!isNaN(lv) && !isNaN(id)) { + let structure = gameData.trainBase.get(lv); + let trainIds = structure?.trainIds||[]; + let trainId = trainIds[id - 1]; + if(trainId) { + await GuildModel.updateInfo(guildCode, { trainId, trainLv: lv }); + await GuildTrainModel.resetGuildTrain(guildCode); + await unlockTrain(guildCode, trainId); + } + } } \ No newline at end of file diff --git a/shared/domain/backEndField/params.ts b/shared/domain/backEndField/params.ts index fc0876148..67e8922ce 100644 --- a/shared/domain/backEndField/params.ts +++ b/shared/domain/backEndField/params.ts @@ -295,6 +295,7 @@ export class GuildFormParam { wishPool: number; store: number; donate: number; + trainLv: string; constructor(obj?: any) { if(obj) { @@ -316,6 +317,8 @@ export class GuildFormParam { if(this.wishPool && !isNumber(this.wishPool)) return false; if(this.store && !isNumber(this.store)) return false; if(this.donate && !isNumber(this.donate)) return false; + if(this.trainLv && !isString(this.trainLv)) return false; + return true; } } diff --git a/shared/pubUtils/dictionary/DicStructure.ts b/shared/pubUtils/dictionary/DicStructure.ts index 8402468e2..b16a384df 100644 --- a/shared/pubUtils/dictionary/DicStructure.ts +++ b/shared/pubUtils/dictionary/DicStructure.ts @@ -1,5 +1,5 @@ // 军团建筑物 -import {readFileAndParse, parseGoodStr, decodeArrayListStr} from '../util' +import {readFileAndParse, parseGoodStr, decodeArrayListStr, parseNumberList} from '../util' import { FILENAME } from '../../consts' import { RewardInter } from '../interface'; const _ = require('lodash'); @@ -104,6 +104,8 @@ export interface DicTrainBase { readonly difficultyRatio: number; // 据点奖励增长系数 readonly judianRewardRatio: number; + // 试炼id + readonly trainIds: number[]; } const DicTrainKeys: KeysEnum = { @@ -111,7 +113,8 @@ const DicTrainKeys: KeysEnum = { level: true, trainLevel: true, difficultyRatio: true, - judianRewardRatio: true + judianRewardRatio: true, + trainIds: true }; // 捐献所 @@ -192,6 +195,7 @@ export function loadStructure() { let arrTrain = readFileAndParse(FILENAME.DIC_GUILD_TRAIN_BASE); arrTrain.forEach(o => { setStructureConsume(o); + o.trainIds = parseNumberList(o.shilianId); dicTrainBase.set(o.level, _.pick(o, Object.keys(DicTrainKeys))); }); arrTrain = undefined;