api 锁修改,一键接取悬赏

This commit is contained in:
dy 2024-01-03 21:57:12 +08:00
parent 826840455c
commit ecc17a22a9
3 changed files with 26 additions and 16 deletions

View File

@ -1,4 +1,5 @@
import {ApiCall} from "tsrpc"; import {ApiCall} from "tsrpc";
import { addGameLog } from "../../gameLog";
import {HeroFun} from '../../public/hero'; import {HeroFun} from '../../public/hero';
import {XstaskFun} from '../../public/xstask'; import {XstaskFun} from '../../public/xstask';
import {ReqOnekeyReceive, ResOnekeyReceive} from "../../shared/protocols/xstask/PtlOnekeyReceive"; import {ReqOnekeyReceive, ResOnekeyReceive} from "../../shared/protocols/xstask/PtlOnekeyReceive";
@ -33,7 +34,9 @@ export default async function (call: ApiCall<ReqOnekeyReceive, ResOnekeyReceive>
if (heroList.length != heroIds.length) return call.error(globalThis.lng.xstask_6); if (heroList.length != heroIds.length) return call.error(globalThis.lng.xstask_6);
let change: ResOnekeyReceive = {}; let change: ResOnekeyReceive = {};
let lockNum = event?.receiveNum || 0
for (let receive of args) { for (let receive of args) {
if (lockNum >= 8) continue
let task = taskList.find(task => task._id == receive._id); let task = taskList.find(task => task._id == receive._id);
let taskConf = G.gc.xstask[task.taskId]; let taskConf = G.gc.xstask[task.taskId];
@ -45,6 +48,7 @@ export default async function (call: ApiCall<ReqOnekeyReceive, ResOnekeyReceive>
change[receive._id] = {time: G.time, heros: receive.heroIds}; change[receive._id] = {time: G.time, heros: receive.heroIds};
XstaskFun.receiveNum(call.uid) XstaskFun.receiveNum(call.uid)
lockNum += 1
} }
Object.entries(change).forEach(([k, v]) => { Object.entries(change).forEach(([k, v]) => {
@ -53,4 +57,6 @@ export default async function (call: ApiCall<ReqOnekeyReceive, ResOnekeyReceive>
HongDianChange.sendChangeKey(call.uid, ['xstaskhd', 'huodonghd']); HongDianChange.sendChangeKey(call.uid, ['xstaskhd', 'huodonghd']);
call.succ(change); call.succ(change);
addGameLog(call.uid, "_onekeyReceive", {}, change)
} }

View File

@ -6,7 +6,7 @@
}, },
{ {
"key":"got_jinbi", "key":"got_jinbi",
"limit":200000000, "limit":2000000000,
"tips":"jinbi获取达到20亿" "tips":"jinbi获取达到20亿"
}, },
{ {

View File

@ -140,7 +140,7 @@ function setWs(server: WsServer<ServiceType>) {
//处理API锁极限情况下只锁10s防止死锁 //处理API锁极限情况下只锁10s防止死锁
//在下方postApiReturnFlow里会解锁 //在下方postApiReturnFlow里会解锁
if (call.conn.apiLock[call.service.name] && call.conn.apiLock[call.service.name] > new Date().getTime()) { if (call.conn.apiLock[call.service.name] && call.conn.apiLock[call.service.name] > new Date().getTime()) {
call.error('', {code: -100, message: '', time: 0}); call.error('', {code: -100, message: '', apilock: 1});
return null; return null;
} }
@ -199,10 +199,14 @@ function setWs(server: WsServer<ServiceType>) {
let now = new Date().getTime(); let now = new Date().getTime();
if (node.return.isSucc) { if (node.return.isSucc) {
if (!writeList.includes(node.call.service.name)){
node.call.conn.apiLock[node.call.service.name] = now + 200; node.call.conn.apiLock[node.call.service.name] = now + 200;
}
} else { } else {
if (!node.return.err.apilock) {
delete node.call.conn.apiLock[node.call.service.name]; delete node.call.conn.apiLock[node.call.service.name];
} }
}
return node; return node;
}); });