From 94c632649bfd76a9f509e27b3354351b2be0a731 Mon Sep 17 00:00:00 2001 From: luying Date: Fri, 23 Oct 2020 14:39:27 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=95=B0=E6=8D=AE=E5=BA=93?= =?UTF-8?q?=E8=A1=A8=E7=BB=9F=E4=B8=80=E6=A0=BC=E5=BC=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/servers/role/handler/roleHandler.ts | 4 +-- game-server/app/services/rewardService.ts | 4 +-- gm-server/app/service/users.ts | 4 +-- shared/db/Equip.ts | 10 ++++--- shared/db/Role.ts | 27 ++++++++++++------- 5 files changed, 30 insertions(+), 19 deletions(-) diff --git a/game-server/app/servers/role/handler/roleHandler.ts b/game-server/app/servers/role/handler/roleHandler.ts index a2bf5335e..a9057c519 100644 --- a/game-server/app/servers/role/handler/roleHandler.ts +++ b/game-server/app/servers/role/handler/roleHandler.ts @@ -17,8 +17,8 @@ export class RoleHandler { const equipInfo = { roleId, roleName, - eid: 1, - eName: '倚天剑', + id: 1, + name: '倚天剑', seqId, type: 1 } diff --git a/game-server/app/services/rewardService.ts b/game-server/app/services/rewardService.ts index 12282e368..dc83b18f8 100644 --- a/game-server/app/services/rewardService.ts +++ b/game-server/app/services/rewardService.ts @@ -62,8 +62,8 @@ async function rewardWeapons (roleId: string, roleName: string, dicGood: any, w const equipInfo = { roleId, roleName, - eid: weapon.id, - eName: dicGood.name, + id: weapon.id, + name: dicGood.name, seqId, quality: dicGood.lv, type: dicGood.goodType diff --git a/gm-server/app/service/users.ts b/gm-server/app/service/users.ts index 55b79703f..6a3537adb 100644 --- a/gm-server/app/service/users.ts +++ b/gm-server/app/service/users.ts @@ -241,8 +241,8 @@ export default class GMUsers extends Service { const equipInfo = { roleId, roleName: role.roleName, - eid, - eName: dicEquip.name, + id: eid, + name: dicEquip.name, seqId, type: 1, lv: elv diff --git a/shared/db/Equip.ts b/shared/db/Equip.ts index e87d62add..755e4bcf6 100644 --- a/shared/db/Equip.ts +++ b/shared/db/Equip.ts @@ -2,7 +2,7 @@ import BaseModel from './BaseModel'; import { index, getModelForClass, prop } from '@typegoose/typegoose'; -@index({ roleId: 1, hid: 1, eid: 1 }) +@index({ roleId: 1, hid: 1, id: 1 }) @index({ seqId: 1 }) export default class Equip extends BaseModel { @prop({ required: true }) @@ -11,15 +11,17 @@ export default class Equip extends BaseModel { roleName: string; // 角色名称 @prop({ required: true }) - eid: number; // 装备 id + id: number; // 装备 id @prop({ required: true }) type: number; // 装备类型 @prop({ required: true }) - eName: string; // 装备名称 + name: string; // 装备名称 @prop({ required: true }) seqId: number; // 装备表自增 id @prop({ required: false }) hid: number; // 装备此装备的武将 id + @prop({ required: false, default: 1 }) + count: number; // 装备数量 @prop({ required: true, default: 1 }) quality: number; // 品质 @@ -46,7 +48,7 @@ export default class Equip extends BaseModel { return equips; } - public static async createEquip(equipInfo: {roleId: string, roleName: string, eid: number, seqId: number, type: number, eName: string, lv?: number}, lean = true) { + public static async createEquip(equipInfo: {roleId: string, roleName: string, id: number, seqId: number, type: number, name: string, lv?: number}, lean = true) { const doc = new EquipModel(); const update = Object.assign(doc.toJSON(), equipInfo); const equip = await EquipModel.findOneAndUpdate({ seqId: equipInfo.seqId }, update, {upsert: true, new: true}).lean(lean); diff --git a/shared/db/Role.ts b/shared/db/Role.ts index c7ad02c2b..63f22630b 100644 --- a/shared/db/Role.ts +++ b/shared/db/Role.ts @@ -65,22 +65,22 @@ export default class Role extends BaseModel { @prop({ required: true, default: [] }) consumeGoods: [{ // 消耗品 id: number; // id - cnt: number; // 数量 + count: number; // 数量 }]; @prop({ required: true, default: [] }) souls: [{ // 将魂 id: number; // 武将 id - cnt: number; // 数量 + count: number; // 数量 }]; @prop({ required: true, default: [] }) pieces: [{ // 装备碎片 id: number; // 装备 id - cnt: number; // 数量 + count: number; // 数量 }]; @prop({ required: true, default: [] }) jewels: [{ // 珠宝 id: number; // 待定,也可能是 type + lv - cnt: number; // 数量 + count: number; // 数量 }]; @prop({ required: true, default: [] }) @@ -188,19 +188,28 @@ export default class Role extends BaseModel { public static async addItems(roleId: string, field: string, id: number, cnt: number, lean = true) { - +try { + let role = await RoleModel.findOne({roleId}).lean(lean); + let item = role[field]; + let curItem = item.find(cur => cur.id == id); + if(!curItem) { let addToSet = {}; - addToSet[field] = {id, cnt: 0}; - await RoleModel.findOneAndUpdate({roleId}, { $addToSet: addToSet }, { "new": true, "upsert": true}); - + addToSet[field] = {id, count: cnt}; + let result = await RoleModel.findOneAndUpdate({roleId}, { $addToSet: addToSet }, { "new": true, "upsert": true}).lean(lean); + return result; + } else { let condition = { roleId }; condition[`${field}.id`] = id; let update = {}; - update[`${field}.$.cnt`] = cnt; + update[`${field}.$.count`] = cnt; let result = await RoleModel.findOneAndUpdate(condition, { $inc: update }, { "new": true, "upsert": true}).lean(lean); return result; } +}catch(e) { + console.error(e) +} + } public static async addCoin(roleId: string, cnt: number, lean = true) { let result = await RoleModel.findOneAndUpdate({roleId}, { $inc: {coin: cnt} }, { "new": true, "upsert": true}).lean(lean);