diff --git a/src/models/GameUser.ts b/src/models/GameUser.ts index 4637a28..008c4bc 100644 --- a/src/models/GameUser.ts +++ b/src/models/GameUser.ts @@ -43,6 +43,15 @@ class GameUserClass extends BaseModule { let records = await this.find({accountId}).limit(1) return records.length > 0 ? records[0] : null } + + public static async userMapByAccountIDS(this: ReturnModelType, accountIds: string[]) { + const records = await this.find({accountId: {$in: accountIds}}) + let map: Map = new Map() + for (let record of records) { + map.set(record.accountId, record) + } + return map + } } export const GameUser = getModelForClass(GameUserClass, {existingConnection: GameUserClass.db}); diff --git a/src/services/GameLogic.ts b/src/services/GameLogic.ts index 897c9e1..be841f8 100644 --- a/src/services/GameLogic.ts +++ b/src/services/GameLogic.ts @@ -17,6 +17,7 @@ import { ShopActivity } from '../models/shop/ShopActivity' import { getAccountRank, getRankCount, getRankList, updateRank } from './Rank' import { PuzzleRank } from '../models/match/PuzzleRank' import { UserReward } from '../models/UserReward' +import { GameUser } from '../models/GameUser' export function transformRecord(records: any[]) { @@ -208,14 +209,24 @@ export async function getRank({shop, level, accountId, mode, skip, limit } level: number | string, accountId: string, mode: number, skip: number, limit: number}) { - // let records = await PuzzleRank.find({shop, level, mode}).limit(limit).skip(skip).sort({'score': -1}) const key = rankKey(shop, level, mode) let datas: any = await getRankList(skip, limit, key) - // let scoreMap: Map = new Map() let rankList: any[][] = [] + let accountIDS: string[] = [] for (let i = 0, l = datas.length; i < l; i += 2) { - // scoreMap.set(datas[i], datas[i + 1] << 0) rankList.push([datas[i], datas[i + 1] << 0]) + accountIDS.push(datas[i]) + } + const userMap = await GameUser.userMapByAccountIDS(accountIDS) + for (let d of rankList) { + if (userMap.has(d[0])) { + let u = userMap.get(d[0]) + d.push(u.nickname || '') + d.push(u.avatar || '') + } else { + d.push('') + d.push('') + } } let userRank = (await getAccountRank(accountId, key)) || 999