Merge pull request 'release' (#2) from release into master

This commit is contained in:
qixin 2024-01-09 15:18:45 +08:00
commit c3f94cc304
21 changed files with 11599 additions and 731 deletions

View File

@ -1,6 +1,4 @@
import {ApiCall} from "tsrpc";
import {EventFun} from '../public/event/event';
import {PayFun} from '../public/pay';
import {ReqSyncBtn, ResSyncBtn, syncBtnKeys} from "../shared/protocols/PtlSyncBtn";
import {PublicShared} from '../shared/public/public';
import {HuoDongFun} from "../public/huodongfun";
@ -8,7 +6,6 @@ import {HuoDongFun} from "../public/huodongfun";
const defaultKeys: syncBtnKeys[] = [
'huobanzhaomu', 'yibaichou', 'shouchong',
'dayjijin', 'dengjijijin', 'guanqiajijin', 'tianshujijin',
'zhanling',
'xianshilibao',
'xianshizhaomu',
'G123Gift',
@ -65,39 +62,40 @@ export default async function (call: ApiCall<ReqSyncBtn, ResSyncBtn>) {
break;
case 'zhanling':
//30天一轮循环不管奖励。常驻活动
if (!PublicShared.getEventIsOpen(G.gc.zhanling.eventOpen, call.conn.gud)) {
data[key] = {active: false};
} else {
let zls = await G.mongodb.collection('scheduler').findOne({type: 'zhanling'});
if (!data[key] || data[key].round != zls.round) {
let lastRunTime = zls && zls.lastRunTime? zls.lastRunTime : G.time
let round = zls && zls.lastRunTime? zls.round : 1
data[key] = {active: true, sTime: lastRunTime, round: round};
change[key] = data[key];
// if (!PublicShared.getEventIsOpen(G.gc.zhanling.eventOpen, call.conn.gud)) {
// data[key] = {active: false};
// } else {
// let zls = await G.mongodb.collection('scheduler').findOne({type: 'zhanling'});
// if (!data[key] || data[key].round != (zls?.round || 0)) {
// let lastRunTime = zls && zls.lastRunTime? zls.lastRunTime : G.time
// let round = zls && zls.lastRunTime? zls.round : 1
PayFun.delPayLog(call.uid, {payId: G.gc.zhanling.payId, val: []});
// data[key] = {active: true, sTime: lastRunTime, round: round};
// change[key] = data[key];
G.mongodb.cEvent('zhanling').findOne({uid: call.uid, type: 'zhanling'}).then(data => {
//新一轮战令 不管玩家多久没上线 只补发玩家上一轮没有领取的奖励
data && EventFun.reissueZhanLingPrize(data, call.conn.gud);
// PayFun.delPayLog(call.uid, {payId: G.gc.zhanling.payId, val: []});
G.mongodb.cEvent('zhanling').updateOne(
{uid: call.uid, type: 'zhanling'},
{
$set: {
lv: 1,
exp: 0,
rec: {},
isPay: false,
taskRec: [],
refreshTime: G.time
}
},
{upsert: true}
);
});
}
}
// G.mongodb.cEvent('zhanling').findOne({uid: call.uid, type: 'zhanling'}).then(data => {
// //新一轮战令 不管玩家多久没上线 只补发玩家上一轮没有领取的奖励
// data && EventFun.reissueZhanLingPrize(data, call.conn.gud);
// G.mongodb.cEvent('zhanling').updateOne(
// {uid: call.uid, type: 'zhanling'},
// {
// $set: {
// lv: 1,
// exp: 0,
// rec: {},
// isPay: false,
// taskRec: [],
// refreshTime: G.time
// }
// },
// {upsert: true}
// );
// });
// }
// }
break;
case 'xianshilibao':
// 到时间消失

View File

@ -2,6 +2,8 @@ import { ApiCall } from "tsrpc";
import { HuoDongFun } from "../../../public/huodongfun";
import { ReqOpen, ResOpen } from "../../../shared/protocols/event/yangchengmubiao/PtlOpen";
import { YangChengMuBiaofun } from "./fun";
import { PayFun } from "../../../public/pay";
import { payLog } from "../../../shared/protocols/pay/PtlGetList";
export default async function (call: ApiCall<ReqOpen, ResOpen>) {
let _hdinfo = await HuoDongFun.getHdidInfo(call, call.req.hdid)
@ -9,6 +11,23 @@ export default async function (call: ApiCall<ReqOpen, ResOpen>) {
// 无此活动
return call.error('', { code: -1, message: globalThis.lng.huodong_open_1 })
}
let delPay: { payId: string, val: payLog[] }[] = [];
let payIds = _hdinfo.data.gift.map(v => v.payId);
let payLogs = await PayFun.getPayLogs(call.uid, payIds);
for (let payid in payLogs) {
if (payLogs[payid].length > 0) {
if (payLogs[payid].slice(-1)[0].time < _hdinfo.stime) {
delPay.push({ payId: payid, val: [] });
}
}
}
if (delPay.length > 0) {
await PayFun.delPayLog(call.uid, ...delPay);
}
let _mydata = await YangChengMuBiaofun.getMyData(call, call.req.hdid)
let changedata = { mydata: _mydata, hdinfo: _hdinfo }
call.succ(changedata);

View File

@ -1,14 +1,15 @@
import {ApiCall} from "tsrpc";
import {ZhanLingTasks} from '../../../public/zhanling';
import {ReqOpen, ResOpen} from "../../../shared/protocols/event/zhanling/PtlOpen";
import {player} from '../../../shared/protocols/user/type';
import {PublicShared} from '../../../shared/public/public';
import { ApiCall } from "tsrpc";
import { ZhanLingTasks } from '../../../public/zhanling';
import { ReqOpen, ResOpen } from "../../../shared/protocols/event/zhanling/PtlOpen";
import { player } from '../../../shared/protocols/user/type';
import { PublicShared } from '../../../shared/public/public';
import { PayFun } from "../../../public/pay";
export default async function (call: ApiCall<ReqOpen, ResOpen>) {
let zls = await G.mongodb.collection('scheduler').findOne({type: 'zhanling'});
let data = await G.mongodb.cEvent('zhanling').findOne({uid: call.uid, type: 'zhanling'});
let zls = await G.mongodb.collection('scheduler').findOne({ type: 'zhanling' });
let data = await G.mongodb.cEvent('zhanling').findOne({ uid: call.uid, type: 'zhanling' });
if (!data || data.round != (zls?.round | 0)) {
if (!data || data.round != (zls?.round || 0)) {
let set = {
lv: 1,
exp: 0,
@ -16,18 +17,22 @@ export default async function (call: ApiCall<ReqOpen, ResOpen>) {
isPay: false,
taskRec: [],
round: zls?.round || 0,
reWeekTime:G.time,
reWeekTime: G.time,
refreshTime: G.time,
}
await PayFun.delPayLog(
call.uid, { payId: G.gc.zhanling.payId, val: [] }
);
data = (await G.mongodb.cEvent('zhanling').findOneAndUpdate({
uid: call.uid,
type: 'zhanling'
}, {$set: set}, {upsert: true, returnDocument: 'after'})).value;
}, { $set: set }, { upsert: true, returnDocument: 'after' })).value;
}
if (PublicShared.getToWeekMondayZeroTime() > data.reWeekTime || PublicShared.getToDayZeroTime() > data.refreshTime) {
let set: any = {taskRec: []};
let set: any = { taskRec: [] };
let reType = [];
if (PublicShared.getToWeekMondayZeroTime() > data.reWeekTime) {
@ -49,11 +54,11 @@ export default async function (call: ApiCall<ReqOpen, ResOpen>) {
data = (await G.mongodb.cEvent('zhanling').findOneAndUpdate({
uid: call.uid,
type: 'zhanling'
}, {$set: set}, {upsert: true, returnDocument: 'after'})).value;
}, { $set: set }, { upsert: true, returnDocument: 'after' })).value;
}
let tasks = G.gc.zhanling.task.map(t => {
return {type: t.type as 'day' | 'week' | 'round', key: t.taskId};
return { type: t.type as 'day' | 'week' | 'round', key: t.taskId };
});
let taskFinished = await ZhanLingTasks.getLog(call.uid, tasks);
@ -68,14 +73,14 @@ export default async function (call: ApiCall<ReqOpen, ResOpen>) {
}
export async function payZhanLing(player: player) {
let zlData = await G.mongodb.cEvent('zhanling').findOne({uid: player.uid, type: 'zhanling'});
let zlData = await G.mongodb.cEvent('zhanling').findOne({ uid: player.uid, type: 'zhanling' });
let curLv = zlData?.lv || 1;
let maxLv = Number(Object.keys(G.gc.zhanling.lv).slice(-1)[0]);
let addLv = maxLv - curLv >= G.gc.zhanling.payAddLv ? G.gc.zhanling.payAddLv : maxLv - curLv;
await G.mongodb.cEvent('zhanling').updateOne(
{uid: player.uid, type: 'zhanling'},
{$set: {isPay: true, exp: G.gc.zhanling.lv[curLv + addLv], lv: curLv + addLv}},
{upsert: true}
{ uid: player.uid, type: 'zhanling' },
{ $set: { isPay: true, exp: G.gc.zhanling.lv[curLv + addLv], lv: curLv + addLv } },
{ upsert: true }
);
}

View File

@ -0,0 +1,98 @@
import { log } from "console";
import { patchFun, patchInit } from "../patch";
import { TanXianFun } from "../public/tanxian";
import { PublicShared } from "../shared/public/public";
class Path {
async fun1(a: any) {
let hd = [{
"hdid": 3001, // 唯一活动id 传说之路
"htype": 3, // 后端唯一识别标识
"stype": 300, // 前端唯一识别标识(看前端需要是否修改)
"ttype": 1, // 0 按照开服时间计算1 玩家注册时间计算 4 屏蔽此活动
"stime": 30, // 活动开始天数
"rtime": 60, // 活动显示结束天数
"etime": 60, // 活动实际结束
"name": "xinfupeiyang",
"icon": "icon_qiridenglu",
"showtime": "仅供参考,会复写正确值",
"data": {
//干部id
hid: '5002',
//任务
task: [
{ idx: 0, total: 80, type: 'lv', prize: [{ a: 'item', t: '1', n: 500000 }], des: 'intr_cszl_des_2' },
{ idx: 1, total: 4, type: 'jieji', prize: [{ a: 'item', t: '12', n: 500 }], des: 'intr_cszl_des_1' },
{ idx: 2, total: 120, type: 'lv', prize: [{ a: 'item', t: '1', n: 500000 }], des: 'intr_cszl_des_2' },
{ idx: 3, total: 5, type: 'jieji', prize: [{ a: 'item', t: '12', n: 1000 }], des: 'intr_cszl_des_1' },
{ idx: 4, total: 160, type: 'lv', prize: [{ a: 'item', t: '1', n: 800000 }], des: 'intr_cszl_des_2' },
{ idx: 5, total: 6, type: 'jieji', prize: [{ a: 'item', t: '12', n: 1500 }], des: 'intr_cszl_des_1' },
{ idx: 6, total: 200, type: 'lv', prize: [{ a: 'item', t: '1', n: 1200000 }], des: 'intr_cszl_des_2' },
{ idx: 7, total: 7, type: 'jieji', prize: [{ a: 'item', t: '12', n: 2000 }], des: 'intr_cszl_des_1' },
{ idx: 8, total: 240, type: 'lv', prize: [{ a: 'item', t: '1', n: 2000000 }], des: 'intr_cszl_des_2' },
{ idx: 9, total: 8, type: 'jieji', prize: [{ a: 'item', t: '5002', n: 20 }], des: 'intr_cszl_des_1' }
],
//宝箱
box: { total: 10, prize: [{ a: 'item', t: '610', n: 1 }] }
}
},
{
"hdid": 3002, // 唯一活动id 传说之路 心腹培养
"htype": 3, // 后端唯一识别标识
"stype": 300, // 前端唯一识别标识(看前端需要是否修改)
"ttype": 1, // 0 按照开服时间计算1 玩家注册时间计算 4 屏蔽此活动
"stime": 60, // 活动开始天数
"rtime": 90, // 活动显示结束天数
"etime": 90, // 活动实际结束
"name": "xinfupeiyang",
"icon": "icon_xfdj",
"showtime": "仅供参考,会复写正确值",
"data": {
//干部id
hid: '5004',
//任务
task: [
{ idx: 0, total: 100, type: 'lv', prize: [{ a: 'item', t: '1', n: 500000 }], des: 'intr_cszl_des_2' },
{ idx: 1, total: 5, type: 'jieji', prize: [{ a: 'item', t: '12', n: 500 }], des: 'intr_cszl_des_1' },
{ idx: 2, total: 140, type: 'lv', prize: [{ a: 'item', t: '1', n: 500000 }], des: 'intr_cszl_des_2' },
{ idx: 3, total: 6, type: 'jieji', prize: [{ a: 'item', t: '12', n: 1000 }], des: 'intr_cszl_des_1' },
{ idx: 4, total: 180, type: 'lv', prize: [{ a: 'item', t: '1', n: 800000 }], des: 'intr_cszl_des_2' },
{ idx: 5, total: 7, type: 'jieji', prize: [{ a: 'item', t: '12', n: 1500 }], des: 'intr_cszl_des_1' },
{ idx: 6, total: 220, type: 'lv', prize: [{ a: 'item', t: '1', n: 1200000 }], des: 'intr_cszl_des_2' },
{ idx: 7, total: 8, type: 'jieji', prize: [{ a: 'item', t: '12', n: 2000 }], des: 'intr_cszl_des_1' },
{ idx: 8, total: 260, type: 'lv', prize: [{ a: 'item', t: '1', n: 2000000 }], des: 'intr_cszl_des_2' },
{ idx: 9, total: 9, type: 'jieji', prize: [{ a: 'item', t: '5004', n: 20 }], des: 'intr_cszl_des_1' }
],
//宝箱
box: { total: 10, prize: [{ a: 'item', t: '610', n: 1 }] }
}
}]
for (let i = 0; i < hd.length; i++) {
G.mongodb.collection('hdinfo').updateOne(
{ hdid: hd[i].hdid }, { $set: { ["data.task"]: hd[i].data.task } }, { upsert: true }
)
}
return "sucess!!!"
}
async run() {
await this.fun1(1);
}
}
async function main() {
await patchInit()
let patch = new Path();
await patch.run();
console.log("逻辑执行完成,等待退出");
setTimeout(function () {
console.log('结束程序');
process.exit();
}, 3000);
}
main();

View File

@ -211,7 +211,8 @@ export function addListener() {
// 签到增加天数
SignFun.updateLogin(gud.uid);
ActionLog.initDayLog(gud.uid);
//移到定时器里统一执行
//ActionLog.initDayLog(gud.uid);
ActionLog.addRetainLog(gud.uid, { key: 'login_day', val: 1 });
ZhanLingTasks.clearLog(gud.uid, 'day');
PayFun.checkGiftDayEmail(gud, lastTime, curTime);

View File

@ -32661,6 +32661,906 @@
"p": 1
}
],
"271081": [
{
"id": 271081,
"a": "attr",
"t": "nexp",
"n": 249674,
"p": 1
}
],
"271082": [
{
"id": 271082,
"a": "attr",
"t": "nexp",
"n": 249905,
"p": 1
}
],
"271083": [
{
"id": 271083,
"a": "attr",
"t": "nexp",
"n": 250136,
"p": 1
}
],
"271084": [
{
"id": 271084,
"a": "attr",
"t": "nexp",
"n": 250367,
"p": 1
}
],
"271085": [
{
"id": 271085,
"a": "attr",
"t": "nexp",
"n": 250598,
"p": 1
}
],
"271086": [
{
"id": 271086,
"a": "attr",
"t": "nexp",
"n": 250829,
"p": 1
}
],
"271087": [
{
"id": 271087,
"a": "attr",
"t": "nexp",
"n": 251060,
"p": 1
}
],
"271088": [
{
"id": 271088,
"a": "attr",
"t": "nexp",
"n": 251291,
"p": 1
}
],
"271089": [
{
"id": 271089,
"a": "attr",
"t": "nexp",
"n": 251522,
"p": 1
}
],
"271090": [
{
"id": 271090,
"a": "attr",
"t": "nexp",
"n": 251753,
"p": 1
}
],
"271091": [
{
"id": 271091,
"a": "attr",
"t": "nexp",
"n": 251984,
"p": 1
}
],
"271092": [
{
"id": 271092,
"a": "attr",
"t": "nexp",
"n": 252215,
"p": 1
}
],
"271093": [
{
"id": 271093,
"a": "attr",
"t": "nexp",
"n": 252446,
"p": 1
}
],
"271094": [
{
"id": 271094,
"a": "attr",
"t": "nexp",
"n": 252677,
"p": 1
}
],
"271095": [
{
"id": 271095,
"a": "attr",
"t": "nexp",
"n": 252908,
"p": 1
}
],
"271096": [
{
"id": 271096,
"a": "attr",
"t": "nexp",
"n": 253139,
"p": 1
}
],
"271097": [
{
"id": 271097,
"a": "attr",
"t": "nexp",
"n": 253370,
"p": 1
}
],
"271098": [
{
"id": 271098,
"a": "attr",
"t": "nexp",
"n": 253601,
"p": 1
}
],
"271099": [
{
"id": 271099,
"a": "attr",
"t": "nexp",
"n": 253832,
"p": 1
}
],
"271100": [
{
"id": 271100,
"a": "attr",
"t": "nexp",
"n": 254063,
"p": 1
}
],
"271101": [
{
"id": 271101,
"a": "attr",
"t": "nexp",
"n": 254294,
"p": 1
}
],
"271102": [
{
"id": 271102,
"a": "attr",
"t": "nexp",
"n": 254525,
"p": 1
}
],
"271103": [
{
"id": 271103,
"a": "attr",
"t": "nexp",
"n": 254756,
"p": 1
}
],
"271104": [
{
"id": 271104,
"a": "attr",
"t": "nexp",
"n": 254987,
"p": 1
}
],
"271105": [
{
"id": 271105,
"a": "attr",
"t": "nexp",
"n": 255218,
"p": 1
}
],
"271106": [
{
"id": 271106,
"a": "attr",
"t": "nexp",
"n": 255449,
"p": 1
}
],
"271107": [
{
"id": 271107,
"a": "attr",
"t": "nexp",
"n": 255680,
"p": 1
}
],
"271108": [
{
"id": 271108,
"a": "attr",
"t": "nexp",
"n": 255911,
"p": 1
}
],
"271109": [
{
"id": 271109,
"a": "attr",
"t": "nexp",
"n": 256142,
"p": 1
}
],
"271110": [
{
"id": 271110,
"a": "attr",
"t": "nexp",
"n": 256373,
"p": 1
}
],
"271111": [
{
"id": 271111,
"a": "attr",
"t": "nexp",
"n": 256604,
"p": 1
}
],
"271112": [
{
"id": 271112,
"a": "attr",
"t": "nexp",
"n": 256835,
"p": 1
}
],
"271113": [
{
"id": 271113,
"a": "attr",
"t": "nexp",
"n": 257066,
"p": 1
}
],
"271114": [
{
"id": 271114,
"a": "attr",
"t": "nexp",
"n": 257297,
"p": 1
}
],
"271115": [
{
"id": 271115,
"a": "attr",
"t": "nexp",
"n": 257528,
"p": 1
}
],
"271116": [
{
"id": 271116,
"a": "attr",
"t": "nexp",
"n": 257759,
"p": 1
}
],
"271117": [
{
"id": 271117,
"a": "attr",
"t": "nexp",
"n": 257990,
"p": 1
}
],
"271118": [
{
"id": 271118,
"a": "attr",
"t": "nexp",
"n": 258221,
"p": 1
}
],
"271119": [
{
"id": 271119,
"a": "attr",
"t": "nexp",
"n": 258452,
"p": 1
}
],
"271120": [
{
"id": 271120,
"a": "attr",
"t": "nexp",
"n": 258683,
"p": 1
}
],
"271121": [
{
"id": 271121,
"a": "attr",
"t": "nexp",
"n": 258914,
"p": 1
}
],
"271122": [
{
"id": 271122,
"a": "attr",
"t": "nexp",
"n": 259145,
"p": 1
}
],
"271123": [
{
"id": 271123,
"a": "attr",
"t": "nexp",
"n": 259376,
"p": 1
}
],
"271124": [
{
"id": 271124,
"a": "attr",
"t": "nexp",
"n": 259607,
"p": 1
}
],
"271125": [
{
"id": 271125,
"a": "attr",
"t": "nexp",
"n": 259838,
"p": 1
}
],
"271126": [
{
"id": 271126,
"a": "attr",
"t": "nexp",
"n": 260069,
"p": 1
}
],
"271127": [
{
"id": 271127,
"a": "attr",
"t": "nexp",
"n": 260300,
"p": 1
}
],
"271128": [
{
"id": 271128,
"a": "attr",
"t": "nexp",
"n": 260531,
"p": 1
}
],
"271129": [
{
"id": 271129,
"a": "attr",
"t": "nexp",
"n": 260762,
"p": 1
}
],
"271130": [
{
"id": 271130,
"a": "attr",
"t": "nexp",
"n": 260993,
"p": 1
}
],
"271131": [
{
"id": 271131,
"a": "attr",
"t": "nexp",
"n": 261224,
"p": 1
}
],
"271132": [
{
"id": 271132,
"a": "attr",
"t": "nexp",
"n": 261455,
"p": 1
}
],
"271133": [
{
"id": 271133,
"a": "attr",
"t": "nexp",
"n": 261686,
"p": 1
}
],
"271134": [
{
"id": 271134,
"a": "attr",
"t": "nexp",
"n": 261917,
"p": 1
}
],
"271135": [
{
"id": 271135,
"a": "attr",
"t": "nexp",
"n": 262148,
"p": 1
}
],
"271136": [
{
"id": 271136,
"a": "attr",
"t": "nexp",
"n": 262379,
"p": 1
}
],
"271137": [
{
"id": 271137,
"a": "attr",
"t": "nexp",
"n": 262610,
"p": 1
}
],
"271138": [
{
"id": 271138,
"a": "attr",
"t": "nexp",
"n": 262841,
"p": 1
}
],
"271139": [
{
"id": 271139,
"a": "attr",
"t": "nexp",
"n": 263072,
"p": 1
}
],
"271140": [
{
"id": 271140,
"a": "attr",
"t": "nexp",
"n": 263303,
"p": 1
}
],
"271141": [
{
"id": 271141,
"a": "attr",
"t": "nexp",
"n": 263534,
"p": 1
}
],
"271142": [
{
"id": 271142,
"a": "attr",
"t": "nexp",
"n": 263765,
"p": 1
}
],
"271143": [
{
"id": 271143,
"a": "attr",
"t": "nexp",
"n": 263996,
"p": 1
}
],
"271144": [
{
"id": 271144,
"a": "attr",
"t": "nexp",
"n": 264227,
"p": 1
}
],
"271145": [
{
"id": 271145,
"a": "attr",
"t": "nexp",
"n": 264458,
"p": 1
}
],
"271146": [
{
"id": 271146,
"a": "attr",
"t": "nexp",
"n": 264689,
"p": 1
}
],
"271147": [
{
"id": 271147,
"a": "attr",
"t": "nexp",
"n": 264920,
"p": 1
}
],
"271148": [
{
"id": 271148,
"a": "attr",
"t": "nexp",
"n": 265151,
"p": 1
}
],
"271149": [
{
"id": 271149,
"a": "attr",
"t": "nexp",
"n": 265382,
"p": 1
}
],
"271150": [
{
"id": 271150,
"a": "attr",
"t": "nexp",
"n": 265613,
"p": 1
}
],
"271151": [
{
"id": 271151,
"a": "attr",
"t": "nexp",
"n": 265844,
"p": 1
}
],
"271152": [
{
"id": 271152,
"a": "attr",
"t": "nexp",
"n": 266075,
"p": 1
}
],
"271153": [
{
"id": 271153,
"a": "attr",
"t": "nexp",
"n": 266306,
"p": 1
}
],
"271154": [
{
"id": 271154,
"a": "attr",
"t": "nexp",
"n": 266537,
"p": 1
}
],
"271155": [
{
"id": 271155,
"a": "attr",
"t": "nexp",
"n": 266768,
"p": 1
}
],
"271156": [
{
"id": 271156,
"a": "attr",
"t": "nexp",
"n": 266999,
"p": 1
}
],
"271157": [
{
"id": 271157,
"a": "attr",
"t": "nexp",
"n": 267230,
"p": 1
}
],
"271158": [
{
"id": 271158,
"a": "attr",
"t": "nexp",
"n": 267461,
"p": 1
}
],
"271159": [
{
"id": 271159,
"a": "attr",
"t": "nexp",
"n": 267692,
"p": 1
}
],
"271160": [
{
"id": 271160,
"a": "attr",
"t": "nexp",
"n": 267923,
"p": 1
}
],
"271161": [
{
"id": 271161,
"a": "attr",
"t": "nexp",
"n": 268154,
"p": 1
}
],
"271162": [
{
"id": 271162,
"a": "attr",
"t": "nexp",
"n": 268385,
"p": 1
}
],
"271163": [
{
"id": 271163,
"a": "attr",
"t": "nexp",
"n": 268616,
"p": 1
}
],
"271164": [
{
"id": 271164,
"a": "attr",
"t": "nexp",
"n": 268847,
"p": 1
}
],
"271165": [
{
"id": 271165,
"a": "attr",
"t": "nexp",
"n": 269078,
"p": 1
}
],
"271166": [
{
"id": 271166,
"a": "attr",
"t": "nexp",
"n": 269309,
"p": 1
}
],
"271167": [
{
"id": 271167,
"a": "attr",
"t": "nexp",
"n": 269540,
"p": 1
}
],
"271168": [
{
"id": 271168,
"a": "attr",
"t": "nexp",
"n": 269771,
"p": 1
}
],
"271169": [
{
"id": 271169,
"a": "attr",
"t": "nexp",
"n": 270002,
"p": 1
}
],
"271170": [
{
"id": 271170,
"a": "attr",
"t": "nexp",
"n": 270233,
"p": 1
}
],
"271171": [
{
"id": 271171,
"a": "attr",
"t": "nexp",
"n": 270464,
"p": 1
}
],
"271172": [
{
"id": 271172,
"a": "attr",
"t": "nexp",
"n": 270695,
"p": 1
}
],
"271173": [
{
"id": 271173,
"a": "attr",
"t": "nexp",
"n": 270926,
"p": 1
}
],
"271174": [
{
"id": 271174,
"a": "attr",
"t": "nexp",
"n": 271157,
"p": 1
}
],
"271175": [
{
"id": 271175,
"a": "attr",
"t": "nexp",
"n": 271388,
"p": 1
}
],
"271176": [
{
"id": 271176,
"a": "attr",
"t": "nexp",
"n": 271619,
"p": 1
}
],
"271177": [
{
"id": 271177,
"a": "attr",
"t": "nexp",
"n": 271850,
"p": 1
}
],
"271178": [
{
"id": 271178,
"a": "attr",
"t": "nexp",
"n": 272081,
"p": 1
}
],
"271179": [
{
"id": 271179,
"a": "attr",
"t": "nexp",
"n": 272312,
"p": 1
}
],
"271180": [
{
"id": 271180,
"a": "attr",
"t": "nexp",
"n": 272543,
"p": 1
}
],
"280001": [
{
"id": 280001,

View File

@ -2666,6 +2666,27 @@
"rarity": 6
}
},
"item^638": {
"itemId": "item^638",
"name": "扭蛋机超级干部随机箱",
"i18nKey": "intr_item_name_638",
"detailI18nKey": "intr_item_describe_638",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 30000,
"typeId": "item",
"typeName": "道具",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 6
}
},
"item^5001": {
"itemId": "item^5001",
"name": "莱薇碎片",

View File

@ -67,6 +67,57 @@
}
]
},
"50012": {
"id": 50012,
"heroId": 5001,
"name": "heroSkin_name_8",
"undefined": "樱花之舞",
"model": 40071,
"card": 40071,
"head": 40071,
"colour": 4,
"zhuanhuan": [
{
"a": "item",
"t": "icon_pifucailiao_cheng",
"n": 10
}
]
},
"50013": {
"id": 50013,
"heroId": 5001,
"name": "heroSkin_name_8",
"undefined": "樱花之舞",
"model": 40071,
"card": 40071,
"head": 40071,
"colour": 4,
"zhuanhuan": [
{
"a": "item",
"t": "icon_pifucailiao_cheng",
"n": 10
}
]
},
"50014": {
"id": 50014,
"heroId": 5001,
"name": "heroSkin_name_8",
"undefined": "樱花之舞",
"model": 40071,
"card": 40071,
"head": 40071,
"colour": 4,
"zhuanhuan": [
{
"a": "item",
"t": "icon_pifucailiao_cheng",
"n": 10
}
]
},
"50021": {
"id": 50021,
"heroId": 5002,

View File

@ -3244,16 +3244,16 @@
hid: '5002',
//任务
task: [
{ idx: 0,total: 80, type: 'lv', prize: [{a: 'item', t: '1', n: 500000}], des:'intr_cszl_des_1'},
{ idx: 1,total: 4, type: 'jieji', prize: [{a: 'item', t: '12', n: 500}], des:'intr_cszl_des_2' },
{ idx: 2,total: 120, type: 'lv', prize: [{a: 'item', t: '1', n: 500000}], des:'intr_cszl_des_1' },
{ idx: 3,total: 5, type: 'jieji', prize: [{a: 'item', t: '12', n: 1000}], des:'intr_cszl_des_2' },
{ idx: 4,total: 160, type: 'lv', prize: [{a: 'item', t: '1', n: 800000}], des:'intr_cszl_des_1' },
{ idx: 5,total: 6, type: 'jieji', prize: [{a: 'item', t: '12', n: 1500}], des:'intr_cszl_des_2' },
{ idx: 6,total: 200, type: 'lv', prize: [{a: 'item', t: '1', n: 1200000}], des:'intr_cszl_des_1' },
{ idx: 7,total: 7, type: 'jieji', prize: [{a: 'item', t: '12', n: 2000}], des:'intr_cszl_des_2' },
{ idx: 8,total: 240, type: 'lv', prize: [{a: 'item', t: '1', n: 2000000}], des:'intr_cszl_des_1' },
{ idx: 9,total: 8, type: 'jieji', prize: [{a: 'item', t: '5002', n: 20}], des:'intr_cszl_des_2' }
{ idx: 0,total: 80, type: 'lv', prize: [{a: 'item', t: '1', n: 500000}], des:'intr_cszl_des_2'},
{ idx: 1,total: 4, type: 'jieji', prize: [{a: 'item', t: '12', n: 500}], des:'intr_cszl_des_1' },
{ idx: 2,total: 120, type: 'lv', prize: [{a: 'item', t: '1', n: 500000}], des:'intr_cszl_des_2' },
{ idx: 3,total: 5, type: 'jieji', prize: [{a: 'item', t: '12', n: 1000}], des:'intr_cszl_des_1' },
{ idx: 4,total: 160, type: 'lv', prize: [{a: 'item', t: '1', n: 800000}], des:'intr_cszl_des_2' },
{ idx: 5,total: 6, type: 'jieji', prize: [{a: 'item', t: '12', n: 1500}], des:'intr_cszl_des_1' },
{ idx: 6,total: 200, type: 'lv', prize: [{a: 'item', t: '1', n: 1200000}], des:'intr_cszl_des_2' },
{ idx: 7,total: 7, type: 'jieji', prize: [{a: 'item', t: '12', n: 2000}], des:'intr_cszl_des_1' },
{ idx: 8,total: 240, type: 'lv', prize: [{a: 'item', t: '1', n: 2000000}], des:'intr_cszl_des_2' },
{ idx: 9,total: 8, type: 'jieji', prize: [{a: 'item', t: '5002', n: 20}], des:'intr_cszl_des_1' }
],
//宝箱
box: { total: 10, prize: [{a: 'item', t: '610', n: 1}] }
@ -3275,16 +3275,16 @@
hid: '5004',
//任务
task: [
{ idx: 0,total: 100, type: 'lv', prize: [{a: 'item', t: '1', n: 500000}], des:'intr_cszl_des_1'},
{ idx: 1,total: 5, type: 'jieji', prize: [{a: 'item', t: '12', n: 500}], des:'intr_cszl_des_2' },
{ idx: 2,total: 140, type: 'lv', prize: [{a: 'item', t: '1', n: 500000}], des:'intr_cszl_des_1' },
{ idx: 3,total: 6, type: 'jieji', prize: [{a: 'item', t: '12', n: 1000}], des:'intr_cszl_des_2' },
{ idx: 4,total: 180, type: 'lv', prize: [{a: 'item', t: '1', n: 800000}], des:'intr_cszl_des_1' },
{ idx: 5,total: 7, type: 'jieji', prize: [{a: 'item', t: '12', n: 1500}], des:'intr_cszl_des_2' },
{ idx: 6,total: 220, type: 'lv', prize: [{a: 'item', t: '1', n: 1200000}], des:'intr_cszl_des_1' },
{ idx: 7,total: 8, type: 'jieji', prize: [{a: 'item', t: '12', n: 2000}], des:'intr_cszl_des_2' },
{ idx: 8,total: 260, type: 'lv', prize: [{a: 'item', t: '1', n: 2000000}], des:'intr_cszl_des_1' },
{ idx: 9,total: 9, type: 'jieji', prize: [{a: 'item', t: '5004', n: 20}], des:'intr_cszl_des_2' }
{ idx: 0,total: 100, type: 'lv', prize: [{a: 'item', t: '1', n: 500000}], des:'intr_cszl_des_2'},
{ idx: 1,total: 5, type: 'jieji', prize: [{a: 'item', t: '12', n: 500}], des:'intr_cszl_des_1' },
{ idx: 2,total: 140, type: 'lv', prize: [{a: 'item', t: '1', n: 500000}], des:'intr_cszl_des_2' },
{ idx: 3,total: 6, type: 'jieji', prize: [{a: 'item', t: '12', n: 1000}], des:'intr_cszl_des_1' },
{ idx: 4,total: 180, type: 'lv', prize: [{a: 'item', t: '1', n: 800000}], des:'intr_cszl_des_2' },
{ idx: 5,total: 7, type: 'jieji', prize: [{a: 'item', t: '12', n: 1500}], des:'intr_cszl_des_1' },
{ idx: 6,total: 220, type: 'lv', prize: [{a: 'item', t: '1', n: 1200000}], des:'intr_cszl_des_2' },
{ idx: 7,total: 8, type: 'jieji', prize: [{a: 'item', t: '12', n: 2000}], des:'intr_cszl_des_1' },
{ idx: 8,total: 260, type: 'lv', prize: [{a: 'item', t: '1', n: 2000000}], des:'intr_cszl_des_2' },
{ idx: 9,total: 9, type: 'jieji', prize: [{a: 'item', t: '5004', n: 20}], des:'intr_cszl_des_1' }
],
//宝箱
box: { total: 10, prize: [{a: 'item', t: '610', n: 1}] }
@ -5356,7 +5356,8 @@
//展示干部皮肤ID
"show": 1,
//任务
"task" : {
"task" : [
{
"day1" :
{
"1": {
@ -5620,11 +5621,12 @@
}
],
"des" : "intr_cszl_des_9"
}
},
},
{
"day2" :
{
"1": {
"1": {
"pval" : 1,
"stype" : "128",
"cond": [],
@ -5650,8 +5652,9 @@
"t" : "1",
"n" : 100000
}
],
],
"des" : "intr_cszl_des_1"
}
},
"2": {
"pval" : 300,
@ -5884,11 +5887,12 @@
}
],
"des" : "intr_cszl_des_9"
}
},
},
{
"day3" :
{
"1": {
"1": {
"pval" : 1,
"stype" : "128",
"cond": [],
@ -5914,8 +5918,9 @@
"t" : "1",
"n" : 100000
}
],
],
"des" : "intr_cszl_des_1"
}
},
"2": {
"pval" : 300,
@ -6148,11 +6153,12 @@
}
],
"des" : "intr_cszl_des_9"
}
},
},
{
"day4" :
{
"1": {
"1": {
"pval" : 1,
"stype" : "128",
"cond": [],
@ -6178,8 +6184,9 @@
"t" : "1",
"n" : 100000
}
],
],
"des" : "intr_cszl_des_1"
}
},
"2": {
"pval" : 300,
@ -6412,11 +6419,12 @@
}
],
"des" : "intr_cszl_des_9"
}
},
},
{
"day5" :
{
"1": {
"1": {
"pval" : 1,
"stype" : "128",
"cond": [],
@ -6442,8 +6450,9 @@
"t" : "1",
"n" : 100000
}
],
],
"des" : "intr_cszl_des_1"
}
},
"2": {
"pval" : 300,
@ -6676,537 +6685,9 @@
}
],
"des" : "intr_cszl_des_9"
},
},
"day6" :
{
"1": {
"pval" : 1,
"stype" : "128",
"cond": [],
"tiaozhuan": 4,
"prize" : [
{
"a" : "attr",
"t" : "shengdanExp",
"n" : 100
},
{
"a" : "attr",
"t" : "shengdanBullet",
"n" : 2
},
{
"a" : "attr",
"t" : "rmbmoney",
"n" : 200
},
{
"a" : "item",
"t" : "1",
"n" : 100000
}
],
"des" : "intr_cszl_des_1"
},
"2": {
"pval" : 300,
"stype" : "116",
"cond": [],
"tiaozhuan": 5,
"prize" : [
{
"a" : "attr",
"t" : "shengdanExp",
"n" : 200
},
{
"a" : "attr",
"t" : "shengdanBullet",
"n" : 3
},
{
"a" : "item",
"t" : "600",
"n" : 5
},
{
"a" : "item",
"t" : "1",
"n" : 500000
}
],
"des" : "intr_cszl_des_2"
},
"3": {
"pval" : 1000,
"stype" : "116",
"cond": [],
"tiaozhuan": 2,
"prize" : [
{
"a" : "attr",
"t" : "shengdanExp",
"n" : 300
},
{
"a" : "attr",
"t" : "shengdanBullet",
"n" : 5
},
{
"a" : "item",
"t" : "600",
"n" : 10
},
{
"a" : "item",
"t" : "1",
"n" : 1000000
}
],
"des" : "intr_cszl_des_3"
},
"4": {
"pval" : 2000,
"stype" : "116",
"cond": [],
"tiaozhuan": 1,
"prize" : [
{
"a" : "attr",
"t" : "shengdanExp",
"n" : 150
},
{
"a" : "attr",
"t" : "shengdanBullet",
"n" : 2
},
{
"a" : "item",
"t" : "6",
"n" : 10
},
{
"a" : "item",
"t" : "1",
"n" : 200000
}
],
"des" : "intr_cszl_des_4"
},
"5": {
"pval" : 3,
"stype" : "142",
"cond": [2],
"tiaozhuan": 6,
"prize" : [
{
"a" : "attr",
"t" : "shengdanExp",
"n" : 100
},
{
"a" : "attr",
"t" : "shengdanBullet",
"n" : 2
},
{
"a" : "item",
"t" : "2",
"n" : 500
},
{
"a" : "item",
"t" : "1",
"n" : 200000
}
],
"des" : "intr_cszl_des_5"
},
"6": {
"pval" : 3,
"stype" : "122",
"cond": [],
"tiaozhuan": 7,
"prize" : [
{
"a" : "attr",
"t" : "shengdanExp",
"n" : 200
},
{
"a" : "attr",
"t" : "shengdanBullet",
"n" : 2
},
{
"a" : "item",
"t" : "12",
"n" : 400
},
{
"a" : "item",
"t" : "1",
"n" : 200000
}
],
"des" : "intr_cszl_des_6"
},
"7": {
"pval" : 1,
"stype" : "155",
"cond": [],
"tiaozhuan": 8,
"prize" : [
{
"a" : "attr",
"t" : "shengdanExp",
"n" : 100
},
{
"a" : "attr",
"t" : "shengdanBullet",
"n" : 2
},
{
"a" : "attr",
"t" : "rmbmoney",
"n" : 200
},
{
"a" : "item",
"t" : "1",
"n" : 100000
}
],
"des" : "intr_cszl_des_7"
},
"8": {
"pval" : 1,
"stype" : "127",
"cond": [],
"tiaozhuan": 10,
"prize" : [
{
"a" : "attr",
"t" : "shengdanExp",
"n" : 100
},
{
"a" : "attr",
"t" : "shengdanBullet",
"n" : 2
},
{
"a" : "item",
"t" : "21",
"n" : 50
},
{
"a" : "item",
"t" : "1",
"n" : 100000
}
],
"des" : "intr_cszl_des_8"
},
"9": {
"pval" : 1,
"stype" : "154",
"cond": [],
"tiaozhuan": 11,
"prize" : [
{
"a" : "attr",
"t" : "shengdanExp",
"n" : 100
},
{
"a" : "attr",
"t" : "shengdanBullet",
"n" : 2
},
{
"a" : "attr",
"t" : "jinbi",
"n" : 100000
},
{
"a" : "item",
"t" : "1",
"n" : 100000
}
],
"des" : "intr_cszl_des_9"
},
},
"day7" :
{
"1": {
"pval" : 1,
"stype" : "128",
"cond": [],
"tiaozhuan": 4,
"prize" : [
{
"a" : "attr",
"t" : "shengdanExp",
"n" : 100
},
{
"a" : "attr",
"t" : "shengdanBullet",
"n" : 2
},
{
"a" : "attr",
"t" : "rmbmoney",
"n" : 200
},
{
"a" : "item",
"t" : "1",
"n" : 100000
}
],
"des" : "intr_cszl_des_1"
},
"2": {
"pval" : 300,
"stype" : "116",
"cond": [],
"tiaozhuan": 5,
"prize" : [
{
"a" : "attr",
"t" : "shengdanExp",
"n" : 200
},
{
"a" : "attr",
"t" : "shengdanBullet",
"n" : 3
},
{
"a" : "item",
"t" : "600",
"n" : 5
},
{
"a" : "item",
"t" : "1",
"n" : 500000
}
],
"des" : "intr_cszl_des_2"
},
"3": {
"pval" : 1000,
"stype" : "116",
"cond": [],
"tiaozhuan": 2,
"prize" : [
{
"a" : "attr",
"t" : "shengdanExp",
"n" : 300
},
{
"a" : "attr",
"t" : "shengdanBullet",
"n" : 5
},
{
"a" : "item",
"t" : "600",
"n" : 10
},
{
"a" : "item",
"t" : "1",
"n" : 1000000
}
],
"des" : "intr_cszl_des_3"
},
"4": {
"pval" : 2000,
"stype" : "116",
"cond": [],
"tiaozhuan": 1,
"prize" : [
{
"a" : "attr",
"t" : "shengdanExp",
"n" : 150
},
{
"a" : "attr",
"t" : "shengdanBullet",
"n" : 2
},
{
"a" : "item",
"t" : "6",
"n" : 10
},
{
"a" : "item",
"t" : "1",
"n" : 200000
}
],
"des" : "intr_cszl_des_4"
},
"5": {
"pval" : 3,
"stype" : "142",
"cond": [2],
"tiaozhuan": 6,
"prize" : [
{
"a" : "attr",
"t" : "shengdanExp",
"n" : 100
},
{
"a" : "attr",
"t" : "shengdanBullet",
"n" : 2
},
{
"a" : "item",
"t" : "2",
"n" : 500
},
{
"a" : "item",
"t" : "1",
"n" : 200000
}
],
"des" : "intr_cszl_des_5"
},
"6": {
"pval" : 3,
"stype" : "122",
"cond": [],
"tiaozhuan": 7,
"prize" : [
{
"a" : "attr",
"t" : "shengdanExp",
"n" : 200
},
{
"a" : "attr",
"t" : "shengdanBullet",
"n" : 2
},
{
"a" : "item",
"t" : "12",
"n" : 400
},
{
"a" : "item",
"t" : "1",
"n" : 200000
}
],
"des" : "intr_cszl_des_6"
},
"7": {
"pval" : 1,
"stype" : "155",
"cond": [],
"tiaozhuan": 8,
"prize" : [
{
"a" : "attr",
"t" : "shengdanExp",
"n" : 100
},
{
"a" : "attr",
"t" : "shengdanBullet",
"n" : 2
},
{
"a" : "attr",
"t" : "rmbmoney",
"n" : 200
},
{
"a" : "item",
"t" : "1",
"n" : 100000
}
],
"des" : "intr_cszl_des_7"
},
"8": {
"pval" : 1,
"stype" : "127",
"cond": [],
"tiaozhuan": 10,
"prize" : [
{
"a" : "attr",
"t" : "shengdanExp",
"n" : 100
},
{
"a" : "attr",
"t" : "shengdanBullet",
"n" : 2
},
{
"a" : "item",
"t" : "21",
"n" : 50
},
{
"a" : "item",
"t" : "1",
"n" : 100000
}
],
"des" : "intr_cszl_des_8"
},
"9": {
"pval" : 1,
"stype" : "154",
"cond": [],
"tiaozhuan": 11,
"prize" : [
{
"a" : "attr",
"t" : "shengdanExp",
"n" : 100
},
{
"a" : "attr",
"t" : "shengdanBullet",
"n" : 2
},
{
"a" : "attr",
"t" : "jinbi",
"n" : 100000
},
{
"a" : "item",
"t" : "1",
"n" : 100000
}
],
"des" : "intr_cszl_des_9"
},
}
},
}
}
],
//抽卡
"chouka": [
//P是权重
@ -7394,4 +6875,5 @@
//boss排行邮件内容
"bossRank_des": "email_content_hqjg_rank"
}
}
]

