From fbe9e08aa1fd51082455ab885170808328c48cdc Mon Sep 17 00:00:00 2001 From: luying Date: Mon, 9 Aug 2021 16:12:37 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A3=85=E5=A4=87=EF=BC=9A=E5=88=86=E8=A7=A3?= =?UTF-8?q?=E8=A3=85=E5=A4=87=E8=8E=B7=E5=BE=97=E5=A5=96=E5=8A=B1=E5=90=88?= =?UTF-8?q?=E8=B5=B7=E6=9D=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/servers/role/handler/equipHandler.ts | 13 ++++++++----- game-server/app/services/rewardService.ts | 14 +++++++------- shared/db/Equip.ts | 4 ++-- shared/db/ServerStategy.ts | 6 +++--- shared/pubUtils/interface.ts | 2 +- 5 files changed, 21 insertions(+), 18 deletions(-) diff --git a/game-server/app/servers/role/handler/equipHandler.ts b/game-server/app/servers/role/handler/equipHandler.ts index f07cf1b0a..ff72dd9a6 100644 --- a/game-server/app/servers/role/handler/equipHandler.ts +++ b/game-server/app/servers/role/handler/equipHandler.ts @@ -3,7 +3,7 @@ import { STATUS, EQUIP_STRENGTHEN_TYPE, CURRENCY_BY_TYPE, CURRENCY_TYPE, HERO_SY import { ItemInter } from "../../../pubUtils/interface"; import { resResult, parseGoodStr } from "../../../pubUtils/util"; -import { addItems, handleCost, decreaseItems } from "../../../services/rewardService"; +import { addItems, handleCost, decreaseItems, combineItems } from "../../../services/rewardService"; import { EquipModel, EquipType } from "../../../db/Equip"; import { HeroModel, EPlace } from "../../../db/Hero"; import Role from "../../../db/Role"; @@ -59,7 +59,7 @@ export class EquipHandler { cost = cost.concat(targetGood.composeMaterial); let specialMaterial = targetGood.specialMaterial; let costCount = 0; - let equips = await EquipModel.getEquips(originalEquip); + let equips = await EquipModel.getEquips(roleId, originalEquip); for (let equip of equips) { let { id, seqId, holes } = equip; if (specialMaterial.ids.includes(id)) { @@ -532,7 +532,7 @@ export class EquipHandler { if(originalEquip.length > BAG.BAG_RESOLVE_UPLIMITED) { return resResult(STATUS.EQUIP_DECOMPOSE_IS_UPLIMIT); } - let equips = await EquipModel.getEquips(originalEquip); + let equips = await EquipModel.getEquips(roleId, originalEquip); if (equips.length < originalEquip.length) return resResult(STATUS.EQUIP_NOT_FIND); let goods: Array<{ id: number, count: number }> = []; @@ -547,7 +547,9 @@ export class EquipHandler { let holes = equip.holes || []; for (let { jewel } of holes) { - jewels.push({ id: jewel, count: 1 }); + if(jewel) { + jewels.push({ id: jewel, count: 1 }); + } } goods = goods.concat(goodInfo.decomposeItem); cost.push({ seqId: equip.seqId, id: equip.id, count: 1 }); @@ -555,9 +557,10 @@ export class EquipHandler { let costResult = await handleCost(roleId, sid, cost); // 删掉装备 if(!costResult) return resResult(STATUS.BATTLE_CONSUMES_NOT_ENOUGH); + await addItems(roleId, roleName, sid, jewels); // 把原本镶嵌在装备上的宝石返还了 let result = await addItems(roleId, roleName, sid, goods); - return resResult(STATUS.SUCCESS, { goods: result }); + return resResult(STATUS.SUCCESS, { goods: combineItems(result) }); } diff --git a/game-server/app/services/rewardService.ts b/game-server/app/services/rewardService.ts index a7409e5ef..8d8252adf 100644 --- a/game-server/app/services/rewardService.ts +++ b/game-server/app/services/rewardService.ts @@ -38,7 +38,7 @@ export async function handleCost(roleId: string, sid: string, goods: Array 0) { - resEquips = await EquipModel.getEquips(equipSeqIds); + resEquips = await EquipModel.getEquips(roleId, equipSeqIds); if (resEquips.length < equips.length) return false; } @@ -109,7 +109,7 @@ export async function addItems(roleId: string, roleName: string, sid: string, go for (let equip of equipInfos) { showItems.push({ seqId: equip.seqId, id: equip.id, count: 1, isBag: true }); } - for(let equip of combineEquips(mailEquips)) { + for(let equip of combineItems(mailEquips)) { showItems.push({ id: equip.id, count: equip.count, isBag: false }); } //装备推送 @@ -123,7 +123,7 @@ export async function addItems(roleId: string, roleName: string, sid: string, go } // 发邮件的 if(mailEquips.length > 0) { - await sendMailByContent(MAIL_TYPE.EQUIP_OVER, roleId, { goods: combineEquips(mailEquips) }); + await sendMailByContent(MAIL_TYPE.EQUIP_OVER, roleId, { goods: combineItems(mailEquips) }); } } @@ -195,14 +195,14 @@ export async function addItems(roleId: string, roleName: string, sid: string, go return showItems; } -function combineEquips(equips: { id?: number }[]) { +export function combineItems(items: { id?: number, count?: number }[]) { let result: { id: number, count: number }[] = []; - for(let { id } of equips) { + for(let { id, count = 1 } of items) { let index = result.findIndex(cur => cur.id == id); if(index == -1) { - result.push({ id, count: 1 }); + result.push({ id, count }); } else { - result[index].count ++; + result[index].count += count; } } return result; diff --git a/shared/db/Equip.ts b/shared/db/Equip.ts index 12805acd6..9e879aa4a 100644 --- a/shared/db/Equip.ts +++ b/shared/db/Equip.ts @@ -135,8 +135,8 @@ export default class Equip extends BaseModel { return result; } - public static async getEquips(ids: Array) { - let result: EquipType[] = await EquipModel.find({ seqId: { $in: ids } }); + public static async getEquips(roleId: string, ids: Array) { + let result: EquipType[] = await EquipModel.find({ roleId, seqId: { $in: ids } }); return result; } diff --git a/shared/db/ServerStategy.ts b/shared/db/ServerStategy.ts index 21ad797ca..ef723a557 100644 --- a/shared/db/ServerStategy.ts +++ b/shared/db/ServerStategy.ts @@ -44,7 +44,7 @@ export default class ServerStategy extends BaseModel { public static async findByCondition(page: number, pageSize: number, sortField: string, sortOrder: string, form: { id?: number, name?: string, isDefault?: boolean } = {}) { - let searchObj = ServerStategyModel.getSearchObj(form); + let searchObj = this.getSearchObj(form); let sort = {}; if (sortField && sortOrder) { if (sortOrder == 'ascend') { @@ -60,7 +60,7 @@ export default class ServerStategy extends BaseModel { public static async countByCondition(form: { id?: number, name?: string, isDefault?: boolean } = {}) { - let searchObj = ServerStategyModel.getSearchObj(form); + let searchObj = this.getSearchObj(form); const result = await ServerStategyModel.count(searchObj); return result; } @@ -76,7 +76,7 @@ export default class ServerStategy extends BaseModel { id = await CounterModel.getNewCounter(COUNTER.SERVER_STATEGY); } if(values.isDefault) { - await ServerStategyModel.unsetDefault(); + await this.unsetDefault(); } delete values.id; let rec: ServerStategyType = await ServerStategyModel.findOneAndUpdate({ id }, { $set: {...values, updatedBy: uid}, $setOnInsert: { createdBy: uid } }, diff --git a/shared/pubUtils/interface.ts b/shared/pubUtils/interface.ts index b3f5cd401..83ca9555f 100644 --- a/shared/pubUtils/interface.ts +++ b/shared/pubUtils/interface.ts @@ -8,7 +8,7 @@ export interface RewardInter { } export interface ItemInter { - id?: number; + id: number; count?: number; seqId?: number; type?: number;