Merge branch 'bugfix' into dev

This commit is contained in:
dy 2023-12-31 11:24:45 +08:00
commit 6f17e77f14
5 changed files with 19 additions and 25 deletions

View File

@ -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 limit = _hd.data?.rank?.slice(-1)?.[0]?.rank?.slice(-1)?.[0] || call.req.limit || 100
let rmbuse = await G.crossmongodb.collection('rmbuse').find({ let rmbuse = await G.crossmongodb.collection('rmbuse').find({type: `xfjs_${G.huodong.xfjsId}`}).sort({change: 1}).limit(limit).toArray()
time: {
$gte: _hd.stime,
$lte: _hd.etime + 10
}
}).sort({change: 1}).limit(limit).toArray()
let list: any = rmbuse.map(i => ({...i, total: R.negate(i.change)})) let list: any = rmbuse.map(i => ({...i, total: R.negate(i.change)}))
let rankList = sortRankList(_hd.data.rank, list) 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) || {}})) rankList = rankList.map(i => ({...i, player: users.find(v => v.uid == i.uid) || {}}))
// 活动结束前半小时,缓存过期时间改为10 // 活动结束前半小时,缓存过期时间改为5
let exTime = (G.time + 1800) > _hd.etime ? 10 : 60 let exTime = (G.time + 1800) > _hd.etime ? 5 : 10
G.crossioredis.setex(`rank:xiaofeijingsai`, exTime, JSON.stringify(rankList)); 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) { export function sortRankList(rank, list) {
let rankList = [] let rankList = []
let ccc = 0
rank.map(i => { rank.map(i => {
for (let k = i.rank[0] - 1; k < i.rank[1]; k++) { for (let k = i.rank[0] - 1; k < i.rank[1]; k++) {
if (list[k]?.total >= i.need[0].n) { if (list[0]?.total >= i.need[0].n) {
rankList.push({...list[k - ccc], rank: k, _id: list[k - ccc].uid}) rankList.push({...list[0], rank: k, _id: list[0].uid})
list = R.tail(list)
} else { } else {
rankList.push({_id: 'system', total: i.need[0].n, rank: k, player: {}}) 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) let myData = rankList.find(i => i._id == call.uid)
if (myData) return myData 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}) let myUser = await G.mongodb.collection('user').findOne({uid: call.uid})
G.crossmongodb.collection('huodong_user').updateOne({uid: call.uid}, {$set: myUser}, {upsert: true}) 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} 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}
} }

View File

@ -12,6 +12,7 @@ export default async function (call: ApiCall<ReqhdGetList, ReshdGetList>) {
// 消费竞赛是跨服活动,活动开启时,同步当前用户信息到跨服数据库 // 消费竞赛是跨服活动,活动开启时,同步当前用户信息到跨服数据库
G.huodong.xfjs = !!_hdList.find(i => i.htype == 11); G.huodong.xfjs = !!_hdList.find(i => i.htype == 11);
if (G.huodong.xfjs) { 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}) let myUser = await G.mongodb.collection('user').findOne({uid: call.uid})
G.crossmongodb.collection('huodong_user').updateOne({uid: call.uid}, {$set: myUser}, {upsert: true}) G.crossmongodb.collection('huodong_user').updateOne({uid: call.uid}, {$set: myUser}, {upsert: true})
} }

View File

@ -106,7 +106,8 @@ class _G {
/**跨服活动——消费竞赛的开启状态 */ /**跨服活动——消费竞赛的开启状态 */
huodong = { huodong = {
xfjs: false xfjs: false,
xfjsId: ''
}; };
private event = new EventEmitter(); private event = new EventEmitter();

View File

@ -225,8 +225,8 @@ export class PlayerFun {
} }
G.mongodb.collection('rmbuse').insertOne(data); G.mongodb.collection('rmbuse').insertOne(data);
// 消费竞赛开启时写入跨服数据库 // 消费竞赛开启时写入跨服数据库
if (G.huodong.xfjs && !data.isAdd) { if (G.huodong.xfjs && !data.isAdd && typeof data.change == 'number') {
G.crossmongodb.collection('rmbuse').updateOne({uid: data.uid}, { G.crossmongodb.collection('rmbuse').updateOne({uid: data.uid, type: `xfjs_${G.huodong.xfjsId}`}, {
$set: {time: G.time}, $set: {time: G.time},
$inc: {change: data.change} $inc: {change: data.change}
}, {upsert: true}); }, {upsert: true});

View File

@ -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 limit = _hd.data?.rank?.slice(-1)?.[0]?.rank?.slice(-1)?.[0] || 100
let rmbuse = await G.crossmongodb.collection('rmbuse').find({ let rmbuse = await G.crossmongodb.collection('rmbuse').find({type: `xfjs_${G.huodong.xfjsId}`}).sort({change: 1}).limit(limit).toArray()
time: {
$gte: _hd.stime,
$lte: _hd.etime + 10
}
}).sort({change: 1}).limit(limit).toArray()
let list: any = rmbuse.map(i => ({...i, total: R.negate(i.change)})) let list: any = rmbuse.map(i => ({...i, total: R.negate(i.change)}))