✨ feat(37需求): 推送添加开关

This commit is contained in:
luying
2023-04-10 15:55:09 +08:00
parent de6f6a9ec1
commit 63712b1456
7 changed files with 55 additions and 18 deletions
+21 -8
View File
@@ -12,6 +12,7 @@ import { pushMsg37 } from "./sdkService";
import { RoleModel, RoleType } from "../db/Role";
import { nowSeconds } from "../pubUtils/timeUtil";
import { GVGLeagueModel } from "../db/GVGLeague";
import { resolve } from "bluebird";
export async function sendMessageToAllWithSuc(route: string, data: any, filterCb?: ({ lv, topLineupCe }) => boolean) {
await sendMessageToAll(route, resResult(STATUS.SUCCESS, data), filterCb);
@@ -281,12 +282,24 @@ export async function pushClientMsg(type: SDK_PUSH_MSG_TYPE) {
if(!needPushMsg()) return;
let { target, audiences } = targetObj;
let t = Date.now();
for(let audience of audiences) {
for(let i = 0; i < audiences.length; i++) {
let audience = audiences[i];
// console.log(target, audience)
if(audience) await pushMsg37(t, dicPushMessage, target, audience);
if(audience) {
await timeoutAsync(i * 10)
await pushMsg37(t.toString(), dicPushMessage, target, audience);
}
}
}
function timeoutAsync(time: number) {
return new Promise<void>((resolve) => {
setTimeout(() => {
resolve();
}, time);
})
}
async function getPushTarget(playerType: number): Promise<{ target: SDK_PUSH_TARGET_TYPE, audiences: string[] }> {
let uids: number[] = [];
switch(playerType) {
@@ -304,7 +317,7 @@ async function getPushTarget(playerType: number): Promise<{ target: SDK_PUSH_TAR
if(len == 1) return { target: SDK_PUSH_TARGET_TYPE.SINGLE, audiences: [uids.join()] };
let audiences: string[] = [];
for(let i = 0; i < Math.ceil(len/200); i++) {
audiences.push(uids.slice(i * 200, i * 200 + 200 - 1).join())
audiences.push(uids.slice(i * 200, i * 200 + 200).join())
}
return { target: SDK_PUSH_TARGET_TYPE.LIST, audiences };
}
@@ -318,7 +331,7 @@ async function getHasGuildPlayers() {
if(players.length == 0) break;
createdAt = players[players.length -1].createdAt;
players.forEach(player => {
if(player.userInfo && player.userInfo.channelInfo && player.quitTime != player.loginTime) uids.push(player.userInfo.channelInfo.uid);
if(player.userInfo && player.userInfo.channelInfo && player.quitTime != player.loginTime && !player.isClosePush) uids.push(player.userInfo.channelInfo.uid);
});
}
return uids;
@@ -331,10 +344,10 @@ async function getHasLeaguePlayers() {
for(let { members } of leagues) roleIds.push(...members.map(member => member.roleId));
let len = roleIds.length;
for(let i = 0; i < Math.ceil(len/1000); i++) {
let curRoleIds = roleIds.slice(i * 1000, i * 1000 + 1000 - 1);
let players = await RoleModel.findByRoleIds(curRoleIds, 'userInfo.channelInfo');
let curRoleIds = roleIds.slice(i * 1000, i * 1000 + 1000);
let players = await RoleModel.findByRoleIds(curRoleIds, 'userInfo.channelInfo isClosePush');
players.forEach(player => {
if(player.userInfo && player.userInfo.channelInfo && player.quitTime != player.loginTime) uids.push(player.userInfo.channelInfo.uid);
if(player.userInfo && player.userInfo.channelInfo && player.quitTime != player.loginTime && !player.isClosePush) uids.push(player.userInfo.channelInfo.uid);
});
}
return uids;
@@ -349,7 +362,7 @@ async function getAfkPlayers() {
if(players.length == 0) break;
createdAt = players[players.length -1].createdAt;
players.forEach(player => {
if(player.userInfo && player.userInfo.channelInfo && player.quitTime != player.loginTime) uids.push(player.userInfo.channelInfo.uid);
if(player.userInfo && player.userInfo.channelInfo && player.quitTime != player.loginTime && !player.isClosePush) uids.push(player.userInfo.channelInfo.uid);
});
}
return uids;