Merge remote-tracking branch 'origin/feature/xiaofeijingsai' into release

# Conflicts:
#	src/shared/protocols/serviceProto.ts
This commit is contained in:
dy 2023-12-22 22:43:08 +08:00
commit 5ed699a64a
16 changed files with 1617 additions and 518 deletions

View File

@ -0,0 +1,91 @@
import {ApiCall} from "tsrpc";
import {ReqOpen, ResOpen} from "../../../shared/protocols/event/xiaofeijingsai/PtlOpen";
import {HuoDongFun} from "../../../public/huodongfun";
/**
*
* redis缓存120秒
*
* @param call
*/
export default async function (call: ApiCall<ReqOpen, ResOpen>) {
let ioList = await G.ioredis.get(`rank:xiaofeijingsai`);
if (ioList) {
let myData = await getMyData(call, JSON.parse(ioList))
return call.succ({list: JSON.parse(ioList), myData})
}
let _hd = (await HuoDongFun.gethdList(call, 11))[0]
if (!_hd) return call.errorCode(-1)
let limit = _hd.data?.rank?.slice(-1)?.[0]?.rank?.slice(-1)?.[0] || call.req.limit || 100
let rmbuse = await G.mongodb.collection('rmbuse').aggregate([
{$match: {isAdd: false, cTime: {$gte: _hd.stime, $lte: _hd.etime}}},
{$group: {_id: "$uid", total: {$sum: "$change"}}},
{$sort: {total: 1}},
{$limit: limit}
]).toArray()
let list: any = rmbuse.map(i => ({...i, total: R.negate(i.total)}))
let rankList = sortRankList(_hd.data.rank, list)
let users = await G.mongodb.collection('user').find({uid: {$in: rankList.map(i => i._id).filter(i => i._id != 'system')}}).toArray()
rankList = rankList.map(i => ({...i, player: users.find(v => v.uid == i._id) || {}}))
// 活动结束前半小时缓存过期时间改为10秒
let exTime = (G.time + 1800) > _hd.etime ? 10 : 120
G.ioredis.setex(`rank:xiaofeijingsai`, exTime, JSON.stringify(rankList));
let myData = await getMyData(call, rankList, _hd)
call.succ({list: rankList, myData})
}
/**
* system占位
* @param rank
* @param list
*/
export function sortRankList(rank, list) {
let rankList = []
let ccc = 0
rank.map(i => {
for (let k = i.rank[0] - 1; k < i.rank[1]; k++) {
if (list[k]?.total >= i.need[0].n) {
rankList.push({...list[k - ccc], rank: k})
} else {
rankList.push({_id: 'system', total: i.need[0].n, rank: k, player: {}})
ccc += 1
}
}
})
return R.sort((a, b) => a.rank - b.rank)(rankList)
}
// 获取自己的信息
async function getMyData(call, rankList, _hd?) {
let myData = rankList.find(i => i._id == call.uid)
if (myData) return myData
if (!_hd) {
_hd = (await HuoDongFun.gethdList(call, 11))[0]
}
let myCut = (await G.mongodb.collection('rmbuse').aggregate([
{$match: {uid: call.uid, isAdd: false, cTime: {$gte: _hd.stime, $lte: _hd.etime}}},
{$group: {_id: "$uid", total: {$sum: "$change"}}}
]).toArray())[0]
let myUser = await G.mongodb.collection('user').findOne({uid: call.uid})
if (!myCut) {
myCut = {_id: myUser.uid, total: 0}
}
return {player: myUser, ...myCut, total: R.negate(myCut.total), rank: -1}
}

View File

@ -122,11 +122,21 @@
"shengdanBullet": {
"id": "shengdanBullet",
"name": "intr_attr_name_14",
"undefined": "圣诞子弹",
"undefined": "圣诞打靶币",
"colour": 5,
"icon": "icon_chegaipq",
"sicon": "icon_chegaipq",
"describe": "intr_attr_describe_14",
"advancedEffects": "ani_xiangzikuang"
},
"jingxuanbi": {
"id": "jingxuanbi",
"name": "intr_attr_name_15",
"undefined": "每日精选兑换币",
"colour": 4,
"icon": "icon_chegaipq",
"sicon": "icon_chegaipq",
"describe": "intr_attr_describe_15",
"advancedEffects": ""
}
}

