diff --git a/game-server/app/servers/battle/handler/pvpHandler.ts b/game-server/app/servers/battle/handler/pvpHandler.ts index c636e2a7f..71baaed11 100644 --- a/game-server/app/servers/battle/handler/pvpHandler.ts +++ b/game-server/app/servers/battle/handler/pvpHandler.ts @@ -244,7 +244,7 @@ export class PvpHandler { let curOpp = oppPlayers.find(cur => cur.roleId == oppRoleId && cur.pos == pos); if(!curOpp) return resResult(STATUS.PVP_ROLE_NOT_FOUND); - const role = await RoleModel.findByRoleId(roleId); + const role = await RoleModel.findByRoleId(roleId, null, true); if(isSuccess) { winStreakNum ++; } else { diff --git a/game-server/app/servers/connector/handler/entryHandler.ts b/game-server/app/servers/connector/handler/entryHandler.ts index e613e4a9e..477157f4c 100644 --- a/game-server/app/servers/connector/handler/entryHandler.ts +++ b/game-server/app/servers/connector/handler/entryHandler.ts @@ -6,7 +6,7 @@ import { GMUserModel } from '../../../db/GMUser'; import { Application } from 'pinus'; import {FrontendSession} from 'pinus'; import { HeroModel } from './../../../db/Hero'; -import { resResult, returnHeroCeRatio, reduceCe } from '../../../pubUtils/util'; +import { resResult } from '../../../pubUtils/util'; import { COM_BTL_QUALITY, ROLE_SELECT, HERO_SELECT, GUILD_SELECT, USER_GUILD_SELECT } from '../../../consts'; import { getAp } from '../../../services/actionPointService'; import { ItemModel } from '../../../db/Item'; @@ -100,8 +100,6 @@ export class EntryHandler { role['consumeGoods'] = items; let apJson = await getAp(Date.now(), role.roleId); role['apJson'] = apJson; - role['ce'] = reduceCe(role.ce); - role['topFiveCe'] = reduceCe(role.topFiveCe); role['mails'] = mails; if(role.hasGuild) { diff --git a/game-server/app/services/playerEventService.ts b/game-server/app/services/playerEventService.ts index c127ab66d..b53fa358e 100644 --- a/game-server/app/services/playerEventService.ts +++ b/game-server/app/services/playerEventService.ts @@ -9,7 +9,7 @@ export async function eventOnPlayerLvUp(roleId: string, lv: number, addFuncs: Ar if (!dataFuncs.includes(FUNCS_ID.PVP)) {//开启pvp let res = getFuncsSwitch(FUNCS_ID.PVP); if (!res || lv >= res.param) { - let role = await RoleModel.findByRoleId(roleId); + let role = await RoleModel.findByRoleId(roleId, null, true); await checkPvp(role); addFuncs.push(FUNCS_ID.PVP); } diff --git a/game-server/app/services/pvpService.ts b/game-server/app/services/pvpService.ts index c0150877d..d1dbc35a6 100644 --- a/game-server/app/services/pvpService.ts +++ b/game-server/app/services/pvpService.ts @@ -1,5 +1,5 @@ -import { PvpDefenseModel, Heroes, OppPlayers, Robot, PvpDefenseType, HeroScores, pvpUpdateInter } from '../db/PvpDefense'; +import { PvpDefenseModel, Heroes, OppPlayers, PvpDefenseType, HeroScores, pvpUpdateInter } from '../db/PvpDefense'; import { RoleType, RoleModel } from '../db/Role'; import { PVP_HERO_POS, ROBOT_NAME, REDIS_KEY, PVP_CONST, HERO_CE_RATIO } from '../consts'; import { setPvpDefResult } from '../services/timeTaskService'; @@ -73,7 +73,7 @@ export async function getEnemies(oppPlayers: OppPlayers[], winStreakNum: number) result.push({ ...oppDef, roleId: oppDef.oppRoleId, - defCe: reduceCe(oppDef.defCe), + defCe: oppDef.defCe, addScore: dicOpponent.score, rankLv: oppDef.rankLv, plusScore: getPlusScore(winStreakNum) diff --git a/shared/consts/index.ts b/shared/consts/index.ts index 838f4a27f..255d959f5 100644 --- a/shared/consts/index.ts +++ b/shared/consts/index.ts @@ -6,4 +6,5 @@ export * from './constModules/itemConst'; export * from './constModules/sysConst'; export * from './constModules/guildConst'; export * from './constModules/selectConst'; -export * from './statusCode'; \ No newline at end of file +export * from './statusCode'; +export * from './dataName'; \ No newline at end of file diff --git a/shared/db/GMMail.ts b/shared/db/GMMail.ts index 22bff6305..faca25b59 100644 --- a/shared/db/GMMail.ts +++ b/shared/db/GMMail.ts @@ -1,7 +1,7 @@ import BaseModel from './BaseModel'; -import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose'; +import { getModelForClass, prop, DocumentType } from '@typegoose/typegoose'; import { nowSeconds } from '../pubUtils/timeUtil'; -import { now } from 'moment'; + class RewardInter { id: number; count: number; diff --git a/shared/db/GroupMail.ts b/shared/db/GroupMail.ts index 110ad4eae..1b6d2e28d 100644 --- a/shared/db/GroupMail.ts +++ b/shared/db/GroupMail.ts @@ -1,9 +1,8 @@ import BaseModel from './BaseModel'; import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose'; import { nowSeconds } from '../pubUtils/timeUtil'; -import { SrvRecord } from 'dns'; import { MAIL_STATUS } from '../consts/constModules/mailConst'; -import { select } from 'underscore'; + class RewardInter { id: number; count: number; diff --git a/shared/db/Guild.ts b/shared/db/Guild.ts index d2993bee9..e55cda411 100644 --- a/shared/db/Guild.ts +++ b/shared/db/Guild.ts @@ -122,7 +122,7 @@ export default class Guild extends BaseModel { .limit(GUILD_PER_PAGE).skip((page - 1) * GUILD_PER_PAGE) .select('code icon name lv memberCnt leader ceLimit isAuto') .populate('leader', { roleName: 1, _id: 0 }, 'Role') - .lean(); + .lean({ getters: true }); return guildList; } @@ -147,7 +147,7 @@ export default class Guild extends BaseModel { const result: GuildType = await GuildModel.findOne({ code, status: GUILD_STATUS.RUNNING, serverId }) .select(select) .populate('leader', {roleId: 1, roleName: 1, sHid: 1, headHid: 1, lv: 1, quitTime: 1, ce: 1, title: 1, _id: 0}, 'Role') - .lean({ getter: false }); + .lean({ getters: true }); return result; } diff --git a/shared/db/PvpDefense.ts b/shared/db/PvpDefense.ts index 1f9fca6b5..27ba0e0bc 100644 --- a/shared/db/PvpDefense.ts +++ b/shared/db/PvpDefense.ts @@ -4,26 +4,7 @@ import Hero, { } from './Hero'; import Role, { } from './Role'; import { PVP_PLAYER_POS, PVP_HERO_POS } from '../consts'; import PvpHistoryOpp from './PvpHistoryOpp'; - -export interface pvpUpdateInter { - _id?: string; - oppPlayers?: OppPlayers[]; - hisScore?: number; - score?: number; - pLv?:number; - heroScores?: HeroScores[]; - winStreakNum?: number; - defCe?:number; - heroes?: Array; - seasonNum?: number; - refOppCnt?:number; - refOppTime?: Date; - challengeCnt?:number; - challengeRefTime?:number; - isFirstEntry?:boolean; - receivedBox?: Array; - isDefaultHero?:boolean; -} +import { reduceCe } from '../pubUtils/util'; export class Heroes { @prop({ required: true }) @@ -61,31 +42,6 @@ function getInitialOppHeros() { return heros; } -export class Robot { - @prop({ required: true }) - roleId: string; // 角色 id - @prop({ required: true }) - roleName: string; // 角色名称 - @prop({ required: true, default: 19 }) - headHid: number; - @prop({ required: true, default: 19 }) - sHid: number; - @prop({ required: true }) - defCe: number; - @prop({ required: true }) - pLv: number; - @prop({ required: true }) - warId: number; // 模板的warId - - constructor(roleId: string, roleName: string, defCe: number, pLv: number, warId: number) { - this.roleId = roleId; - this.roleName = roleName; - this.defCe = defCe; - this.pLv = pLv; - this.warId = warId; - } -} - export class OppPlayers { @prop({ required: true }) roleId: string; @@ -122,7 +78,7 @@ export default class PvpDefense extends BaseModel { hisScore: number; //历史最高积分 @prop({ required: true, default: 0 }) winStreakNum: number; //连胜次数 - @prop({ required: true, default: 0 }) + @prop({ required: true, default: 0, get: (val: number) => reduceCe(val), set: (val: number) => val }) defCe: number; //防守ce @prop({ required: true, type: OppPlayers, default: getInitialOppPlayers(), _id: false }) oppPlayers: Array; @@ -149,11 +105,11 @@ export default class PvpDefense extends BaseModel { return result; } - public static async findByScale(roleId: string, min: number, max: number, lean = true) { + public static async findByScale(roleId: string, min: number, max: number) { const result: PvpDefenseType[] = await PvpDefenseModel.find({ roleId: { $ne: roleId }, defCe: { $lte: max, $gte: min } }) .populate('role', 'headHid sHid topFiveCe roleId roleName lv globalCeAttr') .populate('heroes.hero') - .sort({ updatedAt: -1 }).limit(100).lean(lean); + .sort({ updatedAt: -1 }).limit(100).lean({ getters: true }); return result; } @@ -197,7 +153,7 @@ export default class PvpDefense extends BaseModel { const result: PvpDefenseType = await PvpDefenseModel.findOne({ roleId }) .populate('role', 'headHid sHid topFiveCe roleId roleName lv globalCeAttr') .populate('heroes.hero') - .populate('oppPlayers.oppDef', 'oppRoleId pos roleName headHid sHid rankLv title lv pLv defCe heroes').lean(); + .populate('oppPlayers.oppDef', 'oppRoleId pos roleName headHid sHid rankLv title lv pLv defCe heroes').lean({ getters: true }); return result; } @@ -206,7 +162,7 @@ export default class PvpDefense extends BaseModel { .populate('role', 'headHid sHid topFiveCe roleId roleName lv globalCeAttr') .populate('heroes.hero') .populate('oppPlayers.oppDef', 'oppRoleId pos roleName headHid sHid rankLv pLv title lv defCe heroes') - .lean(); + .lean({ getters: true }); return result; } @@ -214,7 +170,7 @@ export default class PvpDefense extends BaseModel { delete update._id; let result: PvpDefenseType = await PvpDefenseModel.findOneAndUpdate({roleId}, {$set:update}, {new: true}) .populate('role', 'headHid sHid topFiveCe roleId roleName lv') - .populate('oppPlayers.oppDef', 'oppRoleId pos roleName headHid sHid rankLv pLv title lv defCe heroes').lean(); + .populate('oppPlayers.oppDef', 'oppRoleId pos roleName headHid sHid rankLv pLv title lv defCe heroes').lean({ getters: true }); return result; } public static async updateInfo(roleId: string, update: pvpUpdateInter, lean = true) { @@ -227,11 +183,11 @@ export default class PvpDefense extends BaseModel { return result; } - public static async getRank(seasonNum: number, page = 1, limit = 1000, lean = true) { + public static async getRank(seasonNum: number, page = 1, limit = 1000) { let sortBy = { score: -1, updatedAt: 1 }; const ranks: PvpDefenseType[] = await PvpDefenseModel.find({seasonNum}).select('roleId role score updatedAt') .populate('role', 'roleId roleName headHid sHid title lv vLv') - .sort(sortBy).limit(limit).skip((page - 1) * limit).lean(lean); + .sort(sortBy).limit(limit).skip((page - 1) * limit).lean({ getters: true }); return ranks; } @@ -243,4 +199,5 @@ export default class PvpDefense extends BaseModel { export const PvpDefenseModel = getModelForClass(PvpDefense); -export interface PvpDefenseType extends Pick, keyof PvpDefense> { }; \ No newline at end of file +export interface PvpDefenseType extends Pick, keyof PvpDefense> { }; +export type pvpUpdateInter = Partial; \ No newline at end of file diff --git a/shared/db/PvpHistoryOpp.ts b/shared/db/PvpHistoryOpp.ts index 363f2d0c4..3fbfc87fe 100644 --- a/shared/db/PvpHistoryOpp.ts +++ b/shared/db/PvpHistoryOpp.ts @@ -33,7 +33,7 @@ export default class PvpHistoryOpp extends BaseModel { @prop({ required: true, default: 1 }) title: number; // 对手等级 @prop({ required: true, default: 0 }) - defCe: number; // 防守战力 + defCe: number; // 防守战力,缩小过的 @prop({ required: true, default: 0 }) rankLv: number; // 对手排名 @prop({ required: true, type: PvpEnemies, default: [] }) @@ -43,11 +43,11 @@ export default class PvpHistoryOpp extends BaseModel { @prop({ required: true, default: 0 }) status: number; // 状态 0-仅刷出 1-挑战过 - public static async createPvpOpp(params: PvpOppCreateParam, lean = true) { + public static async createPvpOpp(params: PvpOppCreateParam) { const doc = new PvpHistoryOppModel(); const update = Object.assign(doc.toJSON(), params); delete update._id; - const defense: PvpHistoryOppType = await PvpHistoryOppModel.findOneAndUpdate({ roleId: params.roleId, pos: params.pos, status: 0 }, update, { upsert: true, new: true }).lean(lean); + const defense: PvpHistoryOppType = await PvpHistoryOppModel.findOneAndUpdate({ roleId: params.roleId, pos: params.pos, status: 0 }, update, { upsert: true, new: true }).lean(); return defense; } diff --git a/shared/domain/battleField/guild.ts b/shared/domain/battleField/guild.ts index ac201e051..7d93af4c5 100644 --- a/shared/domain/battleField/guild.ts +++ b/shared/domain/battleField/guild.ts @@ -1,5 +1,4 @@ import { PvpEnemies, PvpOtherHeroes } from "../../domain/dbGeneral"; -import { reduceCe } from "../../pubUtils/util"; import { GuildType } from "../../db/Guild"; import { RoleType, WarStar } from "../../db/Role"; import { WAR_TYPE } from "../../consts/consts"; @@ -66,7 +65,7 @@ export class PlayerDetail { if(detail.headHid) this.headHid = detail.headHid; if(detail.score) this.score = detail.score; if(detail.pLv) this.pLv = detail.pLv; - if(detail.defCe) this.defCe = reduceCe(detail.defCe); + if(detail.defCe) this.defCe = detail.defCe; if(detail.heroes) this.heroes = detail.heroes; if(detail.rank) this.rank = detail.rank; }