From b56a0c4591443f210369878b9925db51d0ff721e Mon Sep 17 00:00:00 2001 From: dy Date: Fri, 29 Dec 2023 15:19:43 +0800 Subject: [PATCH] =?UTF-8?q?fix=20=E9=85=8D=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api_s2c/peijian/ApiGetList.ts | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/src/api_s2c/peijian/ApiGetList.ts b/src/api_s2c/peijian/ApiGetList.ts index 9951678..ae5801d 100644 --- a/src/api_s2c/peijian/ApiGetList.ts +++ b/src/api_s2c/peijian/ApiGetList.ts @@ -1,14 +1,14 @@ -import { ApiCall } from "tsrpc"; -import { ReqGetList, ResGetList } from "../../shared/protocols/peijian/PtlGetList"; +import {ApiCall} from "tsrpc"; +import {ReqGetList, ResGetList} from "../../shared/protocols/peijian/PtlGetList"; export default async function (call: ApiCall) { let _maxLv = 0 let color = {} let peijianCon = G.gc.peijian - let dbList = (await G.mongodb.collection('peijian').find({ uid: call.uid }).toArray()).map(p => { + let dbList = (await G.mongodb.collection('peijian').find({uid: call.uid}).toArray()).map(p => { let np = G.mongodb.conversionIdObj(p); - let { uid, ...ops } = np; + let {uid, ...ops} = np; if (np.lv > _maxLv) _maxLv = np.lv if (!color[peijianCon[np.peijianId].colour]) color[peijianCon[np.peijianId].colour] = 0 @@ -16,15 +16,25 @@ export default async function (call: ApiCall) { return ops; }); + // 修复配件穿戴在不存在的英雄身上 + let heroIds = R.values(call.conn.gud.heroPos) + let fixIds = dbList.filter(i => i.wearId && !heroIds.includes(i.wearId)).map(i => G.mongodb.conversionId(i._id)) + if (fixIds.length) { + await G.mongodb.collection('peijian').updateMany({uid: call.uid, _id: {$in: fixIds}}, {wearId: ''}) + } + // 记录玩家最大等级,颜色相关数据 注册任务用 - await G.mongodb.collection('playerInfo', 'usertasklog').updateOne({ uid: call.conn.uid, type: 'usertasklog' }, - { $set: { maxpeijianlv: _maxLv, peijiancolor: color } }, { upsert: true }) + await G.mongodb.collection('playerInfo', 'usertasklog').updateOne({uid: call.conn.uid, type: 'usertasklog'}, + {$set: {maxpeijianlv: _maxLv, peijiancolor: color}}, {upsert: true}) let list = Object.fromEntries(dbList.map(p => [G.formatRedisKey(p._id), p])); G.redis.set('peijian', call.uid, list); - let recLshd = await G.mongodb.collection('playerInfo', 'lshd_peijian').findOne({ uid: call.conn.uid, type: 'lshd_peijian' }); - let { uid, _id, type, ...peijians } = (recLshd || {}); + let recLshd = await G.mongodb.collection('playerInfo', 'lshd_peijian').findOne({ + uid: call.conn.uid, + type: 'lshd_peijian' + }); + let {uid, _id, type, ...peijians} = (recLshd || {}); call.conn.lshd.peijian = peijians || {}; call.succ({