View File

@ -33,10 +33,10 @@
},
//136礼包
'136Gift': [
{ payId: '136Gift1', prize: [] },
{ payId: '136Gift1', prize: [], bonus: [{"a": "attr", "t": "jingxuanbi", "n": 10}] },
{ prize: [{"a": "attr", "t": "rmbmoney", "n": 10},{"a": "item", "t": "12", "n": 10},{"a": "attr", "t": "jinbi", "n": 10000}] },
{ payId: '136Gift2', prize: [] },
{ payId: '136Gift3', prize: [] },
{ payId: '136Gift4', prize: [] },
{ payId: '136Gift2', prize: [], bonus: [{"a": "attr", "t": "jingxuanbi", "n": 10}] },
{ payId: '136Gift3', prize: [], bonus: [{"a": "attr", "t": "jingxuanbi", "n": 10}] },
{ payId: '136Gift4', prize: [], bonus: [{"a": "attr", "t": "jingxuanbi", "n": 10}] },
],
}

View File

@ -2582,6 +2582,90 @@
"rarity": 4
}
},
"item^634": {
"itemId": "item^634",
"name": "紫橙干部碎片随机箱",
"i18nKey": "intr_item_name_634",
"detailI18nKey": "intr_item_describe_634",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "item",
"typeName": "道具",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 5
}
},
"item^635": {
"itemId": "item^635",
"name": "紫橙装备碎片随机箱",
"i18nKey": "intr_item_name_635",
"detailI18nKey": "intr_item_describe_635",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 120,
"typeId": "item",
"typeName": "道具",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 5
}
},
"item^636": {
"itemId": "item^636",
"name": "紫橙红干部碎片随机箱",
"i18nKey": "intr_item_name_636",
"detailI18nKey": "intr_item_describe_636",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 244,
"typeId": "item",
"typeName": "道具",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 5
}
},
"item^637": {
"itemId": "item^637",
"name": "超级红色干部自选箱",
"i18nKey": "intr_item_name_637",
"detailI18nKey": "intr_item_describe_637",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 30000,
"typeId": "item",
"typeName": "道具",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 6
}
},
"item^5001": {
"itemId": "item^5001",
"name": "莱薇碎片",
@ -6845,6 +6929,489 @@
"rarity": 2
}
},
"item^50001": {
"itemId": "item^50001",
"name": "火力覆盖",
"i18nKey": "playerheadFrame_name_3",
"detailI18nKey": "intr_item_describe_50001",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "item",
"typeName": "道具",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 4
}
},
"item^50002": {
"itemId": "item^50002",
"name": "双枪",
"i18nKey": "playerheadFrame_name_4",
"detailI18nKey": "intr_item_describe_50002",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "item",
"typeName": "道具",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 4
}
},
"item^50003": {
"itemId": "item^50003",
"name": "武装炫耀",
"i18nKey": "playerheadFrame_name_6",
"detailI18nKey": "intr_item_describe_50003",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "item",
"typeName": "道具",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 4
}
},
"item^50004": {
"itemId": "item^50004",
"name": "血海",
"i18nKey": "playerheadFrame_name_7",
"detailI18nKey": "intr_item_describe_50004",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "item",
"typeName": "道具",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 4
}
},
"item^50005": {
"itemId": "item^50005",
"name": "破笼而出",
"i18nKey": "playerheadFrame_name_8",
"detailI18nKey": "intr_item_describe_50005",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "item",
"typeName": "道具",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 4
}
},
"item^50006": {
"itemId": "item^50006",
"name": "擂台",
"i18nKey": "playerheadFrame_name_9",
"detailI18nKey": "intr_item_describe_50006",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "item",
"typeName": "道具",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 4
}
},
"item^50007": {
"itemId": "item^50007",
"name": "破土而出",
"i18nKey": "playerheadFrame_name_10",
"detailI18nKey": "intr_item_describe_50007",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "item",
"typeName": "道具",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 4
}
},
"item^50008": {
"itemId": "item^50008",
"name": "赠礼",
"i18nKey": "playerheadFrame_name_11",
"detailI18nKey": "intr_item_describe_50008",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "item",
"typeName": "道具",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 4
}
},
"item^50009": {
"itemId": "item^50009",
"name": "圣诞氛围",
"i18nKey": "playerheadFrame_name_23",
"detailI18nKey": "intr_item_describe_50009",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "item",
"typeName": "道具",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 4
}
},
"item^50010": {
"itemId": "item^50010",
"name": "披星戴月",
"i18nKey": "playerheadFrame_name_24",
"detailI18nKey": "intr_item_describe_50010",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "item",
"typeName": "道具",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 4
}
},
"item^50101": {
"itemId": "item^50101",
"name": "冰天雪地",
"i18nKey": "playerChatFrame_name_6",
"detailI18nKey": "intr_item_describe_50101",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "item",
"typeName": "道具",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 4
}
},
"item^50102": {
"itemId": "item^50102",
"name": "海浪奔涌",
"i18nKey": "playerChatFrame_name_7",
"detailI18nKey": "intr_item_describe_50102",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "item",
"typeName": "道具",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 4
}
},
"item^50103": {
"itemId": "item^50103",
"name": "名扬四海",
"i18nKey": "playerheadFrame_name_15",
"detailI18nKey": "intr_item_describe_50103",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "item",
"typeName": "道具",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 4
}
},
"item^50104": {
"itemId": "item^50104",
"name": "圣诞快乐",
"i18nKey": "playerChatFrame_name_8",
"detailI18nKey": "intr_item_describe_50104",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "item",
"typeName": "道具",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 4
}
},
"item^50201": {
"itemId": "item^50201",
"name": "招贤纳士",
"i18nKey": "playerheadFrame_name_16",
"detailI18nKey": "intr_item_describe_50201",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "item",
"typeName": "道具",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 4
}
},
"item^50202": {
"itemId": "item^50202",
"name": "势如破竹",
"i18nKey": "playerheadFrame_name_17",
"detailI18nKey": "intr_item_describe_50202",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "item",
"typeName": "道具",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 4
}
},
"item^50203": {
"itemId": "item^50203",
"name": "被甲执兵",
"i18nKey": "playerheadFrame_name_18",
"detailI18nKey": "intr_item_describe_50203",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "item",
"typeName": "道具",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 4
}
},
"item^50204": {
"itemId": "item^50204",
"name": "锋芒毕露",
"i18nKey": "playerheadFrame_name_19",
"detailI18nKey": "intr_item_describe_50204",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "item",
"typeName": "道具",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 4
}
},
"item^50205": {
"itemId": "item^50205",
"name": "所向披靡",
"i18nKey": "playerheadFrame_name_20",
"detailI18nKey": "intr_item_describe_50205",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "item",
"typeName": "道具",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 4
}
},
"item^50206": {
"itemId": "item^50206",
"name": "传世藏品",
"i18nKey": "playerheadFrame_name_21",
"detailI18nKey": "intr_item_describe_50206",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "item",
"typeName": "道具",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 4
}
},
"item^50207": {
"itemId": "item^50207",
"name": "金戈铁马",
"i18nKey": "playerheadFrame_name_22",
"detailI18nKey": "intr_item_describe_50207",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "item",
"typeName": "道具",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 4
}
},
"item^50301": {
"itemId": "item^50301",
"name": "圣诞庆典:男",
"i18nKey": "playerModel_name_3",
"detailI18nKey": "intr_item_describe_50301",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "item",
"typeName": "道具",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 5
}
},
"item^50302": {
"itemId": "item^50302",
"name": "圣诞庆典:女",
"i18nKey": "playerModel_name_4",
"detailI18nKey": "intr_item_describe_50302",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "item",
"typeName": "道具",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 5
}
},
"equip^1001": {
"itemId": "equip^1001",
"name": "棉布头盔",
@ -10015,5 +10582,152 @@
"sellMaxCp": 500,
"rarity": 3
}
},
"attr^nexp": {
"itemId": "attr^nexp",
"name": "主角经验",
"i18nKey": "intr_attr_name_3",
"detailI18nKey": "intr_attr_describe_3",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "attr",
"typeName": "货币",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 4
}
},
"attr^rongyu": {
"itemId": "attr^rongyu",
"name": "荣誉勋章",
"i18nKey": "intr_attr_name_4",
"detailI18nKey": "intr_attr_describe_4",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "attr",
"typeName": "货币",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 4
}
},
"attr^payExp": {
"itemId": "attr^payExp",
"name": "VIP经验",
"i18nKey": "intr_attr_name_5",
"detailI18nKey": "intr_attr_describe_5",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "attr",
"typeName": "货币",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 5
}
},
"attr^guijinshu": {
"itemId": "attr^guijinshu",
"name": "贵金属",
"i18nKey": "intr_attr_name_6",
"detailI18nKey": "intr_attr_describe_6",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "attr",
"typeName": "货币",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 3
}
},
"attr^shengdanExp": {
"itemId": "attr^shengdanExp",
"name": "圣诞战令经验",
"i18nKey": "intr_attr_name_13",
"detailI18nKey": "intr_attr_describe_13",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "attr",
"typeName": "货币",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 5
}
},
"attr^shengdanBullet": {
"itemId": "attr^shengdanBullet",
"name": "圣诞打靶币",
"i18nKey": "intr_attr_name_14",
"detailI18nKey": "intr_attr_describe_14",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "attr",
"typeName": "货币",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 5
}
},
"attr^jingxuanbi": {
"itemId": "attr^jingxuanbi",
"name": "每日精选兑换币",
"i18nKey": "intr_attr_name_15",
"detailI18nKey": "intr_attr_describe_15",
"iconUrl": "https://ik.imagekit.io/g123/production-ctw-box/game-box/preview/6ffd84658d75d5247f7f01b2f00ae3e6beda7163237c025ff8f0a58c.png",
"value": 0,
"typeId": "attr",
"typeName": "货币",
"isStoreSupported": true,
"isAiSupported": true,
"attributes": {
"storeDisplayPrice": null,
"storeCategory": "",
"setQuantity": 1,
"purchaseLimit": 0,
"sellMinCp": 100,
"sellMaxCp": 500,
"rarity": 4
}
}
}

