1933 lines
61 KiB
TypeScript
1933 lines
61 KiB
TypeScript
import {ctor} from "../global";
|
||
import {initMongoDB} from "../setMongodb";
|
||
import {ReqEmail} from "../monopoly/protocols/PtlEmail";
|
||
import {MsgEmail} from "../shared/protocols/msg_s2c/MsgEmail";
|
||
import {yangchengmubiao} from "../shared/protocols/event/yangchengmubiao/PtlOpen";
|
||
|
||
|
||
/**
|
||
* 标题:首充优化
|
||
* 日語:初回チャージ仕様改善
|
||
* 繁體:首儲機制改善
|
||
* 韓国語: 초회 충전 시스템 개선
|
||
* 英語: First Top-Up optimization
|
||
*
|
||
* 內文:这是您的补偿,请查收!
|
||
* 日語:仕様改善に伴う補填を発送させていただきました。ご確認ください。
|
||
* 繁體中文:這是您的補償內容,煩請查收!
|
||
* 韓国語:투자 시스템 개선으로 인한 보상을 보내드립니다.
|
||
* 英語: Please find attached a few items as a compensation for the wait during our adjustments.
|
||
*
|
||
* 线上玩家脚本
|
||
* 1、已激活首充档位且没领完3天奖励的玩家,邮件补发剩下的奖励
|
||
* 2、重置所有玩家首充活动到新版本状态*/
|
||
|
||
async function addEmail(email: ReqEmail) {
|
||
let {prize, uid, ...e} = email;
|
||
let sendEmail: MsgEmail = {
|
||
_id: null,
|
||
uid: uid,
|
||
type: e.type,
|
||
title: e.title,
|
||
content: e.content,
|
||
createTime: G.time,
|
||
contentInsertArr: e.contentInsertArr || []
|
||
};
|
||
|
||
if (email.lngTitle) {
|
||
sendEmail.lngTitle = email.lngTitle;
|
||
sendEmail.lngContent = email.lngContent;
|
||
}
|
||
|
||
if ((prize === null || prize === void 0 ? void 0 : prize.length) > 0) {
|
||
sendEmail.prizeData = {
|
||
prize: email.prize,
|
||
isGet: false
|
||
};
|
||
}
|
||
|
||
if (email.g123log && Object.keys(email.g123log).length > 0) {
|
||
sendEmail.g123log = email.g123log;
|
||
}
|
||
await G.mongodb.collection('email').insertOne({
|
||
ttl: new Date(), ...G.mongodb.conversionIdObj(sendEmail)
|
||
})
|
||
}
|
||
|
||
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,
|
||
type: "shouchong",
|
||
});
|
||
|
||
if (!data) {
|
||
data = {uid: user.uid, receive: {}, type: "shouchong", _id: G.mongodb.conversionId("")};
|
||
}
|
||
|
||
let send_prize = [];
|
||
for (let key in shouchong) {
|
||
// 充值不足
|
||
if (user.payExp < shouchong[key]["paynum"] * 10) {
|
||
continue
|
||
}
|
||
|
||
// 奖励已经领取完毕
|
||
if (data?.receive && 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 && data.receive[key] && data.receive[key][i]) {
|
||
continue
|
||
}
|
||
|
||
if (!data.receive[key]) {
|
||
data.receive[key] = [];
|
||
}
|
||
data.receive[key][i] = G.time;
|
||
send_prize = send_prize.concat(shouchong[key]["prize"][i]);
|
||
}
|
||
}
|
||
if (send_prize.length <= 0) continue;
|
||
|
||
let title = "首充优化";
|
||
let content = "这是您的补偿,请查收!";
|
||
|
||
let lngTitle = {
|
||
"en": "First Top-Up optimization",
|
||
"ja": "初回チャージ仕様改善",
|
||
"ko": "초회 충전 시스템 개선",
|
||
"zh-TW": "首儲機制改善"
|
||
};
|
||
let lngContent = {
|
||
"en": "Please find attached a few items as a compensation for the wait during our adjustments.",
|
||
"ja": "仕様改善に伴う補填を発送させていただきました。ご確認ください。",
|
||
"ko": "투자 시스템 개선으로 인한 보상을 보내드립니다.",
|
||
"zh-TW": "這是您的補償內容,煩請查收!",
|
||
};
|
||
|
||
// 发放邮件
|
||
await addEmail({
|
||
uid: user.uid,
|
||
type: "system",
|
||
title: title,
|
||
content: content,
|
||
prize: send_prize,
|
||
lngTitle: lngTitle,
|
||
lngContent: lngContent,
|
||
});
|
||
// 设置奖励发放记录
|
||
await G.mongodb.cEvent("shouchong").updateOne({
|
||
uid: user.uid,
|
||
type: "shouchong",
|
||
}, {"$set": {receive: data.receive, patch: 1}}, {upsert: true});
|
||
|
||
console.log(`玩家${user.uid}首充奖励补发完成...`);
|
||
}
|
||
}
|
||
|
||
|
||
/**
|
||
* "zhizunyueka"
|
||
标题:至尊月卡优化
|
||
日語:豪華月パス仕様改善
|
||
繁體:至尊月卡改善
|
||
韓国語:고급 월간 패스 시스템 개선
|
||
英語: Luxurious Monthly Pass optimization
|
||
|
||
邮件内容:这是您的补偿,请查收!
|
||
日語:仕様改善に伴う補填を発送させていただきました。ご確認ください。
|
||
繁體中文:這是您的補償內容,煩請查收!
|
||
韓国語:투자 시스템 개선으로 인한 보상을 보내드립니다.
|
||
英語: Please find attached a few items as a compensation for the wait during our adjustments.
|
||
|
||
线上玩家脚本:
|
||
线上已购买至尊月卡的玩家,脚本补发:钻石*10000
|
||
**/
|
||
async function zhizunyueka() {
|
||
let w = {
|
||
key: "zhizunyueka",
|
||
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;
|
||
if (!uid2Prize[uid]) uid2Prize[uid] = [];
|
||
uid2Prize[uid].push({a: "attr", t: "rmbmoney", n: 10000});
|
||
});
|
||
|
||
let title = "至尊月卡优化";
|
||
let content = "这是您的补偿,请查收!";
|
||
let lngTitle = {
|
||
"en": "Luxurious Monthly Pass optimization",
|
||
"ja": "豪華月パス仕様改善",
|
||
"ko": "고급 월간 패스 시스템 개선",
|
||
"zh-TW": "至尊月卡改善",
|
||
};
|
||
let lngContent = {
|
||
"en": "Please find attached a few items as a compensation for the wait during our adjustments.",
|
||
"ja": "仕様改善に伴う補填を発送させていただきました。ご確認ください。",
|
||
"ko": "투자 시스템 개선으로 인한 보상을 보내드립니다.",
|
||
"zh-TW": "這是您的補償內容,煩請查收!",
|
||
};
|
||
|
||
for (const [uid, sendPrize] of Object.entries(uid2Prize)) {
|
||
// 发放邮件
|
||
await addEmail({
|
||
uid: uid,
|
||
type: "system",
|
||
title: title,
|
||
content: content,
|
||
prize: sendPrize,
|
||
lngTitle: lngTitle,
|
||
lngContent: lngContent,
|
||
});
|
||
|
||
// 处理重复执行
|
||
await G.mongodb.collection("payLogNew").updateMany(
|
||
Object.assign({uid: uid}, w), {$set: {patch: 1}}
|
||
)
|
||
|
||
console.log(`玩家${uid}至尊月卡奖励补发完成...`);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* "chaozhiyueka"
|
||
标题 超值月卡优化
|
||
ja:お得月パス仕様改善
|
||
zh-TW:超值月卡改善
|
||
ko:월간 패스 시스템 개선
|
||
en: Value Monthly Pass optimization
|
||
|
||
內文:
|
||
这是您的补偿,请查收!
|
||
ja:仕様改善に伴う補填を発送させていただきました。ご確認ください。
|
||
zh-TW:這是您的補償內容,煩請查收!
|
||
ko:투자 시스템 개선으로 인한 보상을 보내드립니다.
|
||
en: Please find attached a few items as a compensation for the wait during our adjustments.
|
||
|
||
线上已购买超值月卡的玩家,脚本补发:招募卡*30
|
||
**/
|
||
async function chaozhiyueka() {
|
||
let w = {
|
||
key: "chaozhiyueka",
|
||
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;
|
||
if (!uid2Prize[uid]) uid2Prize[uid] = [];
|
||
uid2Prize[uid].push({a: "item", t: "4", n: 30});
|
||
});
|
||
|
||
let title = "超值月卡优化";
|
||
let content = "这是您的补偿,请查收!";
|
||
let lngTitle = {
|
||
"ja": "お得月パス仕様改善",
|
||
"zh-TW": "超值月卡改善",
|
||
"ko": "월간 패스 시스템 개선",
|
||
"en": "Value Monthly Pass optimization",
|
||
};
|
||
let lngContent = {
|
||
"en": "Please find attached a few items as a compensation for the wait during our adjustments.",
|
||
"ja": "仕様改善に伴う補填を発送させていただきました。ご確認ください。",
|
||
"ko": "투자 시스템 개선으로 인한 보상을 보내드립니다.",
|
||
"zh-TW": "這是您的補償內容,煩請查收!"
|
||
};
|
||
|
||
for (const [uid, sendPrize] of Object.entries(uid2Prize)) {
|
||
// 发放邮件
|
||
await addEmail({
|
||
uid: uid,
|
||
type: "system",
|
||
title: title,
|
||
content: content,
|
||
prize: sendPrize,
|
||
lngTitle: lngTitle,
|
||
lngContent: lngContent,
|
||
});
|
||
|
||
// 处理重复执行
|
||
await G.mongodb.collection("payLogNew").updateMany(
|
||
Object.assign({uid: uid}, w), {$set: {patch: 1}}
|
||
)
|
||
|
||
console.log(`玩家${uid}超值月卡奖励补发完成...`);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* "zhongshenka"
|
||
标题:终身卡优化
|
||
ja:永久パス仕様改善
|
||
zh-TW:永久通行證改善
|
||
ko:영구 패스 시스템 개선
|
||
en: Lifetime Pass optimization
|
||
|
||
內文: 这是您的补偿,请查收!
|
||
ja:仕様改善に伴う補填を発送させていただきました。ご確認ください。
|
||
zh-TW:這是您的補償內容,煩請查收!
|
||
ko:투자 시스템 개선으로 인한 보상을 보내드립니다.
|
||
en: Please find attached a few items as a compensation for the wait during our adjustments.
|
||
|
||
线上已购买永久卡的玩家,脚本补发:汉塞尔1,能量饮料500w
|
||
**/
|
||
async function zhongshenka() {
|
||
let w = {
|
||
key: "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;
|
||
if (!uid2Prize[uid]) uid2Prize[uid] = [];
|
||
uid2Prize[uid].push({"a": "item", "t": "1", "n": 5000000})
|
||
uid2Prize[uid].push({a: "hero", t: "4012", n: 1})
|
||
});
|
||
|
||
let title = "终身卡优化";
|
||
let content = "这是您的补偿,请查收!";
|
||
let lngTitle = {
|
||
"ja": "永久パス仕様改善",
|
||
"zh-TW": "永久通行證改善",
|
||
"ko": "영구 패스 시스템 개선",
|
||
"en": "Lifetime Pass optimization",
|
||
};
|
||
let lngContent = {
|
||
"en": "Please find attached a few items as a compensation for the wait during our adjustments.",
|
||
"ja": "仕様改善に伴う補填を発送させていただきました。ご確認ください。",
|
||
"ko": "투자 시스템 개선으로 인한 보상을 보내드립니다.",
|
||
"zh-TW": "這是您的補償內容,煩請查收!"
|
||
};
|
||
|
||
for (const [uid, sendPrize] of Object.entries(uid2Prize)) {
|
||
// 发放邮件
|
||
await addEmail({
|
||
uid: uid,
|
||
type: "system",
|
||
title: title,
|
||
content: content,
|
||
prize: sendPrize,
|
||
lngTitle: lngTitle,
|
||
lngContent: lngContent,
|
||
});
|
||
|
||
// 处理重复执行
|
||
await G.mongodb.collection("payLogNew").updateMany(
|
||
Object.assign({uid: uid}, w), {$set: {patch: 1}}
|
||
)
|
||
|
||
console.log(`玩家${uid}终身卡奖励补发完成...`);
|
||
}
|
||
}
|
||
|
||
|
||
/**
|
||
"qingbaotequan"
|
||
标题:资讯特权优化
|
||
ja:情報特権仕様改善
|
||
zh-TW:資訊特權改善
|
||
ko:정보 특권 시스템 개선
|
||
en: Intel Benefit optimization
|
||
|
||
內文:这是您的补偿,请查收!
|
||
ja:仕様改善に伴う補填を発送させていただきました。ご確認ください。
|
||
zh-TW:這是您的補償內容,煩請查收!
|
||
ko:투자 시스템 개선으로 인한 보상을 보내드립니다.
|
||
en: Please find attached a few items as a compensation for the wait during our adjustments.
|
||
|
||
线上玩家脚本
|
||
1、特权内容:已购买特权的玩家,特权效果更新,不重置时间
|
||
2、已购买资讯特权的玩家,脚本补发:钻石*680,顶级紫色套装*1
|
||
* */
|
||
async function qingbaotequan() {
|
||
let w = {
|
||
key: "qingbaotequan",
|
||
patch: {$exists: false},
|
||
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;
|
||
|
||
if (!uid2Prize[uid]) uid2Prize[uid] = [];
|
||
uid2Prize[uid].push({"a": "attr", "t": "rmbmoney", "n": 680});
|
||
uid2Prize[uid].push({"a": "item", "t": "609", "n": 1});
|
||
});
|
||
|
||
let title = "资讯特权优化";
|
||
let content = "这是您的补偿,请查收!";
|
||
let lngTitle = {
|
||
"ja": "情報特権仕様改善",
|
||
"zh-TW": "資訊特權改善",
|
||
"ko": "정보 특권 시스템 개선",
|
||
"en": "Intel Benefit optimization",
|
||
};
|
||
let lngContent = {
|
||
"en": "Please find attached a few items as a compensation for the wait during our adjustments.",
|
||
"ja": "仕様改善に伴う補填を発送させていただきました。ご確認ください。",
|
||
"ko": "투자 시스템 개선으로 인한 보상을 보내드립니다.",
|
||
"zh-TW": "這是您的補償內容,煩請查收!"
|
||
};
|
||
for (const [uid, sendPrize] of Object.entries(uid2Prize)) {
|
||
// 发放邮件
|
||
await addEmail({
|
||
uid: uid,
|
||
type: "system",
|
||
title: title,
|
||
content: content,
|
||
prize: sendPrize,
|
||
lngTitle: lngTitle,
|
||
lngContent: lngContent,
|
||
});
|
||
await G.mongodb.collection("payLogNew").updateMany(
|
||
Object.assign({uid: uid}, w), {$set: {patch: 1}}
|
||
)
|
||
|
||
console.log(`玩家${uid}特权奖励补发完成...`);
|
||
}
|
||
}
|
||
|
||
/**
|
||
"zuozhantequan"
|
||
标题:作战特权优化
|
||
ja:作戦特権仕様改善
|
||
zh-TW:作戰特權改善
|
||
ko:작전 특권 시스템 개선
|
||
en: Strategy Benefit optimization
|
||
|
||
內文:这是您的补偿,请查收!
|
||
ja:仕様改善に伴う補填を発送させていただきました。ご確認ください。
|
||
zh-TW:這是您的補償內容,煩請查收!
|
||
ko:투자 시스템 개선으로 인한 보상을 보내드립니다.
|
||
en: Please find attached a few items as a compensation for the wait during our adjustments.
|
||
|
||
线上玩家脚本
|
||
1、特权内容:已购买特权的玩家,特权效果更新,不重置时间
|
||
2、已购买快速特权的玩家,脚本补发:钻石300,快速探险券30
|
||
* */
|
||
async function zuozhantequan() {
|
||
let w = {
|
||
key: "zuozhantequan",
|
||
patch: {$exists: false},
|
||
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;
|
||
|
||
if (!uid2Prize[uid]) uid2Prize[uid] = [];
|
||
uid2Prize[uid].push({"a": "item", "t": "24", "n": 30});
|
||
uid2Prize[uid].push({"a": "attr", "t": "rmbmoney", "n": 300});
|
||
});
|
||
|
||
let title = "作战特权优化";
|
||
let content = "这是您的补偿,请查收!";
|
||
let lngTitle = {
|
||
"ja": "作戦特権仕様改善",
|
||
"zh-TW": "作戰特權改善",
|
||
"ko": "작전 특권 시스템 개선",
|
||
"en": "Strategy Benefit optimization",
|
||
};
|
||
let lngContent = {
|
||
"en": "Please find attached a few items as a compensation for the wait during our adjustments.",
|
||
"ja": "仕様改善に伴う補填を発送させていただきました。ご確認ください。",
|
||
"ko": "투자 시스템 개선으로 인한 보상을 보내드립니다.",
|
||
"zh-TW": "這是您的補償內容,煩請查收!"
|
||
};
|
||
for (const [uid, sendPrize] of Object.entries(uid2Prize)) {
|
||
// 发放邮件
|
||
await addEmail({
|
||
uid: uid,
|
||
type: "system",
|
||
title: title,
|
||
content: content,
|
||
prize: sendPrize,
|
||
lngTitle: lngTitle,
|
||
lngContent: lngContent,
|
||
});
|
||
await G.mongodb.collection("payLogNew").updateMany(
|
||
Object.assign({uid: uid}, w), {$set: {patch: 1}}
|
||
)
|
||
|
||
console.log(`玩家${uid}特权奖励补发完成...`);
|
||
}
|
||
}
|
||
|
||
/**
|
||
"caifutequan"
|
||
标题:资产特权优化
|
||
ja:資産特権仕様改善
|
||
zh-TW:資産特權改善
|
||
ko:자산 특권 시스템 개선
|
||
en: Asset Benefit optimization
|
||
|
||
內文:这是您的补偿,请查收!
|
||
ja:仕様改善に伴う補填を発送させていただきました。ご確認ください。
|
||
zh-TW:這是您的補償內容,煩請查收!
|
||
ko:투자 시스템 개선으로 인한 보상을 보내드립니다.
|
||
en: Please find attached a few items as a compensation for the wait during our adjustments.
|
||
|
||
线上玩家脚本
|
||
1、特权内容:已购买特权的玩家,特权效果更新,不重置时间
|
||
2、已购买资产特权的玩家,脚本补发:钻石*300,美金*1000万
|
||
* */
|
||
async function caifutequan() {
|
||
let w = {
|
||
key: "caifutequan",
|
||
patch: {$exists: false},
|
||
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;
|
||
|
||
if (!uid2Prize[uid]) uid2Prize[uid] = [];
|
||
uid2Prize[uid].push({"a": "attr", "t": "rmbmoney", "n": 300})
|
||
uid2Prize[uid].push({"a": "attr", "t": "jinbi", "n": 10000000})
|
||
});
|
||
|
||
let title = "资产特权优化";
|
||
let content = "这是您的补偿,请查收!";
|
||
let lngTitle = {
|
||
"ja": "資産特権仕様改善",
|
||
"zh-TW": "資産特權改善",
|
||
"ko": "자산 특권 시스템 개선",
|
||
"en": "Asset Benefit optimization",
|
||
};
|
||
let lngContent = {
|
||
"en": "Please find attached a few items as a compensation for the wait during our adjustments.",
|
||
"ja": "仕様改善に伴う補填を発送させていただきました。ご確認ください。",
|
||
"ko": "투자 시스템 개선으로 인한 보상을 보내드립니다.",
|
||
"zh-TW": "這是您的補償內容,煩請查收!"
|
||
};
|
||
for (const [uid, sendPrize] of Object.entries(uid2Prize)) {
|
||
// 发放邮件
|
||
await addEmail({
|
||
uid: uid,
|
||
type: "system",
|
||
title: title,
|
||
content: content,
|
||
prize: sendPrize,
|
||
lngTitle: lngTitle,
|
||
lngContent: lngContent,
|
||
});
|
||
await G.mongodb.collection("payLogNew").updateMany(
|
||
Object.assign({uid: uid}, w), {$set: {patch: 1}}
|
||
)
|
||
|
||
console.log(`玩家${uid}资产特权奖励补发完成...`);
|
||
}
|
||
}
|
||
|
||
/**
|
||
"jiubatequan"
|
||
标题:抽奖特权优化
|
||
ja:ガチャ特権仕様改善
|
||
zh-TW:抽獎特權改善
|
||
ko:모집 특권 시스템 개선
|
||
en: Gacha Benefit optimization
|
||
|
||
內文:这是您的补偿,请查收!
|
||
ja:仕様改善に伴う補填を発送させていただきました。ご確認ください。
|
||
zh-TW:這是您的補償內容,煩請查收!
|
||
ko:투자 시스템 개선으로 인한 보상을 보내드립니다.
|
||
en: Please find attached a few items as a compensation for the wait during our adjustments.
|
||
|
||
线上玩家脚本
|
||
1、特权内容:已购买特权的玩家,特权效果更新,不重置时间
|
||
2、已购买抽奖特权的玩家,脚本补发:钻石*680,招募卡*10
|
||
* */
|
||
async function jiubatequan() {
|
||
let w = {
|
||
key: "jiubatequan",
|
||
patch: {$exists: false},
|
||
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;
|
||
|
||
if (!uid2Prize[uid]) uid2Prize[uid] = [];
|
||
uid2Prize[uid].push({"a": "item", "t": "4", "n": 10});
|
||
uid2Prize[uid].push({"a": "attr", "t": "rmbmoney", "n": 680});
|
||
});
|
||
|
||
let title = "抽奖特权优化";
|
||
let content = "这是您的补偿,请查收!";
|
||
let lngTitle = {
|
||
"ja": "ガチャ特権仕様改善",
|
||
"zh-TW": "抽獎特權改善",
|
||
"ko": "모집 특권 시스템 개선",
|
||
"en": "Gacha Benefit optimization",
|
||
};
|
||
let lngContent = {
|
||
"en": "Please find attached a few items as a compensation for the wait during our adjustments.",
|
||
"ja": "仕様改善に伴う補填を発送させていただきました。ご確認ください。",
|
||
"ko": "투자 시스템 개선으로 인한 보상을 보내드립니다.",
|
||
"zh-TW": "這是您的補償內容,煩請查收!"
|
||
};
|
||
for (const [uid, sendPrize] of Object.entries(uid2Prize)) {
|
||
// 发放邮件
|
||
await addEmail({
|
||
uid: uid,
|
||
type: "system",
|
||
title: title,
|
||
content: content,
|
||
prize: sendPrize,
|
||
lngTitle: lngTitle,
|
||
lngContent: lngContent,
|
||
});
|
||
await G.mongodb.collection("payLogNew").updateMany(
|
||
Object.assign({uid: uid}, w), {$set: {patch: 1}}
|
||
)
|
||
|
||
console.log(`玩家${uid}抽奖特权奖励补发完成...`);
|
||
}
|
||
}
|
||
|
||
/**
|
||
不需要给玩家发送邮件
|
||
|
||
线上玩家脚本
|
||
刷新所有玩家各档位VIP礼包到未购买状态
|
||
**/
|
||
async function resetVipLiBao() {
|
||
await G.mongodb.cPlayerInfo("chongzhi").updateMany(
|
||
{type: 'chongzhi'}, {$set: {giftBy: {}}}
|
||
)
|
||
}
|
||
|
||
|
||
/**
|
||
人才计划调整
|
||
1、线上已有该活动的玩家,保留次数进度;达到新加档位可领取的奖励则直接领取
|
||
**/
|
||
async function rcjhReSet() {
|
||
const hdid = [100, 101];
|
||
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
|
||
}
|
||
};
|
||
// 中间插入了2004 所以之前的任务id一次往后顺延
|
||
const change = {2004: 2005, 2005: 2006, 2006: 2007};
|
||
// 刷新活动配置
|
||
await G.mongodb.collection("hdinfo").updateOne({hdid: {$in: hdid}}, {
|
||
"$set": {'data.tasklist.2': task}
|
||
})
|
||
|
||
let datas: yangchengmubiao[] = [];
|
||
// 刷新玩家领取记录
|
||
datas = datas.concat(await G.mongodb.cEvent(`yangchengmubiao${hdid[0]}`).find(
|
||
{type: `yangchengmubiao${hdid[0]}`}
|
||
).toArray());
|
||
datas = datas.concat(await G.mongodb.cEvent(`yangchengmubiao${hdid[1]}`).find(
|
||
{type: `yangchengmubiao${hdid[1]}`}
|
||
).toArray());
|
||
for (let i = 0; i < datas.length; i++) {
|
||
let data = datas[i];
|
||
let finished = data.finishid["2"].map((task) => {
|
||
return change[task] ? change[task] : task
|
||
});
|
||
let maxtaskval = Math.max(...Object.values(data.taskval));
|
||
let taskval = Object.assign(Object.keys(task).map((taskid) => {
|
||
return {[taskid]: maxtaskval}
|
||
}));
|
||
await G.mongodb.collection("event").updateOne(
|
||
{uid: data.uid, type: data.type}, {$set: {taskval: taskval, "finishid.2": finished}}
|
||
)
|
||
console.log(`修复玩家${data.uid}人才计划数据完成...`);
|
||
}
|
||
}
|
||
|
||
|
||
/**
|
||
* 标题:等级基金优化
|
||
* ja:レベル投資仕様改善
|
||
* zh-TW:等級基金改善
|
||
* ko:레벨 투자 시스템 개선
|
||
* en: Level Investment optimization
|
||
|
||
* 內文:
|
||
* 这是您的补偿,请查收!
|
||
* ja:仕様改善に伴う補填を発送させていただきました。ご確認ください。
|
||
* zh-TW:這是您的補償內容,煩請查收!
|
||
* ko:투자 시스템 개선으로 인한 보상을 보내드립니다.
|
||
* en: Please find attached a few items as a compensation for the wait during our adjustments.
|
||
|
||
* 线上玩家脚本
|
||
* 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)
|
||
);
|
||
|
||
const prizeList = [
|
||
{
|
||
"type": "dengjijijin",
|
||
"total": 20,
|
||
"pt": [
|
||
{
|
||
"a": "attr",
|
||
"t": "rmbmoney",
|
||
"n": 300
|
||
}
|
||
],
|
||
"tq": [
|
||
{
|
||
"a": "attr",
|
||
"t": "rmbmoney",
|
||
"n": 1700
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "dengjijijin",
|
||
"total": 25,
|
||
"pt": [
|
||
{
|
||
"a": "attr",
|
||
"t": "rmbmoney",
|
||
"n": 300
|
||
}
|
||
],
|
||
"tq": [
|
||
{
|
||
"a": "attr",
|
||
"t": "rmbmoney",
|
||
"n": 1700
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "dengjijijin",
|
||
"total": 30,
|
||
"pt": [
|
||
{
|
||
"a": "attr",
|
||
"t": "rmbmoney",
|
||
"n": 300
|
||
}
|
||
],
|
||
"tq": [
|
||
{
|
||
"a": "attr",
|
||
"t": "rmbmoney",
|
||
"n": 1700
|
||
}
|
||
]
|
||
},
|
||
|
||
{
|
||
"type": "dengjijijin",
|
||
"total": 35,
|
||
"pt": [
|
||
{
|
||
"a": "attr",
|
||
"t": "rmbmoney",
|
||
"n": 300
|
||
}
|
||
],
|
||
"tq": [
|
||
{
|
||
"a": "attr",
|
||
"t": "rmbmoney",
|
||
"n": 1700
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "dengjijijin",
|
||
"total": 40,
|
||
"pt": [
|
||
{
|
||
"a": "attr",
|
||
"t": "rmbmoney",
|
||
"n": 300
|
||
}
|
||
],
|
||
"tq": [
|
||
{
|
||
"a": "attr",
|
||
"t": "rmbmoney",
|
||
"n": 1700
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "dengjijijin",
|
||
"total": 45,
|
||
"pt": [
|
||
{
|
||
"a": "attr",
|
||
"t": "rmbmoney",
|
||
"n": 300
|
||
}
|
||
],
|
||
"tq": [
|
||
{
|
||
"a": "attr",
|
||
"t": "rmbmoney",
|
||
"n": 1700
|
||
}
|
||
]
|
||
},
|
||
|
||
{
|
||
"type": "dengjijijin",
|
||
"total": 50,
|
||
"pt": [
|
||
{
|
||
"a": "attr",
|
||
"t": "rmbmoney",
|
||
"n": 300
|
||
}
|
||
],
|
||
"tq": [
|
||
{
|
||
"a": "attr",
|
||
"t": "rmbmoney",
|
||
"n": 1700
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "dengjijijin",
|
||
"total": 55,
|
||
"pt": [
|
||
{
|
||
"a": "attr",
|
||
"t": "rmbmoney",
|
||
"n": 300
|
||
}
|
||
],
|
||
"tq": [
|
||
{
|
||
"a": "attr",
|
||
"t": "rmbmoney",
|
||
"n": 1700
|
||
}
|
||
]
|
||
}
|
||
];
|
||
let _users = await G.mongodb.cEvent("dengjijijin").find(
|
||
{"uid": {"$in": _payList.map(pay => pay.uid)}, type: 'dengjijijin'}
|
||
).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)
|
||
}
|
||
});
|
||
})
|
||
|
||
let title = "等级基金优化";
|
||
let content = "这是您的补偿,请查收!";
|
||
let lngTitle = {
|
||
"ja": "レベル投資仕様改善",
|
||
"zh-TW": "等級基金改善",
|
||
"ko": "레벨 투자 시스템 개선",
|
||
"en": "Level Investment optimization",
|
||
};
|
||
let lngContent = {
|
||
"en": "Please find attached a few items as a compensation for the wait during our adjustments.",
|
||
"ja": "仕様改善に伴う補填を発送させていただきました。ご確認ください。",
|
||
"ko": "투자 시스템 개선으로 인한 보상을 보내드립니다.",
|
||
"zh-TW": "這是您的補償內容,煩請查收!"
|
||
};
|
||
for (const [uid, sendPrize] of Object.entries(uid2Prize)) {
|
||
// 发放邮件
|
||
await addEmail({
|
||
uid: uid,
|
||
type: "system",
|
||
title: title,
|
||
content: content,
|
||
prize: sendPrize,
|
||
lngTitle: lngTitle,
|
||
lngContent: lngContent,
|
||
});
|
||
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`}}
|
||
);
|
||
console.log(`玩家${uid}等级基金奖补发完成...`);
|
||
}
|
||
}
|
||
|
||
|
||
/**
|
||
* 标题:关卡基金优化
|
||
* ja:ステージ投資仕様改善
|
||
* zh-TW:關卡基金改善
|
||
* ko:스테이지 투자 시스템 개선
|
||
* en: Stage Investment optimization
|
||
*
|
||
* 內文:这是您的补偿,请查收!
|
||
* ja:仕様改善に伴う補填を発送させていただきました。ご確認ください。
|
||
* zh-TW:這是您的補償內容,煩請查收!
|
||
* ko:투자 시스템 개선으로 인한 보상을 보내드립니다.
|
||
* en: Please find attached a few items as a compensation for the wait during our adjustments.
|
||
|
||
* 线上玩家脚本
|
||
* 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)
|
||
);
|
||
|
||
const prizeList = [
|
||
{
|
||
"type": "guanqiajijin",
|
||
"total": 30,
|
||
"pt": [],
|
||
"tq": [
|
||
{
|
||
"a": "attr",
|
||
"t": "rmbmoney",
|
||
"n": 2000
|
||
}
|
||
],
|
||
"des": "guanqiajijin_des_1"
|
||
},
|
||
{
|
||
"type": "guanqiajijin",
|
||
"total": 50,
|
||
"pt": [],
|
||
"tq": [
|
||
{
|
||
"a": "attr",
|
||
"t": "rmbmoney",
|
||
"n": 2000
|
||
}
|
||
],
|
||
"des": "guanqiajijin_des_2"
|
||
},
|
||
{
|
||
"type": "guanqiajijin",
|
||
"total": 70,
|
||
"pt": [],
|
||
"tq": [
|
||
{
|
||
"a": "attr",
|
||
"t": "rmbmoney",
|
||
"n": 2000
|
||
}
|
||
],
|
||
"des": "guanqiajijin_des_3"
|
||
},
|
||
{
|
||
"type": "guanqiajijin",
|
||
"total": 90,
|
||
"pt": [],
|
||
"tq": [
|
||
{
|
||
"a": "attr",
|
||
"t": "rmbmoney",
|
||
"n": 2000
|
||
}
|
||
],
|
||
"des": "guanqiajijin_des_4"
|
||
},
|
||
{
|
||
"type": "guanqiajijin",
|
||
"total": 110,
|
||
"pt": [],
|
||
"tq": [
|
||
{
|
||
"a": "attr",
|
||
"t": "rmbmoney",
|
||
"n": 2000
|
||
}
|
||
],
|
||
"des": "guanqiajijin_des_5"
|
||
},
|
||
{
|
||
"type": "guanqiajijin",
|
||
"total": 150,
|
||
"pt": [],
|
||
"tq": [
|
||
{
|
||
"a": "attr",
|
||
"t": "rmbmoney",
|
||
"n": 2000
|
||
}
|
||
],
|
||
"des": "guanqiajijin_des_6"
|
||
},
|
||
{
|
||
"type": "guanqiajijin",
|
||
"total": 180,
|
||
"pt": [],
|
||
"tq": [
|
||
{
|
||
"a": "attr",
|
||
"t": "rmbmoney",
|
||
"n": 2000
|
||
}
|
||
],
|
||
"des": "guanqiajijin_des_7"
|
||
},
|
||
{
|
||
"type": "guanqiajijin",
|
||
"total": 250,
|
||
"pt": [],
|
||
"tq": [
|
||
{
|
||
"a": "attr",
|
||
"t": "rmbmoney",
|
||
"n": 2000
|
||
}
|
||
],
|
||
"des": "guanqiajijin_des_8"
|
||
}
|
||
];
|
||
|
||
// 没激活不处理
|
||
let _users = await G.mongodb.cEvent("guanqiajijin").find(
|
||
{
|
||
"uid": {"$in": _payList.map(pay => pay.uid)},
|
||
"type": 'guanqiajijin'
|
||
},
|
||
{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)
|
||
}
|
||
});
|
||
})
|
||
|
||
let title = "关卡基金优化";
|
||
let content = "这是您的补偿,请查收!";
|
||
let lngTitle = {
|
||
"ja": "ステージ投資仕様改善",
|
||
"zh-TW": "關卡基金改善",
|
||
"ko": "스테이지 투자 시스템 개선",
|
||
"en": "Stage Investment optimization",
|
||
};
|
||
let lngContent = {
|
||
"en": "Please find attached a few items as a compensation for the wait during our adjustments.",
|
||
"ja": "仕様改善に伴う補填を発送させていただきました。ご確認ください。",
|
||
"ko": "투자 시스템 개선으로 인한 보상을 보내드립니다.",
|
||
"zh-TW": "這是您的補償內容,煩請查收!"
|
||
};
|
||
for (const [uid, sendPrize] of Object.entries(uid2Prize)) {
|
||
// 发放邮件
|
||
await addEmail({
|
||
uid: uid,
|
||
type: "system",
|
||
title: title,
|
||
content: content,
|
||
prize: sendPrize,
|
||
lngTitle: lngTitle,
|
||
lngContent: lngContent,
|
||
});
|
||
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`}}
|
||
);
|
||
console.log(`玩家${uid}关卡基金奖补发完成...`);
|
||
}
|
||
}
|
||
|
||
|
||
/**
|
||
* 标题:特别通行证优化
|
||
* ja:特別通行証仕様改善
|
||
* zh-TW:特別通行證改善
|
||
* ko:특별 통행증 시스템 개선
|
||
* en: Special Permit optimization
|
||
|
||
* 內文:这是您的补偿,请查收!
|
||
* ja:仕様改善に伴う補填を発送させていただきました。ご確認ください。
|
||
* zh-TW:這是您的補償內容,煩請查收!
|
||
* ko:투자 시스템 개선으로 인한 보상을 보내드립니다.
|
||
* en: Please find attached a few items as a compensation for the wait during our adjustments.
|
||
|
||
* 线上玩家脚本
|
||
* 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)
|
||
);
|
||
|
||
const prizeList = [
|
||
{
|
||
"type": "dayjijin",
|
||
"total": 5,
|
||
"pt": [
|
||
{
|
||
"a": "item",
|
||
"t": "23",
|
||
"n": 20000
|
||
}
|
||
],
|
||
"tq": [
|
||
{
|
||
"a": "item",
|
||
"t": "4",
|
||
"n": 5
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "dayjijin",
|
||
"total": 15,
|
||
"pt": [
|
||
{
|
||
"a": "item",
|
||
"t": "2",
|
||
"n": 200
|
||
}
|
||
],
|
||
"tq": [
|
||
{
|
||
"a": "item",
|
||
"t": "2",
|
||
"n": 2000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "dayjijin",
|
||
"total": 30,
|
||
"pt": [
|
||
{
|
||
"a": "item",
|
||
"t": "23",
|
||
"n": 20000
|
||
}
|
||
],
|
||
"tq": [
|
||
{
|
||
"a": "attr",
|
||
"t": "rmbmoney",
|
||
"n": 888
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "dayjijin",
|
||
"total": 45,
|
||
"pt": [
|
||
{
|
||
"a": "item",
|
||
"t": "2",
|
||
"n": 200
|
||
}
|
||
],
|
||
"tq": [
|
||
{
|
||
"a": "item",
|
||
"t": "615",
|
||
"n": 1
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "dayjijin",
|
||
"total": 60,
|
||
"pt": [
|
||
{
|
||
"a": "item",
|
||
"t": "23",
|
||
"n": 20000
|
||
}
|
||
],
|
||
"tq": [
|
||
{
|
||
"a": "item",
|
||
"t": "4",
|
||
"n": 5
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "dayjijin",
|
||
"total": 75,
|
||
"pt": [
|
||
{
|
||
"a": "item",
|
||
"t": "2",
|
||
"n": 300
|
||
}
|
||
],
|
||
"tq": [
|
||
{
|
||
"a": "item",
|
||
"t": "2",
|
||
"n": 2000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "dayjijin",
|
||
"total": 90,
|
||
"pt": [
|
||
{
|
||
"a": "item",
|
||
"t": "23",
|
||
"n": 20000
|
||
}
|
||
],
|
||
"tq": [
|
||
{
|
||
"a": "attr",
|
||
"t": "rmbmoney",
|
||
"n": 888
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "dayjijin",
|
||
"total": 105,
|
||
"pt": [
|
||
{
|
||
"a": "item",
|
||
"t": "2",
|
||
"n": 300
|
||
}
|
||
],
|
||
"tq": [
|
||
{
|
||
"a": "item",
|
||
"t": "615",
|
||
"n": 1
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "dayjijin",
|
||
"total": 120,
|
||
"pt": [
|
||
{
|
||
"a": "item",
|
||
"t": "23",
|
||
"n": 20000
|
||
}
|
||
],
|
||
"tq": [
|
||
{
|
||
"a": "item",
|
||
"t": "4",
|
||
"n": 5
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "dayjijin",
|
||
"total": 135,
|
||
"pt": [
|
||
{
|
||
"a": "item",
|
||
"t": "2",
|
||
"n": 400
|
||
}
|
||
],
|
||
"tq": [
|
||
{
|
||
"a": "item",
|
||
"t": "2",
|
||
"n": 2000
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "dayjijin",
|
||
"total": 150,
|
||
"pt": [
|
||
{
|
||
"a": "item",
|
||
"t": "23",
|
||
"n": 20000
|
||
}
|
||
],
|
||
"tq": [
|
||
{
|
||
"a": "attr",
|
||
"t": "rmbmoney",
|
||
"n": 888
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "dayjijin",
|
||
"total": 165,
|
||
"pt": [
|
||
{
|
||
"a": "item",
|
||
"t": "2",
|
||
"n": 400
|
||
}
|
||
],
|
||
"tq": [
|
||
{
|
||
"a": "item",
|
||
"t": "615",
|
||
"n": 1
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "dayjijin",
|
||
"total": 180,
|
||
"pt": [
|
||
{
|
||
"a": "item",
|
||
"t": "23",
|
||
"n": 20000
|
||
}
|
||
],
|
||
"tq": [
|
||
{
|
||
"a": "item",
|
||
"t": "4",
|
||
"n": 5
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"type": "dayjijin",
|
||
"total": 200,
|
||
"pt": [
|
||
{
|
||
"a": "item",
|
||
"t": "2",
|
||
"n": 500
|
||
}
|
||
],
|
||
"tq": [
|
||
{
|
||
"a": "attr",
|
||
"t": "rmbmoney",
|
||
"n": 1888
|
||
}
|
||
]
|
||
}
|
||
];
|
||
// 没激活不处理
|
||
let _users = await G.mongodb.cEvent("dayjijin").find(
|
||
{uid: {$in: _payList.map(pay => pay.uid)}, type: "dayjijin"}
|
||
).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)
|
||
}
|
||
});
|
||
})
|
||
|
||
let title = "特别通行证优化";
|
||
let content = "这是您的补偿,请查收!";
|
||
let lngTitle = {
|
||
"ja": "特別通行証仕様改善",
|
||
"zh-TW": "特別通行證改善",
|
||
"ko": "특별 통행증 시스템 개선",
|
||
"en": "Special Permit optimization",
|
||
};
|
||
let lngContent = {
|
||
"en": "Please find attached a few items as a compensation for the wait during our adjustments.",
|
||
"ja": "仕様改善に伴う補填を発送させていただきました。ご確認ください。",
|
||
"ko": "투자 시스템 개선으로 인한 보상을 보내드립니다.",
|
||
"zh-TW": "這是您的補償內容,煩請查收!"
|
||
};
|
||
for (const [uid, sendPrize] of Object.entries(uid2Prize)) {
|
||
// 发放邮件
|
||
await addEmail({
|
||
uid: uid,
|
||
type: "system",
|
||
title: title,
|
||
content: content,
|
||
prize: sendPrize,
|
||
lngTitle: lngTitle,
|
||
lngContent: lngContent,
|
||
});
|
||
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`}}
|
||
);
|
||
|
||
console.log(`玩家${uid}通行证基金奖补发完成...`);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 标题:特价基金优化
|
||
* ja:特価投資仕様改善
|
||
* zh-TW:特價基金改善
|
||
* ko:특가 투자 시스템 개선
|
||
* en: Value Investment optimization
|
||
|
||
* 內文:这是您的补偿,请查收!
|
||
* ja:仕様改善に伴う補填を発送させていただきました。ご確認ください。
|
||
* zh-TW:這是您的補償內容,煩請查收!
|
||
* ko:투자 시스템 개선으로 인한 보상을 보내드립니다.
|
||
* en: Please find attached a few items as a compensation for the wait during our adjustments.
|
||
|
||
* 线上玩家脚本
|
||
* 1、已购买特价基金128的玩家且未领取完成的玩家,剩余奖励邮件一次性补发;
|
||
* 2、未购买的玩家活动刷新到新版本;
|
||
* 3、刷新月基金到未购买状态;
|
||
* */
|
||
async function yue128JiJinReSet() {
|
||
let w = {key: "128jijin"};
|
||
// 激活了的玩家
|
||
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.cEvent(`${128}jijin`).find(
|
||
{
|
||
"uid": {"$in": _payList.map(pay => pay.uid)},
|
||
"type": `${128}jijin`
|
||
}
|
||
).toArray();
|
||
|
||
const prizeList = [
|
||
{a: 'item', t: '4', n: 10},
|
||
{a: 'attr', t: 'rmbmoney', n: 300},
|
||
{a: 'attr', t: 'rmbmoney', n: 300},
|
||
{a: 'item', t: '9', n: 2000},
|
||
{a: 'attr', t: 'rmbmoney', n: 300},
|
||
{a: 'attr', t: 'rmbmoney', n: 300},
|
||
{a: 'item', t: '609', n: 1},
|
||
{a: 'item', t: '4', n: 10},
|
||
{a: 'attr', t: 'rmbmoney', n: 500},
|
||
{a: 'attr', t: 'rmbmoney', n: 300},
|
||
{a: 'item', t: '18', n: 300},
|
||
{a: 'attr', t: 'rmbmoney', n: 300},
|
||
{a: 'attr', t: 'rmbmoney', n: 300},
|
||
{a: 'item', t: '6', n: 20},
|
||
{a: 'attr', t: 'rmbmoney', n: 300},
|
||
{a: 'attr', t: 'rmbmoney', n: 300},
|
||
{a: 'item', t: '9', n: 3000},
|
||
{a: 'attr', t: 'rmbmoney', n: 300},
|
||
{a: 'attr', t: 'rmbmoney', n: 300},
|
||
{a: 'item', t: '4', n: 10},
|
||
{a: 'attr', t: 'rmbmoney', n: 500},
|
||
{a: 'attr', t: 'rmbmoney', n: 300},
|
||
{a: 'item', t: '20', n: 200},
|
||
{a: 'attr', t: 'rmbmoney', n: 300},
|
||
{a: 'attr', t: 'rmbmoney', n: 300},
|
||
{a: 'item', t: '9', n: 3000},
|
||
{a: 'attr', t: 'rmbmoney', n: 300},
|
||
{a: 'attr', t: 'rmbmoney', n: 300},
|
||
{a: 'attr', t: 'rmbmoney', n: 1000},
|
||
{a: 'item', t: '628', n: 1},
|
||
];
|
||
let uid2Prize: { [uid: string]: { a: string, t: string, n: number }[] } = {};
|
||
|
||
_users.forEach(user => {
|
||
let uid = user.uid;
|
||
let gotarr = user.rec || [];
|
||
if (!uid2Prize[uid]) uid2Prize[uid] = [];
|
||
|
||
// 没领的全发
|
||
prizeList.forEach((onePrize, idx) => {
|
||
// 领过了
|
||
if (gotarr.includes(idx)) {
|
||
return
|
||
}
|
||
uid2Prize[uid].push(onePrize)
|
||
});
|
||
})
|
||
|
||
let title = "特价基金优化";
|
||
let content = "这是您的补偿,请查收!";
|
||
let lngTitle = {
|
||
"ja": "特価投資仕様改善",
|
||
"zh-TW": "特價基金改善",
|
||
"ko": "특가 투자 시스템 개선",
|
||
"en": "Value Investment optimization",
|
||
};
|
||
let lngContent = {
|
||
"en": "Please find attached a few items as a compensation for the wait during our adjustments.",
|
||
"ja": "仕様改善に伴う補填を発送させていただきました。ご確認ください。",
|
||
"ko": "투자 시스템 개선으로 인한 보상을 보내드립니다.",
|
||
"zh-TW": "這是您的補償內容,煩請查收!"
|
||
};
|
||
for (const [uid, sendPrize] of Object.entries(uid2Prize)) {
|
||
// 发放邮件
|
||
await addEmail({
|
||
uid: uid,
|
||
type: "system",
|
||
title: title,
|
||
content: content,
|
||
prize: sendPrize,
|
||
lngTitle: lngTitle,
|
||
lngContent: lngContent,
|
||
});
|
||
|
||
await G.mongodb.collection("payLogNew").updateMany(
|
||
Object.assign({uid: uid}, w), {$set: {patch: 1, del_time: G.time}}
|
||
)
|
||
// 基金数据清除
|
||
await G.mongodb.cEvent(`${128}jijin`).updateMany(
|
||
{uid: uid, type: `${128}jijin`}, {"$set": {uid: `${uid}_patch_del`}}
|
||
);
|
||
|
||
console.log(`玩家${uid}月度128基金奖补发完成...`);
|
||
}
|
||
}
|
||
|
||
/**
|
||
* 标题:特别基金优化
|
||
* ja:特別投資仕様改善
|
||
* zh-TW:特別基金改善
|
||
* ko:특별 투자 시스템 개선
|
||
* en: Special Investment optimization
|
||
|
||
* 內文:这是您的补偿,请查收!
|
||
* ja:仕様改善に伴う補填を発送させていただきました。ご確認ください。
|
||
* zh-TW:這是您的補償內容,煩請查收!
|
||
* ko:투자 시스템 개선으로 인한 보상을 보내드립니다.
|
||
* en: Please find attached a few items as a compensation for the wait during our adjustments.
|
||
|
||
* 线上玩家脚本
|
||
* 1、已购买特别基金328的玩家且未领取完成的玩家,剩余奖励邮件一次性补发;
|
||
* 2、未购买的玩家活动刷新到新版本;
|
||
* 3、刷新月基金到未购买状态;
|
||
* */
|
||
async function yue328JiJinReSet() {
|
||
let w = {key: "328jijin"};
|
||
// 激活了的玩家
|
||
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.cEvent(`${328}jijin`).find(
|
||
{
|
||
"uid": {"$in": _payList.map(pay => pay.uid)}, "type": `${328}jijin`
|
||
}
|
||
).toArray();
|
||
|
||
const prizeList = [
|
||
{a: 'item', t: '4', n: 30},
|
||
{a: 'attr', t: 'rmbmoney', n: 800},
|
||
{a: 'attr', t: 'rmbmoney', n: 800},
|
||
{a: 'item', t: '10', n: 300},
|
||
{a: 'attr', t: 'rmbmoney', n: 800},
|
||
{a: 'attr', t: 'rmbmoney', n: 800},
|
||
{a: 'item', t: '628', n: 1},
|
||
{a: 'item', t: '4', n: 20},
|
||
{a: 'attr', t: 'rmbmoney', n: 800},
|
||
{a: 'attr', t: 'rmbmoney', n: 800},
|
||
{a: 'item', t: '628', n: 1},
|
||
{a: 'attr', t: 'rmbmoney', n: 800},
|
||
{a: 'attr', t: 'rmbmoney', n: 800},
|
||
{a: 'item', t: '628', n: 1},
|
||
{a: 'attr', t: 'rmbmoney', n: 800},
|
||
{a: 'attr', t: 'rmbmoney', n: 800},
|
||
{a: 'item', t: '628', n: 1},
|
||
{a: 'attr', t: 'rmbmoney', n: 800},
|
||
{a: 'attr', t: 'rmbmoney', n: 800},
|
||
{a: 'item', t: '4', n: 20},
|
||
{a: 'attr', t: 'rmbmoney', n: 800},
|
||
{a: 'attr', t: 'rmbmoney', n: 800},
|
||
{a: 'item', t: '10', n: 400},
|
||
{a: 'attr', t: 'rmbmoney', n: 800},
|
||
{a: 'attr', t: 'rmbmoney', n: 800},
|
||
{a: 'item', t: '10', n: 400},
|
||
{a: 'attr', t: 'rmbmoney', n: 800},
|
||
{a: 'attr', t: 'rmbmoney', n: 800},
|
||
{a: 'attr', t: 'rmbmoney', n: 1500},
|
||
{a: 'item', t: '617', n: 1},
|
||
];
|
||
let uid2Prize: { [uid: string]: { a: string, t: string, n: number }[] } = {};
|
||
|
||
_users.forEach(user => {
|
||
let uid = user.uid;
|
||
let gotarr = user.rec || [];
|
||
if (!uid2Prize[uid]) uid2Prize[uid] = [];
|
||
|
||
// 没领的全发
|
||
prizeList.forEach((onePrize, idx) => {
|
||
// 领过了
|
||
if (gotarr.includes(idx)) {
|
||
return
|
||
}
|
||
uid2Prize[uid].push(onePrize)
|
||
});
|
||
})
|
||
|
||
let title = "特别基金优化";
|
||
let content = "这是您的补偿,请查收!";
|
||
let lngTitle = {
|
||
"ja": "特別投資仕様改善",
|
||
"zh-TW": "特別基金改善",
|
||
"ko": "특별 투자 시스템 개선",
|
||
"en": "Special Investment optimization",
|
||
};
|
||
let lngContent = {
|
||
"en": "Please find attached a few items as a compensation for the wait during our adjustments.",
|
||
"ja": "仕様改善に伴う補填を発送させていただきました。ご確認ください。",
|
||
"ko": "투자 시스템 개선으로 인한 보상을 보내드립니다.",
|
||
"zh-TW": "這是您的補償內容,煩請查收!"
|
||
};
|
||
for (const [uid, sendPrize] of Object.entries(uid2Prize)) {
|
||
// 发放邮件
|
||
await addEmail({
|
||
uid: uid,
|
||
type: "system",
|
||
title: title,
|
||
content: content,
|
||
prize: sendPrize,
|
||
lngTitle: lngTitle,
|
||
lngContent: lngContent,
|
||
});
|
||
|
||
await G.mongodb.collection("payLogNew").updateMany(
|
||
Object.assign({uid: uid}, w), {$set: {patch: 1, del_time: G.time}}
|
||
)
|
||
// 基金数据清除
|
||
await G.mongodb.cEvent(`${328}jijin`).updateMany(
|
||
{uid: uid, type: `${328}jijin`}, {"$set": {uid: `${uid}_patch_del`}}
|
||
);
|
||
|
||
console.log(`玩家${uid}月度128基金奖补发完成...`);
|
||
}
|
||
}
|
||
|
||
async function start() {
|
||
await initMongoDB();
|
||
|
||
await shouChongReSet();
|
||
await zhizunyueka();
|
||
await chaozhiyueka();
|
||
await zhongshenka();
|
||
|
||
await qingbaotequan();
|
||
await zuozhantequan();
|
||
await caifutequan();
|
||
await jiubatequan();
|
||
|
||
await resetVipLiBao();
|
||
|
||
await rcjhReSet();
|
||
|
||
await dengjiJiJinReSet();
|
||
await guanqiaJiJinReSet();
|
||
|
||
await dayjiJiJinReSet();
|
||
|
||
await yue128JiJinReSet();
|
||
await yue328JiJinReSet();
|
||
}
|
||
|
||
ctor();
|
||
start().then(() => {
|
||
setInterval(() => {
|
||
console.log(new Date().format("MM-dd hh:mm:ss"));
|
||
}, 1000)
|
||
console.log("逻辑执行完成...等待退出!!!");
|
||
});
|
||
|
||
|