diff --git a/src/path_20231215.ts b/src/path_20231215.ts deleted file mode 100644 index 3775b04..0000000 --- a/src/path_20231215.ts +++ /dev/null @@ -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`}} - ); - } -} - -/*月基金调整 -1、已购买128、328月基金的玩家且未领取完成的玩家,剩余奖励邮件一次性补发; -2、未购买的玩家活动刷新到新版本; -3、刷新月基金到未购买状态; -* */ -async function yueJiJinReSet() { - let proIdList = [ - "128jijin", - "328jijin", - ]; - let w = {key: {$in: proIdList}}; - // 激活了的玩家 - let _payList = (await G.mongodb.collection("payLogNew").find(w).toArray()).filter( - // 过滤没有结束时间 或者 有结束时间 但是没有过期的 - (pay) => pay.values?.length > 0 && (!pay.values.slice(-1)[0].eTime || pay.values.slice(-1)[0].eTime > G.time) - ); - - // 没激活不处理 - let _users = await G.mongodb.collection("event").find( - { - "type": {"$in": proIdList}, - "uid": {"$in": _payList.map(pay => pay.uid)} - } - ).toArray(); - - let uid2Prize: { [uid: string]: { a: string, t: string, n: number }[] } = {}; - let prizeList128 = G.gc.yuedujijin.find(v => v.payId == "128jijin"); - let prizeList328 = G.gc.yuedujijin.find(v => v.payId == "328jijin"); - _users.forEach(user => { - let uid = user.uid; - let gotarr = user.rec; - if (!uid2Prize[uid]) uid2Prize[uid] = []; - - let prizeList = user.type == "128jijin" ? prizeList128.prize : prizeList328.prize; - // 没领的全发 - prizeList.forEach((onePrize, idx) => { - // 领过了 - if (gotarr.includes(idx)) { - return - } - uid2Prize[uid].push(onePrize) - }); - }) - - let title = "月度基金未领取奖励发放"; - let content = "月度基金未领取奖励发放"; - for (const [uid, sendPrize] of Object.entries(uid2Prize)) { - // 发放邮件 - await EmailFun.addEmail({ - uid: uid, - type: "system", - title: title, - content: content, - prize: sendPrize, - }); - - await G.mongodb.collection("payLogNew").updateMany( - Object.assign({uid: uid}, w), {$set: {patch: 1, del_time: G.time}} - ) - // 基金数据清除 - await G.mongodb.collection("event").updateMany( - {type: {$in: proIdList}, uid: uid}, {"$set": {uid: `${uid}_patch_del`}} - ); - } -} - -async function start() { - //连接mongodb - await initMongoDB(); - - // 首冲调整 - await shouChongReSet(); - // 超值月卡、至尊月卡、永久卡的线上玩家脚本 - await yuekaSendPrize(); - // 特权礼包脚本需求 - await tequanLiBaoSendPrize(); - // 刷新所有玩家各档位VIP礼包到未购买状态 - await resetVipLiBao(); - // 人才计划调整 - await rcjhReSet(); - // 等级基金调整 - await dengjiJiJinReSet(); - // 关卡基金调整 - await guanqiaJiJinReSet(); - // 通行证基金调整 - await dayjiJiJinReSet(); - // 月基金调整 - await yueJiJinReSet(); -} - -//定义全局变量 -ctor(); -//启动服务 -start().then(() => { - process.exit() -}); - -