活动:任务刷新

This commit is contained in:
luying
2022-05-12 21:19:32 +08:00
parent 1fe5093757
commit 49131a1196
8 changed files with 43 additions and 56 deletions
@@ -68,7 +68,7 @@ export class RefreshTaskHandler {
return resResult(STATUS.ACTIVITY_REWARDED);
}
await ActivityRefreshTaskModel.addReceiveRecord(serverId, activityId, roleId, roundIndex, pageIndex, id, 1);
await ActivityRefreshTaskModel.addReceiveRecord(serverId, activityId, roleId, roundIndex, pageIndex, id, dailyItemData.getRefTime(), 1);
let rewardParamArr: Array<RewardParam> = stringToRewardParam(dailyItemData.reward);
let result = await addReward(roleId, roleName, sid, serverId, rewardParamArr, ITEM_CHANGE_REASON.REFRESH_TASK_REWARD)
@@ -6,31 +6,6 @@ import { RefreshTaskData } from '../../domain/activityField/refreshTaskField';
import { getRoleCreateTime, getServerCreateTime } from '../redisService';
import { getActivitiesByType, getActivityById } from './activityService';
/**
* 获取活动数据
*
* @param {number} serverId 区Id
* @param {number} activityId 活动Id
* @param {string} roleId 角色Id
*
*/
export async function getRefreshTaskActivity(serverId: number, roleId: string) {
let activityDataArray = await getActivitiesByType(serverId, ACTIVITY_TYPE.REFRESH_TASK);
if (activityDataArray.length === 0) {
return null;
}
let activityData: ActivityModelType = activityDataArray[0];
let createTime = await getRoleCreateTime(roleId);
let serverTime = await getServerCreateTime(serverId);
let playerData = new RefreshTaskData(activityData, createTime, serverTime);
let playerRecords: ActivityRefreshTaskModelType[] = await ActivityRefreshTaskModel.findData(serverId, activityData.activityId, roleId, playerData.roundIndex);
let pointRecordData: ActivityRefreshTaskPointModelType = await ActivityRefreshTaskPointModel.findData(serverId, activityData.activityId, roleId);
playerData.setPlayerRecords(playerRecords, pointRecordData);
return playerData;
}
/**
* 玩家玩家活动数据
*
+2 -2
View File
@@ -230,11 +230,11 @@ export class CheckSingleTask {
let taskArray = taskActivity.findTaskByType(taskType);
for (let task of taskArray) {
let taskUpdateParam = await this.checkIsMatch(task.taskParamArray, async () => {
let data = await ActivityRefreshTaskModel.findDataById(serverId, activityId, roleId, taskActivity.roundIndex, task.pageIndex, task.id);
let data = await ActivityRefreshTaskModel.findDataById(serverId, activityId, roleId, taskActivity.roundIndex, task.pageIndex, task.id, task.getRefTime());
return data?.records ?? [];
});
if(taskUpdateParam) {
let rec = await ActivityRefreshTaskModel.setOrIncTask(serverId, activityId, roleId, taskActivity.roundIndex, task.pageIndex, task.id, taskType, taskUpdateParam);
let rec = await ActivityRefreshTaskModel.setOrIncTask(serverId, activityId, roleId, taskActivity.roundIndex, task.pageIndex, task.id, task.getRefTime(), taskType, taskUpdateParam);
if(!rec) continue;
this.addActivityTaskPushMessage({...task, totalCount: rec.totalCount, receiveRewardCount: rec.receiveRewardCount||0, activityId });
}
+14 -12
View File
@@ -19,6 +19,8 @@ export default class Activity_Refresh_Task extends BaseModel {
@prop({ required: true })
pageIndex: number; // 第几页
@prop({ required: true })
refTime: number; // 刷新时间
@prop({ required: true })
id: number; // id
@prop({ required: true })
taskType: number; // 任务类型
@@ -32,21 +34,21 @@ export default class Activity_Refresh_Task extends BaseModel {
records: string[]; // 数据信息
//任务领取记录
public static async addReceiveRecord(serverId: number, activityId: number, roleId: string, roundIndex: number, pageIndex: number, id: number, count: number) {
let result: ActivityRefreshTaskModelType = await ActivityRefreshTaskModel.findOneAndUpdate({ serverId, roleId, activityId, roundIndex, pageIndex, id },
public static async addReceiveRecord(serverId: number, activityId: number, roleId: string, roundIndex: number, pageIndex: number, id: number, refTime: number, count: number) {
let result: ActivityRefreshTaskModelType = await ActivityRefreshTaskModel.findOneAndUpdate({ serverId, roleId, activityId, roundIndex, pageIndex, id, refTime },
{ $inc: { receiveRewardCount: count } }, { upsert: true, new: true }).lean(true);
return result;
}
// 更新任务
public static async setOrIncTask(serverId: number, activityId: number, roleId: string, roundIndex: number, pageIndex: number, id: number, taskType: number, param: UpdateTaskParam) {
public static async setOrIncTask(serverId: number, activityId: number, roleId: string, roundIndex: number, pageIndex: number, id: number, refTime: number, taskType: number, param: UpdateTaskParam) {
if(param.set) {
return await this.setTaskCount(serverId, activityId, roleId, roundIndex, pageIndex, id, taskType, param.set, param.records);
return await this.setTaskCount(serverId, activityId, roleId, roundIndex, pageIndex, id, refTime, taskType, param.set, param.records);
} else if (param.inc) {
return await this.addTaskCount(serverId, activityId, roleId, roundIndex, pageIndex, id, taskType, param.inc, param.records);
return await this.addTaskCount(serverId, activityId, roleId, roundIndex, pageIndex, id, refTime, taskType, param.inc, param.records);
} else if (param.records){
let result: ActivityRefreshTaskModelType = await ActivityRefreshTaskModel.findOneAndUpdate({ serverId, roleId, activityId, roundIndex, pageIndex, id },
let result: ActivityRefreshTaskModelType = await ActivityRefreshTaskModel.findOneAndUpdate({ serverId, roleId, activityId, roundIndex, pageIndex, id, refTime },
{ $set: { records: param.records, taskType } }, { upsert: true, new: true }).lean();
return result;
}
@@ -54,15 +56,15 @@ export default class Activity_Refresh_Task extends BaseModel {
//根据活动统计完成任务次数
public static async setTaskCount(serverId: number, activityId: number, roleId: string, roundIndex: number, pageIndex: number, id: number, taskType: number, count: number, records?: string[]) {
let result: ActivityRefreshTaskModelType = await ActivityRefreshTaskModel.findOneAndUpdate({ serverId, roleId, activityId, roundIndex, pageIndex, id },
public static async setTaskCount(serverId: number, activityId: number, roleId: string, roundIndex: number, pageIndex: number, id: number, refTime: number, taskType: number, count: number, records?: string[]) {
let result: ActivityRefreshTaskModelType = await ActivityRefreshTaskModel.findOneAndUpdate({ serverId, roleId, activityId, roundIndex, pageIndex, id, refTime },
{ $set: { totalCount: count, records: records||[], taskType }}, { upsert: true, new: true }).lean();
return result;
}
//根据活动统计完成任务次数
public static async addTaskCount(serverId: number, activityId: number, roleId: string, roundIndex: number, pageIndex: number, id: number, taskType: number, count: number, records?: string[]) {
let result: ActivityRefreshTaskModelType = await ActivityRefreshTaskModel.findOneAndUpdate({ serverId, roleId, activityId, roundIndex, pageIndex, id },
public static async addTaskCount(serverId: number, activityId: number, roleId: string, roundIndex: number, pageIndex: number, id: number, refTime: number, taskType: number, count: number, records?: string[]) {
let result: ActivityRefreshTaskModelType = await ActivityRefreshTaskModel.findOneAndUpdate({ serverId, roleId, activityId, roundIndex, pageIndex, id, refTime },
{ $inc: { totalCount: count }, $set: { records: records||[], taskType } }, { upsert: true, new: true }).lean();
return result;
}
@@ -75,8 +77,8 @@ export default class Activity_Refresh_Task extends BaseModel {
}
//查询活动数据
public static async findDataById(serverId: number, activityId: number, roleId: string, roundIndex: number, pageIndex: number, id: number) {
let result: ActivityRefreshTaskModelType = await ActivityRefreshTaskModel.findOne({ serverId, roleId, activityId, roundIndex, pageIndex, id }).lean(true);
public static async findDataById(serverId: number, activityId: number, roleId: string, roundIndex: number, pageIndex: number, id: number, refTime: number) {
let result: ActivityRefreshTaskModelType = await ActivityRefreshTaskModel.findOne({ serverId, roleId, activityId, roundIndex, pageIndex, id, refTime }).lean(true);
return result;
}
@@ -45,7 +45,8 @@ export class RefreshShopItem {
let refZeroPoint = getZeroPoint(this.refreshType);
let records = data.records ? data.records : [];
let buyRecords = records.filter(obj => {
let curRefTime = getZeroPointOfTime(obj.time);
let curRefTime = getZeroPointOfTime(obj.time, this.refreshType);
console.log(curRefTime, refZeroPoint)
return obj && obj.id === this.id && obj.pageIndex == this.pageIndex && curRefTime == refZeroPoint
});
this.buyCount = buyRecords.length;
@@ -1,7 +1,8 @@
import { TASK_TYPE } from '../../consts';
import { SHOP_REFRESH_TYPE, TASK_TYPE } from '../../consts';
import { ActivityModelType } from '../../db/Activity';
import { ActivityRefreshTaskModelType } from '../../db/ActivityRefreshTask';
import { ActivityRefreshTaskPointModelType } from '../../db/ActivityRefreshTaskPoint';
import { getZeroPoint } from '../../pubUtils/timeUtil';
import { parseNumberList } from '../../pubUtils/util';
import { ActivityBase } from './activityField';
@@ -21,8 +22,9 @@ export class RefreshTaskItem {
taskParamArray: number[] = [];
totalCount: number = 0; //完成任务累计次数
receiveRewardCount: number = 0; //领取奖励次数
refreshType: SHOP_REFRESH_TYPE = SHOP_REFRESH_TYPE.FOREVER;
constructor(data: any, pageIndex: number) {
constructor(data: any, pageIndex: number, refreshType: number) {
this.pageIndex = pageIndex;
this.id = data.id;
this.name = data.name;
@@ -35,6 +37,11 @@ export class RefreshTaskItem {
this.totalCount = 0;
this.receiveRewardCount = 0;
this.taskParamArray = parseNumberList(data.taskParam);
this.refreshType = refreshType;
}
public getRefTime() {
return getZeroPoint(this.refreshType);
}
}
@@ -47,9 +54,8 @@ export class RefreshTaskPage {
constructor(data: any) {
this.pageIndex = data.pageIndex;
this.name = data.name;
this.items = [];
for (let obj of data.items) {
this.items.push(new RefreshTaskItem(obj, data.pageIndex))
this.items.push(new RefreshTaskItem(obj, data.pageIndex, data.refreshType));
}
}
}
@@ -92,7 +98,8 @@ export class RefreshTaskData extends ActivityBase {
public setPlayerRecords(data: ActivityRefreshTaskModelType[], pointRecordData: ActivityRefreshTaskPointModelType) {
for (let pageData of this.list) {
for (let item of pageData.items) {
let index = data.findIndex(record => { return item.id == record.id && item.pageIndex == record.pageIndex && item.taskType == record.taskType })
let refTime = item.getRefTime();
let index = data.findIndex(record => { return item.id == record.id && item.pageIndex == record.pageIndex && item.taskType == record.taskType && refTime == record.refTime});
if (index != -1) {
item.totalCount = data[index].totalCount ? data[index].totalCount : 0;
item.receiveRewardCount = data[index].receiveRewardCount ? data[index].receiveRewardCount : 0;
+2
View File
@@ -499,6 +499,8 @@ export function getZeroPointOfTime(refTime: Date, refreshType: SHOP_REFRESH_TYPE
return <number>t.getWeekZeroPoint();
} else if (refreshType == SHOP_REFRESH_TYPE.MONTHLY) {
return <number>t.getMonthZeroPoint();
} else {
return 0
}
}
+10 -10
View File
@@ -4,7 +4,7 @@
"structureId": 3,
"level": 1,
"bossLevel": 10,
"warIdHP": "8001&10000000&10|8008&10000000&10",
"warIdHP": "8001&100000&10|8008&100000&10",
"rewards": 1,
"consume": 50000,
"buildWords": "&",
@@ -22,7 +22,7 @@
"structureId": 3,
"level": 2,
"bossLevel": 20,
"warIdHP": "8009&20000000&20|8010&20000000&20|8016&20000000&20",
"warIdHP": "8010&200000&20",
"rewards": 1,
"consume": 125000,
"buildWords": "&",
@@ -40,7 +40,7 @@
"structureId": 3,
"level": 3,
"bossLevel": 30,
"warIdHP": "8017&30000000&30|8018&30000000&30|8024&30000000&30",
"warIdHP": "8024&300000&30",
"rewards": 2,
"consume": 350000,
"buildWords": "&",
@@ -58,7 +58,7 @@
"structureId": 3,
"level": 4,
"bossLevel": 40,
"warIdHP": "8025&40000000&40|8026&40000000&40|8027&40000000&40|8032&40000000&40",
"warIdHP": "8026&400000&40",
"rewards": 2,
"consume": 800000,
"buildWords": "&",
@@ -76,7 +76,7 @@
"structureId": 3,
"level": 5,
"bossLevel": 50,
"warIdHP": "8033&50000000&50|8034&50000000&50|8035&50000000&50|8040&50000000&50",
"warIdHP": "8033&500000&50|8034&500000&50|8035&500000&50|8040&500000&50",
"rewards": 2,
"consume": 1700000,
"buildWords": "&",
@@ -94,7 +94,7 @@
"structureId": 3,
"level": 6,
"bossLevel": 60,
"warIdHP": "8041&60000000&60|8042&60000000&60|8043&60000000&60|8044&60000000&60|8048&60000000&60",
"warIdHP": "8044&600000&60",
"rewards": 2,
"consume": 3500000,
"buildWords": "&",
@@ -112,7 +112,7 @@
"structureId": 3,
"level": 7,
"bossLevel": 70,
"warIdHP": "8049&70000000&65|8050&70000000&65|8051&70000000&65|8052&70000000&65|8056&70000000&65",
"warIdHP": "8049&700000&65|8050&700000&65|8051&700000&65|8052&700000&65|8056&700000&65",
"rewards": 3,
"consume": 6125000,
"buildWords": "&",
@@ -130,7 +130,7 @@
"structureId": 3,
"level": 8,
"bossLevel": 80,
"warIdHP": "8057&80000000&70|8058&80000000&70|8059&80000000&70|8060&80000000&70|8061&80000000&70|8064&80000000&70",
"warIdHP": "8061&800000&70",
"rewards": 3,
"consume": 9125000,
"buildWords": "&",
@@ -148,7 +148,7 @@
"structureId": 3,
"level": 9,
"bossLevel": 90,
"warIdHP": "8065&90000000&75|8066&90000000&75|8067&90000000&75|8068&90000000&75|8069&90000000&75|8070&90000000&75|8072&90000000&75",
"warIdHP": "8070&900000&75",
"rewards": 3,
"consume": 13625000,
"buildWords": "&",
@@ -166,7 +166,7 @@
"structureId": 3,
"level": 10,
"bossLevel": 100,
"warIdHP": "8073&100000000&80|8074&100000000&80|8075&100000000&80|8076&100000000&80|8077&100000000&80|8078&100000000&80|8079&100000000&80|8080&100000000&80",
"warIdHP": "8079&1000000&80",
"rewards": 3,
"consume": 0,
"buildWords": "&",