54 lines
2.0 KiB
TypeScript
54 lines
2.0 KiB
TypeScript
import { ApiCall } from "tsrpc";
|
|
import { Rank } from '../../../public/rank/rank';
|
|
import { ReqOpen, ResOpen } from "../../../shared/protocols/hbzb/jfs/PtlOpen";
|
|
import { PublicShared } from '../../../shared/public/public';
|
|
import { getHbzbData, getMyRank, getToper200RankUid, updateHbzbCrossUser } from "./fun";
|
|
|
|
export default async function (call: ApiCall<ReqOpen, ResOpen>) {
|
|
//查看本地数据库里,刷出来的玩家数据
|
|
let dbData = await getHbzbData(call.uid );
|
|
let data: typeof dbData.data = dbData?.data || {} as any;
|
|
|
|
if (dbData == null) {
|
|
//如果没有,则同步到跨服
|
|
await updateHbzbCrossUser(await call.conn.getDefaultFightData(), true);
|
|
}
|
|
|
|
if (!data.refreshTime || data.refreshTime < PublicShared.getToDayZeroTime()) {
|
|
data.winNum = 0;
|
|
data.buyFightNum = 0;
|
|
data.useFightNum = 0;
|
|
data.refreshTime = G.time;
|
|
data.winRecPrize = [];
|
|
data.useRefreshNum = 0;
|
|
|
|
if (!data.enemy) {
|
|
//积分赛时的排行榜,是本服积分排序
|
|
data.jifen = 0;
|
|
//但是刷出来的对手,是跨服的玩家
|
|
let callRes = await G.clientCross.callApi('hbzb/jfs/GetEnemy', { uid: call.uid, auto: true });
|
|
if (!callRes.isSucc){
|
|
//todo 健壮性处理
|
|
return call.errorCode(-4)
|
|
}
|
|
if (callRes.res.enemy.length)
|
|
data.enemy = callRes.res.enemy.map(e => { return { ...e, result: null }; });
|
|
}
|
|
|
|
G.mongodb.cPlayerInfo('hbzb').updateOne(
|
|
{ uid: call.uid, type: 'hbzb' },
|
|
{ $set: { data: data } },
|
|
{ upsert: true }
|
|
);
|
|
}
|
|
|
|
call.succ({
|
|
...data,
|
|
rank: await getMyRank(call.uid)
|
|
});
|
|
}
|
|
|
|
export function checkIsOpen() {
|
|
let weekZeroTime = PublicShared.getToWeekMondayZeroTime();
|
|
return G.time >= weekZeroTime + G.gc.hbzb.jfsOpenTime[0] && G.time <= weekZeroTime + G.gc.hbzb.jfsOpenTime[1];
|
|
} |