活动:任务刷新
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 玩家玩家活动数据
|
||||
*
|
||||
|
||||
@@ -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 });
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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": "&",
|
||||
|
||||
Reference in New Issue
Block a user