View File

@ -3978,7 +3978,7 @@
"hdid" : 11000, // 唯一活动id 消费竞赛
"htype" : 11, // 后端唯一识别标识
"stype" : 1100, // 前端唯一识别标识(看前端需要是否修改)
"ttype" : 0, // 0 按照开服时间计算1 玩家注册时间计算 4 屏蔽此活动
"ttype" : 4, // 0 按照开服时间计算1 玩家注册时间计算 4 屏蔽此活动
"stime" : 0, // 活动开始天数
"rtime" : 30, // 活动显示结束天数
"etime" : 30, // 活动实际结束
@ -3988,27 +3988,31 @@
"data" : {
//活动文本描述
intr: "xfjstips_1",
intr: "xfjstips_2",
intr2: "xfjstips_2",
//奖励邮件标题
mailTitle: "intr_xfjs_mailTitle",
//奖励邮件内容
mailDes: "intr_xfjs_mailDes",
//排名
rank: [
{
id: '1',
name: 'xfjstips_3',
rank:[1],
rank:[1,1],
need: [{'a': 'attr', 't': 'rmbmoney', 'n': 20000}],
prize: [{'a': 'item', 't': '13', 'n': 600}]
},
{
id: '2',
name: 'xfjstips_4',
rank:[2],
rank:[2,2],
need: [{'a': 'attr', 't': 'rmbmoney', 'n': 18000}],
prize: [{'a': 'item', 't': '13', 'n': 600}]
},
{
id: '3',
name: 'xfjstips_5',
rank:[3],
rank:[3,3],
need: [{'a': 'attr', 't': 'rmbmoney', 'n': 16000}],
prize: [{'a': 'item', 't': '13', 'n': 600}]
},
@ -4025,6 +4029,13 @@
rank:[11,30],
need: [{'a': 'attr', 't': 'rmbmoney', 'n': 12000}],
prize: [{'a': 'item', 't': '13', 'n': 600}]
},
{
id: '6',
name: 'xfjstips_8',
rank:[31,9999],
need: [{'a': 'attr', 't': 'rmbmoney', 'n': 12000}],
prize: [{'a': 'item', 't': '13', 'n': 600}]
}
]
}
@ -4033,7 +4044,7 @@
"hdid" : 12000, // 唯一活动id 累计购买礼包
"htype" : 12, // 后端唯一识别标识
"stype" : 1200, // 前端唯一识别标识(看前端需要是否修改)
"ttype" : 0, // 0 按照开服时间计算1 玩家注册时间计算 4 屏蔽此活动
"ttype" : 4, // 0 按照开服时间计算1 玩家注册时间计算 4 屏蔽此活动
"stime" : 0, // 活动开始天数
"rtime" : 30, // 活动显示结束天数
"etime" : 30, // 活动实际结束
@ -4041,17 +4052,14 @@
"icon": "icon_ljlibao",
"showtime" : "仅供参考,会复写正确值", // 自选礼包,如果存在多个活动,计费点不要设置一样;如果是一样,可能会存在付费一次,购买多次。
"data" : {
//活动文本描述
intr: "ljlibaotips_1",
intr: "ljlibaotips_2",
//礼包
gift: [
{
id: '1',
name: 'ljlibaotips_3',
need:[],
free: false,
payId: 'ljlibao_1',
//返利比
scale: 200,
buynum: 1,
prize:[
@ -4064,7 +4072,6 @@
},
{
id: '2',
name: 'ljlibaotips_4',
need:[],
free: false,
payId: 'ljlibao_2',
@ -4080,7 +4087,6 @@
},
{
id: '3',
name: 'ljlibaotips_5',
need:[],
free: false,
payId: 'ljlibao_3',
@ -4096,7 +4102,6 @@
},
{
id: '4',
name: 'ljlibaotips_6',
need:[],
free: false,
payId: 'ljlibao_4',
@ -4117,7 +4122,6 @@
},
{
id: '5',
name: 'ljlibaotips_7',
need:[],
free: false,
payId: 'ljlibao_5',
@ -4138,7 +4142,6 @@
},
{
id: '6',
name: 'ljlibaotips_8',
need:[],
free: false,
payId: 'ljlibao_6',
@ -4159,7 +4162,6 @@
},
{
id: '7',
name: 'ljlibaotips_9',
need:[],
free: false,
payId: 'ljlibao_7',
@ -4179,7 +4181,11 @@
]
},
],
//买X次可以领大奖
payRewardNum: 5,
//自选框掉落池
//配几组就显示有几个格子
//配置的是可选的道具
dlz: [
{
"1": {"a": "item", "t":"600", "n": 20},
@ -4224,5 +4230,58 @@
}
]
}
},
{
"hdid" : 13000, // 唯一活动id 充值分红包
"htype" : 13, // 后端唯一识别标识
"stype" : 1300, // 前端唯一识别标识(看前端需要是否修改)
"ttype" : 4, // 0 按照开服时间计算1 玩家注册时间计算 4 屏蔽此活动
"stime" : 0, // 活动开始天数
"rtime" : 30, // 活动显示结束天数
"etime" : 30, // 活动实际结束
"name": "fenhongbao",
"icon": "icon_fenhongbao",
"showtime" : "仅供参考,会复写正确值", // 自选礼包,如果存在多个活动,计费点不要设置一样;如果是一样,可能会存在付费一次,购买多次。
"data" : {
//活动文本描述
intr: "zuanshihongbao_5",
//分红包所需最低钻石数
price: 1000,
reset: 0,
//奖池总数量
totalmoney: 100000,
groupConf: {
//档位
base: {
loglimit:2000,
arr:[
{
//权重
"weight": 50,
//获得范围
"numrange": [1000,1500]
},
{
//权重
"weight": 30,
//获得范围
"numrange": [1500,2000]
},
{
//权重
"weight": 15,
//获得范围
"numrange": [2000,3000]
},
{
//权重
"weight": 5,
//获得范围
"numrange": [3000,8000]
}
]
}
}
}
}
]

