后台:设置关卡等级
This commit is contained in:
@@ -6,7 +6,7 @@ import { PvpDefenseModel } from '@db/PvpDefense';
|
||||
|
||||
import { Service } from 'egg';
|
||||
import Counter from '@db/Counter';
|
||||
import { STATUS, HERO_SYSTEM_TYPE, ITEM_CHANGE_REASON, REDIS_KEY } from '@consts';
|
||||
import { STATUS, HERO_SYSTEM_TYPE, ITEM_CHANGE_REASON, REDIS_KEY, WAR_TYPE } from '@consts';
|
||||
import { ITID, COUNTER } from '@consts';
|
||||
import { ItemModel } from '@db/Item';
|
||||
import { gameData, getExpByLv } from '@pubUtils/data';
|
||||
@@ -27,6 +27,8 @@ import { isNumber } from 'util';
|
||||
import { GuildModel } from '@db/Guild';
|
||||
import { RedisClient } from 'redis';
|
||||
import { UserGuildModel } from '@db/UserGuild';
|
||||
import { TowerRecordModel } from '@db/TowerRecord';
|
||||
import { HangUpRecordModel } from '@db/HangUpRecord';
|
||||
|
||||
// import { resResult } from '@pubUtils/util';
|
||||
|
||||
@@ -726,22 +728,36 @@ export default class GMUsers extends Service {
|
||||
});
|
||||
}
|
||||
|
||||
public async setWarRecord(roleIds: string[], _warId: string) {
|
||||
public async setWarRecord(roleId: string, warId: number) {
|
||||
const { ctx } = this;
|
||||
let warId = parseInt(_warId);
|
||||
if(warId < 104) return ctx.service.utils.resResult(STATUS.WRONG_PARMS, null, '不可跳到序章以前')
|
||||
if(!isNumber(warId)) return ctx.service.utils.resResult(STATUS.WRONG_PARMS);
|
||||
if(warId < 104) return ctx.service.utils.resResult(STATUS.WRONG_PARMS, '不可以跳到序章以前')
|
||||
let dicWar = gameData.war.get(warId);
|
||||
if(!dicWar) return ctx.service.utils.resResult(STATUS.WRONG_PARMS);
|
||||
|
||||
for(let roleId of roleIds) {
|
||||
await this.setSingleWarRecord(roleId, dicWar);
|
||||
await this.setWarStarAndScript(roleId, dicWar);
|
||||
if(dicWar.warType == WAR_TYPE.TOWER) {
|
||||
await this.setTowerWar(roleId, dicWar);
|
||||
}
|
||||
return ctx.service.utils.resResult(STATUS.SUCCESS);
|
||||
}
|
||||
|
||||
private async setSingleWarRecord(roleId: string, dicWar: DicWar) {
|
||||
private async setTowerWar(roleId: string, dicWar: DicWar) {
|
||||
let towerLv = 1;
|
||||
for(let [lv, dicTower] of gameData.tower) {
|
||||
if(dicTower.warArray.indexOf(dicWar.war_id) != -1) {
|
||||
towerLv = lv; break;
|
||||
}
|
||||
}
|
||||
let role = await RoleModel.updateRoleInfo(roleId, { towerLv });
|
||||
await TowerRecordModel.deleteAccount(roleId);
|
||||
await TowerRecordModel.insertTowerRec(roleId, towerLv);
|
||||
await HangUpRecordModel.updateRec(roleId, role.roleName, towerLv, new Date(), []);
|
||||
}
|
||||
|
||||
private async setWarStarAndScript(roleId: string, dicWar: DicWar) {
|
||||
let { warStar } = await RoleModel.findByRoleId(roleId);
|
||||
let deleteIds: number[] = [], myMaxWarId = 0, insertParams: DicWar[] = [];
|
||||
let deleteIds: number[] = [], myMaxWarId = 0;
|
||||
for(let i = 0; i < warStar.length; i++) {
|
||||
let { id, warType } = warStar[i];
|
||||
if(warType == dicWar.warType) {
|
||||
@@ -761,7 +777,6 @@ export default class GMUsers extends Service {
|
||||
let _dicWar = gameData.war.get(id)
|
||||
if(_dicWar && _dicWar.warType == dicWar.warType) {
|
||||
newWarStar.push({ id, warType: _dicWar.warType, star: 0, stars: [] });
|
||||
insertParams.push(_dicWar);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -771,12 +786,17 @@ export default class GMUsers extends Service {
|
||||
let _dicWar = gameData.war.get(dicWar.previousGk);
|
||||
newWarStar.push({ id: _dicWar.war_id, warType: _dicWar.warType, star: 0, stars: [] });
|
||||
}
|
||||
await RScriptRecordModel.deleteByWarType(roleId, dicWar.warType);
|
||||
let insertParams: DicWar[] = [];
|
||||
for(let [_, obj] of gameData.war) {
|
||||
if(dicWar.warType == obj.warType && obj.war_id < dicWar.war_id) {
|
||||
insertParams.push(obj);
|
||||
}
|
||||
}
|
||||
|
||||
if(insertParams.length > 0) {
|
||||
await RScriptRecordModel.insertScripts(roleId, insertParams);
|
||||
}
|
||||
if(deleteIds.length > 0) {
|
||||
await RScriptRecordModel.deleteByWarId(roleId, deleteIds);
|
||||
}
|
||||
let role = await RoleModel.updateRoleInfo(roleId, { warStar: newWarStar });
|
||||
return role;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user