Files
ZYZ/game-server/app/servers/activity/handler/activityHandler.ts
2022-08-01 16:20:23 +08:00

102 lines
4.2 KiB
TypeScript

import { Application, BackendSession, HandlerService, pinus, } from 'pinus';
import { resResult } from '../../../pubUtils/util';
import { ENCRYPT_IV, ENCRYPT_KEY, STATUS, TASK_TYPE } from '../../../consts';
import { ActivityGroupModel } from '../../../db/ActivityGroup';
import { ServerlistModel } from '../../../db/Serverlist';
import { getActivitiesWithOrder, getActivity, getActivityById } from '../../../services/activity/activityService';
import { ActivityModel, ActivityModelType } from '../../../db/Activity';
import { UserOrderModel } from '../../../db/UserOrder';
export default function (app: Application) {
new HandlerService(app, {});
return new ActivityHandler(app);
}
export class ActivityHandler {
constructor(private app: Application) {
}
/**
* @description 活动是否开启总接口
* @param {{ }} msg
* @param {BackendSession} session
* @memberof ActivityHandler
*/
async getAllOpenActivity(msg: {}, session: BackendSession) {
const { } = msg;
const roleId = session.get('roleId');
const serverId = session.get('serverId');
const guildCode = session.get('guildCode');
const sid: string = session.get('sid');
let playerActivityArray = [];
let groups = await ActivityGroupModel.findByServerId(serverId);
let playerGroupArray = [];
for (let groupData of groups) {
let playerGroupActivityArray = [];
for (let activityId of groupData.activities) {
let activityData = await getActivityById(activityId);
if (activityData) {
let playerActivityData = await getActivity(serverId, roleId, guildCode, activityId, activityData.type);
if(playerActivityData) {
playerGroupActivityArray.push(playerActivityData);
}
}
}
playerGroupArray.push({
id: groupData.groupId,
type: groupData.type,
activities: playerGroupActivityArray
});
console.log(`${roleId} 活动合集 groupId:${groupData.groupId}, 合集类型${groupData.type}, 一共${playerGroupActivityArray.length}`)
}
return resResult(STATUS.SUCCESS, { playerActivityArray, playerGroupArray });
}
async getActivitiesByOrder(msg: { localOrderID: string }, session: BackendSession) {
const { localOrderID } = msg;
const roleId = session.get('roleId');
const serverId = session.get('serverId');
const guildCode = session.get('guildCode');
let orderInfo = await UserOrderModel.findOrder(localOrderID);
if (!orderInfo || orderInfo.roleId != roleId) {
return resResult(STATUS.NO_ORDER);
}
let activities: ActivityModelType[] = await getActivitiesWithOrder(orderInfo);
let result = [];
for(let activityData of activities) {
if (!activityData) continue;
let playerActivityData = await getActivity(serverId, roleId, guildCode, activityData.activityId, activityData.type);
if(playerActivityData) {
result.push(playerActivityData);
}
}
return resResult(STATUS.SUCCESS, { activities: result });
}
async debugActivityMemory(msg: {}, session: BackendSession) {
const { } = msg;
const roleId = session.get('roleId');
const serverId = session.get('serverId');
const sid: string = session.get('sid');
let activities = pinus.app.get('activities');
let activityByType = pinus.app.get('activityByType');
let activityByServer = pinus.app.get('activityByServer');
let groupToServer = pinus.app.get('groupToServer');
console.log('****** activities', activities);
console.log('****** activityByType', activityByType);
console.log('****** activityByServer', activityByServer);
console.log('****** groupToServer', groupToServer);
return resResult(STATUS.SUCCESS, { activities: [...activities], activityByType: [...activityByType], activityByServer: [...activityByServer], groupToServer: [...groupToServer] });
}
}