fix:
积天好礼bug
This commit is contained in:
parent
4737f94fcd
commit
6809bdc2b3
649
src/path_20231215.ts
Normal file
649
src/path_20231215.ts
Normal file
@ -0,0 +1,649 @@
|
|||||||
|
import {ctor} from '../../../heijiao/server/src/global';
|
||||||
|
import {initMongoDB} from '../../../heijiao/server/src/setMongodb';
|
||||||
|
import {EmailFun} from "../../../heijiao/server/src/public/email";
|
||||||
|
|
||||||
|
|
||||||
|
// 首冲
|
||||||
|
async function shouChongReSet() {
|
||||||
|
let shouchong = {
|
||||||
|
"shouchong1": {
|
||||||
|
"paynum": 6,
|
||||||
|
"cartoon": {
|
||||||
|
"hero": 5001
|
||||||
|
},
|
||||||
|
"prize": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"a": "hero",
|
||||||
|
"t": "5001",
|
||||||
|
"n": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"a": "attr",
|
||||||
|
"t": "jinbi",
|
||||||
|
"n": 100000
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"a": "item",
|
||||||
|
"t": "12",
|
||||||
|
"n": 200
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"a": "attr",
|
||||||
|
"t": "jinbi",
|
||||||
|
"n": 200000
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"a": "item",
|
||||||
|
"t": "12",
|
||||||
|
"n": 200
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"a": "attr",
|
||||||
|
"t": "jinbi",
|
||||||
|
"n": 300000
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"shouchong2": {
|
||||||
|
"paynum": 30,
|
||||||
|
"cartoon": {
|
||||||
|
"img": 5001
|
||||||
|
},
|
||||||
|
"prize": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"a": "equip",
|
||||||
|
"t": "1009",
|
||||||
|
"n": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"a": "equip",
|
||||||
|
"t": "2009",
|
||||||
|
"n": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"a": "equip",
|
||||||
|
"t": "3009",
|
||||||
|
"n": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"a": "item",
|
||||||
|
"t": "2",
|
||||||
|
"n": 1000
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"a": "equip",
|
||||||
|
"t": "4009",
|
||||||
|
"n": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"a": "item",
|
||||||
|
"t": "2",
|
||||||
|
"n": 1000
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"shouchong3": {
|
||||||
|
"paynum": 98,
|
||||||
|
"cartoon": {
|
||||||
|
"hero": 5002
|
||||||
|
},
|
||||||
|
"prize": [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"a": "hero",
|
||||||
|
"t": "5002",
|
||||||
|
"n": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"a": "item",
|
||||||
|
"t": "4",
|
||||||
|
"n": 10
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"a": "equip",
|
||||||
|
"t": "1010",
|
||||||
|
"n": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"a": "item",
|
||||||
|
"t": "2",
|
||||||
|
"n": 2000
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"a": "equip",
|
||||||
|
"t": "3010",
|
||||||
|
"n": 1
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"a": "item",
|
||||||
|
"t": "2",
|
||||||
|
"n": 2000
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
};
|
||||||
|
let users = await G.mongodb.collection("user").find({}, {
|
||||||
|
projection: {uid: 1, payExp: 1}
|
||||||
|
}).toArray();
|
||||||
|
|
||||||
|
for (let i = 0; i < users.length; i++) {
|
||||||
|
let user = users[i];
|
||||||
|
let data = await G.mongodb.cEvent("shouchong").findOne({uid: user.uid});
|
||||||
|
|
||||||
|
let send_prize = [];
|
||||||
|
for (let key in shouchong) {
|
||||||
|
// 充值不足
|
||||||
|
if (user.payExp < shouchong[key]["paynum"] * 10) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// 奖励已经领取完毕
|
||||||
|
if (data && data.receive[key] && data.receive[key].length >= shouchong[key]["prize"].length) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// 补发未领取奖励
|
||||||
|
for (let i = 0; i < shouchong[key]["prize"].length; i++) {
|
||||||
|
if (data.receive[key][i]) {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
data.receive[key][i] = G.time;
|
||||||
|
send_prize.concat(shouchong[key]["prize"][i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (send_prize.length <= 0) continue;
|
||||||
|
|
||||||
|
let title = "首充未领取奖励补发";
|
||||||
|
let content = "首充未领取奖励补发";
|
||||||
|
|
||||||
|
// 发放邮件
|
||||||
|
await EmailFun.addEmail({
|
||||||
|
uid: user.uid,
|
||||||
|
type: "system",
|
||||||
|
title: title,
|
||||||
|
content: content,
|
||||||
|
prize: send_prize,
|
||||||
|
});
|
||||||
|
// 设置奖励发放记录
|
||||||
|
await G.mongodb.cEvent("shouchong").updateOne({
|
||||||
|
uid: user.uid
|
||||||
|
}, {"$set": {receive: data.receive, patch: 1}});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*超值月卡、至尊月卡、永久卡的线上玩家脚本
|
||||||
|
线上已购买超值月卡的玩家,脚本补发:招募卡*30
|
||||||
|
线上已购买至尊月卡的玩家,脚本补发:钻石*10000
|
||||||
|
线上已购买永久卡的玩家,脚本补发:汉塞尔*1,能量饮料*500w
|
||||||
|
* */
|
||||||
|
async function yuekaSendPrize() {
|
||||||
|
let w = {
|
||||||
|
key: {$in: ["chaozhiyueka", "zhizunyueka", "zhongshenka"]},
|
||||||
|
del_time: {$exists: false}
|
||||||
|
};
|
||||||
|
let users = (await G.mongodb.collection("payLogNew").find(w).toArray()).filter(
|
||||||
|
// 过滤没有结束时间 或者 有结束时间 但是没有过期的
|
||||||
|
(pay) => pay.values?.length > 0 && (!pay.values.slice(-1)[0].eTime || pay.values.slice(-1)[0].eTime > G.time)
|
||||||
|
);
|
||||||
|
|
||||||
|
let uid2Prize: { [uid: string]: { a: string, t: string, n: number }[] } = {};
|
||||||
|
users.forEach(user => {
|
||||||
|
let uid = user.uid;
|
||||||
|
let proId = user.key;
|
||||||
|
if (!uid2Prize[uid]) uid2Prize[uid] = [];
|
||||||
|
|
||||||
|
switch (proId) {
|
||||||
|
case "chaozhiyueka":
|
||||||
|
uid2Prize[uid].push({a: "item", t: "4", n: 30});
|
||||||
|
break;
|
||||||
|
case "zhizunyueka":
|
||||||
|
uid2Prize[uid].push({a: "attr", t: "rmbmoney", n: 10000})
|
||||||
|
break;
|
||||||
|
case "zhongshenka":
|
||||||
|
uid2Prize[uid].push({a: "item", t: "1", n: 5000000})
|
||||||
|
uid2Prize[uid].push({a: "hero", t: "4012", n: 1})
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
let title = "月卡奖励发放";
|
||||||
|
let content = "月卡奖励发放";
|
||||||
|
for (const [uid, sendPrize] of Object.entries(uid2Prize)) {
|
||||||
|
// 发放邮件
|
||||||
|
await EmailFun.addEmail({
|
||||||
|
uid: uid,
|
||||||
|
type: "system",
|
||||||
|
title: title,
|
||||||
|
content: content,
|
||||||
|
prize: sendPrize,
|
||||||
|
});
|
||||||
|
|
||||||
|
// 处理重复执行
|
||||||
|
await G.mongodb.collection("payLogNew").updateMany(
|
||||||
|
Object.assign({uid: uid}, w), {$set: {patch: 1, del_time: G.time}}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*特权礼包脚本需求
|
||||||
|
1、特权内容:已购买特权的玩家,特权效果更新
|
||||||
|
2、已购买情报特权的玩家,脚本补发:钻石*680,顶级紫色套装*1
|
||||||
|
3、已购买快速特权的玩家,脚本补发:钻石*300,快速探险券*30
|
||||||
|
4、已购买财富特权的玩家,脚本补发:钻石*300,美金*1000万
|
||||||
|
5、已购买酒馆特权的玩家,脚本补发:钻石*680,招募卡*10
|
||||||
|
* */
|
||||||
|
async function tequanLiBaoSendPrize() {
|
||||||
|
let w = {
|
||||||
|
key: {$in: ["qingbaotequan", "zuozhantequan", "caifutequan", "jiubatequan"]},
|
||||||
|
del_time: {$exists: false}
|
||||||
|
};
|
||||||
|
let users = (await G.mongodb.collection("payLogNew").find(w).toArray()).filter(
|
||||||
|
// 过滤没有结束时间 或者 有结束时间 但是没有过期的
|
||||||
|
(pay) => pay.values?.length > 0 && (!pay.values.slice(-1)[0].eTime || pay.values.slice(-1)[0].eTime > G.time)
|
||||||
|
);
|
||||||
|
|
||||||
|
let uid2Prize: { [uid: string]: { a: string, t: string, n: number }[] } = {};
|
||||||
|
users.forEach(user => {
|
||||||
|
let uid = user.uid;
|
||||||
|
let proId = user.key;
|
||||||
|
|
||||||
|
if (!uid2Prize[uid]) uid2Prize[uid] = [];
|
||||||
|
switch (proId) {
|
||||||
|
case "qingbaotequan":
|
||||||
|
uid2Prize[uid].push({"a": "attr", "t": "rmbmoney", "n": 680});
|
||||||
|
uid2Prize[uid].push({"a": "item", "t": "609", "n": 1});
|
||||||
|
break;
|
||||||
|
case "zuozhantequan":
|
||||||
|
uid2Prize[uid].push({"a": "attr", "t": "rmbmoney", "n": 300});
|
||||||
|
uid2Prize[uid].push({"a": "item", "t": "24", "n": 30});
|
||||||
|
break;
|
||||||
|
case "caifutequan":
|
||||||
|
uid2Prize[uid].push({"a": "attr", "t": "rmbmoney", "n": 300})
|
||||||
|
uid2Prize[uid].push({"a": "attr", "t": "jinbi", "n": 10000000})
|
||||||
|
break;
|
||||||
|
case "jiubatequan":
|
||||||
|
uid2Prize[uid].push({"a": "attr", "t": "rmbmoney", "n": 680});
|
||||||
|
uid2Prize[uid].push({"a": "item", "t": "4", "n": 10});
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
let title = "特权奖励发放";
|
||||||
|
let content = "特权奖励发放";
|
||||||
|
for (const [uid, sendPrize] of Object.entries(uid2Prize)) {
|
||||||
|
// 发放邮件
|
||||||
|
await EmailFun.addEmail({
|
||||||
|
uid: uid,
|
||||||
|
type: "system",
|
||||||
|
title: title,
|
||||||
|
content: content,
|
||||||
|
prize: sendPrize,
|
||||||
|
});
|
||||||
|
await G.mongodb.collection("payLogNew").updateMany(
|
||||||
|
Object.assign({uid: uid}, w), {$set: {patch: 1, del_time: G.time}}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
刷新所有玩家各档位VIP礼包到未购买状态
|
||||||
|
* */
|
||||||
|
async function resetVipLiBao() {
|
||||||
|
let w = {"type": "chongzhi"};
|
||||||
|
await G.mongodb.collection("playerInfo").updateMany(w, {"giftBy": {}});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
人才计划调整
|
||||||
|
1、线上已有该活动的玩家,保留次数进度;达到新加档位可领取的奖励则直接领取
|
||||||
|
2、线上已购买该活动328计费点的玩家,每次购买记录补发招募卡*20,;
|
||||||
|
3、线上已购买该活动648计费点的玩家,每次购买记录补发招募卡*40,;
|
||||||
|
* */
|
||||||
|
async function rcjhReSet() {
|
||||||
|
let proId328 = ["ycmb_1_5", "ycmb_2_4", "ycmb_3_5", "ycmb_4_5", "ycmb_5_5"];
|
||||||
|
let proId648 = ["ycmb_1_6", "ycmb_2_5", "ycmb_3_6", "ycmb_4_6", "ycmb_5_6"];
|
||||||
|
let w = {
|
||||||
|
key: {$in: [].concat(proId328, proId648)},
|
||||||
|
del_time: {$exists: false}
|
||||||
|
};
|
||||||
|
let users = (await G.mongodb.collection("payLogNew").find(w).toArray()).filter(
|
||||||
|
// 过滤没有结束时间 或者 有结束时间 但是没有过期的
|
||||||
|
(pay) => pay.values?.length > 0 && (!pay.values.slice(-1)[0].eTime || pay.values.slice(-1)[0].eTime > G.time)
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
let uid2Prize: { [uid: string]: { a: string, t: string, n: number }[] } = {};
|
||||||
|
users.forEach(user => {
|
||||||
|
let uid = user.uid;
|
||||||
|
let proId = user.key;
|
||||||
|
|
||||||
|
if (!uid2Prize[uid]) {
|
||||||
|
uid2Prize[uid] = []
|
||||||
|
}
|
||||||
|
if (proId328.includes(proId)) {
|
||||||
|
uid2Prize[uid].push({"a": "item", "t": "4", "n": 20})
|
||||||
|
} else if (proId648.includes(proId)) {
|
||||||
|
uid2Prize[uid].push({"a": "item", "t": "4", "n": 40})
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
let title = "人才计划奖励发放";
|
||||||
|
let content = "人才计划奖励发放";
|
||||||
|
for (const [uid, sendPrize] of Object.entries(uid2Prize)) {
|
||||||
|
// 发放邮件
|
||||||
|
await EmailFun.addEmail({
|
||||||
|
uid: uid,
|
||||||
|
type: "system",
|
||||||
|
title: title,
|
||||||
|
content: content,
|
||||||
|
prize: sendPrize,
|
||||||
|
});
|
||||||
|
await G.mongodb.collection("payLogNew").updateMany(
|
||||||
|
Object.assign({uid: uid}, w), {$set: {patch: 1, del_time: G.time}}
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*等级基金调整
|
||||||
|
1、已购买等级基金的玩家且未领取完成的玩家,剩余奖励邮件一次性补发;
|
||||||
|
2、未购买的玩家活动刷新到新版本;
|
||||||
|
3、刷新等级基金到未购买状态;
|
||||||
|
* */
|
||||||
|
async function dengjiJiJinReSet() {
|
||||||
|
let w = {key: "dengjijijin", del_time: {$exists: false}}
|
||||||
|
// 激活了的玩家
|
||||||
|
let _payList = (await G.mongodb.collection("payLogNew").find(w).toArray()).filter(
|
||||||
|
// 过滤没有结束时间 或者 有结束时间 但是没有过期的
|
||||||
|
(pay) => pay.values?.length > 0 && (!pay.values.slice(-1)[0].eTime || pay.values.slice(-1)[0].eTime > G.time)
|
||||||
|
);
|
||||||
|
|
||||||
|
let title = "等级基金未领取奖励发放";
|
||||||
|
let content = "等级基金未领取奖励发放";
|
||||||
|
let prizeList = G.gc.jijin["dengjijijin"];
|
||||||
|
let _users = await G.mongodb.cEvent("dengjijijin").find(
|
||||||
|
{"uid": {"$in": _payList.map(pay => pay.uid)}}
|
||||||
|
).toArray()
|
||||||
|
|
||||||
|
let uid2Prize: { [uid: string]: { a: string, t: string, n: number }[] } = {};
|
||||||
|
_users.forEach((user) => {
|
||||||
|
let uid = user.uid;
|
||||||
|
let idx2Type2Bool = user.rec;
|
||||||
|
if (!uid2Prize[uid]) uid2Prize[uid] = [];
|
||||||
|
|
||||||
|
// 没领的全发
|
||||||
|
prizeList.forEach((con, idx) => {
|
||||||
|
// 普通奖励没领
|
||||||
|
if (!idx2Type2Bool[idx]?.pt) {
|
||||||
|
uid2Prize[uid].push(...con.pt)
|
||||||
|
}
|
||||||
|
// 高级奖励没领
|
||||||
|
if (!idx2Type2Bool[idx]?.tq) {
|
||||||
|
uid2Prize[uid].push(...con.pt)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
for (const [uid, sendPrize] of Object.entries(uid2Prize)) {
|
||||||
|
// 发放邮件
|
||||||
|
await EmailFun.addEmail({
|
||||||
|
uid: uid,
|
||||||
|
type: "system",
|
||||||
|
title: title,
|
||||||
|
content: content,
|
||||||
|
prize: sendPrize,
|
||||||
|
});
|
||||||
|
await G.mongodb.collection("payLogNew").updateMany(
|
||||||
|
Object.assign({uid: uid}, w), {$set: {patch: 1, del_time: G.time}}
|
||||||
|
)
|
||||||
|
// 基金数据清除
|
||||||
|
await G.mongodb.collection("event").updateMany(
|
||||||
|
{type: "dengjijijin", uid: uid}, {"$set": {uid: `${uid}_patch_del`}}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*关卡基金调整
|
||||||
|
1、已购买关卡基金的玩家且未领取完成的玩家,剩余奖励邮件一次性补发;
|
||||||
|
2、未购买的玩家活动刷新到新版本;
|
||||||
|
3、刷新关卡基金到未购买状态;
|
||||||
|
* */
|
||||||
|
async function guanqiaJiJinReSet() {
|
||||||
|
let w = {key: "guanqiajijin"};
|
||||||
|
// 激活了的玩家
|
||||||
|
let _payList = (await G.mongodb.collection("payLogNew").find(w).toArray()).filter(
|
||||||
|
// 过滤没有结束时间 或者 有结束时间 但是没有过期的
|
||||||
|
(pay) => pay.values?.length > 0 && (!pay.values.slice(-1)[0].eTime || pay.values.slice(-1)[0].eTime > G.time)
|
||||||
|
);
|
||||||
|
|
||||||
|
let title = "关卡基金未领取奖励发放";
|
||||||
|
let content = "关卡基金未领取奖励发放";
|
||||||
|
let prizeList = G.gc.jijin["guanqiajijin"];
|
||||||
|
|
||||||
|
// 没激活不处理
|
||||||
|
let _users = await G.mongodb.cEvent("guanqiajijin").find(
|
||||||
|
{
|
||||||
|
"uid": {"$in": _payList.map(pay => pay.uid)}
|
||||||
|
},
|
||||||
|
{projection: {_id: 0}}
|
||||||
|
).toArray();
|
||||||
|
|
||||||
|
let uid2Prize: { [uid: string]: { a: string, t: string, n: number }[] } = {};
|
||||||
|
_users.forEach(user => {
|
||||||
|
let uid = user.uid;
|
||||||
|
let idx2Type2Bool = user.rec;
|
||||||
|
if (!uid2Prize[uid]) uid2Prize[uid] = [];
|
||||||
|
|
||||||
|
// 没领的全发
|
||||||
|
prizeList.forEach((con, idx) => {
|
||||||
|
// 普通奖励没领
|
||||||
|
if (!idx2Type2Bool[idx]?.pt) {
|
||||||
|
uid2Prize[uid].push(...con.pt)
|
||||||
|
}
|
||||||
|
// 高级奖励没领
|
||||||
|
if (!idx2Type2Bool[idx]?.tq) {
|
||||||
|
uid2Prize[uid].push(...con.tq)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
for (const [uid, sendPrize] of Object.entries(uid2Prize)) {
|
||||||
|
// 发放邮件
|
||||||
|
await EmailFun.addEmail({
|
||||||
|
uid: uid,
|
||||||
|
type: "system",
|
||||||
|
title: title,
|
||||||
|
content: content,
|
||||||
|
prize: sendPrize,
|
||||||
|
});
|
||||||
|
await G.mongodb.collection("payLogNew").updateMany(
|
||||||
|
Object.assign({uid: uid}, w), {$set: {patch: 1, del_time: G.time}}
|
||||||
|
)
|
||||||
|
// 基金数据清除
|
||||||
|
await G.mongodb.collection("event").updateMany(
|
||||||
|
{type: "guanqiajijin", uid: uid}, {"$set": {uid: `${uid}_patch_del`}}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*通行证基金调整
|
||||||
|
1、已购买通行证基金的玩家且未领取完成的玩家,剩余奖励邮件一次性补发;
|
||||||
|
2、未购买的玩家活动刷新到新版本;
|
||||||
|
3、刷新通行证基金到未购买状态;
|
||||||
|
* */
|
||||||
|
async function dayjiJiJinReSet() {
|
||||||
|
let w = {key: "dayjijin"};
|
||||||
|
|
||||||
|
// 激活了的玩家
|
||||||
|
let _payList = (await G.mongodb.collection("payLogNew").find(w).toArray()).filter(
|
||||||
|
// 过滤没有结束时间 或者 有结束时间 但是没有过期的
|
||||||
|
(pay) => pay.values?.length > 0 && (!pay.values.slice(-1)[0].eTime || pay.values.slice(-1)[0].eTime > G.time)
|
||||||
|
);
|
||||||
|
|
||||||
|
let title = "通行证基金未领取奖励发放";
|
||||||
|
let content = "通行证基金未领取奖励发放";
|
||||||
|
let prizeList = G.gc.jijin["dayjijin"];
|
||||||
|
// 没激活不处理
|
||||||
|
let _users = await G.mongodb.cEvent("dayjijin").find(
|
||||||
|
{uid: {$in: _payList.map(pay => pay.uid)}}
|
||||||
|
).toArray();
|
||||||
|
|
||||||
|
let uid2Prize: { [uid: string]: { a: string, t: string, n: number }[] } = {};
|
||||||
|
_users.forEach(user => {
|
||||||
|
let uid = user.uid;
|
||||||
|
let idx2Type2Bool = user.rec;
|
||||||
|
if (!uid2Prize[uid]) uid2Prize[uid] = [];
|
||||||
|
|
||||||
|
// 没领的全发
|
||||||
|
prizeList.forEach((con, idx) => {
|
||||||
|
// 普通奖励没领
|
||||||
|
if (!idx2Type2Bool[idx]?.pt) {
|
||||||
|
uid2Prize[uid].push(...con.pt)
|
||||||
|
}
|
||||||
|
// 高级奖励没领
|
||||||
|
if (!idx2Type2Bool[idx]?.tq) {
|
||||||
|
uid2Prize[uid].push(...con.tq)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
for (const [uid, sendPrize] of Object.entries(uid2Prize)) {
|
||||||
|
// 发放邮件
|
||||||
|
await EmailFun.addEmail({
|
||||||
|
uid: uid,
|
||||||
|
type: "system",
|
||||||
|
title: title,
|
||||||
|
content: content,
|
||||||
|
prize: sendPrize,
|
||||||
|
});
|
||||||
|
await G.mongodb.collection("payLogNew").updateMany(
|
||||||
|
Object.assign({uid: uid}, w), {$set: {patch: 1, del_time: G.time}}
|
||||||
|
)
|
||||||
|
// 基金数据清除
|
||||||
|
await G.mongodb.collection("event").updateMany(
|
||||||
|
{type: "dayjijin", uid: uid}, {"$set": {uid: `${uid}_patch_del`}}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/*月基金调整
|
||||||
|
1、已购买128、328月基金的玩家且未领取完成的玩家,剩余奖励邮件一次性补发;
|
||||||
|
2、未购买的玩家活动刷新到新版本;
|
||||||
|
3、刷新月基金到未购买状态;
|
||||||
|
* */
|
||||||
|
async function yueJiJinReSet() {
|
||||||
|
let proIdList = [
|
||||||
|
"128jijin",
|
||||||
|
"328jijin",
|
||||||
|
];
|
||||||
|
let w = {key: {$in: proIdList}};
|
||||||
|
// 激活了的玩家
|
||||||
|
let _payList = (await G.mongodb.collection("payLogNew").find(w).toArray()).filter(
|
||||||
|
// 过滤没有结束时间 或者 有结束时间 但是没有过期的
|
||||||
|
(pay) => pay.values?.length > 0 && (!pay.values.slice(-1)[0].eTime || pay.values.slice(-1)[0].eTime > G.time)
|
||||||
|
);
|
||||||
|
|
||||||
|
// 没激活不处理
|
||||||
|
let _users = await G.mongodb.collection("event").find(
|
||||||
|
{
|
||||||
|
"type": {"$in": proIdList},
|
||||||
|
"uid": {"$in": _payList.map(pay => pay.uid)}
|
||||||
|
}
|
||||||
|
).toArray();
|
||||||
|
|
||||||
|
let uid2Prize: { [uid: string]: { a: string, t: string, n: number }[] } = {};
|
||||||
|
let prizeList128 = G.gc.yuedujijin.find(v => v.payId == "128jijin");
|
||||||
|
let prizeList328 = G.gc.yuedujijin.find(v => v.payId == "328jijin");
|
||||||
|
_users.forEach(user => {
|
||||||
|
let uid = user.uid;
|
||||||
|
let gotarr = user.rec;
|
||||||
|
if (!uid2Prize[uid]) uid2Prize[uid] = [];
|
||||||
|
|
||||||
|
let prizeList = user.type == "128jijin" ? prizeList128.prize : prizeList328.prize;
|
||||||
|
// 没领的全发
|
||||||
|
prizeList.forEach((onePrize, idx) => {
|
||||||
|
// 领过了
|
||||||
|
if (gotarr.includes(idx)) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
uid2Prize[uid].push(onePrize)
|
||||||
|
});
|
||||||
|
})
|
||||||
|
|
||||||
|
let title = "月度基金未领取奖励发放";
|
||||||
|
let content = "月度基金未领取奖励发放";
|
||||||
|
for (const [uid, sendPrize] of Object.entries(uid2Prize)) {
|
||||||
|
// 发放邮件
|
||||||
|
await EmailFun.addEmail({
|
||||||
|
uid: uid,
|
||||||
|
type: "system",
|
||||||
|
title: title,
|
||||||
|
content: content,
|
||||||
|
prize: sendPrize,
|
||||||
|
});
|
||||||
|
|
||||||
|
await G.mongodb.collection("payLogNew").updateMany(
|
||||||
|
Object.assign({uid: uid}, w), {$set: {patch: 1, del_time: G.time}}
|
||||||
|
)
|
||||||
|
// 基金数据清除
|
||||||
|
await G.mongodb.collection("event").updateMany(
|
||||||
|
{type: {$in: proIdList}, uid: uid}, {"$set": {uid: `${uid}_patch_del`}}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
async function start() {
|
||||||
|
//连接mongodb
|
||||||
|
await initMongoDB();
|
||||||
|
|
||||||
|
// 首冲调整
|
||||||
|
await shouChongReSet();
|
||||||
|
// 超值月卡、至尊月卡、永久卡的线上玩家脚本
|
||||||
|
await yuekaSendPrize();
|
||||||
|
// 特权礼包脚本需求
|
||||||
|
await tequanLiBaoSendPrize();
|
||||||
|
// 刷新所有玩家各档位VIP礼包到未购买状态
|
||||||
|
await resetVipLiBao();
|
||||||
|
// 人才计划调整
|
||||||
|
await rcjhReSet();
|
||||||
|
// 等级基金调整
|
||||||
|
await dengjiJiJinReSet();
|
||||||
|
// 关卡基金调整
|
||||||
|
await guanqiaJiJinReSet();
|
||||||
|
// 通行证基金调整
|
||||||
|
await dayjiJiJinReSet();
|
||||||
|
// 月基金调整
|
||||||
|
await yueJiJinReSet();
|
||||||
|
}
|
||||||
|
|
||||||
|
//定义全局变量
|
||||||
|
ctor();
|
||||||
|
//启动服务
|
||||||
|
start().then(() => {
|
||||||
|
process.exit()
|
||||||
|
});
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user