任务:完成每日刷新

This commit is contained in:
luying
2021-04-20 17:52:50 +08:00
parent ced80d9b94
commit 017c0b6bb1
7 changed files with 171 additions and 18 deletions
+59 -4
View File
@@ -1,7 +1,7 @@
import * as taskUtil from '../pubUtils/taskUtil';
import { RoleType } from '../db/Role';
import { pinus } from 'pinus';
import { resResult } from '../pubUtils/util';
import { pinus, FrontendOrBackendSession } from 'pinus';
import { resResult, shouldRefresh } from '../pubUtils/util';
import { STATUS, TASK_TYPE, TASK_FUN_TYPE } from '../consts';
import { TaskParam, TaskListReturn } from '../domain/roleField/task';
import { HeroType } from '../db/Hero';
@@ -11,8 +11,9 @@ import { HeroScores } from '../db/PvpHistoryOpp';
import { ItemInter } from '../pubUtils/interface';
import { UserTaskModel, UserTaskType } from '../db/UserTask';
import { UserTaskRecModel } from '../db/UserTaskRec';
import { UserTaskHistoryModel } from '../db/UserTaskHistory';
import { gameData } from '../pubUtils/data';
import { getCurWeekDate } from '../pubUtils/timeUtil';
import { getCurWeekDate, getSeconds } from '../pubUtils/timeUtil';
export async function checkTaskWithRoles(roleId: string, sid: string, funcs: number[], taskType: number, roles: RoleType[]) {
for(let role of roles) {
@@ -114,8 +115,25 @@ export async function checkTaskInPvpEnd(roleId: string, sid: string, funcs: numb
// 获取task状态
export async function getCurTask(roleId: string) {
export async function getCurTask(roleId: string, session: FrontendOrBackendSession) {
let userTask = await UserTaskModel.findByRole(roleId);
let { dailyTaskRefWeekly, dailyTaskRef } = userTask;
let curWeekStart = getCurWeekDate(1, 5);
if(dailyTaskRefWeekly < curWeekStart) { // 刷新周宝箱
dailyTaskRefWeekly = curWeekStart;
}
session.set('refWeekly', getSeconds(dailyTaskRefWeekly));
session.push('refWeekly', ()=> {});
if(shouldRefresh(dailyTaskRef, new Date(), 5)) {
dailyTaskRef = new Date();
userTask = await UserTaskModel.setRefDaily(roleId);
await removeHistoryTask(roleId);
}
session.set('refDaily', getSeconds(dailyTaskRef));
session.push('refDaily', ()=> {});
let mainTask = await getMainTask(roleId, userTask);
let dailyTask = await getDailyTask(roleId, userTask);
let achievement = await getAchievement(roleId, userTask);
@@ -146,6 +164,7 @@ export async function getDailyTask(roleId: string, userTask: UserTaskType) {
let { dailyTaskPoint: point, dailyTaskRefWeekly, dailyTaskPointWeekly: weeklyPoint, dailyTaskBox: box } = userTask;
let curWeekStart = getCurWeekDate(1, 5);
if(dailyTaskRefWeekly < curWeekStart) { // 刷新
dailyTaskRefWeekly = curWeekStart;
weeklyPoint = 0;
box = [];
}
@@ -178,4 +197,40 @@ export async function getAchievement(roleId: string, userTask: UserTaskType) {
}
}
return { point, taskList, box }
}
// 刷新每日任务
export async function refDailyTask(roleId: string, sid: string) {
let userTask = await UserTaskModel.findByRole(roleId);
let taskList = await getDailyTask(roleId, userTask);
// 转移每日任务
await removeHistoryTask(roleId);
let uids = [{uid: roleId, sid}];
pinus.app.get('channelService').pushMessageByUids('onDailyTaskRefresh', resResult(STATUS.SUCCESS, { taskList }), uids);
}
export async function removeHistoryTask(roleId: string, today?: Date) {
// 转移每日任务
let history = await UserTaskRecModel.getHistoryRec(roleId, today);
if(history.length > 0) {
await UserTaskHistoryModel.pushUserTask(roleId, history);
await UserTaskRecModel.deleteHistory(history);
}
}
// 刷新每日宝箱数量
export async function refDailyTaskBox(roleId: string, sid: string) {
let userTask = await UserTaskModel.refreshWeekly(roleId);
if(userTask) {
let { dailyTaskPoint: point, dailyTaskPointWeekly: weeklyPoint, dailyTaskBox: box } = userTask;
let uids = [{uid: roleId, sid}];
pinus.app.get('channelService').pushMessageByUids('onTaskBoxRefresh', resResult(STATUS.SUCCESS, {
type: TASK_FUN_TYPE.DAILY,
point, weeklyPoint, box
}), uids);
}
}