后台:道具获取

This commit is contained in:
luying
2021-11-26 14:54:51 +08:00
parent e7566b8af5
commit 4d6b87ce97
18 changed files with 149 additions and 148 deletions

View File

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

View File

@@ -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() {

View File

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

View File

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

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

View File

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

View File

@@ -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';
/**
* 获取活动数据

View File

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

View File

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

View File

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