File diff suppressed because it is too large Load Diff

View File

@ -3470,7 +3470,7 @@
"conversion": [],
"buff": [
"baoshangpro",
3
0.03
],
"suit": 8,
"rmPrize": [

View File

@ -4,7 +4,7 @@
//开放时间
openTime: [0, 514800],
//结算定时器时间
schedulerPrize: 511500,
schedulerPrize: 515100,
//分组定时器时间
schedulerGroup: 0,
//据点

File diff suppressed because it is too large Load Diff

View File

@ -1402,5 +1402,135 @@
],
"chapter": 14,
"des": "intr_guanqia_des_1"
},
"109": {
"id": 109,
"mapId": 1090,
"prize": [
{
"a": "attr",
"t": "rmbmoney",
"n": 100
}
],
"chapter": 14,
"des": "intr_guanqia_des_1"
},
"110": {
"id": 110,
"mapId": 1100,
"prize": [
{
"a": "attr",
"t": "rmbmoney",
"n": 100
}
],
"chapter": 14,
"des": "intr_guanqia_des_1"
},
"111": {
"id": 111,
"mapId": 1110,
"prize": [
{
"a": "attr",
"t": "rmbmoney",
"n": 100
}
],
"chapter": 14,
"des": "intr_guanqia_des_1"
},
"112": {
"id": 112,
"mapId": 1120,
"prize": [
{
"a": "attr",
"t": "rmbmoney",
"n": 100
}
],
"chapter": 14,
"des": "intr_guanqia_des_1"
},
"113": {
"id": 113,
"mapId": 1130,
"prize": [
{
"a": "item",
"t": "4",
"n": 5
}
],
"chapter": 14,
"des": "intr_guanqia_des_1"
},
"114": {
"id": 114,
"mapId": 1140,
"prize": [
{
"a": "attr",
"t": "rmbmoney",
"n": 100
}
],
"chapter": 14,
"des": "intr_guanqia_des_1"
},
"115": {
"id": 115,
"mapId": 1150,
"prize": [
{
"a": "attr",
"t": "rmbmoney",
"n": 100
}
],
"chapter": 14,
"des": "intr_guanqia_des_1"
},
"116": {
"id": 116,
"mapId": 1160,
"prize": [
{
"a": "attr",
"t": "rmbmoney",
"n": 100
}
],
"chapter": 14,
"des": "intr_guanqia_des_1"
},
"117": {
"id": 117,
"mapId": 1170,
"prize": [
{
"a": "attr",
"t": "rmbmoney",
"n": 100
}
],
"chapter": 14,
"des": "intr_guanqia_des_1"
},
"118": {
"id": 118,
"mapId": 1180,
"prize": [
{
"a": "item",
"t": "4",
"n": 5
}
],
"chapter": 14,
"des": "intr_guanqia_des_1"
}
}

