Merge branch 'feature/backend'

This commit is contained in:
luying
2021-05-12 20:09:18 +08:00
108 changed files with 1717 additions and 1151 deletions

View 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();
}
}

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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;
}
}
/**

View File

@@ -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();
}
}

View File

@@ -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
});
}
}
}

View 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();
}
}

View 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();
}
}

View File

@@ -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

View File

@@ -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();
}
}

View File

@@ -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();
}
}

View File

@@ -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>;
}
}
}