From 76794921fbd08d46050e738c37970ac6a1082cf6 Mon Sep 17 00:00:00 2001 From: xcy <871622040@qq.com> Date: Mon, 18 Dec 2023 18:34:41 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/path_20231215.ts | 1547 +++++++++++++++++++++++++++++++++++++----- 1 file changed, 1384 insertions(+), 163 deletions(-) diff --git a/src/path_20231215.ts b/src/path_20231215.ts index 5520e73..6c9f3e7 100644 --- a/src/path_20231215.ts +++ b/src/path_20231215.ts @@ -1,8 +1,24 @@ import {ctor} from "./global"; import {EmailFun} from "./public/email"; import {initMongoDB} from "./setMongodb"; +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 shouChongReSet() { let shouchong = { "shouchong1": { @@ -169,8 +185,21 @@ async function shouChongReSet() { } if (send_prize.length <= 0) continue; - let title = "首充未领取奖励补发"; - let content = "首充未领取奖励补发"; + let title = "首充优化"; + let content = "这是您的补偿,请查收!"; + + let lngTitle = { + en: "First Top-Up optimization", + ja: "初回チャージ仕様改善", + ko: "초회 충전 시스템 개선", + tw: "首儲機制改善" + }; + let lngContent = { + en: "Please find attached a few items as a compensation for the wait during our adjustments.", + ja: "仕様改善に伴う補填を発送させていただきました。ご確認ください。", + ko: "투자 시스템 개선으로 인한 보상을 보내드립니다.", + tw: "這是您的補償內容,煩請查收!" + }; // 发放邮件 await EmailFun.addEmail({ @@ -179,23 +208,39 @@ async function shouChongReSet() { title: title, content: content, prize: send_prize, + lngTitle: lngTitle, + lngContent: lngContent, }); // 设置奖励发放记录 await G.mongodb.cEvent("shouchong").updateOne({ uid: user.uid }, {"$set": {receive: data.receive, patch: 1}}); + + console.log(`玩家${user.uid}首充奖励补发完成...`); } } -/*超值月卡、至尊月卡、永久卡的线上玩家脚本 -线上已购买超值月卡的玩家,脚本补发:招募卡*30 -线上已购买至尊月卡的玩家,脚本补发:钻石*10000 -线上已购买永久卡的玩家,脚本补发:汉塞尔*1,能量饮料*500w -* */ -async function yuekaSendPrize() { +/** + * "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: {$in: ["chaozhiyueka", "zhizunyueka", "zhongshenka"]}, + key: "zhizunyueka", del_time: {$exists: false} }; let users = (await G.mongodb.collection("payLogNew").find(w).toArray()).filter( @@ -206,25 +251,25 @@ async function yuekaSendPrize() { 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; - } + uid2Prize[uid].push({a: "attr", t: "rmbmoney", n: 10000}); }); - let title = "月卡奖励发放"; - let content = "月卡奖励发放"; + let title = "至尊月卡优化"; + let content = "这是您的首充优化补偿,请查收!"; + let lngTitle = { + en: "Luxurious Monthly Pass optimization", + ja: "豪華月パス仕様改善", + ko: "고급 월간 패스 시스템 개선", + tw: "至尊月卡改善" + }; + let lngContent = { + en: "Please find attached a few items as a compensation for the wait during our adjustments.", + ja: "仕様改善に伴う補填を発送させていただきました。ご確認ください。", + ko: "투자 시스템 개선으로 인한 보상을 보내드립니다.", + tw: "這是您的補償內容,煩請查收!" + }; + for (const [uid, sendPrize] of Object.entries(uid2Prize)) { // 发放邮件 await EmailFun.addEmail({ @@ -233,26 +278,39 @@ async function yuekaSendPrize() { 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}} ) + + console.log(`玩家${uid}至尊月卡奖励补发完成...`); } } +/** + * "chaozhiyueka" + 标题 超值月卡优化 + ja:お得月パス仕様改善 + tw:超值月卡改善 + ko:월간 패스 시스템 개선 + en: Value Monthly Pass optimization -/*特权礼包脚本需求 -1、特权内容:已购买特权的玩家,特权效果更新 -2、已购买情报特权的玩家,脚本补发:钻石*680,顶级紫色套装*1 -3、已购买快速特权的玩家,脚本补发:钻石*300,快速探险券*30 -4、已购买财富特权的玩家,脚本补发:钻石*300,美金*1000万 -5、已购买酒馆特权的玩家,脚本补发:钻石*680,招募卡*10 -* */ -async function tequanLiBaoSendPrize() { + 內文: + 这是您的补偿,请查收! + ja:仕様改善に伴う補填を発送させていただきました。ご確認ください。 + 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: {$in: ["qingbaotequan", "zuozhantequan", "caifutequan", "jiubatequan"]}, + key: "chaozhiyueka", del_time: {$exists: false} }; let users = (await G.mongodb.collection("payLogNew").find(w).toArray()).filter( @@ -263,31 +321,25 @@ async function tequanLiBaoSendPrize() { 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; - } + uid2Prize[uid].push({a: "item", t: "4", n: 30}); }); - let title = "特权奖励发放"; - let content = "特权奖励发放"; + let title = "超值月卡优化"; + let content = "这是您的补偿,请查收!"; + let lngTitle = { + ja: "お得月パス仕様改善", + 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: "투자 시스템 개선으로 인한 보상을 보내드립니다.", + tw: "這是您的補償內容,煩請查收!" + }; + for (const [uid, sendPrize] of Object.entries(uid2Prize)) { // 发放邮件 await EmailFun.addEmail({ @@ -296,80 +348,502 @@ async function tequanLiBaoSendPrize() { 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}} ) + + console.log(`玩家${uid}超值月卡奖励补发完成...`); + } +} + +/** + * "zhongshenka" + 标题:终身卡优化 + ja:永久パス仕様改善 + tw:永久通行證改善 + ko:영구 패스 시스템 개선 + en: Lifetime Pass optimization + + 內文: 这是您的补偿,请查收! + ja:仕様改善に伴う補填を発送させていただきました。ご確認ください。 + 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: "永久パス仕様改善", + 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: "투자 시스템 개선으로 인한 보상을 보내드립니다.", + tw: "這是您的補償內容,煩請查收!" + }; + + for (const [uid, sendPrize] of Object.entries(uid2Prize)) { + // 发放邮件 + await EmailFun.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}} + ) + + console.log(`玩家${uid}终身卡奖励补发完成...`); } } -/* -刷新所有玩家各档位VIP礼包到未购买状态 -* */ +/** + "qingbaotequan" + 标题:资讯特权优化 + ja:情報特権仕様改善 + tw:資訊特權改善 + ko:정보 특권 시스템 개선 + en: Intel Benefit optimization + + 內文:这是您的补偿,请查收! + ja:仕様改善に伴う補填を発送させていただきました。ご確認ください。 + 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: "情報特権仕様改善", + 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: "투자 시스템 개선으로 인한 보상을 보내드립니다.", + tw: "這是您的補償內容,煩請查收!" + }; + for (const [uid, sendPrize] of Object.entries(uid2Prize)) { + // 发放邮件 + await EmailFun.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:作戦特権仕様改善 tw:作戰特權改善 + ko:작전 특권 시스템 개선 + en: Strategy Benefit optimization + + 內文:这是您的补偿,请查收! + ja:仕様改善に伴う補填を発送させていただきました。ご確認ください。 + 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: "情報特権仕様改善", + 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: "투자 시스템 개선으로 인한 보상을 보내드립니다.", + tw: "這是您的補償內容,煩請查收!" + }; + for (const [uid, sendPrize] of Object.entries(uid2Prize)) { + // 发放邮件 + await EmailFun.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:資産特権仕様改善 + tw:資産特權改善 + ko:자산 특권 시스템 개선 + en: Asset Benefit optimization + + 內文:这是您的补偿,请查收! + ja:仕様改善に伴う補填を発送させていただきました。ご確認ください。 + 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: "資産特権仕様改善", + 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: "투자 시스템 개선으로 인한 보상을 보내드립니다.", + tw: "這是您的補償內容,煩請查收!" + }; + for (const [uid, sendPrize] of Object.entries(uid2Prize)) { + // 发放邮件 + await EmailFun.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:ガチャ特権仕様改善 + tw:抽獎特權改善 + ko:모집 특권 시스템 개선 + en: Gacha Benefit optimization + + 內文:这是您的补偿,请查收! + ja:仕様改善に伴う補填を発送させていただきました。ご確認ください。 + 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: "ガチャ特権仕様改善", + 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: "투자 시스템 개선으로 인한 보상을 보내드립니다.", + tw: "這是您的補償內容,煩請查收!" + }; + for (const [uid, sendPrize] of Object.entries(uid2Prize)) { + // 发放邮件 + await EmailFun.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() { let w = {"type": "chongzhi"}; await G.mongodb.collection("playerInfo").updateMany(w, {"giftBy": {}}); } -/* -人才计划调整 -1、线上已有该活动的玩家,保留次数进度;达到新加档位可领取的奖励则直接领取 -2、线上已购买该活动328计费点的玩家,每次购买记录补发招募卡*20,; -3、线上已购买该活动648计费点的玩家,每次购买记录补发招募卡*40,; -* */ +/** + 人才计划调整 + 1、线上已有该活动的玩家,保留次数进度;达到新加档位可领取的奖励则直接领取 + **/ 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} + 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 + } }; - 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, + // 中间插入了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.concat(await G.mongodb.cEvent(`yangchengmubiao${hdid[0]}`).find().toArray()); + datas.concat(await G.mongodb.cEvent(`yangchengmubiao${hdid[1]}`).find().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 }); - await G.mongodb.collection("payLogNew").updateMany( - Object.assign({uid: uid}, w), {$set: {patch: 1, del_time: G.time}} + 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}人才计划数据完成...`); } } -/*等级基金调整 -1、已购买等级基金的玩家且未领取完成的玩家,剩余奖励邮件一次性补发; -2、未购买的玩家活动刷新到新版本; -3、刷新等级基金到未购买状态; -* */ +/** + * 标题:等级基金优化 + * ja:レベル投資仕様改善 + * tw:等級基金改善 + * ko:레벨 투자 시스템 개선 + * en: Level Investment optimization + + * 內文: + * 这是您的补偿,请查收! + * ja:仕様改善に伴う補填を発送させていただきました。ご確認ください。 + * 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}} // 激活了的玩家 @@ -378,9 +852,152 @@ async function dengjiJiJinReSet() { (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"]; + 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)}} ).toArray() @@ -404,6 +1021,20 @@ async function dengjiJiJinReSet() { }); }) + let title = "等级基金优化"; + let content = "这是您的补偿,请查收!"; + let lngTitle = { + ja: "レベル投資仕様改善", + 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: "투자 시스템 개선으로 인한 보상을 보내드립니다.", + tw: "這是您的補償內容,煩請查收!" + }; for (const [uid, sendPrize] of Object.entries(uid2Prize)) { // 发放邮件 await EmailFun.addEmail({ @@ -412,6 +1043,8 @@ async function dengjiJiJinReSet() { 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}} @@ -420,15 +1053,29 @@ async function dengjiJiJinReSet() { await G.mongodb.collection("event").updateMany( {type: "dengjijijin", uid: uid}, {"$set": {uid: `${uid}_patch_del`}} ); + console.log(`玩家${uid}等级基金奖补发完成...`); } } -/*关卡基金调整 -1、已购买关卡基金的玩家且未领取完成的玩家,剩余奖励邮件一次性补发; -2、未购买的玩家活动刷新到新版本; -3、刷新关卡基金到未购买状态; -* */ +/** + * 标题:关卡基金优化 + * ja:ステージ投資仕様改善 + * tw:關卡基金改善 + * ko:스테이지 투자 시스템 개선 + * en: Stage Investment optimization + * + * 內文:这是您的补偿,请查收! + * ja:仕様改善に伴う補填を発送させていただきました。ご確認ください。 + * 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"}; // 激活了的玩家 @@ -437,9 +1084,112 @@ async function guanqiaJiJinReSet() { (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"]; + 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( @@ -468,6 +1218,20 @@ async function guanqiaJiJinReSet() { }); }) + let title = "关卡基金优化"; + let content = "这是您的补偿,请查收!"; + let lngTitle = { + ja: "ステージ投資仕様改善", + 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: "투자 시스템 개선으로 인한 보상을 보내드립니다.", + tw: "這是您的補償內容,煩請查收!" + }; for (const [uid, sendPrize] of Object.entries(uid2Prize)) { // 发放邮件 await EmailFun.addEmail({ @@ -476,6 +1240,8 @@ async function guanqiaJiJinReSet() { 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}} @@ -484,15 +1250,29 @@ async function guanqiaJiJinReSet() { await G.mongodb.collection("event").updateMany( {type: "guanqiajijin", uid: uid}, {"$set": {uid: `${uid}_patch_del`}} ); + console.log(`玩家${uid}关卡基金奖补发完成...`); } } -/*通行证基金调整 -1、已购买通行证基金的玩家且未领取完成的玩家,剩余奖励邮件一次性补发; -2、未购买的玩家活动刷新到新版本; -3、刷新通行证基金到未购买状态; -* */ +/** + * 标题:特别通行证优化 + * ja:特別通行証仕様改善 + * tw:特別通行證改善 + * ko:특별 통행증 시스템 개선 + * en: Special Permit optimization + + * 內文:这是您的补偿,请查收! + * ja:仕様改善に伴う補填を発送させていただきました。ご確認ください。 + * 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"}; @@ -502,9 +1282,260 @@ async function dayjiJiJinReSet() { (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"]; + 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)}} @@ -529,6 +1560,20 @@ async function dayjiJiJinReSet() { }); }) + let title = "特别通行证优化"; + let content = "这是您的补偿,请查收!"; + let lngTitle = { + ja: "特別通行証仕様改善", + 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: "투자 시스템 개선으로 인한 보상을 보내드립니다.", + tw: "這是您的補償內容,煩請查收!" + }; for (const [uid, sendPrize] of Object.entries(uid2Prize)) { // 发放邮件 await EmailFun.addEmail({ @@ -537,6 +1582,8 @@ async function dayjiJiJinReSet() { 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}} @@ -545,20 +1592,31 @@ async function dayjiJiJinReSet() { await G.mongodb.collection("event").updateMany( {type: "dayjijin", uid: uid}, {"$set": {uid: `${uid}_patch_del`}} ); + + console.log(`玩家${uid}通行证基金奖补发完成...`); } } -/*月基金调整 -1、已购买128、328月基金的玩家且未领取完成的玩家,剩余奖励邮件一次性补发; -2、未购买的玩家活动刷新到新版本; -3、刷新月基金到未购买状态; -* */ -async function yueJiJinReSet() { - let proIdList = [ - "128jijin", - "328jijin", - ]; - let w = {key: {$in: proIdList}}; +/** + * 标题:特价基金优化 + * ja:特価投資仕様改善 + * tw:特價基金改善 + * ko:특가 투자 시스템 개선 + * en: Value Investment optimization + + * 內文:这是您的补偿,请查收! + * ja:仕様改善に伴う補填を発送させていただきました。ご確認ください。 + * 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( // 过滤没有结束时间 或者 有结束时间 但是没有过期的 @@ -566,22 +1624,51 @@ async function yueJiJinReSet() { ); // 没激活不处理 - let _users = await G.mongodb.collection("event").find( + let _users = await G.mongodb.cEvent(`${128}jijin`).find( { - "type": {"$in": proIdList}, "uid": {"$in": _payList.map(pay => pay.uid)} } ).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 }[] } = {}; - 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) => { // 领过了 @@ -592,8 +1679,20 @@ async function yueJiJinReSet() { }); }) - let title = "月度基金未领取奖励发放"; - let content = "月度基金未领取奖励发放"; + let title = "特价基金优化"; + let content = "这是您的补偿,请查收!"; + let lngTitle = { + ja: "特価投資仕様改善", + 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: "투자 시스템 개선으로 인한 보상을 보내드립니다.", + tw: "這是您的補償內容,煩請查收!" + }; for (const [uid, sendPrize] of Object.entries(uid2Prize)) { // 发放邮件 await EmailFun.addEmail({ @@ -602,15 +1701,139 @@ async function yueJiJinReSet() { 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: {$in: proIdList}, uid: uid}, {"$set": {uid: `${uid}_patch_del`}} + await G.mongodb.cEvent(`${128}jijin`).updateMany( + {uid: uid}, {"$set": {uid: `${uid}_patch_del`}} ); + + console.log(`玩家${uid}月度128基金奖补发完成...`); + } +} + +/** + * 标题:特别基金优化 + * ja:特別投資仕様改善 + * tw:特別基金改善 + * ko:특별 투자 시스템 개선 + * en: Special Investment optimization + + * 內文:这是您的补偿,请查收! + * ja:仕様改善に伴う補填を発送させていただきました。ご確認ください。 + * 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)} + } + ).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: "特別投資仕様改善", + 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: "투자 시스템 개선으로 인한 보상을 보내드립니다.", + tw: "這是您的補償內容,煩請查收!" + }; + for (const [uid, sendPrize] of Object.entries(uid2Prize)) { + // 发放邮件 + await EmailFun.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}, {"$set": {uid: `${uid}_patch_del`}} + ); + + console.log(`玩家${uid}月度128基金奖补发完成...`); } } @@ -618,31 +1841,29 @@ async function start() { //连接mongodb await initMongoDB(); - // 首冲调整 await shouChongReSet(); - // 超值月卡、至尊月卡、永久卡的线上玩家脚本 - await yuekaSendPrize(); - // 特权礼包脚本需求 - await tequanLiBaoSendPrize(); - // 刷新所有玩家各档位VIP礼包到未购买状态 + 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 yueJiJinReSet(); + await yue128JiJinReSet(); + await yue328JiJinReSet(); } -//定义全局变量 ctor(); -//启动服务 start().then(() => { - process.exit() + setInterval(() => { + console.log(new Date().format("MM-dd hh:mm:ss")); + }, 1000) + console.log("逻辑执行完成...等待退出!!!"); });