File diff suppressed because it is too large Load Diff

3
src/oss/blackapi.json Normal file
View File

@ -0,0 +1,3 @@
[
]

View File

@ -1,9 +1,33 @@
import { PublicShared } from "../../shared/public/public";
export class ActionLog {
static async initDayLog(uid: string) {
G.mongodb.cActionLog('day').updateOne({ uid: uid, type: 'day' }, { $set: { log: {} } }, { upsert: true });
/**
* 0
*/
static async initAllDayLog() {
await G.mongodb.cActionLog('day').updateMany({type: 'day' }, {
$set: {
log: {},
//增加刷新时间
lastTime: PublicShared.getToDayZeroTime(G.time)
}
});
}
/**
*
* @param uid
*/
// static async initDayLog(uid: string) {
// G.mongodb.cActionLog('day').updateOne({ uid: uid, type: 'day' }, {
// $set: {
// log: {},
// //增加刷新时间
// lastTime: PublicShared.getToDayZeroTime(G.time)
// }
// }, { upsert: true });
// }
static async addDayLog(uid: string, ...args: { key: string, val: number; }[]) {
const addObj = G.mongodb.createTreeObj(...args.map(a => { return { key: 'log', k: a.key, val: a.val }; }));
G.mongodb.cActionLog('day').updateOne({ uid: uid, type: 'day' }, { $inc: addObj });

View File

@ -4,11 +4,14 @@ import { Wjjl } from "../../module/collection_wjjl";
import { ZhanLingTasks } from "../zhanling";
import { setGud } from '../gud';
import { EmailFun } from '../email';
import { ActionLog } from '../actionLog/actionLog';
import { clusterFun } from '../../clusterFunction';
import { clusterRunOnce } from '../../clusterUtils';
export class SchedulerNewDayLocalCtor extends Scheduler {
id: schedulerType = 'newDay_local_ctor';
time = 0;
time = 1;
name = '定时推送跨天通知';
type: 'day' | 'week' = 'day';
@ -23,6 +26,41 @@ export class SchedulerNewDayLocalCtor extends Scheduler {
}
async start() {
clusterRunOnce(async ()=>{
//这个定时器会被每个进程都启动这是这部分逻辑应该只执行1次
//重置所有的ActionLog
await ActionLog.initAllDayLog();
// 每周一,发放终身卡
(async () => {
if (PublicShared.getWeek(G.time) == 1) {
let logs = await G.mongodb.collection("payLogNew").find(
{ key: "zhongshenka", del_time: { $exists: false } }, { projection: { _id: 0, } }
).toArray();
if (logs.length == 0) {
console.log("没有终身卡数据,不发放终身卡");
}
let con = G.gc.payEmail.zhongshenka.filter(e => e.day == 7)[0];
for (let i = 0; i < logs.length; i++) {
console.log("发放终身卡", logs[i].uid);
// 发送邮件
EmailFun.addEmail({
uid: logs[i].uid,
type: "system",
title: con.title,
content: con.content,
contentInsertArr: [],
createTime: G.time,
prize:con.prize,
})
}
}
})()
})
let users = Object.values(G.server.uid_connections)
if (users.length) {
for (let item of users) {
@ -56,34 +94,6 @@ export class SchedulerNewDayLocalCtor extends Scheduler {
G.server.broadcastClusterMsg('msg_s2c/NewDay', { time: this.zeroTime });
}
(async () => {
// 每周一,发放终身卡
if (PublicShared.getWeek(G.time) != 1) {
console.log("不是周一,不发放终身卡", PublicShared.getWeek(G.time));
return
};
let logs = await G.mongodb.collection("payLogNew").find(
{ key: "zhongshenka", del_time: { $exists: false } }, { projection: { _id: 0, } }
).toArray();
if (logs.length == 0) {
console.log("没有终身卡数据,不发放终身卡");
}
let con = G.gc.payEmail.zhongshenka.filter(e => e.day == 7)[0];
for (let i = 0; i < logs.length; i++) {
console.log("发放终身卡", logs[i].uid);
// 发送邮件
EmailFun.addEmail({
uid: logs[i].uid,
type: "system",
title: con.title,
content: con.content,
contentInsertArr: [],
createTime: G.time,
prize:con.prize,
})
}
})()
await this.record();
}
}

View File

@ -1,5 +1,5 @@
import {PublicShared} from '../../shared/public/public';
import {Scheduler, schedulerType} from './scheduler';
import { PublicShared } from '../../shared/public/public';
import { Scheduler, schedulerType } from './scheduler';
export class SchedulerZhanLing extends Scheduler {
@ -12,12 +12,12 @@ export class SchedulerZhanLing extends Scheduler {
this.isReady = false;
return
}
let data = await this.db.findOne({type: this.id});
let data = await this.db.findOne({ type: this.id });
if (!data) {
// 开服时间整除战令周期
let round = Math.floor(PublicShared.getOpenServerDay() / G.gc.zhanling.eventOpen.day)
let round = Math.floor((PublicShared.getOpenServerDay() - 1) / G.gc.zhanling.eventOpen.day)
let prev_run_time = PublicShared.getToDayZeroTime(G.openTime) + round * G.gc.zhanling.eventOpen.day * 86400
this.db.updateOne({type: this.id}, {$set: {lastRunTime: prev_run_time, round: round}}, {upsert: true});
this.db.updateOne({ type: this.id }, { $set: { lastRunTime: prev_run_time, round: round } }, { upsert: true });
}
if (!data || G.time > PublicShared.getToDayZeroTime(data.lastRunTime) + 24 * 3600 * G.gc.zhanling.eventOpen.day) {
@ -33,11 +33,11 @@ export class SchedulerZhanLing extends Scheduler {
// 开服时间整除战令周期
let round = Math.floor(PublicShared.getOpenServerDay() / G.gc.zhanling.eventOpen.day)
// lastRunTime仅储存最大值问题记录: 本地多人启动服务时,有调用此定时器的情况下,时间会混乱。
await this.db.updateOne({type: this.id}, {$set: {round: round}, $max: {lastRunTime: G.time}}, {upsert: true});
await this.db.updateOne({ type: this.id }, { $set: { round: round }, $max: { lastRunTime: G.time } }, { upsert: true });
this.startTime = PublicShared.getToDayZeroTime() + 24 * 3600 * G.gc.zhanling.eventOpen.day;
this.isStart = false;
G.mongodb.collection('zhanling').updateMany({type: 'round'}, {$set: {data: {}}});
G.mongodb.collection('zhanling').updateMany({ type: 'round' }, { $set: { data: {} } });
}
}

View File

@ -1,9 +1,10 @@
import {ApiCall, ApiReturn} from "tsrpc";
import {HongDianChange} from "../api_s2c/hongdian/fun";
import {taskType} from "../shared/protocols/task/type";
import {PublicShared} from "../shared/public/public";
import {PeijianFun} from "./peijian";
import {manager} from "./taskclass";
import { ApiCall, ApiReturn } from "tsrpc";
import { HongDianChange } from "../api_s2c/hongdian/fun";
import { taskType } from "../shared/protocols/task/type";
import { PublicShared } from "../shared/public/public";
import { PeijianFun } from "./peijian";
import { manager } from "./taskclass";
import ApiRecTask from "../api_s2c/event/zhanling/ApiRecTask";
let taskDict = {};
const SHUJUKU = "task";
@ -114,7 +115,7 @@ export class TaskFun {
let _taskCon = await this.getTaskConByType(_task["type"], _task["taskid"]);
if (!_taskCon || Object.keys(_taskCon).length == 0) {
// 策划改了任务 找不到 自动删除任务
await G.mongodb.collection(SHUJUKU).deleteMany({uid: call.uid, taskid: _task["taskid"]});
await G.mongodb.collection(SHUJUKU).deleteMany({ uid: call.uid, taskid: _task["taskid"] });
continue
}
@ -142,12 +143,12 @@ export class TaskFun {
// 任务值上限检测
_resVal = _resVal > _pval ? _pval : _resVal;
// 设置任务
let _setData = {nval: _resVal};
let _where = {taskid: _task["taskid"]};
let _setData = { nval: _resVal };
let _where = { taskid: _task["taskid"] };
await this.setTask(uid, _where, _setData);
if (_resVal == _pval) {
G.server.sendMsgByUid(call.uid, 'msg_s2c/TaskChange', {..._task, nval: _resVal})
G.server.sendMsgByUid(call.uid, 'msg_s2c/TaskChange', { ..._task, nval: _resVal })
}
}
}
@ -187,7 +188,7 @@ export class TaskFun {
// 重置每日任务
if (ttype == 1 || ttype == 4) {
let _zero = PublicShared.getToDayZeroTime(G.time);
let _where = {retime: {$gte: _zero, $lte: _zero + 24 * 60 * 60 - 1}, type: ttype};
let _where = { retime: { $gte: _zero, $lte: _zero + 24 * 60 * 60 - 1 }, type: ttype };
let _tmp = await this.getUserTaksList(call.uid, _where);
if (_tmp.length == 0) await this.resetDailyTask(call, ttype);
}
@ -197,7 +198,7 @@ export class TaskFun {
*
*/
static async resetDailyTask(call: ApiCall, type: number = 1) {
await this.delTasks(call.uid, {type: type});
await this.delTasks(call.uid, { type: type });
// 该限制改到红点检测判断,避免此处注释后,红点检测与账号创建初始化任务并发。
// if (PublicShared.chkSameDate(call.conn.gud.cTime, G.time)) return;
let _taskCons = await this.getTaskConsByType(type);
@ -236,7 +237,7 @@ export class TaskFun {
static async getFinishByStype(call: ApiCall, stype: number, where: {}) {
// 任务刷新
await this.refreshTask(call);
Object.assign(where, {stype: stype});
Object.assign(where, { stype: stype });
let _r = await this.getUserTaksList(call.uid, where);
return _r;
}
@ -255,11 +256,33 @@ export class TaskFun {
// Object.assign(where, { type: { $in: ttype } })
for (let index = 0; index < ttype.length; index++) {
const _type = ttype[index];
Object.assign(_w, {type: _type, ...where});
Object.assign(_w, { type: _type, ...where });
if (_finishType.indexOf(_type) != -1) {
delete _w["finish"];
}
let _tmp = await this.getUserTaksList(call.uid, _w);
// 没有未完成任务
// 检测是否有新加任务
if (_tmp.length == 0) {
let rectask = (await G.mongodb.collection('task').find(
{ uid: call.uid, type: _type }, { projection: { taskid: 1, _id: 0 } }
).toArray()).map(e => e.taskid);
for (let taskid of rectask) {
let conf = G.gc.task[_type][taskid];
// 配置不存在
// 没有后续任务
// 后续任务已完成
if (!conf || !conf.followtask || rectask.includes(conf.followtask)) {
continue
}
// 生成后续任务
await this.setTaskInfo(call, conf.followtask, { type: _type });
break;
}
_tmp = await this.getUserTaksList(call.uid, _w);
}
_r[_type] = _tmp;
}
return _r;
@ -313,7 +336,7 @@ export class TaskFun {
* @param call
*/
static async updateMainTask(call: ApiCall) {
let data = await G.mongodb.collection(SHUJUKU).findOne({uid: call.uid, type: 2, finish: 0});
let data = await G.mongodb.collection(SHUJUKU).findOne({ uid: call.uid, type: 2, finish: 0 });
let _ftaskCon = await TaskFun.getTaskConByType(2, data.taskid);
// @ts-ignore
@ -324,14 +347,14 @@ export class TaskFun {
type: 2,
finish: 0,
taskid: data.taskid
}, {$set: {...newTask, nval: data.nval || newTask.nval, retime: data.retime,}}, {upsert: true})
}, { $set: { ...newTask, nval: data.nval || newTask.nval, retime: data.retime, } }, { upsert: true })
}
/**
*
*/
static async generateAllTask(call: ApiCall) {
let _r = await G.mongodb.collection(SHUJUKU).count({uid: call.uid});
let _r = await G.mongodb.collection(SHUJUKU).count({ uid: call.uid });
if (_r > 0) return;
let _taskInfo = [];
let _con = G.gc.task;
@ -352,7 +375,7 @@ export class TaskFun {
/**生成指定类型任务-初始化 */
static async reInitTask(call: ApiCall, type: string) {
// 查询类型任务是否存在
let _r = await G.mongodb.collection(SHUJUKU).count({uid: call.uid, type: ~~type});
let _r = await G.mongodb.collection(SHUJUKU).count({ uid: call.uid, type: ~~type });
let _taskInfo = [];
if (_r == 0) {
let _con = G.gc.task;
@ -374,7 +397,7 @@ export class TaskFun {
*/
static async getUserTaksList(uid: string, where: {}) {
// type : 1 主线 2 成就 3 每日
Object.assign(where, {uid: uid});
Object.assign(where, { uid: uid });
let _taskInfo = await G.mongodb.collection(SHUJUKU).find(where).toArray();
_taskInfo.forEach(e => {
if (e._id) delete e._id;
@ -386,7 +409,7 @@ export class TaskFun {
*
*/
static async delTasks(uid: string, where: { type: number; }) {
Object.assign(where, {uid: uid});
Object.assign(where, { uid: uid });
await G.mongodb.collection(SHUJUKU).deleteMany(where);
}
@ -420,8 +443,8 @@ export class TaskFun {
if (Object.keys(setData).length == 0) {
return;
}
Object.assign(where, {uid});
setData = {$set: setData};
Object.assign(where, { uid });
setData = { $set: setData };
await G.mongodb.collection(SHUJUKU).updateOne(where, setData);
}
@ -445,7 +468,7 @@ export class TaskFun {
if ((element == "1" || element == "3") && call.conn.gud.lv < 7) continue;
let _values: number[] = _ttype[element];
let _where: {} = {
uid: call.uid, type: {$in: _values}, finish: 0, '$expr': {
uid: call.uid, type: { $in: _values }, finish: 0, '$expr': {
$lte: ["$pval", "$nval"]
}
};
@ -534,10 +557,10 @@ export class TaskAllEmitFun {
});
if (_val > (usertasklog?.maxherolv | 0)) {
await G.mongodb.collection('playerInfo', 'usertasklog').updateOne({
uid: node.call.conn.uid,
type: 'usertasklog'
},
{$set: {maxherolv: _val}});
uid: node.call.conn.uid,
type: 'usertasklog'
},
{ $set: { maxherolv: _val } });
}
// 干部等级达到 n 级
G.emit("Class_task_106", 'Class_task_106', node.call, _val, 0);
@ -580,10 +603,10 @@ export class TaskAllEmitFun {
});
if (_val > (usertasklog?.maxequiplv | 0)) {
await G.mongodb.collection('playerInfo', 'usertasklog').updateOne({
uid: node.call.conn.uid,
type: 'usertasklog'
},
{$set: {maxequiplv: _val}});
uid: node.call.conn.uid,
type: 'usertasklog'
},
{ $set: { maxequiplv: _val } });
}
G.emit("Class_task_112", 'Class_task_112', node.call, _val, 0);
// 有 n 件强化 配置 等级装备 后面复写正确值
@ -604,10 +627,10 @@ export class TaskAllEmitFun {
});
if (_val > (usertasklog?.maxequiplv | 0)) {
await G.mongodb.collection('playerInfo', 'usertasklog').updateOne({
uid: node.call.conn.uid,
type: 'usertasklog'
},
{$set: {maxequiplv: _val}});
uid: node.call.conn.uid,
type: 'usertasklog'
},
{ $set: { maxequiplv: _val } });
}
// 有 n 件强化 配置 等级装备 后面复写正确值
G.emit("Class_task_113", 'Class_task_113', node.call, 0, 0);
@ -622,10 +645,10 @@ export class TaskAllEmitFun {
let _color = G.gc.hero[element.heroId].colour;
G.emit("Class_task_114", 'Class_task_114', node.call, 1, _color);
await G.mongodb.collection('playerInfo', 'usertasklog').updateOne({
uid: node.call.conn.uid,
type: 'usertasklog'
},
{$inc: G.mongodb.createTreeObj({key: `herocolor.${_color}`, val: 1})});
uid: node.call.conn.uid,
type: 'usertasklog'
},
{ $inc: G.mongodb.createTreeObj({ key: `herocolor.${_color}`, val: 1 }) });
}
}
}
@ -651,7 +674,7 @@ export class TaskAllEmitFun {
await G.mongodb.collection('playerInfo', 'usertasklog').updateOne({
uid: node.call.uid,
type: 'usertasklog'
}, {$set: {equipcolor: usertasklog.equipcolor}})
}, { $set: { equipcolor: usertasklog.equipcolor } })
}
// if (node.call.service.name == 'chongzhi/Open' && node.return.isSucc) {
// // 累计充值 n 钻石 数量后面复写
@ -690,10 +713,10 @@ export class TaskAllEmitFun {
}
_val = _val + usertasklog.friendAsk + usertasklog.sendGift
await G.mongodb.collection('playerInfo', 'usertasklog').updateOne({
uid: node.call.conn.uid,
type: 'usertasklog'
},
{$set: {friendAsk: _val}});
uid: node.call.conn.uid,
type: 'usertasklog'
},
{ $set: { friendAsk: _val } });
G.emit("Class_task_144", 'Class_task_144', node.call, 1, 0);
}
if (node.call.service.name == 'tanxian/FastGuaJi' && node.return.isSucc) {
@ -852,7 +875,7 @@ export class TaskAllEmitFun {
uid: node.call.conn.uid,
type: 'usertasklog'
});
let _setData = {$set: {}}; // 更新配件记录
let _setData = { $set: {} }; // 更新配件记录
let peijianCon = G.gc.peijian;
let _lv = 0;
@ -881,9 +904,9 @@ export class TaskAllEmitFun {
// 配件升级到 xx 级
if (_setData["$set"]["maxpeijianlv"]) G.emit("Class_task_139", 'Class_task_139', node.call, _lv, 0);
await G.mongodb.collection('playerInfo', 'usertasklog').updateOne({
uid: node.call.conn.uid,
type: 'usertasklog'
},
uid: node.call.conn.uid,
type: 'usertasklog'
},
_setData);
}
}