View File

@ -1365,5 +1365,18 @@
"display": {
"lv": 15
}
},
"leigoulibao": {
"name": "leigoulibao",
"undefined": "累购礼包",
"and": {
"lv": 15
},
"or": {},
"time": 0,
"tips": "openCond_tips_96",
"display": {
"lv": 15
}
}
}

View File

@ -4119,7 +4119,7 @@
"name": "pay_name_djlb_2",
"undefined": "枪油补充包",
"time": 86400,
"buys": 0,
"buys": 3,
"needVip": 0,
"front": {},
"currency": "CNY"
@ -4145,7 +4145,7 @@
"name": "pay_name_djlb_1",
"undefined": "能量饮料补充包",
"time": 86400,
"buys": 0,
"buys": 2,
"needVip": 0,
"front": {},
"currency": "CNY"
@ -4171,7 +4171,7 @@
"name": "pay_name_djlb_12",
"undefined": "弹壳补充包",
"time": 86400,
"buys": 0,
"buys": 3,
"needVip": 0,
"front": {},
"currency": "CNY"
@ -4197,7 +4197,7 @@
"name": "pay_name_djlb_18",
"undefined": "装备蓝图补充包",
"time": 86400,
"buys": 0,
"buys": 3,
"needVip": 0,
"front": {},
"currency": "CNY"
@ -4217,7 +4217,7 @@
"name": "pay_name_mingwang_2",
"undefined": "名望礼包_68元",
"time": 86400,
"buys": 0,
"buys": 1,
"needVip": 0,
"front": {},
"currency": "CNY"
@ -4237,7 +4237,7 @@
"name": "pay_name_mingwang_3",
"undefined": "名望礼包_648元",
"time": 86400,
"buys": 0,
"buys": 2,
"needVip": 0,
"front": {},
"currency": "CNY"
@ -4257,7 +4257,7 @@
"name": "pay_name_mingwang_4",
"undefined": "名望礼包_128元",
"time": -1,
"buys": 0,
"buys": 1,
"needVip": 0,
"front": {},
"currency": "CNY"

