import { MissionActivity } from './MissionActivity'; import { AwardActivity } from './AwardActivity'; import { UserInfo } from './UserInfo'; /** * 任务执行参数接口 */ export interface MissionExecuteParams { /** 任务code */ missionCode: string; /** 活动code */ activityCode: string; /** 任务活动code */ missionActivityCode: string; } /** * 处理后的活动结果类 * 包含三个主要的数据类实例 */ export class ProcessedActivityResult { /** 任务活动信息 */ public readonly missionActivity: MissionActivity; /** 奖励活动信息 */ public readonly awardActivity: AwardActivity; /** 用户信息 */ public readonly userInfo: UserInfo; constructor( missionActivity: MissionActivity, awardActivity: AwardActivity, userInfo: UserInfo ) { this.missionActivity = missionActivity; this.awardActivity = awardActivity; this.userInfo = userInfo; } /** * 获取活动概览信息 */ getActivityOverview() { return { 任务活动状态: this.missionActivity.isActive ? '进行中' : '已结束', 任务活动剩余时间: this.missionActivity.timeRemainingText, 奖励活动状态: this.awardActivity.isActive ? '进行中' : '已结束', 用户积分: this.userInfo.points, 可兑换奖品数: this.awardActivity.availablePrizesCount, 是否有新任务: this.userInfo.hasClaimableMissions }; } /** * 执行任务 - 传递基本参数 * @param missionCode 任务code * @param callback 执行任务的回调函数 */ async executeMission( missionCode: string, callback: (params: MissionExecuteParams) => Promise, activityCode?: string ): Promise { // 构建执行任务所需的基本参数 const executeParams: MissionExecuteParams = { missionCode, activityCode: activityCode || '', // 如果没有传入,可以从其他地方获取 missionActivityCode: this.missionActivity.missionActivityCode }; // 执行任务 return await callback(executeParams); } /** * 获取任务执行参数 * @param missionCode 任务code * @param activityCode 活动code(可选) * @returns 任务执行参数对象 */ getMissionExecuteParams(missionCode: string, activityCode?: string): MissionExecuteParams { return { missionCode, activityCode: activityCode || '', missionActivityCode: this.missionActivity.missionActivityCode }; } /** * 转换为JSON对象 */ toJSON() { return { missionActivity: this.missionActivity.toJSON(), awardActivity: this.awardActivity.toJSON(), userInfo: this.userInfo.toJSON() }; } }