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