推送:对单人推送函数抽象

This commit is contained in:
luying
2022-04-09 10:28:21 +08:00
parent f486a8d8a5
commit 26a649b213
32 changed files with 146 additions and 703 deletions
@@ -76,18 +76,6 @@ export class RefreshTaskHandler {
//获得点数
await ActivityRefreshTaskPointModel.addPoint(serverId, activityId, roleId, dailyItemData.point);
// let addPointActivityId = playerData.addPointActivityId;//点数关联其他活动id
// if (addPointActivityId) {
// let activityData = await ActivityModel.findActivity(addPointActivityId);
// if (activityData) {
// if (activityData.type === ACTIVITY_TYPE.NEW_HERO_GIFTS) {
// await newHeroGiftPoint(serverId, addPointActivityId, roleId, dailyItemData.point);
// let uids = [{ uid: roleId, sid }];
// this.app.get('channelService').pushMessageByUids('addPoint', resResult(STATUS.SUCCESS, { activityId: addPointActivityId, addPoint: dailyItemData.point }), uids);
// }
// }
// }
dailyItemData.receiveRewardCount += 1;
return resResult(STATUS.SUCCESS, Object.assign(result, {
param: { activityId, roundIndex, pageIndex, id, type },
@@ -3,12 +3,13 @@ import {Application, RouteRecord, FrontendOrBackendSession, HandlerCallback, pin
import { refresh } from '../../../services/refreshService';
import { checkPrivateChat, checkGuildChat, checkOtherChat, checkRoleName, checkGuildName } from "../../../services/sdkService";
import { resResult, checkWhiteList, genCode } from "../../../pubUtils/util";
import { BLOCK_TYPE, CHANNEL_PREFIX, MSG_TYPE, STATUS } from "../../../consts";
import { BLOCK_TYPE, CHANNEL_PREFIX, MSG_TYPE, PUSH_ROUTE, STATUS } from "../../../consts";
import { SERVER_DEBUG_MODE } from "../../../pubUtils/dicParam";
import { nowSeconds } from "../../../pubUtils/timeUtil";
import { getServerMainten } from "../../../services/gmService";
import { errlogger } from "../../../util/logger";
import { gameData } from "../../../pubUtils/data";
import { sendMessageToUser, sendMessageToUserWithSuc } from "../../../services/pushService";
export function globalFilter(app: Application) {
return new Filter(app);
}
@@ -98,7 +99,7 @@ Filter.prototype.before = async function (routeRecord: RouteRecord, msg: any, se
let isWhiteList = await checkWhiteList(this.app.get('env'), ip, uid, serverId);
if(isWhiteList) return next(null);
pinus.app.get('channelService').pushMessageByUids('onServerMaintenance', resResult(STATUS.SERVER_MAINTENANCE), [{ uid: roleId, sid }]);
sendMessageToUser(roleId, PUSH_ROUTE.SERVER_MAINTENANCE, resResult(STATUS.SERVER_MAINTENANCE), sid);
return next(new Error('globalFilter'), resResult(STATUS.SERVER_MAINTENANCE));
}
}
@@ -6,7 +6,7 @@ import { addItems } from '../../../services/role/rewardService';
import { RewardInter } from '../../../pubUtils/interface';
import { gameData, getExpByLv, getHeroExpByLv, getHeroLvByExp, getLvByExp } from '../../../pubUtils/data';
import { RoleModel, RoleType } from '../../../db/Role';
import { BLOCK_TYPE, GUILD_AUTH, GUILD_DISMISS_WAY, GUILD_JOB, GUILD_MASTER_CHANGE_WAY, GUILD_STATUS, GUILD_STRUCTURE, HERO_SYSTEM_TYPE, ITEM_CHANGE_REASON, MAIL_TYPE, REDIS_KEY, TA_EVENT } from '../../../consts';
import { BLOCK_TYPE, GUILD_AUTH, GUILD_DISMISS_WAY, GUILD_JOB, GUILD_MASTER_CHANGE_WAY, GUILD_STATUS, GUILD_STRUCTURE, HERO_SYSTEM_TYPE, ITEM_CHANGE_REASON, MAIL_TYPE, PUSH_ROUTE, REDIS_KEY, TA_EVENT } from '../../../consts';
import { GuildFormParam, SetHeroParam } from '../../../domain/backEndField/params';
import { GuildModel, GuildUpdateParam } from '../../../db/Guild';
import { getGuildChannelSid } from '../../../services/chatService';
@@ -23,6 +23,7 @@ import { PvpDefenseModel } from '../../../db/PvpDefense';
import { createHeroes } from '../../../services/role/createHero';
import { calculateCeWithHero } from '../../../services/playerCeService';
import { pushChangeGuildLeader, pushGuildDismiss, pushGuildInfoUpdate } from '../../../services/guildService';
import { sendMessageToUserWithSuc } from '../../../services/pushService';
let timer: NodeJS.Timer;
export default function (app: Application) {
@@ -56,10 +57,9 @@ export class GmRoleHandler {
let role = await RoleModel.updateRoleInfo(roleId, { lv: newLv, exp })
let r = new Rank(REDIS_KEY.USER_LV, { serverId: serverId });
await r.setRankWithRoleInfo(roleId, newLv, Date.now(), role);
let uids = [{ uid: roleId, sid }];
pinus.app.get('channelService').pushMessageByUids('onPlayerExpChange', resResult(STATUS.SUCCESS, {
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.PLAYER_EXP_CHANGE, {
isLvUp: false, lv: newLv, exp
}), uids);
}, sid);
}
return resResult(STATUS.SUCCESS);
}
@@ -1,6 +1,6 @@
import { Application, BackendSession, ChannelService, HandlerService, } from 'pinus';
import { resResult, getRandEelm, shouldRefresh, sortArrRandom } from '../../../pubUtils/util';
import { STATUS, GUILD_OPERATE, GUILD_AUTH, GUILD_JOB, GUILD_APPLY_TYPE, GUILD_STRUCTURE, GUILD_REC_TYPE, GUILD_STRUCTURE_NAME, MAIL_TYPE, REDIS_KEY, GUILD_SELECT, USER_GUILD_SELECT, TASK_TYPE, DEBUG_MAGIC_WORD, CHANNEL_PREFIX, MSG_TYPE, MSG_SOURCE, ITEM_CHANGE_REASON, TA_EVENT, GUILD_DISMISS_WAY, GUILD_MASTER_CHANGE_WAY, GUILD_QUIT_WAY } from '../../../consts';
import { STATUS, GUILD_OPERATE, GUILD_AUTH, GUILD_JOB, GUILD_APPLY_TYPE, GUILD_STRUCTURE, GUILD_REC_TYPE, GUILD_STRUCTURE_NAME, MAIL_TYPE, REDIS_KEY, GUILD_SELECT, USER_GUILD_SELECT, TASK_TYPE, DEBUG_MAGIC_WORD, CHANNEL_PREFIX, MSG_TYPE, MSG_SOURCE, ITEM_CHANGE_REASON, TA_EVENT, GUILD_DISMISS_WAY, GUILD_MASTER_CHANGE_WAY, GUILD_QUIT_WAY, PUSH_ROUTE } from '../../../consts';
import { UserGuildModel, UserGuildType } from '../../../db/UserGuild';
import { checkAuth, joinGuild, getGuildWithRefActive, getUserGuildWithRefActive, addActive, settleGuildWeekly, getMyGuildInfo, refreshUserGuild, setUserGuildSession, getInvitationList, addGuildRecord, pushChangeGuildLeader, pushGuildMemberQuit, pushGuildDismiss, pushGuildInfoUpdate } from '../../../services/guildService';
import { GuildModel, GuildType, GuildUpdateParam } from '../../../db/Guild';
@@ -27,6 +27,7 @@ import { guildInter } from '../../../pubUtils/interface';
import * as dicParam from '../../../pubUtils/dicParam';
import { reportTAEvent } from '../../../services/sdkService';
import { changeGuildActivity, guildDismisActivity } from '../../../services/activity/guildPayService';
import { sendMessageToUserWithSuc } from '../../../services/pushService';
export default function (app: Application) {
@@ -427,11 +428,10 @@ export class GuildHandler {
result.push(role.roleId);
let hisInfo = await getRoleOnlineInfo(role.roleId);
if (hisInfo.isOnline) {
let uids = [{ uid: role.roleId, sid: hisInfo.sid }];
let guild = <GuildType>apply.guild;
let leader = <RoleType>guild.leader;
let invitation = { applyCode: apply.applyCode, ...guild, leader: leader.roleName };
this.channelService.pushMessageByUids('onGuildInvite', resResult(STATUS.SUCCESS, { invitation }), uids);
sendMessageToUserWithSuc(role.roleId, PUSH_ROUTE.GUILD_INVITE, { invitation }, hisInfo.sid);
}
}
}
@@ -3,7 +3,7 @@ import { UserGuildModel } from '../../../db/UserGuild';
import { GuildModel } from '../../../db/Guild';
import { WishPoolReportModel } from '../../../db/WishPoolReport';
import { resResult, genCode } from '../../../pubUtils/util';
import { ITEM_CHANGE_REASON, STATUS } from '../../../consts';
import { ITEM_CHANGE_REASON, PUSH_ROUTE, STATUS } from '../../../consts';
import { getArmyWishPoolBaseByLv, getGoodById, getWishPoolReward } from '../../../pubUtils/data';
import { addItems, checkGoods, checkHeroEquips, checkHeroes, getHonourObject } from '../../../services/role/rewardService';
import { ITID, CONSUME_TYPE } from '../../../consts/constModules/itemConst';
@@ -15,6 +15,7 @@ import { getRoleOnlineInfo } from '../../../services/redisService';
import { ARMY } from '../../../pubUtils/dicParam';
import { guildInter } from '../../../pubUtils/interface';
import { getSeconds, getZeroPoint, nowSeconds } from '../../../pubUtils/timeUtil';
import { sendMessageToUserWithSuc } from '../../../services/pushService';
export default function(app: Application) {
return new WishPoolHandler(app);
}
@@ -124,8 +125,7 @@ export class WishPoolHandler {
let hisOnlineInfo = await getRoleOnlineInfo(wishRoleId);
if(hisOnlineInfo.isOnline && hisOnlineInfo.sid) {
// await addItems(wishRoleId, role.roleName, hisOnlineInfo.sid , [{ id : wishGood.goodId, count: 1 }], ITEM_CHANGE_REASON.WISH_POOL_DONATE);
this.app.channelService.pushMessageByUids('onWishGoodsRecive', resResult(STATUS.SUCCESS, { wishGoods: resWishGoods }), [{uid:wishRoleId, sid: hisOnlineInfo.sid}]);
sendMessageToUserWithSuc(wishRoleId, PUSH_ROUTE.WISH_GOODS_RECEIVE, { wishGoods: resWishGoods }, hisOnlineInfo.sid);
}
await WishPoolReportModel.addReport(code, wishRoleId, role.roleName , dntRoleId, dntRoleName, wishGood.goodId, 1);
let goods = await addItems(dntRoleId, dntRoleName, sid, [getHonourObject(dicWishReward.honourReward)], ITEM_CHANGE_REASON.WISH_POOL_DONATE);
@@ -1,6 +1,6 @@
import { Application, BackendSession, ChannelService, HandlerService, } from "pinus";
import { resResult, getRandEelm, getResStr, shouldRefresh, sortArrRandom, checkRoleIsRobot, getRobotSysType, makeRobotId, parseNumberList } from "../../../pubUtils/util";
import { STATUS, ROLE_SELECT, FRIEND_DROP_TYPE, FRIEND_RELATION_TYPE, POPULATE_TYPE, BLOCK_OPEATE, CONSUME_TYPE, ITID, HERO_SELECT, REDIS_KEY, MSG_SOURCE, MSG_TYPE, TASK_TYPE, ROBOT_SYS_TYPE, ITEM_CHANGE_REASON } from "../../../consts";
import { STATUS, ROLE_SELECT, FRIEND_DROP_TYPE, FRIEND_RELATION_TYPE, POPULATE_TYPE, BLOCK_OPEATE, CONSUME_TYPE, ITID, HERO_SELECT, REDIS_KEY, MSG_SOURCE, MSG_TYPE, TASK_TYPE, ROBOT_SYS_TYPE, ITEM_CHANGE_REASON, PUSH_ROUTE } from "../../../consts";
import { RoleModel, RoleType } from "../../../db/Role";
import { getTimeFun, getZeroPointD } from "../../../pubUtils/timeUtil";
import { FriendApplyModel } from "../../../db/FriendApply";
@@ -23,6 +23,7 @@ import { checkTaskWithRoles, checkTask } from "../../../services/task/taskServic
import { ComBattleTeamModel } from "../../../db/ComBattleTeam";
import { JewelModel } from "../../../db/Jewel";
import { getHeroesAttributes } from "../../../services/playerCeService";
import { sendMessageToUsersWithSuc, sendMessageToUserWithSuc } from "../../../services/pushService";
export default function (app: Application) {
@@ -155,11 +156,9 @@ export class FriendHandler {
let apply = await FriendApplyModel.createApply(hisRoleId, role);
resultRoleIds.push(hisRoleId);
let hisOnlineInfo = await getRoleOnlineInfo(hisRoleId);
let uids = [];
if (hisOnlineInfo.isOnline) {
uids.push({ uid: hisRoleId, sid: hisOnlineInfo.sid });
let myApply = await getMyApplyParam(apply.applyCode, role);
this.channelService.pushMessageByUids('onFriendApply', resResult(STATUS.SUCCESS, { apply: myApply }), uids);
sendMessageToUserWithSuc(hisRoleId, PUSH_ROUTE.FRIEND_APPLY, { apply: myApply }, hisOnlineInfo.sid);
}
}
@@ -240,7 +239,7 @@ export class FriendHandler {
list.push(param);
if (hisOnlineInfo.isOnline) {
let myParam = await getMyParamAsFriend(friendShip, role, friend.roleId);
this.channelService.pushMessageByUids('onFriendAdd', resResult(STATUS.SUCCESS, { friend: myParam }), [{ uid: friend.roleId, sid: hisOnlineInfo.sid }]);
sendMessageToUserWithSuc(friend.roleId, PUSH_ROUTE.FRIEND_APPLY, { friend: myParam }, hisOnlineInfo.sid);
}
resultApplyCodeList.push(apply.applyCode);
@@ -412,7 +411,7 @@ export class FriendHandler {
let hisOnlineInfo = await getRoleOnlineInfo(hisRoleId);
if(hisOnlineInfo) {
let myApply = await getMyApplyParam(apply.applyCode, role);
this.channelService.pushMessageByUids('onFriendApply', resResult(STATUS.SUCCESS, { apply: myApply }), [{uid: hisRoleId, sid: hisOnlineInfo.sid}]);
sendMessageToUserWithSuc(friend.roleId, PUSH_ROUTE.FRIEND_APPLY, { apply: myApply }, hisOnlineInfo.sid);
}
}
}
@@ -490,7 +489,8 @@ export class FriendHandler {
uids.push({ uid: relation.roleId, sid: hisOnlineInfo.sid });
}
}
this.channelService.pushMessageByUids('onFriendSendHeart', resResult(STATUS.SUCCESS, { roleId }), uids);
sendMessageToUsersWithSuc(PUSH_ROUTE.FRIEND_SEND_HEART, { roleId }, uids);
if (todaySendInc <= 0) return resResult(STATUS.FRIEND_HAS_SENT);
// 更新情谊值
@@ -11,7 +11,7 @@ import { findIndex, pick } from 'underscore';
import { SclResultInter, SclPosInter } from '../../../pubUtils/interface';
import { SchoolModel } from '../../../db/School';
import { getTeraphStrengthenResult, getSchoolList } from '../../../services/roleService'
import { HERO_SYSTEM_TYPE, LINEUP_NUM, ROLE_SELECT, REDIS_KEY, TASK_TYPE, DEFAULT_HEROES, DEFAULT_HERO_LV, DEFAULT_ITEMS, DEFAULT_EQUIPS, DEFAULT_GOLD, DEFAULT_COIN, DEBUG_MAGIC_WORD, COUNTER, DEFAULT_LV, ITEM_CHANGE_REASON } from '../../../consts';
import { HERO_SYSTEM_TYPE, LINEUP_NUM, ROLE_SELECT, REDIS_KEY, TASK_TYPE, DEFAULT_HEROES, DEFAULT_HERO_LV, DEFAULT_ITEMS, DEFAULT_EQUIPS, DEFAULT_GOLD, DEFAULT_COIN, DEBUG_MAGIC_WORD, COUNTER, DEFAULT_LV, ITEM_CHANGE_REASON, PUSH_ROUTE } from '../../../consts';
import { checkBattleHeroesByHid, roleLevelup } from '../../../services/normalBattleService';
import { Rank } from '../../../services/rankService';
import { updateUserInfo } from '../../../services/redisService';
@@ -26,6 +26,7 @@ import { UserModel } from '../../../db/User';
import { checkFilterWords, reportTAEvent, treatRoleName } from '../../../services/sdkService';
import { createHeroes } from '../../../services/role/createHero';
import { calculateCeWithHero, calculateCeWithRole } from '../../../services/playerCeService';
import { sendMessageToUser, sendMessageToUserWithSuc } from '../../../services/pushService';
export default function (app: Application) {
new HandlerService(app, {});
@@ -468,41 +469,41 @@ export class RoleHandler {
let sid = session.get('sid');
if (type == 1) {
pinus.app.channelService.pushMessageByUids('onPlayTime', resResult(STATUS.SUCCESS, {
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.PLAY_TIME, {
isGuest: true,
guestTime: 60 * 60, // 游客已体验时间
hasAuthenticated: false, // 是否进行过实名认证
isAdult: false, // 是否已成年
todayPlayTime: 60 * 60, // 今天已游戏时长
type: 1
}), [{ uid: roleId, sid: sid }]);
}, sid);
} else if (type == 2) {
pinus.app.channelService.pushMessageByUids('onPlayTime', resResult(STATUS.SUCCESS, {
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.PLAY_TIME, {
isGuest: false,
guestTime: 0, // 游客已体验时间
hasAuthenticated: true, // 是否进行过实名认证
isAdult: false, // 是否已成年
todayPlayTime: 60 * 60, // 今天已游戏时长
type: 2
}), [{ uid: roleId, sid: sid }]);
}, sid);
} else if (type == 3) {
pinus.app.channelService.pushMessageByUids('onPlayTime', resResult(STATUS.SUCCESS, {
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.PLAY_TIME, {
isGuest: false,
guestTime: 0, // 游客已体验时间
hasAuthenticated: true, // 是否进行过实名认证
isAdult: false, // 是否已成年
todayPlayTime: 3 * 60 * 60, // 今天已游戏时长
type: 3
}), [{ uid: roleId, sid: sid }]);
}, sid);
} else if (type == 4) {
pinus.app.channelService.pushMessageByUids('onPlayTime', resResult(STATUS.SUCCESS, {
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.PLAY_TIME, {
isGuest: false,
guestTime: 0, // 游客已体验时间
hasAuthenticated: true, // 是否进行过实名认证
isAdult: false, // 是否已成年
todayPlayTime: 1.5 * 60 * 60, // 今天已游戏时长
type: 4
}), [{ uid: roleId, sid: sid }]);
}, sid);
}
return resResult(STATUS.SUCCESS);
@@ -1,6 +1,6 @@
import { Application, BackendSession, pinus, HandlerService, } from "pinus";
import { resResult, parseGoodStr, getRandSingleEelm } from "../../../pubUtils/util";
import { STATUS, TASK_FUN_TYPE, SHOP_REFRESH_TYPE, KING_EXP_RATIO_TYPE, DEBUG_MAGIC_WORD, ITEM_CHANGE_REASON, ACTIVITY_TYPE, TASK_TYPE } from "../../../consts";
import { STATUS, TASK_FUN_TYPE, SHOP_REFRESH_TYPE, KING_EXP_RATIO_TYPE, DEBUG_MAGIC_WORD, ITEM_CHANGE_REASON, ACTIVITY_TYPE, TASK_TYPE, PUSH_ROUTE } from "../../../consts";
import { gameData } from "../../../pubUtils/data";
import { UserTaskRecModel } from "../../../db/UserTaskRec";
import { addItems } from "../../../services/role/rewardService";
@@ -17,6 +17,7 @@ import _ = require("underscore");
import { addActvityTaskPoint } from "../../../services/activity/activityService";
import { CheckTask } from "../../../services/task/taskObj";
import { ServerlistModel } from "../../../db/Serverlist";
import { sendMessageToUserWithSuc } from "../../../services/pushService";
export default function (app: Application) {
new HandlerService(app, {});
@@ -241,12 +242,9 @@ export class ShopHandler {
let { type } = msg
let userTask;
if (type == TASK_FUN_TYPE.DAILY) {
let uids = [{ uid: roleId, sid }];
// 转移每日任务
await removeHistoryTask(roleId, type, new Date(nowSeconds() * 1000 + 86400000));
pinus.app.get('channelService').pushMessageByUids('onDailyTaskRefresh', resResult(STATUS.SUCCESS, { taskList: [] }), uids);
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.DAILY_TASK_REFRESH, { taskList: [] }, sid);
await refDailyTaskBox(roleId, sid, true);
userTask = await UserTaskModel.updateInfo(roleId, { dailyTaskPoint: 0 });
@@ -3,15 +3,15 @@
*/
import { ActionPointModel, ActionPointType } from '../db/ActionPoint';
import { TASK_TYPE, STATUS, TA_EVENT, ITEM_CHANGE_REASON } from '../consts';
import { TASK_TYPE, STATUS, TA_EVENT, ITEM_CHANGE_REASON, PUSH_ROUTE } from '../consts';
import { checkTask } from './task/taskService';
import { getDicApByLv } from '../pubUtils/data';
import { pinus } from 'pinus';
import { resResult, shouldRefresh } from '../pubUtils/util';
import { RoleModel } from '../db/Role';
import { pick } from 'underscore';
import { AP } from '../pubUtils/dicParam';
import { reportTAEvent } from './sdkService';
import { sendMessageToUserWithSuc } from './pushService';
/**
* 获取当前体力
@@ -97,8 +97,7 @@ export async function setAp(serverId: number, roleId: string, ip: string, lv: nu
let apJson = await getApWithDataAp(roleId, ip, lv, dataAp);
if (changeAp != 0) {
let uids = [{ uid: roleId, sid }];
pinus.app.get('channelService').pushMessageByUids('onApUpdate', resResult(STATUS.SUCCESS, { apJson: { ...apJson, apBefore } }), uids);
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.AP_UPDATE, { apJson: { ...apJson, apBefore } }, sid);
}
return apJson
@@ -119,8 +118,7 @@ export async function setApBuyTimes(roleId: string, ip: string, lv: number, sid:
let apJson = { ap, maxAp, refTime, apMaxRemainTime, apRemainTime, buyTimes };
if(incTimes != 0) {
let uids = [{ uid: roleId, sid }];
pinus.app.get('channelService').pushMessageByUids('onApUpdate', resResult(STATUS.SUCCESS, { apJson }), uids);
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.AP_UPDATE, { apJson }, sid);
}
return apJson;
}
@@ -40,7 +40,7 @@ import { addTaskPassPoint, getTaskPassDataShow } from './taskPassService';
import { getGuildChannelSid } from '../chatService';
import { getGuildPayDataShow } from './guildPayService';
import { PopUpShopItemShow } from '../../domain/activityField/popUpShopField';
import { sendMessageToGuildWithSuc } from '../pushService';
import { sendMessageToGuildWithSuc, sendMessageToUser } from '../pushService';
/**
* 获取活动数据
@@ -423,12 +423,7 @@ export async function pushActivities(arr: pushActivityInter[], roleId: string, s
sid = onlineUser.sid;
}
if(!!sid && arr.length > 0) {
console.log(roleId, sid)
pinus.app.get('channelService').pushMessageByUids('onActivityUpdate',
resResult(STATUS.SUCCESS, {
activities: arr
}),
[{ uid: roleId, sid }]);
sendMessageToUser(roleId, PUSH_ROUTE.ACTIVITY_UPDATE, { activities: arr }, sid);
}
return arr
}
@@ -1,11 +1,12 @@
import moment = require("moment");
import { pinus } from "pinus";
import { ADDICTION_PREVENTION_CODE, ADULT_AGE, GUEST_MAX_TIME, STATUS } from "../consts";
import { ADDICTION_PREVENTION_CODE, ADULT_AGE, GUEST_MAX_TIME, PUSH_ROUTE, STATUS } from "../consts";
import { UserModel, UserType } from "../db/User";
import { getAge } from "../pubUtils/timeUtil";
import { resResult } from "../pubUtils/util";
import { incOnlineTime, setOnlineTime } from "./redisService";
import { checkTeeanAgerTime } from '../pubUtils/authenticateUtil';
import { sendMessageToUserWithSuc } from "./pushService";
export async function reportOneOnline(roleId: string, userCode: string, sid: string, isLogin: boolean = false, user?: UserType) {
if (!user) user = await UserModel.findUserByUserCode(userCode);
@@ -20,26 +21,26 @@ export async function reportOneOnline(roleId: string, userCode: string, sid: str
if (isGuest || !hasAuthenticated) {
if (sumTime > GUEST_MAX_TIME) {
pinus.app.channelService.pushMessageByUids('onPlayTime', resResult(STATUS.SUCCESS, {
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.PLAY_TIME, {
isGuest,
guestTime: sumTime, // 游客已体验时间
hasAuthenticated, // 是否进行过实名认证
isAdult, // 是否已成年
todayPlayTime: todaySumTime, // 今天已游戏时长
type: ADDICTION_PREVENTION_CODE.GUEST,
}), [{ uid: roleId, sid: sid }]);
}, sid);
}
} else {
let code = checkTeeanAgerTime(isAdult, todaySumTime);
if(code != ADDICTION_PREVENTION_CODE.SUCCESS) {
pinus.app.channelService.pushMessageByUids('onPlayTime', resResult(STATUS.SUCCESS, {
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.PLAY_TIME, {
isGuest,
guestTime: 0, // 游客已体验时间
hasAuthenticated, // 是否进行过实名认证
isAdult, // 是否已成年
todayPlayTime: todaySumTime, // 今天已游戏时长
type: code
}), [{ uid: roleId, sid: sid }]);
}, sid);
}
}
}
+2 -2
View File
@@ -13,7 +13,7 @@ import { getRoleOnlineInfo } from './redisService';
import { ChatInfoModel } from '../db/ChatInfo';
import { AccuseRecModel, AccueseParam } from '../db/AccuseRec';
import { getSimpleRoleInfo, getSimpleRoleInfos } from './roleService';
import { sendMessageToCityWithSuc, sendMessageToGuildWithSuc, sendMessageToServerWithSuc, sendMessageToTeam } from './pushService';
import { sendMessageToCityWithSuc, sendMessageToGuildWithSuc, sendMessageToServerWithSuc, sendMessageToTeam, sendMessageToUserWithSuc } from './pushService';
export * from './chatChannelService';
export * from './sysChatService';
@@ -130,7 +130,7 @@ export async function pushMsgToRole(msg: PrivateMessageType | GroupMessageType)
const { sid } = await getRoleOnlineInfo(targetRoleId);
if (sid) {
const roleInfo = await getSimpleRoleInfo(msg.roleId);
pinus.app.get('channelService').pushMessageByUids(ON_PRIVATE_MSG_ROUTE, resResult(STATUS.SUCCESS, { ...msg, roleInfo }), [{ uid: targetRoleId, sid }]);
sendMessageToUserWithSuc(msg.roleId, PUSH_ROUTE.PRIVATE_MSG, { ...msg, roleInfo }, sid);
}
}
+11 -25
View File
@@ -8,7 +8,7 @@ import { getCurTask, getPvpTask } from './task/taskService';
import { RoleType } from '../db/Role';
import { Application, FrontendOrBackendSession, pinus, RpcClient } from 'pinus';
import { resResult } from '../pubUtils/util';
import { STATUS, PUSH_BATCH, PUSH_INTERVAL, CONSUME_TYPE, HERO_SELECT, ENTERY_ROLE_PICK, JEWEL_SELECT, ITEM_SELECT, SKIN_SELECT } from '../consts';
import { STATUS, PUSH_BATCH, PUSH_INTERVAL, CONSUME_TYPE, HERO_SELECT, ENTERY_ROLE_PICK, JEWEL_SELECT, ITEM_SELECT, SKIN_SELECT, PUSH_ROUTE } from '../consts';
import { getAllShopList } from './shopService';
import { getGeneralRank, getRankFirstReward } from './rankService';
import { getFriendList, getApplyList } from './friendService';
@@ -32,7 +32,7 @@ import { getBattleListOfMain, getMainChapter } from './normalBattleService';
import { GuildType } from '../db/Guild';
import UserGuild, { UserGuildType } from '../db/UserGuild';
import { setPreDayActiveData, getAllGuildActivityStatus } from './guildActivity/guildActivityService';
import { getAllOnlineRoles } from './redisService';
import { getAllOnlineRoles, getAllServers } from './redisService';
import Item, { ItemModel } from '../db/Item';
import { PvpDefenseModel } from '../db/PvpDefense';
import { getDonation } from './donateService';
@@ -43,6 +43,7 @@ import { SkinModel } from '../db/Skin';
import { getAp } from './actionPointService';
import { HeroParam } from '../domain/roleField/hero';
import { pick } from 'underscore';
import { sendMessageToServerWithSuc, sendMessageToUser, sendMessageToUserWithSuc } from './pushService';
/**
* init: 初始的时候是否推送 true-推 false-不推
@@ -207,20 +208,17 @@ async function getModuleData(type: string, data: { role: RoleType, session: Fron
}
function pushEntryData<T>(type: string, roleId: string, sid: string, param: T) {
let uids = [{ uid: roleId, sid }];
let data = { type };
data[type] = param;
pinus.app.channelService.pushMessageByUids('onEntryData', resResult(STATUS.SUCCESS, data), uids);//通知在线玩家练兵场重置,
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.ENTRY_DATA, data, sid);
}
function pushEntryStart(roleId: string, sid: string) {
let uids = [{ uid: roleId, sid }];
pinus.app.channelService.pushMessageByUids('onEntryDataStart', resResult(STATUS.SUCCESS), uids);//通知在线玩家练兵场重置,
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.ENTRY_DATA_START, {}, sid);
}
function pushEntryEnd(roleId: string, sid: string) {
let uids = [{ uid: roleId, sid }];
pinus.app.channelService.pushMessageByUids('onEntryDataEnd', resResult(STATUS.SUCCESS), uids);//通知在线玩家练兵场重置,
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.ENTRY_DATA_END, {}, sid);
}
@@ -287,23 +285,11 @@ export async function everydayRefresh() {
}
async function pushRefreshTime() {
let allOnlineUsers = await getAllOnlineRoles();
let servers = await getAllServers();
let todayZeroPoint = getZeroPoint();
let n = Math.ceil(allOnlineUsers.length / PUSH_BATCH); // 一共多少批
// console.log(n)
let i = -1;
let interval = setInterval(() => {
if (++i < n) {
let users = allOnlineUsers.slice(i * PUSH_BATCH, (i + 1) * PUSH_BATCH - 1);
for (let { roleId, sid } of users) {
pinus.app.channelService.pushMessageByUids('onRefreshTime', resResult(STATUS.SUCCESS, {
todayZeroPoint
}), [{ uid: roleId, sid: sid }]);
}
} else {
clearInterval(interval);
}
}, PUSH_INTERVAL);
for(let serverId of servers) {
await sendMessageToServerWithSuc(serverId, PUSH_ROUTE.REFRESH_TIME, { todayZeroPoint }, true);
}
}
export async function kickUser(app: Application, uid: string, message = STATUS.LOGIN_ERR) {
@@ -314,7 +300,7 @@ export async function kickUser(app: Application, uid: string, message = STATUS.L
let roleId = session.get('roleId');
let sid = session.get('sid');
let uids = [{ uid: roleId, sid }];
app.get('channelService').pushMessageByUids('onRemoteLogin', resResult(message), uids);
sendMessageToUser(roleId, PUSH_ROUTE.REMOTE_LOGIN, sid);
});
}
await sessionService.akick(uid);
+3 -7
View File
@@ -2,11 +2,12 @@ import { FrontendOrBackendSession, pinus } from 'pinus';
import EventRecord, { EventRecordModel } from '../db/EventRecord';
import { RoleModel } from '../db/Role';
import { genCode, getRandEelmWithWeight, resResult, getRandSingleEelm } from '../pubUtils/util';
import { EVENT_STATUS, EVENT_RECORD_STATUS, EVENT_TYPE, EVENT_RANDOM_TYPE_ONE_OPEN, EVENT_QUIZ_NUM, EVENT_ANSWER_STATUS, FUNCS_ID } from '../consts';
import { EVENT_STATUS, EVENT_RECORD_STATUS, EVENT_TYPE, EVENT_RANDOM_TYPE_ONE_OPEN, EVENT_QUIZ_NUM, EVENT_ANSWER_STATUS, FUNCS_ID, PUSH_ROUTE } from '../consts';
import { EVENT_REFRESH_NUM } from '../consts';
import { STATUS } from '../consts/statusCode';
import { gameData } from '../pubUtils/data';
import { DicQuestion } from '../pubUtils/dictionary/DicQuestion';
import { sendMessageToUserWithSuc } from './pushService';
/**
* 从检查接口调用,检查是否有这么个战斗,顺便保存一下battleCode
@@ -266,12 +267,7 @@ function randomPosition(positionArr: number[], prePoint: Array<number>, curPoint
* @param msg
*/
function pushEventMsg(sid: string, roleId: string, msg: any ) {
let channelService = pinus.app.get('channelService');
channelService.pushMessageByUids('onSpecialEvent', resResult(STATUS.SUCCESS, msg), [{
uid: roleId,
sid: sid
}]);
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.SEND_EVENT, msg, sid);
}
/**
@@ -12,7 +12,7 @@ import { pinus } from "pinus";
import { getRandEelm, sortArrRandom, resResult, getRandResultByMember } from "../../pubUtils/util";
import { Rank } from "../rankService";
import { getTimeFun } from "../../pubUtils/timeUtil";
import { sendMessageToGuildWithSuc } from "../pushService";
import { sendMessageToGuildWithSuc, sendMessageToUserWithSuc } from "../pushService";
// 粮草先行
export class RaceActivityObject {
@@ -220,9 +220,7 @@ export class RaceActivityObject {
}
}
this.items.set(roleId, items);
let uids = [{uid: roleId, sid}];
pinus.app.get('channelService').pushMessageByUids('onRaceItemUpdate', resResult(STATUS.SUCCESS, { items: sendItems }), uids);
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.RACE_ITEM_UPDATE, { items: sendItems }, sid);
return items;
}
+2 -2
View File
@@ -16,7 +16,7 @@ import { UserGuildModel, UserGuildType } from '../db/UserGuild';
import { nowSeconds } from '../pubUtils/timeUtil';
import { GUILDACTIVITY } from '../pubUtils/dicParam';
import { ServerRecordModel } from '../db/ServerRecords';
import { sendMessageToGuildWithSuc } from './pushService';
import { sendMessageToGuildWithSuc, sendMessageToUsersWithSuc } from './pushService';
/**
* 获得boss界面
@@ -142,7 +142,7 @@ export async function pushBossHpMessage(code: string, serverId:number, bossHp:nu
let sid = arr[1];
return {uid, sid};
});
pinus.app.channelService.pushMessageByUids('onBossHpUpdate', resResult(STATUS.SUCCESS, {bossHp}), uids);
sendMessageToUsersWithSuc(PUSH_ROUTE.BOSS_HP_UPDATE, { bossHp }, uids);
if (isDelKey) {
delAsync(key);
}
+2 -5
View File
@@ -118,13 +118,10 @@ export async function joinGuild(code: string, guildName: string, lv: number, rol
if (sid) {
await addRoleToGuildChannel(roleId, sid, code);
await pinus.app.rpc.connector.connectorRemote.setOtherUserGuildSession.toServer(sid,[{ roleId, userGuild }]);
pinus.app.channelService.pushMessageByUids('onMemberJoinGuild', resResult(STATUS.SUCCESS, {
hasGuild: true,
code: code
}), [{ uid: roleId, sid }]);
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.MEMBER_JOIN_GUILD, { hasGuild: true, code }, sid);
session.set('guildCode', code);
let auctionInfo = await getAuction(code, session);
pinus.app.channelService.pushMessageByUids('onAuctionUpdate', resResult(STATUS.SUCCESS, auctionInfo), [{ uid: roleId, sid }]);
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.AUCTION_UPDATE, auctionInfo, sid);
changeGuildActivity(code, serverId, roleId, sid);
}
+2 -2
View File
@@ -16,7 +16,7 @@ import { GMMailRecordModel } from "../db/GMMailRecord";
import { BAG } from "../pubUtils/dicParam";
import { GuildModel, GuildType } from "../db/Guild";
import moment = require("moment");
import { sendMessageToGuildWithSuc, sendMessageToServerWithSuc } from "./pushService";
import { sendMessageToGuildWithSuc, sendMessageToServerWithSuc, sendMessageToUsersWithSuc } from "./pushService";
/**
* 获取邮件信息
@@ -248,7 +248,7 @@ export class SendMailFun {
for(let [roleId, mails ] of pushByRoleId) {
let uids = await this.getUids(roleId, myRoleId, mySid);
if(uids.length > 0 && mails.length > 0) {
pinus.app.channelService.pushMessageByUids('onMailsAdd', resResult(STATUS.SUCCESS, { mails }), uids);
sendMessageToUsersWithSuc(PUSH_ROUTE.MAILS_ADD, { mails }, uids);
}
}
@@ -4,7 +4,7 @@ import Role, { RoleModel, RoleType } from '../db/Role'
import { getLvByExp, getExpByLv, gameData, getDicApByLv } from '../pubUtils/data';
import { updateUserInfo } from './redisService';
// import { switchOnFunc } from './funcSwitchService';
import { FUNC_OPT_TYPE, TASK_TYPE, WAR_TYPE, STATUS, KING_EXP_RATIO_TYPE, ITEM_CHANGE_REASON, POP_UP_SHOP_CONDITION_TYPE, HERO_SYSTEM_TYPE } from '../consts';
import { FUNC_OPT_TYPE, TASK_TYPE, WAR_TYPE, STATUS, KING_EXP_RATIO_TYPE, ITEM_CHANGE_REASON, POP_UP_SHOP_CONDITION_TYPE, HERO_SYSTEM_TYPE, PUSH_ROUTE } from '../consts';
import { BackendSession, pinus } from 'pinus';
import { REDIS_KEY } from '../consts';
import { Rank } from './rankService';
@@ -17,6 +17,7 @@ import { WarStar } from '../domain/dbGeneral';
import { uniq } from 'underscore';
import { checkPopUpCondition } from './activity/popUpShopService';
import { calculateCeWithRole } from './playerCeService';
import { sendMessageToUser, sendMessageToUserWithSuc } from './pushService';
export async function roleLevelup(type: KING_EXP_RATIO_TYPE, roleId: string, kingExp: number = 0, session: BackendSession) {
const serverId = session.get('serverId');
@@ -75,12 +76,7 @@ export async function roleLevelup(type: KING_EXP_RATIO_TYPE, roleId: string, kin
}
// 推送
if(canGetExp && kingExp >= 0) {
let uids = [{ uid: roleId, sid }];
pinus.app.get('channelService').pushMessageByUids('onPlayerExpChange', resResult(STATUS.SUCCESS, {
isLvUp: newLv > lv,
lv: newLv,
exp: newExp
}), uids);
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.PLAYER_EXP_CHANGE, { isLvUp: newLv > lv, lv: newLv, exp: newExp }, sid);
}
return { actordata, lv: newLv, exp: newExp, kingExp: newExp - exp };
+6 -10
View File
@@ -1,5 +1,5 @@
import { UserOrderModel, UserOrderModelType } from '../db/UserOrder';
import { ACTIVITY_TYPE, ORDER_STATE, PAY_TYPE, REFUND_PRICE_TO_GOLD, STATUS, TASK_TYPE, TA_EVENT, TA_USERSET_TYPE } from '../consts';
import { ACTIVITY_TYPE, ORDER_STATE, PAY_TYPE, PUSH_ROUTE, REFUND_PRICE_TO_GOLD, STATUS, TASK_TYPE, TA_EVENT, TA_USERSET_TYPE } from '../consts';
import { dicRMB } from '../pubUtils/dictionary/DicRMB';
import { makeYuanbaoShopReward } from './activity/yuanbaoService';
import { RoleModel } from '../db/Role';
@@ -31,6 +31,7 @@ import { savePayLog } from '../pubUtils/logUtil';
import { recordFirstGift } from './activity/firstGiftService';
import { makeTaskPass } from './activity/taskPassService';
import { addGuildPay } from './activity/guildPayService';
import { sendMessageToUser } from './pushService';
/**
@@ -148,9 +149,7 @@ export async function makeOrder(orderInfo: UserOrderModelType, sid: string) {
await recordFirstGift(roleInfo, orderInfo.serverId);
}
pinus.app.get('channelService').pushMessageByUids('onPlayerDataChange', resResult(STATUS.SUCCESS, {
totalPay: roleInfo.totalPay
}), [{ uid: roleId, sid }]);
sendMessageToUser(roleId, PUSH_ROUTE.PLAYER_DATA_CHANGE, { totalPay: roleInfo.totalPay }, sid);
return {...rewardResult, roleInfo}
}
@@ -171,12 +170,11 @@ export async function settleOrder(order: UserOrderModelType, serverId: number, s
//推送
console.log('***** settleOrder', order.roleId, sid)
if(!!sid) {
pinus.app.channelService.pushMessageByUids('onOrder', resResult(STATUS.SUCCESS, {
sendMessageToUser(order.roleId, PUSH_ROUTE.ORDER, {
...result.data,
price: order.price,
state: order.state,
localOrderID: order.localOrderID
}), [{ uid: order.roleId, sid }]);
localOrderID: order.localOrderID}, sid);
}
//活动统计
addRechargeMoney(order.roleId, serverId, order.price);
@@ -308,9 +306,7 @@ export async function refundOrderFromRedisPub(message: string) {
let role = await RoleModel.incRoleInfo(order.roleId, { gold: -refundGold }, {});
let onlineUser = await getRoleOnlineInfo(order.roleId);
let sid = onlineUser.sid;
pinus.app.get('channelService').pushMessageByUids('onPlayerDataChange', resResult(STATUS.SUCCESS, {
gold: role.gold
}), [{uid: order.roleId, sid}]);
sendMessageToUser(order.roleId, PUSH_ROUTE.PLAYER_DATA_CHANGE, { gold: role.gold }, sid);
await UserOrderModel.refund(order.roleId, order.localOrderID, message);
return true
+3 -4
View File
@@ -10,7 +10,7 @@ import { HeroModel, HeroType, HeroUpdate } from '../db/Hero';
import { RoleUpdate, RoleType, RoleModel } from '../db/Role';
import { Rank } from './rankService';
import { HERO_SYSTEM_TYPE, REDIS_KEY } from '../consts';
import { HERO_SYSTEM_TYPE, PUSH_ROUTE, REDIS_KEY } from '../consts';
import { updateUserInfo } from './redisService';
import { GuildModel, GuildType } from '../db/Guild';
import { CalCe } from './role/calCe';
@@ -20,6 +20,7 @@ import { saveCeChangeLog } from '../pubUtils/logUtil';
import { JewelType } from '../db/Jewel';
import { SchoolModel } from '../db/School';
import { AttributeCal } from '../domain/roleField/attribute';
import { sendMessageToUserWithSuc } from './pushService';
interface Param {
isInitRole?: boolean,
@@ -334,9 +335,7 @@ export async function calculateCes(type: HERO_SYSTEM_TYPE, roleId: string, serve
saveCeChangeLog(role, roleInc, role.ce, type, changeHids);
updateRank(roleId, serverId, topLineupCe, role, pushHeros, guild);
let uids = [{ uid: roleId, sid }];
pinus.app.get('channelService').pushMessageByUids('onPlayerCeUpdate', resResult(STATUS.SUCCESS, { ce: role.ce, heros: pushHeros, topLineupCe }), uids);
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.PLAYER_CE_UPDATE, { ce: role.ce, heros: pushHeros, topLineupCe }, sid);
if(guild) {
await updateUserInfo(REDIS_KEY.GUILD_INFO, guild.code, [{ field: 'guildCe', value: guild.guildCe }]);
+2 -2
View File
@@ -46,8 +46,8 @@ export async function sendMessageToUser(roleId: string, route: string, data: any
sid = onlineUser.sid;
}
if (!!sid) {
uids.push({ uid: roleId, sid });
pinus.app.get('channelService').pushMessageByUids(route, data, uids);
uids.push({ uid: roleId, sid });
sendMessageToUsers(route, data, uids);
}
}
+4 -3
View File
@@ -8,6 +8,8 @@ import { refDailyTask, refDailyTaskBox } from './task/taskService'
// import { startEvent } from "./eventSercive";
import * as dicParam from '../pubUtils/dicParam';
import { dispatch } from "../pubUtils/dispatcher";
import { sendMessageToUserWithSuc } from "./pushService";
import { PUSH_ROUTE } from "../consts";
/**
* 刷新
@@ -17,14 +19,13 @@ export async function refresh(session: FrontendOrBackendSession) {
const roleId = session.get('roleId')||'test';
const sid = session.get('sid');
let uids = [{uid: roleId, sid}];
if(dicParam.SERVER_DEBUG_MODE.CURRENT_TIME != 1) {
pinus.app.get('channelService').pushMessageByUids('onPushCurrentTime', resResult(STATUS.SUCCESS, {time: Date.now()}), uids);
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.PUSH_CURRENT_TIME, { time: Date.now() }, sid);
} else {
let guilds = pinus.app.getServersByType('guild');
let guild = dispatch(roleId, guilds, 'guild');
let currentTime = await pinus.app.rpc.guild.guildActivityRemote.getCurrentTime.toServer(guild.id);
pinus.app.get('channelService').pushMessageByUids('onPushCurrentTime', resResult(STATUS.SUCCESS, {time: currentTime }), uids);
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.PUSH_CURRENT_TIME, { time: currentTime }, sid);
}
await refreshDaily(session);
// await startEvent(session);
+4 -5
View File
@@ -1,4 +1,4 @@
import { FIGURE_UNLOCK_CONDITION, ITEM_CHANGE_REASON, REDIS_KEY, STATUS, TASK_TYPE, HERO_SYSTEM_TYPE, LINEUP_NUM, COUNTER } from "../../consts";
import { FIGURE_UNLOCK_CONDITION, ITEM_CHANGE_REASON, REDIS_KEY, STATUS, TASK_TYPE, HERO_SYSTEM_TYPE, LINEUP_NUM, COUNTER, PUSH_ROUTE } from "../../consts";
import { SkinModel } from "../../db/Skin";
import { HeroModel, HeroSkin, HeroType, HeroUpdate } from "../../db/Hero";
import { SkinUpdate } from "../../db/Skin";
@@ -12,6 +12,7 @@ import { addItems, unlockFigure, } from "./rewardService";
import { CounterModel } from "../../db/Counter";
import { calculateCes } from "../playerCeService";
import { RoleUpdate } from "../../db/Role";
import { sendMessageToUser, sendMessageToUserWithSuc } from "../pushService";
/**
* 创建多个武将
@@ -67,11 +68,9 @@ import { RoleUpdate } from "../../db/Role";
resultHeroes.push(hero);
}
let uids = [{ uid: roleId, sid }];
await SkinModel.insertSkins(roleId, roleName, skins);
pinus.app.get('channelService').pushMessageByUids('onHeroSkinChange', resResult(STATUS.SUCCESS, getSkinPushMsg(resultHeroes, skins)), uids);
pinus.app.get('channelService').pushMessageByUids('onHeroUpdate', resResult(STATUS.SUCCESS, { heroes }), uids);
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.HERO_SKIN_CHANGE, getSkinPushMsg(resultHeroes, skins), sid);
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.HERO_UPDATE, { heroes }, sid);
}
if (pieces.length > 0) {
+15 -21
View File
@@ -1,4 +1,4 @@
import { ITID, CONSUME_TYPE, ITEM_TABLE, CURRENCY, CURRENCY_TYPE, MAIL_TYPE, HANDLE_REWARD_TYPE, HERO_SYSTEM_TYPE, CURRENCY_BY_TYPE, ITEM_CHANGE_REASON, TA_USERSET_TYPE, TA_EVENT, POP_UP_SHOP_CONDITION_TYPE, ROLE_SELECT, FIGURE_UNLOCK_CONDITION } from '../../consts';
import { ITID, CONSUME_TYPE, ITEM_TABLE, CURRENCY, CURRENCY_TYPE, MAIL_TYPE, HANDLE_REWARD_TYPE, HERO_SYSTEM_TYPE, CURRENCY_BY_TYPE, ITEM_CHANGE_REASON, TA_USERSET_TYPE, TA_EVENT, POP_UP_SHOP_CONDITION_TYPE, ROLE_SELECT, FIGURE_UNLOCK_CONDITION, PUSH_ROUTE } from '../../consts';
import { getDecimalCnt, getRandEelm, getRandEelmWithWeight, getRandSingleEelm, getRandValueByMinMax, resResult } from '../../pubUtils/util';
import { RoleModel, RoleType } from '../../db/Role';
import { setAp } from '../actionPointService';
@@ -25,12 +25,12 @@ import { updateEplaces } from '../equipService';
import { combineItems, getCoinEventProperties, getGoldEventProperties, sortItems } from './util';
import { nowSeconds } from '../../pubUtils/timeUtil';
import { calculateCeWithHero, calculateCeWithRole } from '../playerCeService';
import { sendMessageToUsersWithSuc, sendMessageToUserWithSuc } from '../pushService';
export async function handleCost(roleId: string, sid: string, goods: Array<ItemInter>, reason: ITEM_CHANGE_REASON) {
let uids = [{ uid: roleId, sid }];
let { items, jewels, gold, coin } = sortItems(goods, HANDLE_REWARD_TYPE.COST);
let jewelSeqIds = jewels.map(cur => cur.seqId);
let resJewels: JewelType[] = [];
@@ -53,7 +53,7 @@ export async function handleCost(roleId: string, sid: string, goods: Array<ItemI
if (items.length > 0) {
let { hasError, result } = await ItemModel.decreaseItems(roleId, items);
if (hasError) return false;
pinus.app.get('channelService').pushMessageByUids('onItemUpdate', resResult(STATUS.SUCCESS, { goods: result.map(cur => ({...cur, reason })) }), uids);
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.ITEM_UPDATE, { goods: result.map(cur => ({...cur, reason })) }, sid);
saveItemChangeLog(roleId, result, reason);
}
@@ -86,7 +86,7 @@ export async function handleCost(roleId: string, sid: string, goods: Array<ItemI
let jewels = await JewelModel.deleteBySeqIds(roleId, jewelSeqIds);
saveItemChangeLog(roleId, jewels.map(jewel => ({ id: jewel.id, count: 1, inc: -1 })), reason);
pinus.app.get('channelService').pushMessageByUids('onJewelDel', resResult(STATUS.SUCCESS, { jewels: jewels.map(jewel => ({ seqId: jewel.seqId, id: jewel.id, inc: -1, reason })) }), uids);
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.JEWEL_DEL, { jewels: jewels.map(jewel => ({ seqId: jewel.seqId, id: jewel.id, inc: -1, reason })) }, sid);
}
//消耗玩家货币
@@ -94,9 +94,7 @@ export async function handleCost(roleId: string, sid: string, goods: Array<ItemI
let costGold = gold.reduce((pre, cur) => pre + cur.count, 0);
let costCoin = coin.reduce((pre, cur) => pre + cur, 0);
role = await RoleModel.decreaseGoldAndCoin(roleId, gold, costCoin);
pinus.app.get('channelService').pushMessageByUids('onPlayerDataChange', resResult(STATUS.SUCCESS, {
gold: role.gold, coin: role.coin, totalCost: role.totalCost
}), uids);
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.PLAYER_DATA_CHANGE, { gold: role.gold, coin: role.coin, totalCost: role.totalCost }, sid);
if(costGold > 0) {
reportTAEvent(roleId, TA_EVENT.ITEM_CONSUME, getGoldEventProperties(costGold, role.gold, reason));
@@ -114,9 +112,7 @@ export async function handleCost(roleId: string, sid: string, goods: Array<ItemI
return true;
}
// TODO: sid 在方法内部获取,且不一定存在
export async function addItems(roleId: string, roleName: string, sid: string, goods: Array<ItemInter>, reason: ITEM_CHANGE_REASON) {
let uids = [{ uid: roleId, sid }];
let { items, jewels, gold, coin, ap, skins, figures } = sortItems(goods, HANDLE_REWARD_TYPE.RECEIVE);
let showItems: { id: number, seqId?: number, count: number, isBag?: boolean }[] = [];
let role = await RoleModel.findByRoleId(roleId);
@@ -141,7 +137,7 @@ export async function addItems(roleId: string, roleName: string, sid: string, go
}
//装备推送
if (!!jewelInfos.length)
pinus.app.get('channelService').pushMessageByUids('onJewelAdd', resResult(STATUS.SUCCESS, { jewelInfos }), uids);
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.JEWEL_ADD, { jewelInfos }, sid);
//统计装备
if (jewelInfos.length > 0) {
saveItemChangeLog(roleId, jewelInfos, reason);
@@ -160,7 +156,7 @@ export async function addItems(roleId: string, roleName: string, sid: string, go
}
//背包除去装备推送
if (!!itemInfos.length) {
pinus.app.get('channelService').pushMessageByUids('onItemUpdate', resResult(STATUS.SUCCESS, { goods: itemInfos }), uids);
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.ITEM_UPDATE, { goods: itemInfos }, sid);
saveItemChangeLog(roleId, itemInfos, reason);
}
@@ -172,9 +168,8 @@ export async function addItems(roleId: string, roleName: string, sid: string, go
let incCoin = coin.reduce((pre, cur) => pre + cur, 0);
let incGold = gold.reduce((pre, cur) => pre + cur.count, 0);
role = await RoleModel.increaseGoldAndCoin(roleId, gold, incCoin);
pinus.app.get('channelService').pushMessageByUids('onPlayerDataChange', resResult(STATUS.SUCCESS, {
gold: role.gold, coin: role.coin
}), uids);
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.PLAYER_DATA_CHANGE, { gold: role.gold, coin: role.coin }, sid);
if(gold.length > 0) {
gold.forEach(({ count }) => {
showItems.push(getGoldObject(count));
@@ -211,7 +206,7 @@ export async function addItems(roleId: string, roleName: string, sid: string, go
}
}
if (!!skinInfos.length) {
pushHeroSkinMsg(heroskins, skinInfos, uids); // 推送onHeroSkinChange
pushHeroSkinMsg(heroskins, skinInfos, roleId, sid); // 推送onHeroSkinChange
saveItemChangeLog(roleId, skinInfos, reason);
}
}
@@ -228,7 +223,7 @@ export async function addItems(roleId: string, roleName: string, sid: string, go
// 获得头像或相框或形象推送
if(!!figureInfos && figureInfos.length > 0) {
for(let figureInfo of figureInfos) {
pinus.app.get('channelService').pushMessageByUids('onHeadChange', resResult(STATUS.SUCCESS, { ...figureInfo }), uids);
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.HEAD_CHANGE, { ...figureInfo }, sid);
saveFigureInfoLog(roleId, figureInfo, reason)
}
}
@@ -298,8 +293,7 @@ export async function unlockFigure(sid: string, roleId: string, conditions: { ty
let { figureInfo, heads, frames, spines } = unlockFigureWithoutSave(conditions, role);
role = await RoleModel.updateRoleInfo(roleId, { heads, frames, spines });
if (!!figureInfo && (figureInfo.heads.length > 0 || figureInfo.frames.length > 0 || figureInfo.spines.length > 0)) {
let uids = [{ uid: roleId, sid }];
pinus.app.get('channelService').pushMessageByUids('onHeadChange', resResult(STATUS.SUCCESS, { ...figureInfo }), uids);
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.HEAD_CHANGE, { ...figureInfo }, sid);
}
}
@@ -307,9 +301,9 @@ export async function unlockFigure(sid: string, roleId: string, conditions: { ty
/**
* 皮肤数据变化去重、推送
* @param heroskins 推送的皮肤
* @param uids 玩家
* @param roleId 玩家
*/
function pushHeroSkinMsg(heroskins: {skins: HeroSkin[], hid: number}[], skinInfos: {id: number, hid: number }[], uids: {uid: string, sid: string}[]) {
function pushHeroSkinMsg(heroskins: {skins: HeroSkin[], hid: number}[], skinInfos: {id: number, hid: number }[], roleId: string, sid: string) {
let pushSkinInfos: {skins: HeroSkin[], hid: number}[] = []; // 可能会有重复的
for(let { skins, hid } of heroskins) {
let index = pushSkinInfos.findIndex(cur => cur.hid == hid);
@@ -322,7 +316,7 @@ function pushHeroSkinMsg(heroskins: {skins: HeroSkin[], hid: number}[], skinInf
}
}
if(pushSkinInfos.length > 0 || skinInfos.length > 0) {
pinus.app.get('channelService').pushMessageByUids('onHeroSkinChange', resResult(STATUS.SUCCESS, { heros: heroskins, skins: skinInfos }), uids);
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.HERO_SKIN_CHANGE, { heros: heroskins, skins: skinInfos }, sid);
}
}
+3 -4
View File
@@ -4,7 +4,7 @@ import { RoleModel, RoleType } from "../db/Role";
import { Chat37Params, CheckGuild37Params, CheckName37Params, GetWordParam } from "../domain/sdk";
import { sendMailByContent, sendMailToGuildByContent } from './mailService';
import { NAMEPLATE } from '../pubUtils/dicParam';
import { CHANNEL_PREFIX, FILENAME, getSdkChannelId, MAIL_TYPE, REDIS_KEY, SDK_37_ADDR, SDK_37_CONST, SDK_TA_CONST, STATUS, TA_USERSET_TYPE, THINKING_DATA_MODE, THINKING_DATA_MODE_LIST } from "../consts";
import { CHANNEL_PREFIX, FILENAME, getSdkChannelId, MAIL_TYPE, PUSH_ROUTE, REDIS_KEY, SDK_37_ADDR, SDK_37_CONST, SDK_TA_CONST, STATUS, TA_USERSET_TYPE, THINKING_DATA_MODE, THINKING_DATA_MODE_LIST } from "../consts";
import { UserModel } from "../db/User";
import { request37CheckChat, request37GetWord, request37Post } from "../pubUtils/httpUtil";
import { GuildModel } from "../db/Guild";
@@ -19,6 +19,7 @@ import { getGoldObject } from "./role/rewardService";
import { SurveyRecModel } from "../db/SurveyRec";
import { SurveyModel } from "../db/Survery";
import { pushGuildInfoUpdate } from "./guildService";
import { sendMessageToUserWithSuc } from "./pushService";
// 检查私聊是否合法
@@ -115,9 +116,7 @@ export async function treatRoleName(roleId: string, isDebug?: boolean) {
const { sid } = await getRoleOnlineInfo(roleId);
if(!!sid) {
await pinus.app.rpc.connector.connectorRemote.setOtherUserSession.toServer(sid,[{ roleId, roleName: newName }]); // 改session
pinus.app.get('channelService').pushMessageByUids('onPlayerDataChange', resResult(STATUS.SUCCESS, {
roleName: newName
}), [{uid: roleId, sid}]);
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.PLAYER_DATA_CHANGE, { roleName: newName }, sid);
}
// 补偿
let gold = getGoldObject(NAMEPLATE.NAMEPLATE_FEECOST)
+4 -4
View File
@@ -1,5 +1,5 @@
import { pinus } from "pinus";
import { ABI_STAGE, ACTIVITY_TYPE, STATUS, TASK_SUM_TYPE, TASK_TYPE, WAR_TYPE } from "../../consts";
import { ABI_STAGE, ACTIVITY_TYPE, PUSH_ROUTE, STATUS, TASK_SUM_TYPE, TASK_TYPE, WAR_TYPE } from "../../consts";
import { ActivityModelType } from "../../db/Activity";
import { ActivityBuyRecordsModel } from "../../db/ActivityBuyRecords";
import { ActivityDailyChallengesModel } from "../../db/ActivityDailyChallenges";
@@ -24,6 +24,7 @@ import { getActivities, getActivitiesByType, getActivityByServerId } from "../ac
import { getRoleCreateTime, getRoleOnlineInfo, getServerCreateTime } from "../redisService";
import { getEquipById, getJewelByEquip, isRandSeUnLock } from "../equipService";
import { debug } from "console";
import { sendMessageToUserWithSuc } from "../pushService";
export class CheckTask {
serverId: number; // 区id
@@ -105,13 +106,12 @@ export class CheckTask {
let onlineUser = await getRoleOnlineInfo(roleId);
sid = onlineUser.sid;
}
let uids = [{ uid: roleId, sid }];
if(!!sid) {
if (this.taskPushMessages.length > 0) {
pinus.app.get('channelService').pushMessageByUids('onTaskUpdate', resResult(STATUS.SUCCESS, this.taskPushMessages), uids);
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.TASK_UPDATE,this.taskPushMessages, sid);
}
if (this.activityTaskPushMessages.length > 0) {
pinus.app.get('channelService').pushMessageByUids('onActivityTaskUpdate', resResult(STATUS.SUCCESS, this.activityTaskPushMessages), uids);
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.ACTIVITY_TASK_UPDATE, this.activityTaskPushMessages, sid);
}
}
}
+4 -10
View File
@@ -1,7 +1,7 @@
import { RoleModel, RoleType } from '../../db/Role';
import { pinus, FrontendOrBackendSession } from 'pinus';
import { resResult, shouldRefresh } from '../../pubUtils/util';
import { STATUS, TASK_TYPE, TASK_FUN_TYPE, SHOP_REFRESH_TYPE, WAR_TYPE } from '../../consts';
import { STATUS, TASK_TYPE, TASK_FUN_TYPE, SHOP_REFRESH_TYPE, WAR_TYPE, PUSH_ROUTE } from '../../consts';
import { TaskParamInter, TaskListReturn } from '../../domain/roleField/task';
import { EPlace, HeroType } from '../../db/Hero';
import { HeroScores } from '../../db/PvpHistoryOpp';
@@ -17,6 +17,7 @@ import { CheckTask } from './taskObj';
import { getEquipById } from '../equipService';
import { JewelType } from '../../db/Jewel';
import { checkPopUpConditionInCreateHero } from '../activity/popUpShopService';
import { sendMessageToUserWithSuc } from '../pushService';
export async function checkTaskWithRoles(serverId: number, roleId: string, sid: string, taskType: TASK_TYPE, roles: RoleType[]) {
for (let role of roles) {
@@ -354,10 +355,7 @@ export async function refDailyTask(roleId: string, sid: string) {
// 转移每日任务
await removeHistoryTask(roleId, TASK_FUN_TYPE.DAILY);
let uids = [{ uid: roleId, sid }];
pinus.app.get('channelService').pushMessageByUids('onDailyTaskRefresh', resResult(STATUS.SUCCESS, { taskList }), uids);
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.DAILY_TASK_REFRESH, { taskList }, sid);
}
export async function removeHistoryTask(roleId: string, type: number, today?: Date) {
@@ -375,10 +373,6 @@ export async function refDailyTaskBox(roleId: string, sid: string, debug = false
let userTask = await UserTaskModel.refreshWeekly(roleId, debug);
if (userTask) {
let { dailyTaskPoint: point, dailyTaskPointWeekly: weeklyPoint, dailyTaskBox: box } = userTask;
let uids = [{ uid: roleId, sid }];
pinus.app.get('channelService').pushMessageByUids('onTaskBoxRefresh', resResult(STATUS.SUCCESS, {
type: TASK_FUN_TYPE.DAILY,
point, weeklyPoint, box
}), uids);
sendMessageToUserWithSuc(roleId, PUSH_ROUTE.TASK_BOX_REFRESH, { type: TASK_FUN_TYPE.DAILY, point, weeklyPoint, box }, sid);
}
}
File diff suppressed because one or more lines are too long
-1
View File
@@ -1,6 +1,5 @@
#/bin/bash
npm install #安装依赖库
cp ./channelService.js ./node_modules/pinus/dist/lib/common/service/channelService.js
npm run build
node pm2Config.js #使用pm2来做进程管理,生成进程配置文件
pm2 start pomeloPm2Start.json #pm2 启动游戏服务器
-1
View File
@@ -9,7 +9,6 @@ if [ $# != 2 ] ; then
fi
npm install #安装依赖库
cp ./channelService.js ./node_modules/pinus/dist/lib/common/service/channelService.js
npm run build
node pm2DistributeConfig.js ${1} ${2} #使用pm2来做进程管理,生成进程配置文件
pm2 start pomeloPm2Start.json #pm2 启动游戏服务器
+29
View File
@@ -133,4 +133,33 @@ export const PUSH_ROUTE = {
COMBATTLE_START: 'onComBtlStart',
TEAM_COMPLETE: 'onTeamComplete',
TEAMMATE_ACT: 'onTeammateAct',
PLAYER_EXP_CHANGE: 'onPlayerExpChange',
GUILD_INVITE: 'onGuildInvite',
WISH_GOODS_RECEIVE: 'onWishGoodsRecive',
FRIEND_APPLY: 'onFriendApply',
FRIEND_SEND_HEART: 'onFriendSendHeart',
PLAY_TIME: 'onPlayTime',
DAILY_TASK_REFRESH: 'onDailyTaskRefresh',
AP_UPDATE: 'onApUpdate',
ENTRY_DATA: 'onEntryData',
ENTRY_DATA_START: 'onEntryDataStart',
ENTRY_DATA_END: 'onEntryDataEnd',
REFRESH_TIME: 'onRefreshTime',
REMOTE_LOGIN: 'onRemoteLogin',
SEND_EVENT: 'onSpecialEvent',
BOSS_HP_UPDATE: 'onBossHpUpdate',
MEMBER_JOIN_GUILD: 'onMemberJoinGuild',
PLAYER_DATA_CHANGE: 'onPlayerDataChange',
ORDER: 'onOrder',
PLAYER_CE_UPDATE: 'onPlayerCeUpdate',
RACE_ITEM_UPDATE: 'onRaceItemUpdate',
HERO_SKIN_CHANGE: 'onHeroSkinChange',
HERO_UPDATE: 'onHeroUpdate',
ITEM_UPDATE: 'onItemUpdate',
JEWEL_DEL: 'onJewelDel',
JEWEL_ADD: 'onJewelAdd',
HEAD_CHANGE: 'onHeadChange',
TASK_UPDATE: 'onTaskUpdate',
ACTIVITY_TASK_UPDATE: 'onActivityTaskUpdate',
TASK_BOX_REFRESH: 'onTaskBoxRefresh',
}