任务:完成每日刷新

This commit is contained in:
luying
2021-04-20 17:52:34 +08:00
parent ced80d9b94
commit 017c0b6bb1
7 changed files with 171 additions and 18 deletions

View File

@@ -16,6 +16,9 @@ export default class UserTask extends BaseModel {
@prop({ required: true, default: 1 })
mainTaskStage: number; // 主线所处在的阶段
@prop({ required: true })
dailyTaskRef: Date; // 每日任务的每周刷新时间
@prop({ required: true, default: 0 })
dailyTaskPoint: number; // 每日任务的累计积分
@@ -75,10 +78,25 @@ export default class UserTask extends BaseModel {
return rec;
}
public static async refreshWeekly(roleId: string) {
let curWeek = getCurWeekDate(1, 5);
let rec: UserTaskType = await UserTaskModel.findOneAndUpdate({ roleId, dailyTaskRefWeekly: { $lt: curWeek } }, {
$set: { dailyTaskRefWeekly: curWeek, dailyTaskPointWeekly: 0, dailyTaskBox: [] }
}, { new: true }).lean();
return rec;
}
public static async pushAchievementBox(roleId: string, id: number) {
let rec = await UserTaskModel.findOneAndUpdate({ roleId }, { $push: { achievementBox: id } }, { new: true }).lean();
return rec;
}
public static async setRefDaily(roleId: string) {
let rec: UserTaskType = await UserTaskModel.findOneAndUpdate({ roleId }, {
$set: { dailyTaskRef: new Date() }
}, { new: true }).lean();
return rec;
}
}
export const UserTaskModel = getModelForClass(UserTask);

View File

@@ -0,0 +1,29 @@
import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose';
import UserTaskRec, { UserTaskRecType } from './UserTaskRec';
/**
* 玩家每日任务,每天刷掉的旧任务汇总
**/
@modelOptions({ schemaOptions: { id: false } })
@index({ roleId: 1 })
export default class UserTaskHistory extends BaseModel {
@prop({ required: true })
roleId: string; // 玩家id
@prop({ required: true, type: UserTaskRec, default: [] })
list: UserTaskRec[]; // 是否已领取
public static async pushUserTask(roleId: string, userTaskRec: UserTaskRecType[]) {
let rec: UserTaskHistoryType = await UserTaskHistoryModel.findOneAndUpdate({ roleId }, { $push: { list: { $each: userTaskRec } } }, { new: true, upsert: true }).lean();
return rec;
}
}
export const UserTaskHistoryModel = getModelForClass(UserTaskHistory);
export interface UserTaskHistoryType extends Pick<DocumentType<UserTaskHistory>, keyof UserTaskHistory> { }
export type UserTaskHistoryParam = Partial<UserTaskHistoryType>;

View File

@@ -5,10 +5,11 @@ import { genCode } from '../pubUtils/util';
import { getTodayZeroDate } from '../pubUtils/timeUtil';
/**
* 玩家购买商店记录表,每个商品一条,每次刷新新建一条
* 玩家任务记录表
**/
@modelOptions({ schemaOptions: { id: false } })
@index({ roleId: 1, itemId: 1 })
@index({ code: 1 })
@index({ roleId: 1, type: 1, taskType: 1, group: 1 })
export default class UserTaskRec extends BaseModel {
@prop({ required: true })
@@ -20,9 +21,6 @@ export default class UserTaskRec extends BaseModel {
@prop({ required: true, enum: TASK_FUN_TYPE })
type: number; // 任务类型
@prop({ required: true })
id: number; // 任务id任务表内id
@prop({ required: true })
taskType: number; // 行为类型
@@ -98,9 +96,20 @@ export default class UserTaskRec extends BaseModel {
public static async getReceiveRec(roleId: string, type: number) {
let condition = this.getRefreshCondition(type);
let rec = await UserTaskRecModel.find({ roleId, ...condition }).lean();
console.log(JSON.stringify(rec))
return rec
}
public static async getHistoryRec(roleId: string, today?: Date) {
if(!today) today = getTodayZeroDate(5);
let rec: UserTaskRecType[] = await UserTaskRecModel.find({ roleId, type: TASK_FUN_TYPE.DAILY, createdAt: { $lt: today } }).lean();
return rec
}
public static async deleteHistory(history: UserTaskRecType[]) {
let codes = history.map(cur => cur.code);
let result = await UserTaskRecModel.deleteMany({ code: { $in: codes } });
return result;
}
}
export const UserTaskRecModel = getModelForClass(UserTaskRec);