Merge branch 'bugfix' into dev
This commit is contained in:
commit
6f17e77f14
@ -21,23 +21,18 @@ export default async function (call: ApiCall<ReqOpen, ResOpen>) {
|
||||
|
||||
let limit = _hd.data?.rank?.slice(-1)?.[0]?.rank?.slice(-1)?.[0] || call.req.limit || 100
|
||||
|
||||
let rmbuse = await G.crossmongodb.collection('rmbuse').find({
|
||||
time: {
|
||||
$gte: _hd.stime,
|
||||
$lte: _hd.etime + 10
|
||||
}
|
||||
}).sort({change: 1}).limit(limit).toArray()
|
||||
let rmbuse = await G.crossmongodb.collection('rmbuse').find({type: `xfjs_${G.huodong.xfjsId}`}).sort({change: 1}).limit(limit).toArray()
|
||||
|
||||
let list: any = rmbuse.map(i => ({...i, total: R.negate(i.change)}))
|
||||
|
||||
let rankList = sortRankList(_hd.data.rank, list)
|
||||
|
||||
let users = await G.crossmongodb.collection('huodong_user').find({uid: {$in: rankList.map(i => i._id).filter(i => i._id != 'system')}}).toArray()
|
||||
let users = await G.crossmongodb.collection('huodong_user').find({uid: {$in: rankList.map(i => i._id).filter(i => i != 'system')}}).toArray()
|
||||
|
||||
rankList = rankList.map(i => ({...i, player: users.find(v => v.uid == i.uid) || {}}))
|
||||
|
||||
// 活动结束前半小时,缓存过期时间改为10秒
|
||||
let exTime = (G.time + 1800) > _hd.etime ? 10 : 60
|
||||
// 活动结束前半小时,缓存过期时间改为5秒
|
||||
let exTime = (G.time + 1800) > _hd.etime ? 5 : 10
|
||||
|
||||
G.crossioredis.setex(`rank:xiaofeijingsai`, exTime, JSON.stringify(rankList));
|
||||
|
||||
@ -53,14 +48,13 @@ export default async function (call: ApiCall<ReqOpen, ResOpen>) {
|
||||
*/
|
||||
export function sortRankList(rank, list) {
|
||||
let rankList = []
|
||||
let ccc = 0
|
||||
rank.map(i => {
|
||||
for (let k = i.rank[0] - 1; k < i.rank[1]; k++) {
|
||||
if (list[k]?.total >= i.need[0].n) {
|
||||
rankList.push({...list[k - ccc], rank: k, _id: list[k - ccc].uid})
|
||||
if (list[0]?.total >= i.need[0].n) {
|
||||
rankList.push({...list[0], rank: k, _id: list[0].uid})
|
||||
list = R.tail(list)
|
||||
} else {
|
||||
rankList.push({_id: 'system', total: i.need[0].n, rank: k, player: {}})
|
||||
ccc += 1
|
||||
}
|
||||
}
|
||||
})
|
||||
@ -68,11 +62,14 @@ export function sortRankList(rank, list) {
|
||||
}
|
||||
|
||||
// 获取自己的信息
|
||||
async function getMyData(call, rankList) {
|
||||
async function getMyData(call: ApiCall, rankList) {
|
||||
let myData = rankList.find(i => i._id == call.uid)
|
||||
if (myData) return myData
|
||||
|
||||
let myCut: any = await G.crossmongodb.collection('rmbuse').findOne({uid: call.uid})
|
||||
let myCut: any = await G.crossmongodb.collection('rmbuse').findOne({
|
||||
uid: call.uid,
|
||||
type: `xfjs_${G.huodong.xfjsId}`
|
||||
})
|
||||
|
||||
let myUser = await G.mongodb.collection('user').findOne({uid: call.uid})
|
||||
G.crossmongodb.collection('huodong_user').updateOne({uid: call.uid}, {$set: myUser}, {upsert: true})
|
||||
@ -81,5 +78,5 @@ async function getMyData(call, rankList) {
|
||||
myCut = {_id: myUser.uid, total: 0}
|
||||
}
|
||||
|
||||
return {player: myUser, ...myCut, total: R.negate(myCut.total), rank: -1, _id: myUser.uid}
|
||||
return {player: myUser, ...myCut, total: R.negate(myCut.change) || 0, rank: -1, _id: myUser.uid}
|
||||
}
|
@ -12,6 +12,7 @@ export default async function (call: ApiCall<ReqhdGetList, ReshdGetList>) {
|
||||
// 消费竞赛是跨服活动,活动开启时,同步当前用户信息到跨服数据库
|
||||
G.huodong.xfjs = !!_hdList.find(i => i.htype == 11);
|
||||
if (G.huodong.xfjs) {
|
||||
G.huodong.xfjsId = _hdList.find(i => i.htype == 11).hdid
|
||||
let myUser = await G.mongodb.collection('user').findOne({uid: call.uid})
|
||||
G.crossmongodb.collection('huodong_user').updateOne({uid: call.uid}, {$set: myUser}, {upsert: true})
|
||||
}
|
||||
|
@ -106,7 +106,8 @@ class _G {
|
||||
|
||||
/**跨服活动——消费竞赛的开启状态 */
|
||||
huodong = {
|
||||
xfjs: false
|
||||
xfjs: false,
|
||||
xfjsId: ''
|
||||
};
|
||||
|
||||
private event = new EventEmitter();
|
||||
|
@ -225,8 +225,8 @@ export class PlayerFun {
|
||||
}
|
||||
G.mongodb.collection('rmbuse').insertOne(data);
|
||||
// 消费竞赛开启时写入跨服数据库
|
||||
if (G.huodong.xfjs && !data.isAdd) {
|
||||
G.crossmongodb.collection('rmbuse').updateOne({uid: data.uid}, {
|
||||
if (G.huodong.xfjs && !data.isAdd && typeof data.change == 'number') {
|
||||
G.crossmongodb.collection('rmbuse').updateOne({uid: data.uid, type: `xfjs_${G.huodong.xfjsId}`}, {
|
||||
$set: {time: G.time},
|
||||
$inc: {change: data.change}
|
||||
}, {upsert: true});
|
||||
|
@ -39,12 +39,7 @@ export class Scheduler_xfjs_Local_Ctor extends Scheduler {
|
||||
|
||||
let limit = _hd.data?.rank?.slice(-1)?.[0]?.rank?.slice(-1)?.[0] || 100
|
||||
|
||||
let rmbuse = await G.crossmongodb.collection('rmbuse').find({
|
||||
time: {
|
||||
$gte: _hd.stime,
|
||||
$lte: _hd.etime + 10
|
||||
}
|
||||
}).sort({change: 1}).limit(limit).toArray()
|
||||
let rmbuse = await G.crossmongodb.collection('rmbuse').find({type: `xfjs_${G.huodong.xfjsId}`}).sort({change: 1}).limit(limit).toArray()
|
||||
|
||||
let list: any = rmbuse.map(i => ({...i, total: R.negate(i.change)}))
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user