活动:30天任务支持多次重复购买
This commit is contained in:
@@ -76,8 +76,8 @@ export class PopUpShopHandler {
|
|||||||
if (!playerRecords) {
|
if (!playerRecords) {
|
||||||
return resResult(STATUS.ACTIVITY_POP_UP_SHOP_EXPIRE);
|
return resResult(STATUS.ACTIVITY_POP_UP_SHOP_EXPIRE);
|
||||||
}
|
}
|
||||||
if (playerRecords.isBuy) {
|
if (playerRecords.buyCount >= playerData.count) {
|
||||||
return resResult(STATUS.ACTIVITY_REWARDED);
|
return resResult(STATUS.ACTIVITY_MAX_COUNT);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (playerData.condition > playerRecords.totalCount) {
|
if (playerData.condition > playerRecords.totalCount) {
|
||||||
@@ -96,7 +96,9 @@ export class PopUpShopHandler {
|
|||||||
let rewardParamArr: Array<RewardParam> = stringToRewardParam(playerData.reward);
|
let rewardParamArr: Array<RewardParam> = stringToRewardParam(playerData.reward);
|
||||||
let result = await addReward(roleId, roleName, sid, serverId, funcs, rewardParamArr)
|
let result = await addReward(roleId, roleName, sid, serverId, funcs, rewardParamArr)
|
||||||
|
|
||||||
playerData.isBuy = true;
|
await ActivityPopUpShopModel.addRecord(serverId, activityId, roleId, id, playerData.taskType, 1);
|
||||||
|
|
||||||
|
playerData.buyCount += 1;
|
||||||
return resResult(STATUS.SUCCESS, Object.assign(result, {
|
return resResult(STATUS.SUCCESS, Object.assign(result, {
|
||||||
param: { activityId, id },
|
param: { activityId, id },
|
||||||
item: playerData
|
item: playerData
|
||||||
|
|||||||
@@ -42,13 +42,12 @@ export async function getPlayerPopUpShopData(activityId: number, serverId: numbe
|
|||||||
let allPlayerShop = [];
|
let allPlayerShop = [];
|
||||||
let allTaskData = JSON.parse(activityData.data);
|
let allTaskData = JSON.parse(activityData.data);
|
||||||
for (let record of playerRecords) {
|
for (let record of playerRecords) {
|
||||||
if (!record.isBuy) {//没有购买
|
if (record.isPush) {//没有购买
|
||||||
let index = allTaskData.findIndex(obj => { return obj && obj.id === record.id && obj.taskType === record.type })
|
let index = allTaskData.findIndex(obj => { return obj && obj.id === record.id && obj.taskType === record.type })
|
||||||
if (index != -1) {
|
if (index != -1) {
|
||||||
let playerData = new PopUpShopData(allTaskData[index], activityData.activityId);
|
let playerData = new PopUpShopData(allTaskData[index], activityData.activityId);
|
||||||
playerData.isBuy == false;
|
|
||||||
playerData.setPlayerRecords(record)
|
playerData.setPlayerRecords(record)
|
||||||
if (playerData.condition <= record.totalCount) {
|
if (playerData.buyCount < allTaskData[index].count) {
|
||||||
allPlayerShop.push(playerData)
|
allPlayerShop.push(playerData)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -92,16 +91,16 @@ export async function makePopUpShopReward(roleId: string, roleName: string, sid:
|
|||||||
if (playerRecord.totalCount < playerData.condition) {
|
if (playerRecord.totalCount < playerData.condition) {
|
||||||
return STATUS.ACTIVITY_TASK_UNCOMPLETED;
|
return STATUS.ACTIVITY_TASK_UNCOMPLETED;
|
||||||
}
|
}
|
||||||
if (!playerRecord.isBuy) {
|
if (playerRecord.buyCount >= playerData.count) {
|
||||||
return STATUS.ACTIVITY_REWARDED;
|
return STATUS.ACTIVITY_REWARDED;
|
||||||
}
|
}
|
||||||
playerRecord = await ActivityPopUpShopModel.addRecord(serverId, activityId, roleId, playerData.id, playerData.taskType);
|
playerRecord = await ActivityPopUpShopModel.addRecord(serverId, activityId, roleId, playerData.id, playerData.taskType, 1);
|
||||||
playerData.setPlayerRecords(playerRecord);
|
playerData.setPlayerRecords(playerRecord);
|
||||||
|
|
||||||
let rewardParamArr: Array<RewardParam> = stringToRewardParam(playerData.reward);
|
let rewardParamArr: Array<RewardParam> = stringToRewardParam(playerData.reward);
|
||||||
let result = await addReward(roleId, roleName, sid, serverId, funcs, rewardParamArr)
|
let result = await addReward(roleId, roleName, sid, serverId, funcs, rewardParamArr)
|
||||||
|
|
||||||
playerData.isBuy = true;
|
|
||||||
return {
|
return {
|
||||||
code: 0,
|
code: 0,
|
||||||
data: Object.assign(result, { item: playerData, activityId: activityData.activityId })
|
data: Object.assign(result, { item: playerData, activityId: activityData.activityId })
|
||||||
|
|||||||
@@ -27,18 +27,18 @@ export default class Activity_Pop_Up_Shop extends BaseModel {
|
|||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
data: string; // 数据信息
|
data: string; // 数据信息
|
||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
isBuy: boolean; // 是否购买
|
buyCount: number; // 购买次数
|
||||||
@prop({ required: true })
|
@prop({ required: true })
|
||||||
isPush: boolean; // 是否推送过
|
isPush: boolean; // 是否推送过
|
||||||
|
|
||||||
//购买记录
|
//购买记录
|
||||||
public static async addRecord(serverId: number, activityId: number, roleId: string, id: number, type: number) {
|
public static async addRecord(serverId: number, activityId: number, roleId: string, id: number, type: number, buyCount: number) {
|
||||||
let nowDate = new Date();
|
let nowDate = new Date();
|
||||||
let result: ActivityPopUpShopModelType = await ActivityPopUpShopModel.findOneAndUpdate({
|
let result: ActivityPopUpShopModelType = await ActivityPopUpShopModel.findOneAndUpdate({
|
||||||
serverId, roleId, activityId, id, type,
|
serverId, roleId, activityId, id, type,
|
||||||
beginTime: { $lt: nowDate }, endTime: { $gt: nowDate }
|
beginTime: { $lt: nowDate }, endTime: { $gt: nowDate }
|
||||||
},
|
},
|
||||||
{ $set: { isBuy: true } }, { upsert: true, new: true }).lean(true);
|
{ $inc: { buyCount: buyCount } }, { upsert: true, new: true }).lean(true);
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -18,8 +18,9 @@ export class PopUpShopData {
|
|||||||
taskParam: number; // 任务参数
|
taskParam: number; // 任务参数
|
||||||
condition: number; // 任务条件
|
condition: number; // 任务条件
|
||||||
totalCount: number; //一共完成次数
|
totalCount: number; //一共完成次数
|
||||||
|
count: number; //最大可购买次数
|
||||||
|
|
||||||
isBuy: boolean = false; //购买过
|
buyCount: number = 0; //已经购买过次数
|
||||||
beginTime: Date = null;//开始时间
|
beginTime: Date = null;//开始时间
|
||||||
endTime: Date = null;//结束时间
|
endTime: Date = null;//结束时间
|
||||||
beginTimeStamp: number = 0;//开始时间
|
beginTimeStamp: number = 0;//开始时间
|
||||||
@@ -30,7 +31,7 @@ export class PopUpShopData {
|
|||||||
if (!data) {
|
if (!data) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.isBuy = data.isBuy ? data.isBuy : false;
|
this.buyCount = data.buyCount ? data.buyCount : 0;
|
||||||
this.beginTime = data.beginTime;
|
this.beginTime = data.beginTime;
|
||||||
this.endTime = data.endTime;
|
this.endTime = data.endTime;
|
||||||
this.beginTimeStamp = moment(data.beginTime).valueOf();
|
this.beginTimeStamp = moment(data.beginTime).valueOf();
|
||||||
@@ -52,10 +53,11 @@ export class PopUpShopData {
|
|||||||
this.taskType = data.taskType;
|
this.taskType = data.taskType;
|
||||||
this.taskParam = data.taskParam;
|
this.taskParam = data.taskParam;
|
||||||
this.condition = data.condition;
|
this.condition = data.condition;
|
||||||
this.isBuy = false;
|
this.buyCount = 0;
|
||||||
this.beginTime = null;
|
this.beginTime = null;
|
||||||
this.endTime = null;
|
this.endTime = null;
|
||||||
this.totalCount = 0;
|
this.totalCount = 0;
|
||||||
|
this.count = data.count;
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(activityData: any, activityId: number) {
|
constructor(activityData: any, activityId: number) {
|
||||||
|
|||||||
@@ -589,7 +589,7 @@ export async function accomplishTask(serverId: number, roleId: string, taskType:
|
|||||||
let playerRecord = await ActivityPopUpShopModel.addTaskCount(serverId, activity.activityId, roleId, task.id, task.taskType, addCount);
|
let playerRecord = await ActivityPopUpShopModel.addTaskCount(serverId, activity.activityId, roleId, task.id, task.taskType, addCount);
|
||||||
//推送
|
//推送
|
||||||
if (task.condition <= playerRecord.totalCount) {
|
if (task.condition <= playerRecord.totalCount) {
|
||||||
await ActivityPopUpShopModel.pushMessage(serverId, activity.activityId, roleId, task.id, task.taskType, beginTime, endTime);
|
playerRecord = await ActivityPopUpShopModel.pushMessage(serverId, activity.activityId, roleId, task.id, task.taskType, beginTime, endTime);
|
||||||
popShopData.setPlayerRecords(playerRecord)
|
popShopData.setPlayerRecords(playerRecord)
|
||||||
pushMessage = pushMessage.concat(popShopData);
|
pushMessage = pushMessage.concat(popShopData);
|
||||||
}
|
}
|
||||||
@@ -597,7 +597,7 @@ export async function accomplishTask(serverId: number, roleId: string, taskType:
|
|||||||
let playerRecord = await ActivityPopUpShopModel.addTaskCount(serverId, activity.activityId, roleId, task.id, task.taskType, addCount);
|
let playerRecord = await ActivityPopUpShopModel.addTaskCount(serverId, activity.activityId, roleId, task.id, task.taskType, addCount);
|
||||||
//推送
|
//推送
|
||||||
if (task.condition <= playerRecord.totalCount) {
|
if (task.condition <= playerRecord.totalCount) {
|
||||||
await ActivityPopUpShopModel.pushMessage(serverId, activity.activityId, roleId, task.id, task.taskType, beginTime, endTime);
|
playerRecord = await ActivityPopUpShopModel.pushMessage(serverId, activity.activityId, roleId, task.id, task.taskType, beginTime, endTime);
|
||||||
popShopData.setPlayerRecords(playerRecord)
|
popShopData.setPlayerRecords(playerRecord)
|
||||||
pushMessage = pushMessage.concat(popShopData);
|
pushMessage = pushMessage.concat(popShopData);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user