Compare commits

...

13 Commits

Author SHA1 Message Date
dy
fc426a283b Merge branch 'feature/json' into release 2023-12-29 19:01:28 +08:00
dy
1f3adac088 json 2023-12-29 19:01:18 +08:00
xcy
e496b3fefb fix:
开服竞赛排行榜问题
2023-12-29 18:43:25 +08:00
dy
b9be0901fa Merge remote-tracking branch 'origin/bugfix' into bugfix 2023-12-29 17:25:40 +08:00
dy
ecc116bfa1 fix 消费竞赛 2023-12-29 17:25:34 +08:00
xcy
d71ecf13f9 fix:
开服竞赛排行榜修复
2023-12-29 17:06:59 +08:00
dy
0dede0ac47 cehua json 2023-12-29 16:51:21 +08:00
dy
000de548c0 fix userpin 2023-12-29 16:26:10 +08:00
dy
d5d5d72bad 元旦活动 2023-12-29 16:21:40 +08:00
dy
aa671a332b fix 配件 2023-12-29 15:24:44 +08:00
dy
b56a0c4591 fix 配件 2023-12-29 15:19:43 +08:00
dy
bf39147538 Revert "fix 红点"
This reverts commit e9a27e135e.
2023-12-29 15:19:19 +08:00
dy
e9a27e135e fix 红点 2023-12-29 14:22:08 +08:00
25 changed files with 103 additions and 65 deletions

View File

@ -34,7 +34,7 @@ export default async function (call: ApiCall<ReqOpen, ResOpen>) {
let users = await G.crossmongodb.collection('huodong_user').find({uid: {$in: rankList.map(i => i._id).filter(i => i._id != 'system')}}).toArray()
rankList = rankList.map(i => ({...i, player: users.find(v => v.uid == i._id) || {}}))
rankList = rankList.map(i => ({...i, player: users.find(v => v.uid == i.uid) || {}}))
// 活动结束前半小时缓存过期时间改为10秒
let exTime = (G.time + 1800) > _hd.etime ? 10 : 60
@ -57,7 +57,7 @@ export function sortRankList(rank, list) {
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})
rankList.push({...list[k - ccc], rank: k, _id: list[k - ccc].uid})
} else {
rankList.push({_id: 'system', total: i.need[0].n, rank: k, player: {}})
ccc += 1
@ -75,11 +75,11 @@ async function getMyData(call, rankList) {
let myCut: any = await G.crossmongodb.collection('rmbuse').findOne({uid: call.uid})
let myUser = await G.mongodb.collection('user').findOne({uid: call.uid})
G.crossmongodb.collection('huodong_user').updateOne({uid: call.uid}, myUser, {upsert: true})
G.crossmongodb.collection('huodong_user').updateOne({uid: call.uid}, {$set: myUser}, {upsert: true})
if (!myCut) {
myCut = {_id: myUser.uid, total: 0}
}
return {player: myUser, ...myCut, total: R.negate(myCut.total), rank: -1}
return {player: myUser, ...myCut, total: R.negate(myCut.total), rank: -1, _id: myUser.uid}
}

View File

@ -31,5 +31,5 @@ export default async function (call: ApiCall<ReqDMRec, ResDMRec>) {
call.succ({prize})
HongDianChange.sendChangeKey(call.uid, ['yuandan']);
HongDianChange.sendChangeKey(call.uid, ['huodonghd']);
}

View File

@ -32,5 +32,5 @@ export default async function (call: ApiCall<ReqDZRec, ResDZRec>) {
call.succ({[gift.id]: prize})
HongDianChange.sendChangeKey(call.uid, ['yuandan']);
HongDianChange.sendChangeKey(call.uid, ['huodonghd']);
}

View File

@ -25,5 +25,5 @@ export default async function (call: ApiCall<ReqExchange, ResExchange>) {
call.succ({})
HongDianChange.sendChangeKey(call.uid, ['yuandan']);
HongDianChange.sendChangeKey(call.uid, ['huodonghd']);
}

View File

@ -29,9 +29,9 @@ export default async function (call: ApiCall<ReqTaskRec, ResTaskRec>) {
await PlayerFun.sendPrize(call, _prize);
let changedata = { data: _mydata, prize: _prize}
// 推送红点
HongDianChange.sendChangeKey(call.uid, ['huodonghd']);
call.succ(changedata);
// 推送红点
HongDianChange.sendChangeKey(call.uid, ['huodonghd']);
}

View File

@ -40,5 +40,5 @@ export default async function (call: ApiCall<ReqZLRec, ResZLRec>) {
call.succ({[call.req.id]: prize})
HongDianChange.sendChangeKey(call.uid, ['yuandan']);
HongDianChange.sendChangeKey(call.uid, ['huodonghd']);
}

View File

@ -24,7 +24,7 @@ export class Yuandanfun {
exchange: {},
taskfinish: [],
taskval: await this.getTaskVal(call),
qiandaoTime: data?.qiandaoTime || 0,
qiandaoTime: data?.qiandaoTime || 1,
refreshTime: G.time
},
}, {upsert: true, returnDocument: 'after'})).value

