From 84304927c7b9cb1665c4a5eaf4191e3c2283b203 Mon Sep 17 00:00:00 2001 From: luying Date: Tue, 26 Apr 2022 20:06:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BB=BB=E5=8A=A1=EF=BC=9A=E7=99=BB=E5=BD=95?= =?UTF-8?q?=E4=BB=BB=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../servers/connector/handler/entryHandler.ts | 19 ++++++++++++++----- game-server/app/services/task/taskObj.ts | 8 +++----- game-server/app/services/task/taskService.ts | 6 +++--- shared/domain/roleField/task.ts | 2 ++ 4 files changed, 22 insertions(+), 13 deletions(-) diff --git a/game-server/app/servers/connector/handler/entryHandler.ts b/game-server/app/servers/connector/handler/entryHandler.ts index 1f2cb8bbe..5e0305b5b 100644 --- a/game-server/app/servers/connector/handler/entryHandler.ts +++ b/game-server/app/servers/connector/handler/entryHandler.ts @@ -71,8 +71,6 @@ export class EntryHandler { addRoleToWorldChannel(role.roleId, self.app.get('serverId'), role.serverId); reportOneOnline(role.roleId, user.userCode, self.app.get('serverId'), true, user); - // 任务 - checkTaskInEntry(serverId, role.roleId, self.app.get('serverId'), role); if (role.hasGuild) { addRoleToGuildChannel(role.roleId, self.app.get('serverId'), role.guildCode); } @@ -86,12 +84,20 @@ export class EntryHandler { async getData(msg: { }, session: FrontendSession) { let ip = session.get('ip'); let roleId = session.get('roleId'); + let serverId = session.get('serverId'); + let sid = session.get('sid'); let role = await RoleModel.findByRoleId(roleId, '-_id', true, true); - + let loginTime = session.get('loginTime'); // 推送数据 pushData(role.hasInit, role, session); + // 任务 + checkTaskInEntry(serverId, role.roleId, sid, role, loginTime); let todayZeroPoint = getZeroPoint(); + + session.set('loginTime', nowSeconds()); + session.push('loginTime', () => { }); + return resResult(STATUS.SUCCESS, { todayZeroPoint }); } @@ -102,7 +108,7 @@ export class EntryHandler { await session.abind(role.roleId); session.set('userid', role.userInfo.uid); session.set('roleId', role.roleId); - session.set('loginTime', nowSeconds()); + session.set('loginTime', role.loginTime); session.set('roleName', role.roleName); session.set('eventStatus', role.eventStatus); session.set('blockType', role.blockType); @@ -151,10 +157,13 @@ export class EntryHandler { let { serverId } = role; // 任务 - checkTaskInEntry(serverId, role.roleId, self.app.get('serverId'), role); + checkTaskInEntry(serverId, role.roleId, self.app.get('serverId'), role, nowSeconds()); // 推送数据 pushData(role.hasInit, role, session, 'refresh'); + session.set('loginTime', nowSeconds()); + session.push('loginTime', () => { }); + let todayZeroPoint = getZeroPoint(); return resResult(STATUS.SUCCESS, { todayZeroPoint }); } diff --git a/game-server/app/services/task/taskObj.ts b/game-server/app/services/task/taskObj.ts index e78d8c7f2..4e15dc219 100644 --- a/game-server/app/services/task/taskObj.ts +++ b/game-server/app/services/task/taskObj.ts @@ -348,19 +348,17 @@ export class CheckSingleTask { switch(this.taskType) { case TASK_TYPE.LOGIN_SUM: // 1. 累计登录 x 天 { - let role = this.getRole(); let today = getZeroPoint(); - if (today > role.loginTime) { + if (today > param.loginTime) { result = { inc: 1 } } break; } case TASK_TYPE.LOGIN_SERIES: // 2. 连续登录 x 天 { - let role = this.getRole(); let today = getZeroPoint(); - if (today > role.loginTime) { - if (today - role.loginTime > 24 * 60 * 60) { + if (today > param.loginTime) { + if (today - param.loginTime > 24 * 60 * 60) { result = { set: 1 } } else { result = { inc: 1 } diff --git a/game-server/app/services/task/taskService.ts b/game-server/app/services/task/taskService.ts index f734e0a8a..322d36c66 100644 --- a/game-server/app/services/task/taskService.ts +++ b/game-server/app/services/task/taskService.ts @@ -40,11 +40,11 @@ export async function checkTask(serverId: number, roleId: string, sid: string, t await task.saveAndPush(sid); } -export async function checkTaskInEntry(serverId: number, roleId: string, sid: string, role: RoleType) { +export async function checkTaskInEntry(serverId: number, roleId: string, sid: string, role: RoleType, loginTime: number) { let task = new CheckTask(serverId, roleId); task.setRole(role); - task.setParam(TASK_TYPE.LOGIN_SUM, {}); - task.setParam(TASK_TYPE.LOGIN_SERIES, {}); + task.setParam(TASK_TYPE.LOGIN_SUM, { loginTime }); + task.setParam(TASK_TYPE.LOGIN_SERIES, { loginTime }); await task.saveAndPush(sid); checkPopUpConditionInEntry(serverId, roleId, sid); } diff --git a/shared/domain/roleField/task.ts b/shared/domain/roleField/task.ts index acaddc49c..866212856 100644 --- a/shared/domain/roleField/task.ts +++ b/shared/domain/roleField/task.ts @@ -52,6 +52,8 @@ export class TaskParamInter { jewels?: JewelType[]; // 天晶石 debugInfo?: {condition: number}; + + loginTime?: number; }; export class TaskParam extends TaskParamInter {