优化:任务中的活动读内存
This commit is contained in:
@@ -2,7 +2,7 @@ import { Application, ChannelService, HandlerService, } from 'pinus';
|
|||||||
import { ActivityModel, ActivityModelType } from '../../../db/Activity';
|
import { ActivityModel, ActivityModelType } from '../../../db/Activity';
|
||||||
import { ServerlistModel } from '../../../db/Serverlist';
|
import { ServerlistModel } from '../../../db/Serverlist';
|
||||||
import { reloadResources } from '../../../pubUtils/data';
|
import { reloadResources } from '../../../pubUtils/data';
|
||||||
import { _getActivitiesByType, _getActivityById } from '../../../services/activity/activityService';
|
import { _getActivitiesByType, _getActivityById, _getActivities } from '../../../services/activity/activityService';
|
||||||
|
|
||||||
export default function (app: Application) {
|
export default function (app: Application) {
|
||||||
new HandlerService(app, {});
|
new HandlerService(app, {});
|
||||||
@@ -73,4 +73,8 @@ export class ActivityRemote {
|
|||||||
public getActivitiesByType(serverId: number, type: number) {
|
public getActivitiesByType(serverId: number, type: number) {
|
||||||
return _getActivitiesByType(serverId, type);
|
return _getActivitiesByType(serverId, type);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public getActivities() {
|
||||||
|
return _getActivities();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -22,6 +22,7 @@ import { RScriptRecordModel } from '../../../db/RScriptRecord';
|
|||||||
import { SkinModel, SkinUpdate } from '../../../db/Skin';
|
import { SkinModel, SkinUpdate } from '../../../db/Skin';
|
||||||
import { CreateHeroes } from '../../../pubUtils/roleUtil';
|
import { CreateHeroes } from '../../../pubUtils/roleUtil';
|
||||||
import { Figure } from '../../../domain/dbGeneral';
|
import { Figure } from '../../../domain/dbGeneral';
|
||||||
|
import { getActivities } from '../../../services/activity/activityService';
|
||||||
|
|
||||||
export default function (app: Application) {
|
export default function (app: Application) {
|
||||||
new HandlerService(app, {});
|
new HandlerService(app, {});
|
||||||
@@ -57,6 +58,7 @@ export class RoleHandler {
|
|||||||
infos.set(heroInfo.hid, { heroInfo, skinInfo });
|
infos.set(heroInfo.hid, { heroInfo, skinInfo });
|
||||||
}
|
}
|
||||||
await createHero.createWithInitInfo(infos, initInfos.figureInfo);
|
await createHero.createWithInitInfo(infos, initInfos.figureInfo);
|
||||||
|
await createHero.clearTask(await getActivities());
|
||||||
await createHero.pushMessage(pinus, sid);
|
await createHero.pushMessage(pinus, sid);
|
||||||
console.log('updateRedisRank before', Date.now())
|
console.log('updateRedisRank before', Date.now())
|
||||||
await createHero.updateRedisRank(Rank);
|
await createHero.updateRedisRank(Rank);
|
||||||
|
|||||||
@@ -216,6 +216,17 @@ export async function getActivitiesByType(serverId: number, type: number) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export async function getActivities() {
|
||||||
|
let serverType = pinus.app.getServerType();
|
||||||
|
if(serverType == 'activity') {
|
||||||
|
return _getActivities();
|
||||||
|
} else {
|
||||||
|
let servers = pinus.app.getServersByType('activity');
|
||||||
|
let server = getRandSingleEelm(servers);
|
||||||
|
return <ActivityModelType[]>await pinus.app.rpc.activity.activityRemote.getActivities.toServer(server.id);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
export function _getActivityById(activityId: number) {
|
export function _getActivityById(activityId: number) {
|
||||||
return <ActivityModelType>pinus.app.get('activities')?.get(activityId);
|
return <ActivityModelType>pinus.app.get('activities')?.get(activityId);
|
||||||
}
|
}
|
||||||
@@ -232,3 +243,12 @@ export function _getActivitiesByType(serverId: number, type: number) {
|
|||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export function _getActivities() {
|
||||||
|
let activities = pinus.app.get('activities');
|
||||||
|
let result: ActivityModelType[] = [];
|
||||||
|
for(let [_, activity] of activities) {
|
||||||
|
result.push(activity);
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
@@ -24,6 +24,7 @@ import { calEquipSeids } from '../pubUtils/playerCe';
|
|||||||
import { CreateHeroes } from '../pubUtils/roleUtil';
|
import { CreateHeroes } from '../pubUtils/roleUtil';
|
||||||
import { SkinUpdate } from '../db/Skin';
|
import { SkinUpdate } from '../db/Skin';
|
||||||
import { getInitHeroById } from './roleService';
|
import { getInitHeroById } from './roleService';
|
||||||
|
import { getActivities } from './activity/activityService';
|
||||||
|
|
||||||
export class CheckMeterial {
|
export class CheckMeterial {
|
||||||
private roleId: string;
|
private roleId: string;
|
||||||
@@ -471,6 +472,7 @@ export async function createHeroes(roleId: string, roleName: string, sid: string
|
|||||||
if (infos.size > 0) {
|
if (infos.size > 0) {
|
||||||
let createHero = new CreateHeroes(roleId, roleName, serverId);
|
let createHero = new CreateHeroes(roleId, roleName, serverId);
|
||||||
await createHero.createWithHeroInfo(infos);
|
await createHero.createWithHeroInfo(infos);
|
||||||
|
await createHero.clearTask(await getActivities())
|
||||||
await createHero.pushMessage(pinus, sid);
|
await createHero.pushMessage(pinus, sid);
|
||||||
await createHero.updateRedisRank(Rank);
|
await createHero.updateRedisRank(Rank);
|
||||||
resultHeroes = createHero.getResultHeroes();
|
resultHeroes = createHero.getResultHeroes();
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import { UserTaskHistoryModel } from '../db/UserTaskHistory';
|
|||||||
import { gameData, getGoodById } from '../pubUtils/data';
|
import { gameData, getGoodById } from '../pubUtils/data';
|
||||||
import { getSeconds, getZeroPointD } from '../pubUtils/timeUtil';
|
import { getSeconds, getZeroPointD } from '../pubUtils/timeUtil';
|
||||||
import { RoleStatus } from '../db/ComBattleTeam';
|
import { RoleStatus } from '../db/ComBattleTeam';
|
||||||
|
import { getActivities } from './activity/activityService';
|
||||||
|
|
||||||
export async function checkTaskWithRoles(serverId: number, roleId: string, sid: string, taskType: number, roles: RoleType[]) {
|
export async function checkTaskWithRoles(serverId: number, roleId: string, sid: string, taskType: number, roles: RoleType[]) {
|
||||||
for (let role of roles) {
|
for (let role of roles) {
|
||||||
@@ -74,7 +75,7 @@ export async function pushTaskUpdate(roleId: string, sid: string, pushMessage: T
|
|||||||
|
|
||||||
|
|
||||||
export async function checkActivityTask(serverId: number, sid: string, roleId: string, taskType: TASK_TYPE, count: number, parma?: any) {
|
export async function checkActivityTask(serverId: number, sid: string, roleId: string, taskType: TASK_TYPE, count: number, parma?: any) {
|
||||||
let pushMessage = await taskUtil.accomplishTask(serverId, roleId, taskType, count, parma);
|
let pushMessage = await taskUtil.accomplishTask(serverId, roleId, taskType, count, parma, await getActivities());
|
||||||
pushActivityUpdate(roleId, sid, pushMessage);
|
pushActivityUpdate(roleId, sid, pushMessage);
|
||||||
return pushMessage;
|
return pushMessage;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import { reduceCe, resResult } from "./util";
|
|||||||
import { calculatetopLineup, } from "./playerCe";
|
import { calculatetopLineup, } from "./playerCe";
|
||||||
import { GuildModel, GuildType } from "../db/Guild";
|
import { GuildModel, GuildType } from "../db/Guild";
|
||||||
import { PvpDefenseModel } from "../db/PvpDefense";
|
import { PvpDefenseModel } from "../db/PvpDefense";
|
||||||
|
import { ActivityModelType } from "../db/Activity";
|
||||||
|
|
||||||
// 储存在内存中的初始数据
|
// 储存在内存中的初始数据
|
||||||
export function getInitRoleInfo() {
|
export function getInitRoleInfo() {
|
||||||
@@ -219,7 +220,6 @@ export class CreateHeroes extends UpdateHeroes {
|
|||||||
this.addRoleUpdateParam({ frames, heads, spines });
|
this.addRoleUpdateParam({ frames, heads, spines });
|
||||||
// 更新战力
|
// 更新战力
|
||||||
await this.saveCeToDb();
|
await this.saveCeToDb();
|
||||||
await this.clearTask();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 创建初始账号时候的初始
|
// 创建初始账号时候的初始
|
||||||
@@ -233,10 +233,9 @@ export class CreateHeroes extends UpdateHeroes {
|
|||||||
heroeInfos.push({ ...heroInfo, skins, _id: new HeroModel()._id});
|
heroeInfos.push({ ...heroInfo, skins, _id: new HeroModel()._id});
|
||||||
}
|
}
|
||||||
this.resultHeroes = await HeroModel.insertHeroes(this.roleId, this.roleName, this.serverId, heroeInfos);
|
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())
|
console.log('****** checkTask before', Date.now())
|
||||||
let m1 = await checkTask(this.roleId, TASK_TYPE.HERO_NUM, this.heroNum, true, {});
|
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('****** checkTask after', Date.now())
|
||||||
//成长任务
|
//成长任务
|
||||||
console.log('****** accomplishTask before', Date.now())
|
console.log('****** accomplishTask before', Date.now())
|
||||||
let mm1 = await accomplishTask(this.serverId, this.roleId, TASK_TYPE.HERO_NUM, this.heroNum)
|
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 })
|
let mm2 = await accomplishTask(this.serverId, this.roleId, TASK_TYPE.HERO_QUALITY, this.heroNum, { heroes: this.resultHeroes }, activitiesTypeMap)
|
||||||
console.log('****** accomplishTask after', Date.now())
|
console.log('****** accomplishTask after', Date.now())
|
||||||
this.activityTaskPushMessage.push(...mm1, ...mm2);
|
this.activityTaskPushMessage.push(...mm1, ...mm2);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -485,10 +485,27 @@ function checkRecResult(rec: UserTaskRecType, id: number) {
|
|||||||
* @param {number} parma 参数
|
* @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))
|
// console.log('accomplishTask', roleId, taskType, count, JSON.stringify(parma))
|
||||||
let pushMessage = [];
|
let pushMessage = [];
|
||||||
let { activityGroupId } = await ServerlistModel.findByServerId(serverId);
|
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 { createTime } = await RoleModel.findByRoleId(roleId);
|
||||||
// //成长活动统计
|
// //成长活动统计
|
||||||
// let allActivity: ActivityModelType[] = await ActivityModel.findOpenActivityByType(activityGroupId, ACTIVITY_TYPE.TASK_GROWTH, new Date());
|
// 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) {
|
for (let activity of allActivity) {
|
||||||
let playerData = new SevenDaysData(activity, createTime)
|
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) {
|
for (let activity of allActivity) {
|
||||||
let growthActivity = new DailyChallengesData(activity, createTime);
|
let growthActivity = new DailyChallengesData(activity, createTime);
|
||||||
let taskArray = growthActivity.findTaskByType(taskType, growthActivity.today());
|
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) {
|
for (let activity of allActivity) {
|
||||||
let taskActivity = new RefreshTaskData(activity, createTime);
|
let taskActivity = new RefreshTaskData(activity, createTime);
|
||||||
let taskArray = taskActivity.findTaskByType(taskType);
|
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_SUIT_JEWEL_STAGE ||
|
||||||
taskType === TASK_TYPE.EQUIP_QUALITY
|
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) {
|
for (let activity of allActivity) {
|
||||||
let thirtyDaysActivity = new ThirtyDaysData(activity, createTime);
|
let thirtyDaysActivity = new ThirtyDaysData(activity, createTime);
|
||||||
let playerRecords: ActivityThirtyDaysModelType[] = await ActivityThirtyDaysModel.findData(serverId, activity.activityId, roleId);
|
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) {
|
for (let activity of allActivity) {
|
||||||
let allTaskData: any[] = JSON.parse(activity.data);
|
let allTaskData: any[] = JSON.parse(activity.data);
|
||||||
for (let task of allTaskData) {
|
for (let task of allTaskData) {
|
||||||
@@ -834,7 +851,7 @@ export async function accomplishTask(serverId: number, roleId: string, taskType:
|
|||||||
}
|
}
|
||||||
//主线成长基金
|
//主线成长基金
|
||||||
if (taskType === TASK_TYPE.BATTLE_MAIN) {
|
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) {
|
for (let activity of allActivity) {
|
||||||
let growthFundActivity = new GrowthFundData(activity, createTime);
|
let growthFundActivity = new GrowthFundData(activity, createTime);
|
||||||
let playerRecords: ActivityGrowthFundModelType[] = await ActivityGrowthFundModel.findData(activity.activityId, roleId);
|
let playerRecords: ActivityGrowthFundModelType[] = await ActivityGrowthFundModel.findData(activity.activityId, roleId);
|
||||||
@@ -850,7 +867,7 @@ export async function accomplishTask(serverId: number, roleId: string, taskType:
|
|||||||
}
|
}
|
||||||
//镇念塔成长基金getRoleOnlineInfo
|
//镇念塔成长基金getRoleOnlineInfo
|
||||||
if (taskType === TASK_TYPE.BATTLE_TOWER_LV) {
|
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) {
|
for (let activity of allActivity) {
|
||||||
let growthFundActivity = new GrowthFundData(activity, createTime);
|
let growthFundActivity = new GrowthFundData(activity, createTime);
|
||||||
let playerRecords: ActivityGrowthFundModelType[] = await ActivityGrowthFundModel.findData(activity.activityId, roleId);
|
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) {
|
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) {
|
for (let activity of allActivity) {
|
||||||
let growthFundActivity = new GrowthFundData(activity, createTime);
|
let growthFundActivity = new GrowthFundData(activity, createTime);
|
||||||
let playerRecords: ActivityGrowthFundModelType[] = await ActivityGrowthFundModel.findData(activity.activityId, roleId);
|
let playerRecords: ActivityGrowthFundModelType[] = await ActivityGrowthFundModel.findData(activity.activityId, roleId);
|
||||||
|
|||||||
Reference in New Issue
Block a user