View File

@ -511,7 +511,9 @@
"freeRefreshInterval": 0,
"freeRefreshNum": 0,
"shopItems": [
10001
10001,
10002,
10003
],
"showItem": [
{

View File

@ -6281,8 +6281,8 @@
"openDay": 1,
"buyNeed": [
{
"a": "item",
"t": "15",
"a": "attr",
"t": "jingxuanbi",
"n": 2800
}
],
@ -6296,6 +6296,60 @@
"vipAddbuyNum": []
}
],
"10002": [
{
"id": 10002,
"a": "item",
"t": 1,
"n": 10000,
"p": 1,
"colour": 4,
"buyNum": -1,
"openDay": 1,
"buyNeed": [
{
"a": "attr",
"t": "jingxuanbi",
"n": 1000
}
],
"sale": 10,
"needVip": 0,
"needZCCG": 0,
"lv": [
1,
9999
],
"vipAddbuyNum": []
}
],
"10003": [
{
"id": 10003,
"a": "item",
"t": 2,
"n": 10000,
"p": 1,
"colour": 4,
"buyNum": -1,
"openDay": 1,
"buyNeed": [
{
"a": "attr",
"t": "jingxuanbi",
"n": 1500
}
],
"sale": 10,
"needVip": 0,
"needZCCG": 0,
"lv": [
1,
9999
],
"vipAddbuyNum": []
}
],
"120001": [
{
"id": 120001,

View File

@ -211,7 +211,7 @@
"cost": [
{
"a": "attr",
"t": "rmbmoney",
"t": "jingxuanbi",
"n": 1
}
]

View File

@ -37,7 +37,8 @@ export type schedulerType =
| 'hbzb_zbs_clear'
| 'hbzb_zbs_group'
| 'wzry_zuanshi16to8'
| "cross_email_pull";
| "cross_email_pull"
| "xiaofeijingsai_local_ctor";
export class SchedulerManage {
static logTime = false;
@ -102,7 +103,7 @@ export abstract class Scheduler {
}
init(){
init() {
Scheduler.schedulers.push(this);
this.read().then(_ => {
this.log(`state: 准备完毕 预计下次执行时间:${new Date(this.startTime * 1000).format("YYYY-MM-DD hh:mm:ss")}`);

View File

@ -0,0 +1,69 @@
import {Scheduler, schedulerType} from './scheduler';
import {PublicShared} from "../../shared/public/public";
import {Wjjl} from "../../module/collection_wjjl";
import {ZhanLingTasks} from "../zhanling";
import {setGud} from '../gud';
import {HuoDongFun} from "../huodongfun";
import {EmailFun} from "../email";
import {sortRankList} from "../../api_s2c/event/xiaofeijingsai/ApiOpen";
/**
*
* 05
*/
export class Scheduler_xfjs_Local_Ctor extends Scheduler {
id: schedulerType = 'xiaofeijingsai_local_ctor';
time = 300;
name = '消费竞赛发奖定时器';
type: 'day' | 'week' = 'day';
// todo 测试
// get nextTime() {
// return G.time + 30;
// }
async read() {
await this.ctorStartTime();
this.isReady = false;
}
async start() {
let _hd = (await G.mongodb.collection('hdinfo').find({
htype: 11,
ttype: 0,
etime: {$lt: G.time, $gt: 99999999},
$or: [{isSendPrize: {$exists: false}}, {isSendPrize: false}],
}).sort({etime: -1}).limit(1).toArray())[0]
if (!_hd) return
let limit = _hd.data?.rank?.slice(-1)?.[0]?.rank?.slice(-1)?.[0] || 100
let rmbuse = await G.mongodb.collection('rmbuse').aggregate([
{$match: {isAdd: false, cTime: {$gte: _hd.stime, $lte: _hd.etime}}},
{$group: {_id: "$uid", total: {$sum: "$change"}}},
{$sort: {total: 1}},
{$limit: limit}
]).toArray()
let list: any = rmbuse.map(i => ({...i, total: R.negate(i.total)}))
let ranklist = sortRankList(_hd.data.rank, list)
R.forEach(i => {
let users = R.slice(i.rank[0] - 1, i.rank[1])(ranklist)
users.map(v => {
if (v._id == 'system') return
EmailFun.addEmail({
uid: v._id,
type: 'system',
title: _hd.data.mailTitle,
content: _hd.data.mailDes,
prize: i.prize,
contentInsertArr: [v.rank + 1]
});
})
})(_hd.data.rank)
await G.mongodb.collection('hdinfo').findOneAndUpdate({hdid: _hd.hdid}, {$set: {isSendPrize: true}})
}
}

View File

@ -505,7 +505,7 @@ export async function setDbIndexes() {
index.key,
option
);
console.log('创建索引成功', coll, index);
// console.log('创建索引成功', coll, index);
} catch (error) {
if (error.codeName == 'IndexKeySpecsConflict') {
//当相同索引存在,但是配置(如unique expireAfterSeconds)不同时,会收到这个报错
@ -519,7 +519,7 @@ export async function setDbIndexes() {
index.key,
option
);
console.log('创建索引成功', coll, index);
// console.log('创建索引成功', coll, index);
} catch (error) {
console.log('创建索引失败==>', coll, index, error.message);
}

View File

@ -27,6 +27,7 @@ import { clusterRunOnce } from './clusterUtils';
import { addListener } from './globalListener';
import { SchedulerManage } from './public/scheduler/scheduler';
import {CrossEmailPull} from "./public/scheduler/scheduler_cross_email_pull";
import {Scheduler_xfjs_Local_Ctor} from "./public/scheduler/scheduler_xiaofeijingsai";
export async function startAfter() {
//事件监听和定时器初始化
@ -70,6 +71,7 @@ export async function startAfter() {
new Scheduler_hbzb_zbs_local_prize().init();
new Scheduler_hbzb_zbs_local_ready().init();
new SchedulerKbzzAutoApply().init();
new Scheduler_xfjs_Local_Ctor().init();
new SchedulerSlzdClean().init();
new SchedulerSlzdPrize().init();

View File

@ -0,0 +1,18 @@
/**
*
*/
export type ReqOpen = {
limit?: number
};
export type ResOpen = {
list: data[]
myData: data
};
type data = {
_id: string,
total: number,
rank: number,
player: any
}

File diff suppressed because it is too large Load Diff