34 lines
1.5 KiB
TypeScript
34 lines
1.5 KiB
TypeScript
import { ApiCall } from "tsrpc";
|
|
import { ReqGetList, ResGetList } from "../../shared/protocols/peijian/PtlGetList";
|
|
|
|
export default async function (call: ApiCall<ReqGetList, ResGetList>) {
|
|
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 np = G.mongodb.conversionIdObj(p);
|
|
let { uid, ...ops } = np;
|
|
|
|
if (np.lv > _maxLv) _maxLv = np.lv
|
|
if (!color[peijianCon[np.peijianId].colour]) color[peijianCon[np.peijianId].colour] = 0
|
|
color[peijianCon[np.peijianId].colour] = np.lv > color[peijianCon[np.peijianId].colour] ? np.lv : color[peijianCon[np.peijianId].colour]
|
|
return ops;
|
|
});
|
|
|
|
// 记录玩家最大等级,颜色相关数据 注册任务用
|
|
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 || {});
|
|
|
|
call.conn.lshd.peijian = peijians || {};
|
|
call.succ({
|
|
list: Object.fromEntries(dbList.map(p => [p._id, p])),
|
|
lshd: peijians || {}
|
|
});
|
|
} |