任务:完成每日刷新
This commit is contained in:
@@ -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);
|
||||
|
||||
29
shared/db/UserTaskHistory.ts
Normal file
29
shared/db/UserTaskHistory.ts
Normal 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>;
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user