Merge branch 'feature/backend'
This commit is contained in:
23
game-server/app/servers/activity/remote/activityRemote.ts
Normal file
23
game-server/app/servers/activity/remote/activityRemote.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import { Application, ChannelService } from 'pinus';
|
||||
import { reloadResources } from '../../../pubUtils/data';
|
||||
|
||||
export default function (app: Application) {
|
||||
return new ActivityRemote(app);
|
||||
}
|
||||
|
||||
export class ActivityRemote {
|
||||
|
||||
constructor(private app: Application) {
|
||||
this.app = app;
|
||||
this.channelService = app.get('channelService');
|
||||
}
|
||||
|
||||
private channelService: ChannelService;
|
||||
|
||||
/**
|
||||
* 重载json资源
|
||||
*/
|
||||
public async reloadResources() {
|
||||
reloadResources();
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,5 @@
|
||||
import { Application, ChannelService, FrontendSession, RemoterClass } from 'pinus';
|
||||
import { reloadResources } from '../../../pubUtils/data';
|
||||
|
||||
export default function (app: Application) {
|
||||
return new BattleRemote(app);
|
||||
@@ -69,4 +70,11 @@ export class BattleRemote {
|
||||
channel.leave(uid, sid);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 重载json资源
|
||||
*/
|
||||
public async reloadResources() {
|
||||
reloadResources();
|
||||
}
|
||||
}
|
||||
@@ -6,6 +6,7 @@ import { PrivateMessageType } from '../../../db/PrivateMessage';
|
||||
import { addUserToChannel, getSimpleRoleInfo } from '../../../services/roleService';
|
||||
import { ChannelUser } from '../../../domain/ChannelUser';
|
||||
import { getWorldChannelSid, groupRoomId } from '../../../services/chatService';
|
||||
import { reloadResources } from '../../../pubUtils/data';
|
||||
|
||||
export default function (app: Application) {
|
||||
return new ChatRemote(app);
|
||||
@@ -188,4 +189,11 @@ export class ChatRemote {
|
||||
if (!channel) return;
|
||||
channel.pushMessage(this.RACE_ACTIVITY_START, resResult(STATUS.SUCCESS, { }));
|
||||
}
|
||||
|
||||
/**
|
||||
* 重载json资源
|
||||
*/
|
||||
public async reloadResources() {
|
||||
reloadResources();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -226,10 +226,25 @@ export class EntryHandler {
|
||||
// console.error('set rid for session service failed! error is : %j', err.stack);
|
||||
// }
|
||||
// });
|
||||
session.on('closed', this.onUserLeave.bind(this));
|
||||
session.on('closed', this.onGmUserLeave.bind(this));
|
||||
|
||||
// put user into channel
|
||||
return resResult(STATUS.SUCCESS);
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
serverType: this.app.get('serverName')
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* User log out handler
|
||||
*
|
||||
* @param {Object} app current application
|
||||
* @param {Object} session current session object
|
||||
*
|
||||
*/
|
||||
async onGmUserLeave(session: FrontendSession, reason: string) {
|
||||
if (!session || !session.uid) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
import { Application, ChannelService, FrontendSession, pinus, RemoterClass } from 'pinus';
|
||||
import { STATUS } from '../../../consts/statusCode';
|
||||
import { resResult } from '../../../pubUtils/util';
|
||||
import { reloadResources } from '../../../pubUtils/data';
|
||||
export default function (app: Application) {
|
||||
return new ConnectorRemote(app);
|
||||
}
|
||||
@@ -34,4 +35,11 @@ export class ConnectorRemote {
|
||||
this.channelService.pushMessageByUids(route, resResult(STATUS.SUCCESS, {mails:data}), uids);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 重载json资源
|
||||
*/
|
||||
public async reloadResources() {
|
||||
reloadResources();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,7 @@ import { STATUS } from '../../../consts/statusCode';
|
||||
import { GMMailModel } from '../../../db/GMMail';
|
||||
import { setGmMails } from '../../../pubUtils/gmData/gmDataUtil';
|
||||
import { getRoleOnlineInfo } from '../../../services/redisService';
|
||||
import { dispatch } from '../../../util/dispatcher';
|
||||
export default function(app: Application) {
|
||||
return new GmHandler(app);
|
||||
}
|
||||
@@ -80,4 +81,49 @@ export class GmHandler {
|
||||
setGmMails([mail]);//更新邮件缓存
|
||||
this.app.rpc.role.roleRemote.sendGmMailsToRoles.toServer('role-server-1',[mail]);//检查是否是群体邮件,并下发群体邮件,非群体邮件通过Filter刷新下发
|
||||
}
|
||||
|
||||
async reloadResource(msg: {}, session: BackendSession) {
|
||||
try {
|
||||
let activityServers = this.app.getServersByType('activity');
|
||||
for(let { id } of activityServers) {
|
||||
await this.app.rpc.activity.activityRemote.reloadResources.toServer(id);
|
||||
}
|
||||
let battleServers = this.app.getServersByType('battle');
|
||||
for(let { id } of battleServers) {
|
||||
await this.app.rpc.battle.battleRemote.reloadResources.toServer(id);
|
||||
}
|
||||
let chatServers = this.app.getServersByType('chat');
|
||||
for(let { id } of chatServers) {
|
||||
await this.app.rpc.chat.chatRemote.reloadResources.toServer(id);
|
||||
}
|
||||
let connectServers = this.app.getServersByType('connector');
|
||||
for(let { id } of connectServers) {
|
||||
await this.app.rpc.connector.connectorRemote.reloadResources.toServer(id);
|
||||
}
|
||||
let guildServers = this.app.getServersByType('guild');
|
||||
for(let { id } of guildServers) {
|
||||
await this.app.rpc.guild.guildRemote.reloadResources.toServer(id);
|
||||
}
|
||||
let roleServers = this.app.getServersByType('role');
|
||||
for(let { id } of roleServers) {
|
||||
await this.app.rpc.role.roleRemote.reloadResources.toServer(id);
|
||||
}
|
||||
let systimerServers = this.app.getServersByType('systimer');
|
||||
for(let { id } of systimerServers) {
|
||||
await this.app.rpc.systimer.systimerRemote.reloadResources.toServer(id);
|
||||
}
|
||||
let orderServers = this.app.getServersByType('order');
|
||||
for(let { id } of orderServers) {
|
||||
await this.app.rpc.order.orderRemote.reloadResources.toServer(id);
|
||||
}
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
isOK: true
|
||||
});
|
||||
} catch(e) {
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
isOK: false,
|
||||
err: e.stack
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
23
game-server/app/servers/guild/remote/guildRemote.ts
Normal file
23
game-server/app/servers/guild/remote/guildRemote.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import { Application, ChannelService } from 'pinus';
|
||||
import { reloadResources } from '../../../pubUtils/data';
|
||||
|
||||
export default function (app: Application) {
|
||||
return new GuildRemote(app);
|
||||
}
|
||||
|
||||
export class GuildRemote {
|
||||
|
||||
constructor(private app: Application) {
|
||||
this.app = app;
|
||||
this.channelService = app.get('channelService');
|
||||
}
|
||||
|
||||
private channelService: ChannelService;
|
||||
|
||||
/**
|
||||
* 重载json资源
|
||||
*/
|
||||
public async reloadResources() {
|
||||
reloadResources();
|
||||
}
|
||||
}
|
||||
23
game-server/app/servers/order/remote/orderRemote.ts
Normal file
23
game-server/app/servers/order/remote/orderRemote.ts
Normal file
@@ -0,0 +1,23 @@
|
||||
import { Application, ChannelService } from 'pinus';
|
||||
import { reloadResources } from '../../../pubUtils/data';
|
||||
|
||||
export default function (app: Application) {
|
||||
return new OrderRemote(app);
|
||||
}
|
||||
|
||||
export class OrderRemote {
|
||||
|
||||
constructor(private app: Application) {
|
||||
this.app = app;
|
||||
this.channelService = app.get('channelService');
|
||||
}
|
||||
|
||||
private channelService: ChannelService;
|
||||
|
||||
/**
|
||||
* 重载json资源
|
||||
*/
|
||||
public async reloadResources() {
|
||||
reloadResources();
|
||||
}
|
||||
}
|
||||
@@ -7,15 +7,15 @@ import { HeroModel, Connect } from '../../../db/Hero';
|
||||
import { CURRENCY_BY_TYPE, CURRENCY_TYPE, CONSUME_TYPE, HERO_GROW_MAX, HERO_SYSTEM_TYPE, ABI_STAGE, DEBUG_MAGIC_WORD, HERO_INITIAL_QUALITY, REDIS_KEY, TASK_TYPE } from '../../../consts';
|
||||
import { RoleModel } from '../../../db/Role';
|
||||
import { ItemModel } from '../../../db/Item';
|
||||
import { gameData, getHeroExpByLv, getHeroStarByQuality, getHeroWakeByQuality, getHeroLvByExp, getMaxGradeByjobClass, getJobByGradeAndClass, getFriendShipById, getFavourLvByExp } from '../../../pubUtils/data';
|
||||
import { gameData, getHeroExpByLv, getHeroStarByQuality, getHeroWakeByQuality, getHeroLvByExp, getMaxGradeByjobClass, getJobByGradeAndClass, getFriendShipById, getFavourLvByExp, reloadDicParam } from '../../../pubUtils/data';
|
||||
import { RewardInter } from '../../../pubUtils/interface';
|
||||
import { getDropItems, FIGURE_UNLOCK_CONDITION } from '../../../consts/constModules/itemConst'
|
||||
import { pushComposeOrangeHero, pushHeroQualityUpMsg, pushHeroStarMax, pushHeroWakeUp } from '../../../services/chatService';
|
||||
import { calculatetopLineup } from '../../../pubUtils/playerCe';
|
||||
import { PvpDefenseModel } from '../../../db/PvpDefense';
|
||||
import { Attribute } from '../../../domain/roleField/attribute';
|
||||
import { checkTaskWithHero, checkTask } from '../../../services/taskService';
|
||||
import { accomplishTask } from '../../../pubUtils/taskUtil';
|
||||
import { EQUIP } from '../../../pubUtils/dicParam';
|
||||
|
||||
export default function (app: Application) {
|
||||
return new HeroHandler(app);
|
||||
@@ -26,39 +26,8 @@ export class HeroHandler {
|
||||
}
|
||||
|
||||
public async test(msg: {}, session: BackendSession) {
|
||||
let roles = await RoleModel.find({}).lean();
|
||||
for (let role of roles) {
|
||||
let { roleId, attr: roleAttr, topLineup } = role;
|
||||
let heros = await HeroModel.findByRole(roleId);
|
||||
let sumCe = 0;
|
||||
|
||||
let pvpdefense = await PvpDefenseModel.findByRoleId(roleId);
|
||||
let { heroes: defHeroes } = pvpdefense;
|
||||
|
||||
for (let hero of heros) {
|
||||
let { hid, attr: heroAttr } = hero;
|
||||
let attr = new Attribute();
|
||||
attr.setByDbData(roleAttr, heroAttr);
|
||||
let ce = attr.calCe();
|
||||
await HeroModel.updateHeroInfo(roleId, hid, { ce, historyCe: ce });
|
||||
sumCe += ce;
|
||||
let curHero = topLineup.find(cur => cur.hid == hid);
|
||||
if (curHero) curHero.ce = ce;
|
||||
|
||||
let curDefHero = defHeroes.find(cur => cur.actorId == hid);
|
||||
if (curDefHero) curDefHero.ce = ce;
|
||||
console.log(roleId, hid, ce, sumCe)
|
||||
}
|
||||
let topLineupCe = topLineup.reduce((pre, cur) => {
|
||||
return pre + cur.ce
|
||||
}, 0);
|
||||
let defCe = defHeroes.reduce((pre, cur) => {
|
||||
return pre + cur.ce
|
||||
}, 0);
|
||||
|
||||
await RoleModel.updateRoleInfo(roleId, { ce: sumCe, topLineup, topLineupCe });
|
||||
await PvpDefenseModel.updateInfo(roleId, { defCe, heroes: defHeroes }); // 更新pvp防守阵战力
|
||||
}
|
||||
let heroes = [...gameData.hero];
|
||||
return resResult(STATUS.SUCCESS, {heroes})
|
||||
}
|
||||
|
||||
// ! 测试接口,用来测试前清理并初始化某个武将;代码抄自:gm-server/app/service/users.ts deleteHero
|
||||
|
||||
@@ -2,6 +2,7 @@ import { Application, ChannelService, FrontendSession, RemoterClass } from 'pinu
|
||||
import { STATUS } from '../../../consts/statusCode';
|
||||
import { resResult } from '../../../pubUtils/util';
|
||||
import { sendRolesMails } from '../../../services/mailService';
|
||||
import { reloadResources } from '../../../pubUtils/data';
|
||||
export default function (app: Application) {
|
||||
return new RoleRemote(app);
|
||||
}
|
||||
@@ -18,4 +19,11 @@ export class RoleRemote {
|
||||
sendGmMailsToRoles(mails) {
|
||||
sendRolesMails(mails)
|
||||
}
|
||||
|
||||
/**
|
||||
* 重载json资源
|
||||
*/
|
||||
public async reloadResources() {
|
||||
reloadResources();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ import { Application, ChannelService } from 'pinus';
|
||||
import { resetPvpSeasonTime, setPvpDefResult, guildActivityStart, gateActivityEnd, cityActivityEnd, raceActivityEnd } from '../../../services/timeTaskService';
|
||||
import PvpDefenseType from '../../../db/PvpDefense';
|
||||
import { DicGuildActivity } from '../../../pubUtils/dictionary/DicGuildActivity';
|
||||
import { reloadResources } from '../../../pubUtils/data';
|
||||
export default function (app: Application) {
|
||||
return new SystimerRemote(app);
|
||||
}
|
||||
@@ -37,4 +38,11 @@ export class SystimerRemote {
|
||||
public async raceActivityEnd() {
|
||||
return await raceActivityEnd();
|
||||
}
|
||||
|
||||
/**
|
||||
* 重载json资源
|
||||
*/
|
||||
public async reloadResources() {
|
||||
reloadResources();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,22 +12,29 @@ import { GuildRemote } from './chat/remote/guildRemote';
|
||||
import { GMRemote } from './gm/remote/gmRemote';
|
||||
import { RoleRemote } from './role/remote/roleRemote';
|
||||
import { GuildActivityRemote } from './guild/remote/guildActivityRemote';
|
||||
import { GuildRemote as GuildRemote2 } from './guild/remote/guildRemote';
|
||||
import { ActivityRemote } from './activity/remote/activityRemote';
|
||||
import { OrderRemote } from './order/remote/orderRemote';
|
||||
declare global {
|
||||
interface UserRpc {
|
||||
guild: {
|
||||
guildActivityRemote: RemoterClass<FrontendSession, GuildActivityRemote>;
|
||||
},
|
||||
chat: {
|
||||
chatRemote: RemoterClass<FrontendSession, ChatRemote>;
|
||||
guildRemote: RemoterClass<FrontendSession, GuildRemote>;
|
||||
activity: {
|
||||
activityRemote: RemoterClass<FrontendSession, ActivityRemote>;
|
||||
};
|
||||
battle: {
|
||||
comBattleRemote: RemoterClass<FrontendSession, ComBattleRemote>;
|
||||
battleRemote: RemoterClass<FrontendSession, BattleRemote>;
|
||||
};
|
||||
chat: {
|
||||
chatRemote: RemoterClass<FrontendSession, ChatRemote>;
|
||||
guildRemote: RemoterClass<FrontendSession, GuildRemote>;
|
||||
};
|
||||
connector: {
|
||||
connectorRemote: RemoterClass<FrontendSession, ConnectorRemote>;
|
||||
};
|
||||
guild: {
|
||||
guildRemote: RemoterClass<FrontendSession, GuildRemote2>;
|
||||
guildActivityRemote: RemoterClass<FrontendSession, GuildActivityRemote>;
|
||||
},
|
||||
systimer: {
|
||||
systimerRemote: RemoterClass<FrontendSession, SystimerRemote>;
|
||||
},
|
||||
@@ -36,6 +43,9 @@ declare global {
|
||||
},
|
||||
role: {
|
||||
roleRemote: RemoterClass<FrontendSession, RoleRemote>;
|
||||
},
|
||||
order: {
|
||||
orderRemote: RemoterClass<FrontendSession, OrderRemote>;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user