Merge remote-tracking branch 'origin/dev-leijichongzhi' into dev
This commit is contained in:
commit
a0bdc11a05
21
src/api_s2c/event/leichonglibao/ApiOpen.ts
Normal file
21
src/api_s2c/event/leichonglibao/ApiOpen.ts
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
import {ApiCall} from "tsrpc";
|
||||||
|
import {ReqOpen, ResOpen} from "../../../shared/protocols/event/leichonglibao/PtlOpen";
|
||||||
|
|
||||||
|
export default async function (call: ApiCall<ReqOpen, ResOpen>) {
|
||||||
|
let data = await G.mongodb.cEvent(`leichonglibao${call.req.hdid}`).findOne(
|
||||||
|
{type: `leichonglibao${call.req.hdid}`, uid: call.uid}
|
||||||
|
)
|
||||||
|
let change = {opentime: G.time}
|
||||||
|
if (!data) {
|
||||||
|
Object.assign(change, {sc: false, buy: []})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 每天open红点
|
||||||
|
G.mongodb.cEvent(`leichonglibao${call.req.hdid}`).updateOne(
|
||||||
|
{type: `leichonglibao${call.req.hdid}`, uid: call.uid}, {$set: change}
|
||||||
|
)
|
||||||
|
|
||||||
|
let temp = Object.assign((data || {}), change) as ResOpen & { opentime }
|
||||||
|
|
||||||
|
call.succ({sc: temp.sc, buy: temp.buy});
|
||||||
|
}
|
108
src/api_s2c/event/leichonglibao/ApiReceive.ts
Normal file
108
src/api_s2c/event/leichonglibao/ApiReceive.ts
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
import {ApiCall} from "tsrpc";
|
||||||
|
import {HuoDongFun} from "../../../public/huodongfun";
|
||||||
|
import {ReqReceive, ResReceive} from "../../../shared/protocols/event/leichonglibao/PtlReceive";
|
||||||
|
import {PlayerFun} from "../../../public/player";
|
||||||
|
import {PublicShared} from "../../../shared/public/public";
|
||||||
|
|
||||||
|
export type LeiChongLiBaoData = {
|
||||||
|
intr: string
|
||||||
|
intr2: string
|
||||||
|
payRewardNum: number
|
||||||
|
dlz: { [key: string]: atn }[]
|
||||||
|
gift: {
|
||||||
|
id: string, name: string, need: atn[], free: boolean, payId: string, scale: number, buynum: number, prize: atn[]
|
||||||
|
}[]
|
||||||
|
}
|
||||||
|
export default async function (call: ApiCall<ReqReceive, ResReceive>) {
|
||||||
|
let hdinfo = await HuoDongFun.gethdList(call, 12);
|
||||||
|
|
||||||
|
if (hdinfo.length <= 0) {
|
||||||
|
// 无此活动
|
||||||
|
return call.error('', {code: -1, message: globalThis.lng.huodong_open_1})
|
||||||
|
}
|
||||||
|
|
||||||
|
let hddata = hdinfo.filter(i => i.hdid == call.req.hdid)[0].data as LeiChongLiBaoData;
|
||||||
|
|
||||||
|
let data = await G.mongodb.cEvent(`leichonglibao${call.req.hdid}`).findOne(
|
||||||
|
{type: `leichonglibao${call.req.hdid}`, uid: call.uid}
|
||||||
|
)
|
||||||
|
|
||||||
|
if (data.sc) {
|
||||||
|
// 自选奖励已领取
|
||||||
|
return call.error('', {code: -1, message: globalThis.lng.task_finsh_3})
|
||||||
|
}
|
||||||
|
|
||||||
|
if (data.buy.length < hddata.payRewardNum) {
|
||||||
|
// 累计购买礼包次数不足
|
||||||
|
return call.error("", {code: -1, message: globalThis.lng.ljlibaotips_8})
|
||||||
|
}
|
||||||
|
|
||||||
|
let _prize: atn[] = [];
|
||||||
|
for (let i = 0; i < hddata.dlz.length; i++) {
|
||||||
|
_prize.push(hddata.dlz[i][call.req.select[i] || "1"])
|
||||||
|
}
|
||||||
|
|
||||||
|
PlayerFun.sendPrize(call, _prize)
|
||||||
|
call.succ({prize: _prize})
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function LeiChongLiBaoBuyGift(call: ApiCall, payId: string) {
|
||||||
|
let hdinfo = await HuoDongFun.gethdList(call, 12);
|
||||||
|
|
||||||
|
if (hdinfo.length <= 0) {
|
||||||
|
console.log(call.uid, "购买累充礼包 但是活动没有开启", payId);
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
let gift: LeiChongLiBaoData["gift"][0];
|
||||||
|
|
||||||
|
let hdid = hdinfo[0].hdid;
|
||||||
|
let hddata = hdinfo[0].data as LeiChongLiBaoData;
|
||||||
|
for (let g of hddata.gift) {
|
||||||
|
if (g.payId == payId) {
|
||||||
|
gift = g;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!gift) return; // 不是购买累充礼包
|
||||||
|
|
||||||
|
let mydata = await G.mongodb.cEvent(`leichonglibao${hdid}`).findOne(
|
||||||
|
{type: `leichonglibao${hdid}`, uid: call.uid}
|
||||||
|
)
|
||||||
|
|
||||||
|
if (mydata.buy.includes(gift.payId)) {
|
||||||
|
console.log(call.uid, "购买累充礼包 重复购买", payId);
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
PlayerFun.sendPrize(call, gift.prize)
|
||||||
|
G.mongodb.cEvent(`leichonglibao${hdid}`).updateOne(
|
||||||
|
{uid: call.uid, type: `leichonglibao${hdid}`}, {"$push": {buy: payId}}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function LeiChongLiBaoGetHongDian(call: ApiCall) {
|
||||||
|
let hdinfo = await HuoDongFun.gethdList(call, 12);
|
||||||
|
|
||||||
|
if (hdinfo.length <= 0) {
|
||||||
|
return {show: false}
|
||||||
|
}
|
||||||
|
|
||||||
|
let hdid = hdinfo[0].hdid;
|
||||||
|
let hddata = hdinfo[0].data as LeiChongLiBaoData;
|
||||||
|
|
||||||
|
let mydata = await G.mongodb.cEvent(`leichonglibao${hdid}`).findOne(
|
||||||
|
{type: `leichonglibao${hdid}`, uid: call.uid}
|
||||||
|
)
|
||||||
|
|
||||||
|
if (!mydata || mydata.opentime < PublicShared.getToDayZeroTime()) {
|
||||||
|
return {show: true}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!mydata.sc && mydata.buy.length >= hddata.payRewardNum) {
|
||||||
|
return {show: true}
|
||||||
|
}
|
||||||
|
|
||||||
|
return {show: false}
|
||||||
|
}
|
@ -15,11 +15,12 @@ import {md_redPoint} from '../gongyu/mingdao/ApiOpen';
|
|||||||
import {HongDianFun, HuoDongHongDianFun} from "./fun";
|
import {HongDianFun, HuoDongHongDianFun} from "./fun";
|
||||||
import {FunWeiXiuChang} from "../../public/weixiuchang";
|
import {FunWeiXiuChang} from "../../public/weixiuchang";
|
||||||
import {getShouChongRedPoint} from "../event/shouchong/ApiReceive";
|
import {getShouChongRedPoint} from "../event/shouchong/ApiReceive";
|
||||||
|
import {LeiChongLiBaoGetHongDian} from "../event/leichonglibao/ApiReceive";
|
||||||
|
|
||||||
const defaultKeys: hongdianKey[] = ['jiuba', 'jiaotang', 'shouchong', 'clslhd', 'dixiaqianzhuanghd', 'gonghuihd', 'hbzbhd', 'jjchd', 'taskhd',
|
const defaultKeys: hongdianKey[] = ['jiuba', 'jiaotang', 'shouchong', 'clslhd', 'dixiaqianzhuanghd', 'gonghuihd', 'hbzbhd', 'jjchd', 'taskhd',
|
||||||
'xstaskhd', 'lingzhulaixihd', 'dxlthd', 'wzcjhd', 'slzdhd', 'qjzzdhd', 'kuangdonghd', 'qiandaohd', 'kaifukuanghuanhd', 'jijinhd', 'zhuishalinghd',
|
'xstaskhd', 'lingzhulaixihd', 'dxlthd', 'wzcjhd', 'slzdhd', 'qjzzdhd', 'kuangdonghd', 'qiandaohd', 'kaifukuanghuanhd', 'jijinhd', 'zhuishalinghd',
|
||||||
'yibaichouhd', 'huobanzhaomuhd', 'qirileichonghd', 'jierihd', 'kbzzhd', 'wzryhd', 'yuedujijin', 'mingdao', 'patahd',
|
'yibaichouhd', 'huobanzhaomuhd', 'qirileichonghd', 'jierihd', 'kbzzhd', 'wzryhd', 'yuedujijin', 'mingdao', 'patahd',
|
||||||
'heishihd', 'huodonghd', 'renown', 'weixiuchang', 'kaifujingsai', 'zhoumolibao', 'pobinglibao'];
|
'heishihd', 'huodonghd', 'renown', 'weixiuchang', 'kaifujingsai', 'zhoumolibao', 'pobinglibao', 'leichonglibao'];
|
||||||
|
|
||||||
export default async function (call: ApiCall<ReqGet, ResGet>) {
|
export default async function (call: ApiCall<ReqGet, ResGet>) {
|
||||||
|
|
||||||
@ -163,6 +164,9 @@ export default async function (call: ApiCall<ReqGet, ResGet>) {
|
|||||||
case 'zhoumolibao':
|
case 'zhoumolibao':
|
||||||
res[key] = await HongDianFun.zhoumolibao(call);
|
res[key] = await HongDianFun.zhoumolibao(call);
|
||||||
break;
|
break;
|
||||||
|
case "leichonglibao":
|
||||||
|
res[key] = await LeiChongLiBaoGetHongDian(call)
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
98
src/fix_patch/patch_20231222.ts
Normal file
98
src/fix_patch/patch_20231222.ts
Normal file
@ -0,0 +1,98 @@
|
|||||||
|
import {ctor} from "../global";
|
||||||
|
import {_mongodb} from "../setMongodb";
|
||||||
|
import {MongoClient} from "mongodb";
|
||||||
|
|
||||||
|
async function initMongoDB() {
|
||||||
|
console.log('connect mongodb ......');
|
||||||
|
let client = await MongoClient.connect(G.config.mongodbUrl);
|
||||||
|
G.mongodb = new _mongodb(client.db(G.config.dbName || ''));
|
||||||
|
console.log('connect mongodb succ');
|
||||||
|
}
|
||||||
|
|
||||||
|
async function start() {
|
||||||
|
await initMongoDB()
|
||||||
|
|
||||||
|
const task = {
|
||||||
|
'2001': {
|
||||||
|
'prize': [{'a': 'item', 't': '4', 'n': 5}, {'a': 'item', 't': '626', 'n': 10}],
|
||||||
|
'tujing': '',
|
||||||
|
'title': 'intr_yczm_day_des_2',
|
||||||
|
'type': 2,
|
||||||
|
'pval': 50,
|
||||||
|
'cond': [],
|
||||||
|
'stype': 118
|
||||||
|
},
|
||||||
|
'2002': {
|
||||||
|
'prize': [{'a': 'item', 't': '4', 'n': 5}, {'a': 'item', 't': '626', 'n': 10}],
|
||||||
|
'tujing': '',
|
||||||
|
'title': 'intr_yczm_day_des_2',
|
||||||
|
'type': 2,
|
||||||
|
'pval': 100,
|
||||||
|
'cond': [],
|
||||||
|
'stype': 118
|
||||||
|
},
|
||||||
|
'2003': {
|
||||||
|
'prize': [{'a': 'item', 't': '4', 'n': 10}, {'a': 'item', 't': '626', 'n': 20}],
|
||||||
|
'tujing': '',
|
||||||
|
'title': 'intr_yczm_day_des_2',
|
||||||
|
'type': 2,
|
||||||
|
'pval': 200,
|
||||||
|
'cond': [],
|
||||||
|
'stype': 118
|
||||||
|
},
|
||||||
|
'2004': {
|
||||||
|
'prize': [{'a': 'item', 't': '4', 'n': 10}, {'a': 'item', 't': '600', 'n': 20}],
|
||||||
|
'tujing': '',
|
||||||
|
'title': 'intr_yczm_day_des_2',
|
||||||
|
'type': 2,
|
||||||
|
'pval': 250,
|
||||||
|
'cond': [],
|
||||||
|
'stype': 118
|
||||||
|
},
|
||||||
|
'2005': {
|
||||||
|
'prize': [{'a': 'item', 't': '4', 'n': 10}, {'a': 'item', 't': '600', 'n': 20}],
|
||||||
|
'tujing': '',
|
||||||
|
'title': 'intr_yczm_day_des_2',
|
||||||
|
'type': 2,
|
||||||
|
'pval': 300,
|
||||||
|
'cond': [],
|
||||||
|
'stype': 118
|
||||||
|
},
|
||||||
|
'2006': {
|
||||||
|
'prize': [{'a': 'item', 't': '4', 'n': 10}, {'a': 'item', 't': '619', 'n': 1}],
|
||||||
|
'tujing': '',
|
||||||
|
'title': 'intr_yczm_day_des_2',
|
||||||
|
'type': 2,
|
||||||
|
'pval': 400,
|
||||||
|
'cond': [],
|
||||||
|
'stype': 118
|
||||||
|
},
|
||||||
|
'2007': {
|
||||||
|
'prize': [{'a': 'item', 't': '4', 'n': 10}, {'a': 'item', 't': '619', 'n': 1}],
|
||||||
|
'tujing': '',
|
||||||
|
'title': 'intr_yczm_day_des_2',
|
||||||
|
'type': 2,
|
||||||
|
'pval': 500,
|
||||||
|
'cond': [],
|
||||||
|
'stype': 118
|
||||||
|
}
|
||||||
|
};
|
||||||
|
let hdid = [100, 101];
|
||||||
|
await G.mongodb.collection("hdinfo").updateMany(
|
||||||
|
{hdid: {$in: hdid}}, {$set: {"data.tasklist.2": task}}
|
||||||
|
)
|
||||||
|
console.log(`修复区服${G.config.serverId}人才计划活动数据完成...`);
|
||||||
|
}
|
||||||
|
|
||||||
|
ctor();
|
||||||
|
start().then(() => {
|
||||||
|
let s = 0;
|
||||||
|
setInterval(() => {
|
||||||
|
s += 1;
|
||||||
|
console.log(new Date().format("MM-dd hh:mm:ss"));
|
||||||
|
if (s >= 3) process.exit(1);
|
||||||
|
}, 1000)
|
||||||
|
console.log("逻辑执行完成...等待退出!!!");
|
||||||
|
});
|
||||||
|
|
||||||
|
|
@ -351,7 +351,7 @@ class Lng {
|
|||||||
huoqupaihang: "huoqupaihang";
|
huoqupaihang: "huoqupaihang";
|
||||||
wucigonghui: "wucigonghui";
|
wucigonghui: "wucigonghui";
|
||||||
nameyicunzai: "nameyicunzai";
|
nameyicunzai: "nameyicunzai";
|
||||||
|
ljlibaotips_8:"ljlibaotips_8";
|
||||||
|
|
||||||
"11111" = "globalThis.lng.chat_1"
|
"11111" = "globalThis.lng.chat_1"
|
||||||
// return call.error('', { code: -3, message: globalThis.lng.chat_2 });
|
// return call.error('', { code: -3, message: globalThis.lng.chat_2 });
|
||||||
|
@ -22,6 +22,7 @@ import {ResOpen as ResOpenZixuanlibao} from '../shared/protocols/event/zixuanlib
|
|||||||
import {ResOpen as ResOpenKaifujingsai} from '../shared/protocols/kaifujingsai/PtlOpen';
|
import {ResOpen as ResOpenKaifujingsai} from '../shared/protocols/kaifujingsai/PtlOpen';
|
||||||
import {ResOpen as ResOpenZhoumolibao} from '../shared/protocols/event/zhoumolibao/PtlOpen';
|
import {ResOpen as ResOpenZhoumolibao} from '../shared/protocols/event/zhoumolibao/PtlOpen';
|
||||||
import {ResOpen as ResOpenPobinglibao} from '../shared/protocols/event/pobinglibao/PtlOpen';
|
import {ResOpen as ResOpenPobinglibao} from '../shared/protocols/event/pobinglibao/PtlOpen';
|
||||||
|
import {ResOpen as ResOpenLeiChongLiBao} from '../shared/protocols/event/leichonglibao/PtlOpen';
|
||||||
|
|
||||||
export type eventType = {
|
export type eventType = {
|
||||||
shouchong: {
|
shouchong: {
|
||||||
@ -65,6 +66,7 @@ export type eventType = {
|
|||||||
[k: `zixuanlibao${number}`]: ResOpenZixuanlibao;
|
[k: `zixuanlibao${number}`]: ResOpenZixuanlibao;
|
||||||
[k: `leijichongzhi${number}`]: Omit<ResOpenLeijichongzhi, 'payNum'>;
|
[k: `leijichongzhi${number}`]: Omit<ResOpenLeijichongzhi, 'payNum'>;
|
||||||
[k: `qiridenglu${number}`]: Pick<ResOpenQiridenglu, 'recPrize'>;
|
[k: `qiridenglu${number}`]: Pick<ResOpenQiridenglu, 'recPrize'>;
|
||||||
|
[k: `leichonglibao${number}`]: ResOpenLeiChongLiBao & { opentime: number };
|
||||||
};
|
};
|
||||||
|
|
||||||
export type CollectionEvent<T extends keyof eventType> = {
|
export type CollectionEvent<T extends keyof eventType> = {
|
||||||
|
8
src/shared/protocols/event/leichonglibao/PtlOpen.ts
Normal file
8
src/shared/protocols/event/leichonglibao/PtlOpen.ts
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
export type ReqOpen = {
|
||||||
|
hdid: number
|
||||||
|
}
|
||||||
|
|
||||||
|
export type ResOpen = {
|
||||||
|
sc: boolean // 自选奖励领取标识
|
||||||
|
buy: string[] // 特价礼包购买记录
|
||||||
|
}
|
10
src/shared/protocols/event/leichonglibao/PtlReceive.ts
Normal file
10
src/shared/protocols/event/leichonglibao/PtlReceive.ts
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
import {prizeType} from "../../type";
|
||||||
|
|
||||||
|
export interface ReqReceive {
|
||||||
|
hdid: number
|
||||||
|
select: string[]
|
||||||
|
}
|
||||||
|
|
||||||
|
export interface ResReceive {
|
||||||
|
prize: prizeType[]
|
||||||
|
}
|
@ -52,7 +52,8 @@ export type hongdianKey =
|
|||||||
| 'weixiuchang'
|
| 'weixiuchang'
|
||||||
| 'kaifujingsai'
|
| 'kaifujingsai'
|
||||||
| 'zhoumolibao'
|
| 'zhoumolibao'
|
||||||
| 'pobinglibao';
|
| 'pobinglibao'
|
||||||
|
| 'leichonglibao';
|
||||||
|
|
||||||
|
|
||||||
export type hongdianVal = {
|
export type hongdianVal = {
|
||||||
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user