View File

@ -47,6 +47,12 @@ export async function createWs() {
G.argv.serverType == 'msg' && G.config.corssWsUrl && await createWsClient();
}
/**每分钟刷新一次黑名单API接口 */
setInterval(()=>{
getBlackList();
},60000);
getBlackList();
}
function getWssFile() {
@ -63,6 +69,21 @@ function getWssFile() {
}
const writeList = ['hongdian/Get']
/**当前锁定的API接口 */
let blackApi = [];
async function getBlackList(){
let confFile = resolve(__dirname, 'oss/blackapi.json');
if (existsSync(confFile)) {
try {
blackApi = await JSON.parse(readFileSync(confFile, 'utf-8'));
} catch (e) {
blackApi = [];
}
}else{
blackApi = [];
}
}
function setWs(server: WsServer<ServiceType>) {
@ -101,15 +122,17 @@ function setWs(server: WsServer<ServiceType>) {
//执行 API 接口实现之前
server.flows.preApiCallFlow.push(async call => {
// 临时停服维护方案
// let lng = {
// "zh-TW": "停服維護中,請等待!",
// "ko": "서버 점검 중, 잠시만 기다려 주세요.",
// "ja": "サーバーメンテナンス中、しばらくお待ちください。",
// "en": "Server under maintenance. Please wait.",
// }
// call.error("", {code: -1, message: lng[call.req.lng] || lng["ja"]})
// return null;
//判断是否是被关闭的API
if (blackApi.includes(call.service.name) || blackApi.includes("all")) {
let lng = {
"zh-TW": "維護中,請等待",
"ko": "유지 보수 중, 대기 중",
"ja": "メンテナンス中ですので、お待ちください",
"en": "Maintenance in progress, please wait",
}
call.error("", {code: -1, message: lng[call.req.lng] || lng["ja"]})
return null;
}
//是否短时间内重复请求某个api
// let timeIntervalLimit = call.service.conf?.timeIntervalLimit == undefined ? 500 : call.service.conf?.timeIntervalLimit;