后台:道具获取
This commit is contained in:
@@ -68,6 +68,7 @@ app.configure(function () {
|
||||
console.log('serverName:', app.get('serverName'))
|
||||
|
||||
initMongodb(app);
|
||||
initGmMongodb(app);
|
||||
initRedis(app);
|
||||
setupRoutes(app);
|
||||
setupFilters(app);
|
||||
@@ -136,7 +137,14 @@ app.configure(ALL_ENVS, 'chat', function() {
|
||||
app.event.on('start_all', () => {
|
||||
getTire();
|
||||
});
|
||||
})
|
||||
});
|
||||
|
||||
app.configure(ALL_ENVS, 'activity', function () {
|
||||
app.event.on('start_all', () => {
|
||||
app.rpc.activity.activityRemote.loadActivities.toServer(app.getServerId());
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
function errorHandler(err: Error, msg: any, resp: any,
|
||||
session: FrontendOrBackendSession, cb: HandlerCallback) {
|
||||
@@ -167,11 +175,13 @@ async function initMongodb(app: _pinus.Application) {
|
||||
console.log('mongodb connect suc');
|
||||
}
|
||||
});
|
||||
|
||||
let gmconnect = await mongoose.createConnection(app.get('database').gmmongo, { useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true, useFindAndModify: false });
|
||||
loadGmDb(gmconnect);
|
||||
}
|
||||
|
||||
async function initGmMongodb(app: _pinus.Application) {
|
||||
let gmconnect = await mongoose.createConnection(app.get('database').gmmongo, { useNewUrlParser: true, useUnifiedTopology: true, useCreateIndex: true, useFindAndModify: false });
|
||||
loadGmDb(gmconnect);
|
||||
console.log('mongoGmDb connect suc')
|
||||
}
|
||||
function initRedis(app: _pinus.Application) {
|
||||
const redisClient = connectRedis(app.get('database').redis, app.get('database').redispw);
|
||||
app.set('redis', redisClient);
|
||||
|
||||
@@ -14,7 +14,6 @@ export class ActivityRemote {
|
||||
constructor(private app: Application) {
|
||||
this.app = app;
|
||||
this.channelService = app.get('channelService');
|
||||
this.loadActivities();
|
||||
}
|
||||
|
||||
private channelService: ChannelService;
|
||||
@@ -30,7 +29,7 @@ export class ActivityRemote {
|
||||
reloadResources();
|
||||
}
|
||||
|
||||
private async loadActivities() {
|
||||
public async loadActivities() {
|
||||
let servers = await ServerlistModel.getAllServerList();
|
||||
for(let { serverId, activityGroupId } of servers) {
|
||||
for(let groupId of activityGroupId) {
|
||||
@@ -52,6 +51,7 @@ export class ActivityRemote {
|
||||
this.app.set('activityByServer', this.activityByServer);
|
||||
this.app.set('activityByType', this.activityByType);
|
||||
this.app.set('activities', this.activities);
|
||||
console.log('****** loadActivities')
|
||||
}
|
||||
|
||||
private setActivityTypeAndServer() {
|
||||
|
||||
@@ -746,7 +746,7 @@ export class ComBattleHandler {
|
||||
if(r != roleId) roleIdList.push(r);
|
||||
}
|
||||
}
|
||||
const roles = await RoleModel.findRoleByField('roleId', roleIdList, ROLE_SELECT.SHOW_SIMPLE, true);
|
||||
const roles = await RoleModel.findByRoleIds(roleIdList, ROLE_SELECT.SHOW_SIMPLE, true);
|
||||
let result = new Array<FriendParams>();
|
||||
for(let role of roles) {
|
||||
if(role.quitTime == role.loginTime) {
|
||||
|
||||
@@ -31,58 +31,6 @@ export class GmHandler {
|
||||
constructor(private app: Application) {
|
||||
}
|
||||
|
||||
async pushEvent(msg: { uid: number, serverId: number }, session: BackendSession) {
|
||||
|
||||
let { uid, serverId } = msg;
|
||||
let role = await RoleModel.findByUid(uid, serverId);
|
||||
if (!role) return resResult(STATUS.GM_ROLE_NOT_FOUND);
|
||||
let { roleId, roleName, eventStatus } = role;
|
||||
|
||||
let channelService = this.app.get('channelService');
|
||||
let event = await getEvent(eventStatus, roleId, roleName);
|
||||
let hisOnlineInfo = await getRoleOnlineInfo(role.roleId);
|
||||
if (hisOnlineInfo.isOnline) {
|
||||
channelService.pushMessageByUids('onSpecialEvent', resResult(STATUS.SUCCESS, { event }), [{
|
||||
uid: roleId,
|
||||
sid: hisOnlineInfo.sid
|
||||
}]);
|
||||
}
|
||||
return resResult(STATUS.SUCCESS, { list: event });
|
||||
}
|
||||
|
||||
async clearEvent(msg: {}, session: BackendSession) {
|
||||
let roleId = session.get('roleId');
|
||||
|
||||
await EventRecordModel.deleteAccount(roleId);
|
||||
return resResult(STATUS.SUCCESS);
|
||||
}
|
||||
|
||||
|
||||
async pushMessage(msg: { uid: number, serverId: number, eventName: string, message: string }, session: BackendSession) {
|
||||
|
||||
let { uid, serverId, eventName, message } = msg;
|
||||
|
||||
let content = {};
|
||||
try {
|
||||
content = JSON.parse(message);
|
||||
} catch (e) {
|
||||
return resResult(STATUS.GM_JSON_FORMAT_ERR);
|
||||
}
|
||||
// console.log(uid, serverId)
|
||||
let role = await RoleModel.findByUid(uid, serverId);
|
||||
if (!role) return resResult(STATUS.GM_ROLE_NOT_FOUND);
|
||||
let { roleId } = role;
|
||||
|
||||
let hisOnlineInfo = await getRoleOnlineInfo(role.roleId);
|
||||
if (hisOnlineInfo.isOnline) {
|
||||
let sid = hisOnlineInfo.sid;
|
||||
if (!!sid) {//下发邮件,对应前端红点提示
|
||||
pinus.app.channelService.pushMessageByUids(eventName, resResult(STATUS.SUCCESS, content), [{ uid: roleId, sid }]);
|
||||
}
|
||||
}
|
||||
return resResult(STATUS.SUCCESS, { msg: content });
|
||||
}
|
||||
|
||||
//对接gm后台,下发邮件
|
||||
async addMail(msg: { endTime: number, sendName: string, content: string, goods: RewardInter[], sendTime: number }) {
|
||||
let { endTime, content, sendName, sendTime, goods } = msg;
|
||||
|
||||
45
game-server/app/servers/gm/handler/gmRoleHandler.ts
Normal file
45
game-server/app/servers/gm/handler/gmRoleHandler.ts
Normal file
@@ -0,0 +1,45 @@
|
||||
import { Application, BackendSession, pinus } from 'pinus';
|
||||
import { resResult } from '../../../pubUtils/util';
|
||||
import { STATUS } from '../../../consts/statusCode';
|
||||
import { getRoleOnlineInfo } from '../../../services/redisService';
|
||||
import { addItems, createHeroes } from '../../../services/rewardService';
|
||||
import { RewardInter } from '../../../pubUtils/interface';
|
||||
import { getExpByLv } from '../../../pubUtils/data';
|
||||
import { RoleModel } from '../../../db/Role';
|
||||
let timer: NodeJS.Timer;
|
||||
export default function (app: Application) {
|
||||
return new GmRoleHandler(app);
|
||||
}
|
||||
|
||||
export class GmRoleHandler {
|
||||
constructor(private app: Application) {
|
||||
}
|
||||
|
||||
async addItems(msg: { roleId: string, roleName: string, serverId: number, values: { reward: RewardInter[], heroes: number[], lv: number }}, session: BackendSession) {
|
||||
let { roleId, roleName, serverId, values } = msg;
|
||||
|
||||
let { reward, heroes, lv } = values;
|
||||
if (reward == undefined && heroes == undefined && lv == undefined) {
|
||||
return resResult(STATUS.WRONG_PARMS);
|
||||
}
|
||||
let connect = await getRoleOnlineInfo(roleId);
|
||||
let sid = connect.isOnline?connect.sid: null;
|
||||
|
||||
if(reward &&reward.length > 0) {
|
||||
await addItems(roleId, roleName, sid, values.reward);
|
||||
}
|
||||
if(heroes && heroes.length > 0) {
|
||||
await createHeroes(roleId, roleName, sid, serverId, heroes.map(hid => { return { hid, count: 1 }}))
|
||||
}
|
||||
if(lv && lv > 0) {
|
||||
let exp = getExpByLv(lv)?.sum||0;
|
||||
await RoleModel.updateRoleInfo(roleId, { lv, exp })
|
||||
let uids = [{ uid: roleId, sid }];
|
||||
pinus.app.get('channelService').pushMessageByUids('onPlayerExpChange', resResult(STATUS.SUCCESS, {
|
||||
isLvUp: false, lv, exp
|
||||
}), uids);
|
||||
}
|
||||
return resResult(STATUS.SUCCESS);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -418,7 +418,7 @@ export class GuildHandler {
|
||||
const guild = await GuildModel.findByCode(code, serverId, GUILD_SELECT.INVITED_MEMBER);
|
||||
if (guild.isMemberMax) return resResult(STATUS.GUILD_MEMBER_MAX);
|
||||
|
||||
const roleList = await RoleModel.findRoleByField('roleId', roleIds);
|
||||
const roleList = await RoleModel.findByRoleIds(roleIds);
|
||||
let result = new Array<string>();
|
||||
let uids = [];
|
||||
for (let role of roleList) {
|
||||
|
||||
@@ -31,6 +31,7 @@ import { getRandSingleEelm } from '../../pubUtils/util';
|
||||
import { SignInData } from '../../domain/activityField/signInField';
|
||||
import { ActivityGroupModel } from '../../db/ActivityGroup';
|
||||
import { ActivityGroupTypeModel } from '../../db/ActivityGroupType';
|
||||
import { ServerlistModel } from '../../db/Serverlist';
|
||||
|
||||
/**
|
||||
* 获取活动数据
|
||||
|
||||
@@ -297,7 +297,7 @@ export async function recentPrivateChatInfos(roleId: string, roleName: string) {
|
||||
.splice(CHAT_SYSTEM.RECENT_PRIVATE_CHATS_CNT);
|
||||
if (!recentPrivateChats || !recentPrivateChats.length) return null;
|
||||
|
||||
const roleInfos = await RoleModel.findRoleByField('roleId', recentPrivateChats.map(chat => { return chat.targetRoleId }));
|
||||
const roleInfos = await RoleModel.findByRoleIds(recentPrivateChats.map(chat => { return chat.targetRoleId }));
|
||||
const chatInfos = recentPrivateChats.map( chat => {
|
||||
for (let { roleId: targetRoleId, quitTime, loginTime, roleName: targetRoleName, title, guildName, head, frame, spine, lv } of roleInfos) {
|
||||
if (targetRoleId === chat.targetRoleId) {
|
||||
|
||||
@@ -84,7 +84,7 @@ export async function getSimpleRoleInfo(roleId: string) {
|
||||
|
||||
export async function getSimpleRoleInfos(roleIds: string[]) {
|
||||
if (!roleIds || !roleIds.length) return null;
|
||||
let roles = await RoleModel.findRoleByField('roleId', roleIds, ROLE_SELECT.SHOW_SIMPLE, true);
|
||||
let roles = await RoleModel.findByRoleIds(roleIds, ROLE_SELECT.SHOW_SIMPLE, true);
|
||||
return roles;
|
||||
}
|
||||
|
||||
|
||||
@@ -51,7 +51,7 @@ export async function init() {
|
||||
await setPvpSeason();
|
||||
|
||||
// 周功勋结算任务
|
||||
guildWeeklyJobId = scheduleJob('settleGuildWeekly', '0 0 0 * * 1', settleGuildWeekly);
|
||||
guildWeeklyJobId = scheduleJob('settleGuildWeekly', '0 0 ? * * 1', settleGuildWeekly);
|
||||
|
||||
// 每5分钟汇报在线玩家在线情况
|
||||
scheduleJob('reportOnline', '0 0/5 * * * *', reportOnlineSchedule);
|
||||
|
||||
Reference in New Issue
Block a user