优化:任务中的活动读内存

This commit is contained in:
luying
2021-09-13 09:51:57 +08:00
parent aef511b1aa
commit d3f743ab4e
7 changed files with 61 additions and 16 deletions
+4 -5
View File
@@ -15,6 +15,7 @@ import { reduceCe, resResult } from "./util";
import { calculatetopLineup, } from "./playerCe";
import { GuildModel, GuildType } from "../db/Guild";
import { PvpDefenseModel } from "../db/PvpDefense";
import { ActivityModelType } from "../db/Activity";
// 储存在内存中的初始数据
export function getInitRoleInfo() {
@@ -219,7 +220,6 @@ export class CreateHeroes extends UpdateHeroes {
this.addRoleUpdateParam({ frames, heads, spines });
// 更新战力
await this.saveCeToDb();
await this.clearTask();
}
// 创建初始账号时候的初始
@@ -233,10 +233,9 @@ export class CreateHeroes extends UpdateHeroes {
heroeInfos.push({ ...heroInfo, skins, _id: new HeroModel()._id});
}
this.resultHeroes = await HeroModel.insertHeroes(this.roleId, this.roleName, this.serverId, heroeInfos);
await this.clearTask();
}
private async clearTask() {
public async clearTask(activitiesTypeMap: ActivityModelType[]) {
// 任务
console.log('****** checkTask before', Date.now())
let m1 = await checkTask(this.roleId, TASK_TYPE.HERO_NUM, this.heroNum, true, {});
@@ -247,8 +246,8 @@ export class CreateHeroes extends UpdateHeroes {
console.log('****** checkTask after', Date.now())
//成长任务
console.log('****** accomplishTask before', Date.now())
let mm1 = await accomplishTask(this.serverId, this.roleId, TASK_TYPE.HERO_NUM, this.heroNum)
let mm2 = await accomplishTask(this.serverId, this.roleId, TASK_TYPE.HERO_QUALITY, this.heroNum, { heroes: this.resultHeroes })
let mm1 = await accomplishTask(this.serverId, this.roleId, TASK_TYPE.HERO_NUM, this.heroNum, null, activitiesTypeMap)
let mm2 = await accomplishTask(this.serverId, this.roleId, TASK_TYPE.HERO_QUALITY, this.heroNum, { heroes: this.resultHeroes }, activitiesTypeMap)
console.log('****** accomplishTask after', Date.now())
this.activityTaskPushMessage.push(...mm1, ...mm2);
}
+26 -9
View File
@@ -485,10 +485,27 @@ function checkRecResult(rec: UserTaskRecType, id: number) {
* @param {number} parma 参数
*
*/
export async function accomplishTask(serverId: number, roleId: string, taskType: TASK_TYPE, count: number, parma?: any) {
export async function accomplishTask(serverId: number, roleId: string, taskType: TASK_TYPE, count: number, parma?: any, activities?: ActivityModelType[]) {
// console.log('accomplishTask', roleId, taskType, count, JSON.stringify(parma))
let pushMessage = [];
let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
let findActivitiesByTypes = async (types: number[]) => {
if(activities) {
let result: ActivityModelType[] = [];
for(let activity of activities) {
if(activityGroupId.includes(activity.groupId) && types.includes(activity.type)) {
result.push(activity);
}
}
return result;
} else {
if(types.length > 1) {
return ActivityModel.findOpenActivityByTypes(activityGroupId, types, new Date());
} else {
return ActivityModel.findOpenActivityByType(activityGroupId, types[0], new Date());
}
}
}
let { createTime } = await RoleModel.findByRoleId(roleId);
// //成长活动统计
// let allActivity: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.TASK_GROWTH, new Date());
@@ -551,7 +568,7 @@ export async function accomplishTask(serverId: number, roleId: string, taskType:
// }
//七天乐
let allActivity: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.SEVEN_DAY, new Date());
let allActivity: ActivityModelType[] = await findActivitiesByTypes([ACTIVITY_TYPE.SEVEN_DAY]);
for (let activity of allActivity) {
let playerData = new SevenDaysData(activity, createTime)
//成长活动统计
@@ -609,7 +626,7 @@ export async function accomplishTask(serverId: number, roleId: string, taskType:
}
//今日挑战统计
allActivity = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.TASK_DAILY_CHALLENGES, new Date());
allActivity = await findActivitiesByTypes([ACTIVITY_TYPE.TASK_DAILY_CHALLENGES]);
for (let activity of allActivity) {
let growthActivity = new DailyChallengesData(activity, createTime);
let taskArray = growthActivity.findTaskByType(taskType, growthActivity.today());
@@ -639,7 +656,7 @@ export async function accomplishTask(serverId: number, roleId: string, taskType:
}
//刷新任务统计
allActivity = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.REFRESH_TASK, new Date());
allActivity = await findActivitiesByTypes([ACTIVITY_TYPE.REFRESH_TASK]);
for (let activity of allActivity) {
let taskActivity = new RefreshTaskData(activity, createTime);
let taskArray = taskActivity.findTaskByType(taskType);
@@ -729,7 +746,7 @@ export async function accomplishTask(serverId: number, roleId: string, taskType:
taskType === TASK_TYPE.EQUIP_SUIT_JEWEL_STAGE ||
taskType === TASK_TYPE.EQUIP_QUALITY
) {
allActivity = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.THIRTY_DAYS, new Date());
allActivity = await findActivitiesByTypes([ACTIVITY_TYPE.THIRTY_DAYS]);
for (let activity of allActivity) {
let thirtyDaysActivity = new ThirtyDaysData(activity, createTime);
let playerRecords: ActivityThirtyDaysModelType[] = await ActivityThirtyDaysModel.findData(serverId, activity.activityId, roleId);
@@ -762,7 +779,7 @@ export async function accomplishTask(serverId: number, roleId: string, taskType:
//弹出商店
{
allActivity = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.POP_UP_SHOP, new Date());
allActivity = await findActivitiesByTypes([ACTIVITY_TYPE.POP_UP_SHOP]);
for (let activity of allActivity) {
let allTaskData: any[] = JSON.parse(activity.data);
for (let task of allTaskData) {
@@ -834,7 +851,7 @@ export async function accomplishTask(serverId: number, roleId: string, taskType:
}
//主线成长基金
if (taskType === TASK_TYPE.BATTLE_MAIN) {
allActivity = await ActivityModel.findOpenActivityByTypes(activityGroupId, [ACTIVITY_TYPE.GROWTH_FUND_MAIN, ACTIVITY_TYPE.GROWTH_FUND_MAIN_VIP], new Date());
allActivity = await findActivitiesByTypes([ACTIVITY_TYPE.GROWTH_FUND_MAIN, ACTIVITY_TYPE.GROWTH_FUND_MAIN_VIP]);
for (let activity of allActivity) {
let growthFundActivity = new GrowthFundData(activity, createTime);
let playerRecords: ActivityGrowthFundModelType[] = await ActivityGrowthFundModel.findData(activity.activityId, roleId);
@@ -850,7 +867,7 @@ export async function accomplishTask(serverId: number, roleId: string, taskType:
}
//镇念塔成长基金getRoleOnlineInfo
if (taskType === TASK_TYPE.BATTLE_TOWER_LV) {
allActivity = await ActivityModel.findOpenActivityByTypes(activityGroupId, [ACTIVITY_TYPE.GROWTH_FUND_TOWER, ACTIVITY_TYPE.GROWTH_FUND_TOWER_VIP], new Date());
allActivity = await findActivitiesByTypes([ACTIVITY_TYPE.GROWTH_FUND_TOWER, ACTIVITY_TYPE.GROWTH_FUND_TOWER_VIP]);
for (let activity of allActivity) {
let growthFundActivity = new GrowthFundData(activity, createTime);
let playerRecords: ActivityGrowthFundModelType[] = await ActivityGrowthFundModel.findData(activity.activityId, roleId);
@@ -866,7 +883,7 @@ export async function accomplishTask(serverId: number, roleId: string, taskType:
}
//精英成长基金
if (taskType === TASK_TYPE.BATTLE_MAIN_ELITE) {
allActivity = await ActivityModel.findOpenActivityByTypes(activityGroupId, [ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE, ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE_VIP], new Date());
allActivity = await findActivitiesByTypes([ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE, ACTIVITY_TYPE.GROWTH_FUND_MAIN_ELITE_VIP]);
for (let activity of allActivity) {
let growthFundActivity = new GrowthFundData(activity, createTime);
let playerRecords: ActivityGrowthFundModelType[] = await ActivityGrowthFundModel.findData(activity.activityId, roleId);