View File

@ -62,7 +62,7 @@ export default async function (call: ApiCall<ReqRepair, ResRepair>) {
} else {
cutItem = R.find(R.whereEq({a: "item", t: "21"}))(need)
}
let rankKfjs = new RankKfjs(6)
let rankKfjs = RankKfjs(6)
rankKfjs.setDataAndCheck({
player: call.conn.gud,
valArr: [await rankKfjs.getRankScore(call.uid) + cutItem.n]

View File

@ -269,7 +269,7 @@ export class HongDianFun {
for (let i = 1; i <= 7; i++) {
let prize = kfjsFun.getStatus(i)
if (PublicShared.getOpenServerDay() <= prize.conf.showDay[1]) continue
let rankKfjs = new RankKfjs(i)
let rankKfjs = RankKfjs(i)
let myRank = await rankKfjs.getRankSortByOne(call.uid)
if (prize.type > 0 && !data?.record?.[i] && myRank >= 0) {
canGet[i] = true
@ -349,7 +349,7 @@ export class HuoDongHongDianFun {
ishd = await this.pobinglibao(call, element)
}
if (element.htype == 14) {
// 检测 htype 10 破冰活动红点
// 检测 htype 10 元旦活动红点
ishd = await this.yuandan(call, element)
}
@ -392,16 +392,15 @@ export class HuoDongHongDianFun {
if (data?.gameNum < _hd.data.gamefree) return {show: true}
if (!PublicShared.chkSameDate(data?.qiandaoTime || 0, G.time)) {
if (!PublicShared.chkSameDate(data?.qiandaoTime || 1, G.time)) {
return {show: true}
}
for (let i = 1; i <= data.taskval.length; i++) {
if (data?.taskval[i] >= _hd?.data?.task?.[i]?.pval && !data?.taskfinish.find(v => v == i + '')) {
for (const i in data.taskval) {
if (data?.taskval[i] >= _hd?.data?.task?.[i]?.pval && !data?.taskfinish.find(v => v == i)) {
return {show: true}
}
}
return {show: false}
}

View File

@ -137,7 +137,7 @@ export default async function (call: ApiCall<ReqLottery, ResLottery>) {
changeData: changeData
});
let rankKfjs = new RankKfjs(1)
let rankKfjs = RankKfjs(1)
rankKfjs.setDataAndCheck({
player: call.conn.gud,
valArr: [await rankKfjs.getRankScore(call.uid) + call.req.type]

View File

@ -12,7 +12,7 @@ export default async function (call: ApiCall<ReqOpen, ResOpen>) {
const {min, max} = Rank.pageToMin(call.req.page, call.req.offset)
let rankKfjs = new RankKfjs(status.type)
let rankKfjs = RankKfjs(status.type)
let endTime = PublicShared.getToDayZeroTime(PublicShared.getToDayZeroTime(G.openTime) + status.conf.showDay[1] * 86400)

View File

@ -15,7 +15,7 @@ export default async function (call: ApiCall<ReqReceive, ResReceive>) {
if (data?.record?.[call.req.type]) return call.errorCode(-2)
// 查询自己排名,发奖
let rankKfjs = new RankKfjs(call.req.type)
let rankKfjs = RankKfjs(call.req.type)
let myRank = await rankKfjs.getRankSortByOne(call.uid)
let conf = R.find(i => i.rank[0] <= myRank + 1 && i.rank[1] >= myRank + 1)(prize)

View File

@ -43,7 +43,7 @@ export default async function (call: ApiCall<ReqFight, ResFight>) {
valArr: [changeInfo.lv]
});
let rankKfjs = new RankKfjs(5)
let rankKfjs = RankKfjs(5)
rankKfjs.setDataAndCheck({
player: call.conn.gud,
valArr: [changeInfo.lv-1]

View File

@ -1,14 +1,14 @@
import { ApiCall } from "tsrpc";
import { ReqGetList, ResGetList } from "../../shared/protocols/peijian/PtlGetList";
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 dbList = (await G.mongodb.collection('peijian').find({uid: call.uid}).toArray()).map(p => {
let np = G.mongodb.conversionIdObj(p);
let { uid, ...ops } = np;
let {uid, ...ops} = np;
if (np.lv > _maxLv) _maxLv = np.lv
if (!color[peijianCon[np.peijianId].colour]) color[peijianCon[np.peijianId].colour] = 0
@ -16,15 +16,25 @@ export default async function (call: ApiCall<ReqGetList, ResGetList>) {
return ops;
});
// 修复配件穿戴在不存在的英雄身上
let heroIds = R.values(call.conn.gud.heroPos)
let fixIds = dbList.filter(i => i.wearId && !heroIds.includes(i.wearId)).map(i => G.mongodb.conversionId(i._id))
if (fixIds.length) {
await G.mongodb.collection('peijian').updateMany({_id: {$in: fixIds}}, {$set: {wearId: ''}})
}
// 记录玩家最大等级,颜色相关数据 注册任务用
await G.mongodb.collection('playerInfo', 'usertasklog').updateOne({ uid: call.conn.uid, type: 'usertasklog' },
{ $set: { maxpeijianlv: _maxLv, peijiancolor: color } }, { upsert: true })
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 || {});
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({

View File

@ -38,7 +38,7 @@ export default async function (call: ApiCall<ReqFight, ResFight>) {
// (await call.conn.gonghui)?.addExp(20, call.uid);
let rankKfjs = new RankKfjs(4)
let rankKfjs = RankKfjs(4)
rankKfjs.setDataAndCheck({
player: call.conn.gud,
valArr: [call.conn.gud.mapId]

View File

@ -21,8 +21,9 @@ export default async function (call: ApiCall<ReqPing, ResPing>) {
openDay: PublicShared.getOpenServerDay()
});
let gud = call.conn?.gud
G.server.sendMsgByUid(call.uid, 'msg_s2c/PlayerChange', {
jinbi: call.conn.gud.jinbi,
rmbmoney: call.conn.gud.rmbmoney
jinbi: gud?.jinbi,
rmbmoney: gud?.rmbmoney
});
}

View File

@ -250,7 +250,7 @@ BaseConnection.prototype.refreshPower = async function (this: BaseConnection<Ser
G.mongodb.collection('user').updateOne({ uid: this.uid }, { $set: dbUpdate });
this.sendMsg('msg_s2c/PlayerChange', dbUpdate);
let rankKfjs = new RankKfjs(7)
let rankKfjs = RankKfjs(7)
rankKfjs.setDataAndCheck({
player: this.gud,
valArr: [power]

View File

@ -54,8 +54,8 @@
"undefined": "游轮竞技第1名获得解锁后攻击加成+1%",
"img": "txk_016",
"cond": [
"time",
-1
"jjc_rank",
1
],
"intr": "playerheadFrame_des_4",
"sort": 4,

View File

@ -27,7 +27,7 @@ async function setHeroLvCount(call) {
let score = R.sum(arrList.map(i => i.lv))
let rankKfjs = new RankKfjs(2)
let rankKfjs = RankKfjs(2)
rankKfjs.setDataAndCheck({
player: call.conn.gud,
valArr: [score]
@ -37,7 +37,7 @@ async function setHeroLvCount(call) {
async function setEquipLvCount(call) {
let status = getStatus()
if (status.type != 3) return
let rankKfjs = new RankKfjs(3)
let rankKfjs = RankKfjs(3)
let equips = await G.mongodb.collection('equip').find({
uid: call.uid,
wearaId: {$in: R.values(call.conn.gud.heroPos)}

View File

@ -227,7 +227,7 @@ export class PlayerFun {
// 消费竞赛开启时写入跨服数据库
if (G.huodong.xfjs && !data.isAdd) {
G.crossmongodb.collection('rmbuse').updateOne({uid: data.uid}, {
time: G.time,
$set: {time: G.time},
$inc: {change: data.change}
}, {upsert: true});
}

View File

@ -12,8 +12,9 @@ import { RankWzryCross } from './rank_wzry';
import { RankXszm } from './rank_xszm';
import { RankZccg } from './rank_zccg';
import * as util from 'util'
import { RankKfjs } from "./rank_kfjs";
import { RankKfjs_1 } from "./rank_kfjs";
import { clusterRunOnce } from '../../clusterUtils';
import { number } from 'mathjs';
@ -33,8 +34,7 @@ export abstract class Rank {
zccg: RankZccg;
tujian: RankTujian;
wzryCross: RankWzryCross;
kfjs: RankKfjs
}> = {};
}> & k_v<Rank> = {};
queue = new Queue();
findKey = 'uid';
@ -109,7 +109,7 @@ export abstract class Rank {
}
constructor() {
Rank.list[this.getType()] = this;
Rank.list[this.getType() as string] = this;
this.cotr();
}

View File

@ -1,23 +1,18 @@
import {rankType} from '../../shared/protocols/rank/PtlOpen';
import {rankInfo} from '../../shared/protocols/type';
import {Rank} from './rank';
import { rankType } from '../../shared/protocols/rank/PtlOpen';
import { rankInfo } from '../../shared/protocols/type';
import { Rank } from './rank';
import kfjsFun from "../kaifujingsai";
export class RankKfjs extends Rank {
export class RankKfjs_1 extends Rank {
ctype: string = "1";
ortype: string
ctype: string
constructor(ctype) {
super();
this.ctype = ctype
this.ortype = `kfjs${kfjsFun.getStatus().type}`
get ortype() {
return `kfjs${kfjsFun.getStatus().type}`
}
getType(): rankType {
let status = kfjsFun.getStatus(this.ctype)
return <rankType>`kfjs${status.type}`;
return <rankType>`kfjs${this.ctype}`;
}
async setDataAndCheck(info: rankInfo) {
@ -26,4 +21,35 @@ export class RankKfjs extends Rank {
if (status.type == -1) return
this.addNew(info)
}
}
export class RankKfjs_2 extends RankKfjs_1 {
ctype: string = "2"
}
export class RankKfjs_3 extends RankKfjs_1 {
ctype: string = "3"
}
export class RankKfjs_4 extends RankKfjs_1 {
ctype: string = "4"
}
export class RankKfjs_5 extends RankKfjs_1 {
ctype: string = "5"
}
export class RankKfjs_6 extends RankKfjs_1 {
ctype: string = "6"
}
export class RankKfjs_7 extends RankKfjs_1 {
ctype: string = "7"
}
export function RankKfjs(type: number) {
return <RankKfjs_1>Rank.list[`kfjs${type}`]
}

View File

@ -28,6 +28,7 @@ import { addListener } from './globalListener';
import { SchedulerManage } from './public/scheduler/scheduler';
import {CrossEmailPull} from "./public/scheduler/scheduler_cross_email_pull";
import {Scheduler_xfjs_Local_Ctor} from "./public/scheduler/scheduler_xiaofeijingsai";
import { RankKfjs_1, RankKfjs_2, RankKfjs_3, RankKfjs_4, RankKfjs_5, RankKfjs_6, RankKfjs_7 } from './public/rank/rank_kfjs';
export async function startAfter() {
//事件监听和定时器初始化
@ -58,6 +59,14 @@ export async function startAfter() {
new RankSlzd5();
new RankSlzd6();
new RankKfjs_1();
new RankKfjs_2();
new RankKfjs_3();
new RankKfjs_4();
new RankKfjs_5();
new RankKfjs_6();
new RankKfjs_7();
new RankZccg();
new RankTujian();

View File

@ -55,7 +55,7 @@ export type hongdianKey =
| 'pobinglibao'
| 'payForDiamond'
| 'leichonglibao'
| 'yuandan';
export type hongdianVal = {
show?: boolean;
// 看功能需要

View File

@ -15608,13 +15608,6 @@ export const serviceProto: ServiceProto<ServiceType> = {
"type": "Literal",
"literal": "leichonglibao"
}
},
{
"id": 40,
"type": {
"type": "Literal",
"literal": "yuandan"
}
}
]
},