44 lines
1.9 KiB
TypeScript
44 lines
1.9 KiB
TypeScript
import { ApiCall } from "tsrpc";
|
|
import { ReqFbOpen, ResFbOpen } from "../../shared/protocols/gonghui/PtlFbOpen";
|
|
import { PublicShared } from '../../shared/public/public';
|
|
|
|
export default async function (call: ApiCall<ReqFbOpen, ResFbOpen>) {
|
|
let res: ResFbOpen = { fightNum: 0, addNum: 0, rankList: [] };
|
|
let conf = G.gc.shili_fb[call.req.fbId];
|
|
let gh = await call.conn.gonghui;
|
|
|
|
if (Number(call.req.fbId) > Number(gh.data.fuben.id)) return call.error(globalThis.lng.gonghui_14);
|
|
if (!conf) return call.error(globalThis.lng.gonghui_15);
|
|
if (call.req.fbId != gh.data.fuben.id) {
|
|
let md = await G.mongodb.collection('gonghuiFb').findOne({ ghId: gh.data._id, fbId: call.req.fbId });
|
|
let uids = Object.keys(md.rankList);
|
|
//let players = await G.redis.gets('user', ...uids.map(uid => [uid] as [string]));
|
|
let players = (await G.mongodb.find('user',{uid:{$in: uids}})) as any;
|
|
res.rankList = players.map(p => {
|
|
return {
|
|
player: p,
|
|
dps: md.rankList[p.uid]
|
|
};
|
|
});
|
|
} else {
|
|
let uids = Object.keys(gh.data.fuben.dps);
|
|
//let players = await G.redis.gets('user', ...uids.map(uid => [uid] as [string]));
|
|
let players = (await G.mongodb.find('user',{uid:{$in: uids}})) as any;
|
|
res.rankList = players.map(p => {
|
|
return {
|
|
player: p,
|
|
dps: gh.data.fuben.dps[p.uid]
|
|
};
|
|
});
|
|
}
|
|
|
|
let mdMy = (await G.mongodb.collection('gonghuiUser').findOne({ uid: call.uid }))?.fuben;
|
|
if (!mdMy || PublicShared.getToDayZeroTime() > mdMy.refreshTime) {
|
|
mdMy = {
|
|
fightNum: G.gc.shili_com.fightNum,
|
|
refreshTime: G.time
|
|
};
|
|
G.mongodb.collection('gonghuiUser').updateOne({ uid: call.uid }, { $set: { fuben: mdMy } }, { upsert: true });
|
|
}
|
|
call.succ({ ...res, fightNum: mdMy.fightNum, addNum: mdMy?.addNum||0 });
|
|
} |