fix:脚本

This commit is contained in:
xcy 2023-12-18 20:30:22 +08:00
parent 79fcc6ec85
commit 3b49056a60

View File

@ -1,649 +0,0 @@
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`}}
);
}
}
/*
1128328
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()
});