任务:完成主要接口

This commit is contained in:
luying
2021-04-19 19:35:45 +08:00
parent b29b8634ad
commit ced80d9b94
16 changed files with 515 additions and 41 deletions

View File

@@ -32,34 +32,33 @@ export default class UserTaskRec extends BaseModel {
@prop({ required: true })
count: number; // 达成次数
@prop({ required: true, default: false })
received: boolean; // 是否已领取
@prop({ required: true, type: Number, default: [] })
received: number[]; // 是否已领取
private static getRefreshCondition(type: number) {
let today = getTodayZeroDate(5);
if(type == TASK_FUN_TYPE.DAILY) {
return { createdAt: { $gte: today } };
return { type, createdAt: { $gte: today } };
} else {
return {};
return { type };
}
}
public static async setTaskRec(roleId: string, type: number, taskType: number, group: number, count: number) {
let condition = this.getRefreshCondition(type);
let rec: UserTaskRecType = await UserTaskRecModel.findOneAndUpdate({ roleId, type, group, ...condition }, { $setOnInsert: { code: genCode(8), taskType, received: false }, $set: { count } }, { new: true, upsert: true }).lean();
let rec: UserTaskRecType = await UserTaskRecModel.findOneAndUpdate({ roleId, group, taskType, ...condition }, { $setOnInsert: { code: genCode(8), received: [] }, $set: { count } }, { new: true, upsert: true }).lean();
return rec;
}
public static async incTaskRec(roleId: string, type: number, taskType: number, group: number, count: number) {
let condition = this.getRefreshCondition(type);
let rec: UserTaskRecType = await UserTaskRecModel.findOneAndUpdate({ roleId, type, group, ...condition }, { $setOnInsert: { code: genCode(8), taskType, received: false }, $inc: { count } }, { new: true, upsert: true }).lean();
let rec: UserTaskRecType = await UserTaskRecModel.findOneAndUpdate({ roleId, group, taskType, ...condition }, { $setOnInsert: { code: genCode(8), received: [] }, $inc: { count } }, { new: true, upsert: true }).lean();
return rec;
}
public static async checkHistoryAndSetTaskRec(roleId: string, type: number, taskType: number, group: number, count: number) {
let condition = this.getRefreshCondition(type);
let rec: UserTaskRecType = await UserTaskRecModel.findOne({ roleId, type, group, ...condition }).lean();
let rec: UserTaskRecType = await UserTaskRecModel.findByRoleAndGroup(roleId, type, group, taskType);
if(rec) {
if(rec.count < count) {
rec = await UserTaskRecModel.setTaskRec(roleId, type, taskType, group, count);
@@ -70,7 +69,38 @@ export default class UserTaskRec extends BaseModel {
return rec;
}
public static async findByRoleAndType(roleId: string, type: number) {
let condition = this.getRefreshCondition(type);
let rec: UserTaskRecType[] = await UserTaskRecModel.find({ roleId, ...condition }).lean();
let map = new Map<number, Map<number, UserTaskRecType>>(); // taskType => group => userTask
for(let userTaskRec of rec) {
let { taskType, group } = userTaskRec;
if(!map.has(taskType)) {
map.set(taskType, new Map<number, UserTaskRecType>());
}
map.get(taskType).set(group, userTaskRec);
}
return map;
}
public static async findByRoleAndGroup(roleId: string, type: number, taskType: number, group: number) {
let condition = this.getRefreshCondition(type);
let rec: UserTaskRecType = await UserTaskRecModel.findOne({ roleId, taskType, group, ...condition }).lean();
return rec;
}
public static async receiveTask(roleId: string, type: number, taskType: number, group: number, id: number) {
let condition = this.getRefreshCondition(type);
let rec: UserTaskRecType = await UserTaskRecModel.findOneAndUpdate({ roleId, taskType, group, ...condition }, { $push: { received: id } }, { new: true }).lean();
return rec;
}
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
}
}
export const UserTaskRecModel = getModelForClass(UserTaskRec);