From bc612c81c12a2551402bbdc39d9ecbb51c963588 Mon Sep 17 00:00:00 2001 From: luying Date: Mon, 19 Apr 2021 14:05:26 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=BB=E5=8A=A1=EF=BC=9A=E6=A0=B9=E6=8D=AEte?= =?UTF-8?q?st=E7=BB=93=E6=9E=9C=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- game-server/app/services/pvpService.ts | 2 +- game-server/app/services/taskService.ts | 4 +++- shared/db/Role.ts | 6 +++--- shared/pubUtils/taskUtil.ts | 8 +++++--- 4 files changed, 12 insertions(+), 8 deletions(-) diff --git a/game-server/app/services/pvpService.ts b/game-server/app/services/pvpService.ts index c34688796..7da07ec77 100644 --- a/game-server/app/services/pvpService.ts +++ b/game-server/app/services/pvpService.ts @@ -69,7 +69,7 @@ export async function getEnemies(oppPlayers: OppPlayers[], winStreakNum: number) for(let oppPlayer of oppPlayers) { let dicOpponent = dicPvpOpponent.get(oppPlayer.pos); let oppDef = oppPlayer.oppDef; // select 'oppRoleId pos roleName head frame spine rankLv pLv defCe' - delete oppDef.heroes; + if(oppDef) delete oppDef.heroes; result.push({ ...oppDef, roleId: oppDef.oppRoleId, diff --git a/game-server/app/services/taskService.ts b/game-server/app/services/taskService.ts index 607a6848b..7f670c37c 100644 --- a/game-server/app/services/taskService.ts +++ b/game-server/app/services/taskService.ts @@ -12,7 +12,9 @@ import { ItemInter } from '../pubUtils/interface'; export async function checkTaskWithRoles(roleId: string, sid: string, funcs: number[], taskType: number, roles: RoleType[]) { for(let role of roles) { - await checkTaskWithRole(role.roleId, role.roleId == roleId? sid: null, role.roleId == roleId? funcs: null, taskType, role); + if(role) { + await checkTaskWithRole(role.roleId, role.roleId == roleId? sid: null, role.roleId == roleId? funcs: null, taskType, role); + } } } diff --git a/shared/db/Role.ts b/shared/db/Role.ts index f098ce0b7..313c03d33 100644 --- a/shared/db/Role.ts +++ b/shared/db/Role.ts @@ -599,19 +599,19 @@ export default class Role extends BaseModel { if(max) { condition['friendCnt'] = {$lte: max - inc}; } - const result: RoleType = await RoleModel.findOneAndUpdate(condition, {$inc: { friendCnt: inc }}, {new: true}).lean(); + const result: RoleType = await RoleModel.findOneAndUpdate(condition, {$inc: { friendCnt: inc }}, {new: true}).lean({ getters: true, virtuals: true }); return result; } // 增加好友申请数量 public static async increaseFriendApplyCnt(roleId: string, inc: number, max: number) { - const result: RoleType = await RoleModel.findOneAndUpdate({ roleId, recFrdApplyCnt: {$lte: max - inc}}, {$inc: { recFrdApplyCnt: inc }}, {new: true}).lean(); + const result: RoleType = await RoleModel.findOneAndUpdate({ roleId, recFrdApplyCnt: {$lte: max - inc}}, {$inc: { recFrdApplyCnt: inc }}, {new: true}).lean({ getters: true, virtuals: true }); return result; } // 增加黑名单数量 public static async increaseBlockCnt(roleId: string, blockCnt: number, friendCnt: number, maxBlockCnt: number) { - const result: RoleType = await RoleModel.findOneAndUpdate({ roleId, blockCnt: {$lte: maxBlockCnt - blockCnt}}, {$inc: { blockCnt, friendCnt }}, {new: true}).lean(); + const result: RoleType = await RoleModel.findOneAndUpdate({ roleId, blockCnt: {$lte: maxBlockCnt - blockCnt}}, {$inc: { blockCnt, friendCnt }}, {new: true}).lean({ getters: true, virtuals: true }); return result; } public static async updatedRoleMailAt(roleId: string, updatedMailAt: number, lean = true) { diff --git a/shared/pubUtils/taskUtil.ts b/shared/pubUtils/taskUtil.ts index 36d4d7b90..0b765fac0 100644 --- a/shared/pubUtils/taskUtil.ts +++ b/shared/pubUtils/taskUtil.ts @@ -12,8 +12,10 @@ import { ItemInter } from './interface'; export async function checkTaskWithRoles(taskType: number, roles: RoleType[], funcs?: number[]) { let pushMessage = new Array<{type: number, id: number, count: number, received: boolean}>(); for(let role of roles) { - let singlePush = await checkTaskWithRole(role.roleId, taskType, role, funcs); - pushMessage.concat(singlePush); + if(role) { + let singlePush = await checkTaskWithRole(role.roleId, taskType, role, funcs); + pushMessage.concat(singlePush); + } } return pushMessage } @@ -306,7 +308,7 @@ export async function checkTaskWithGoods(roleId: string, taskType: number, goods // 根据taskType判断有哪些任务需要check的 export async function checkTask(roleId: string, taskType: number, count: number, isInc: boolean, param: TaskParam, funcs?: number[]) { - let tasks = gameData.taskType.get(taskType); + let tasks = gameData.taskType.get(taskType)||[]; let pushMessage = new Array<{type: number, id: number, count: number, received: boolean}>(); let groups = new Map(); for(let dicTask of tasks) {