活动:修改活动的时间配置规则

This commit is contained in:
qiaoxin
2021-06-29 20:57:57 +08:00
parent 04d72a1956
commit 5e732e6d05
14 changed files with 174 additions and 112 deletions

View File

@@ -9,8 +9,9 @@ import { nowSeconds, getZeroPointD } from "../../../pubUtils/timeUtil";
import { DicDailyTask, DicAchievement, DicMainTask } from "../../../pubUtils/dictionary/DicTask";
import { getMainTask, refDailyTaskBox, removeHistoryTask, getCurTask, checkTask } from "../../../services/taskService";
import { TASK } from "../../../pubUtils/dicParam";
import { newHeroGiftPoint } from "../../../services/activity/newHeroGiftsService";
export default function(app: Application) {
export default function (app: Application) {
return new ShopHandler(app);
}
@@ -18,7 +19,7 @@ export class ShopHandler {
constructor(private app: Application) {
}
public async getTaskList(msg:{}, session: BackendSession) {
public async getTaskList(msg: {}, session: BackendSession) {
const roleId: string = session.get('roleId');
const res = await getCurTask(roleId, session);
@@ -28,6 +29,7 @@ export class ShopHandler {
// 领取主线任务、每日任务、成就单条任务
async receiveTask(msg: { type: number, id: number }, session: BackendSession) {
const roleId: string = session.get('roleId');
const serverId: number = session.get('serverId');
const roleName: string = session.get('roleName');
const sid: string = session.get('sid');
const { type, id } = msg;
@@ -36,32 +38,41 @@ export class ShopHandler {
let { group, taskType, taskReward, condition } = dicTask;
// 检查
let rec = await UserTaskRecModel.findByRoleAndGroup(roleId, type, taskType, group);
if(!rec) return resResult(STATUS.TASK_NOT_REACH_CONDITION);
if(rec.count < condition) return resResult(STATUS.TASK_NOT_REACH_CONDITION);
if(rec.received.includes(id)) return resResult(STATUS.TASK_HAS_RECEIVED);
if (!rec) return resResult(STATUS.TASK_NOT_REACH_CONDITION);
if (rec.count < condition) return resResult(STATUS.TASK_NOT_REACH_CONDITION);
if (rec.received.includes(id)) return resResult(STATUS.TASK_HAS_RECEIVED);
// 领取记录
rec = await UserTaskRecModel.receiveTask(roleId, type, taskType, group, id);
// 每日、成就增加积分
let point = 0, weeklyPoint = 0;
if(type == TASK_FUN_TYPE.DAILY) { // 增加积分
if (type == TASK_FUN_TYPE.DAILY) { // 增加积分
let userTask = await UserTaskModel.findByRole(roleId);
let dic = <DicDailyTask>dicTask;
let curWeek = getZeroPointD(SHOP_REFRESH_TYPE.WEEKLY);
if(curWeek > userTask.dailyTaskRefWeekly) {
if (curWeek > userTask.dailyTaskRefWeekly) {
userTask = await UserTaskModel.resetDailyScore(roleId, dic.point, curWeek);
} else {
userTask = await UserTaskModel.incInfo(roleId, { dailyTaskPoint: dic.point, dailyTaskPointWeekly: dic.point });
}
point = userTask.dailyTaskPoint;
weeklyPoint = userTask.dailyTaskPointWeekly;
let addPointActivityId = 0;//点数关联的活动id
if (addPointActivityId) {
await newHeroGiftPoint(serverId, addPointActivityId, roleId, point);
let uids = [{ uid: roleId, sid }];
this.app.get('channelService').pushMessageByUids('addPoint', resResult(STATUS.SUCCESS, { activityId: addPointActivityId, addPoint: point }), uids);
}
} else if (type == TASK_FUN_TYPE.ACHIEVEMENT) {
let dic = <DicAchievement>dicTask;
let userTask = await UserTaskModel.incInfo(roleId, { achievementPoint: dic.point });
point = userTask.achievementPoint;
}
let goods = await addItems(roleId, roleName, sid, taskReward);
return resResult(STATUS.SUCCESS, {
@@ -80,17 +91,17 @@ export class ShopHandler {
const { stage } = msg;
let dicMainStage = gameData.mainTaskStage.get(stage);
if(!dicMainStage) return resResult(STATUS.DIC_DATA_NOT_FOUND);
if (!dicMainStage) return resResult(STATUS.DIC_DATA_NOT_FOUND);
// 检查
let userTask = await UserTaskModel.findByRole(roleId);
if(userTask.mainTaskStage != stage) {
if (userTask.mainTaskStage != stage) {
return resResult(STATUS.WRONG_PARMS);
}
let recs = await UserTaskRecModel.getReceiveRec(roleId, TASK_FUN_TYPE.MAIN);
for(let id of dicMainStage.mainTaskId) {
for (let id of dicMainStage.mainTaskId) {
let curRecs = recs.find(cur => cur.received.includes(id));
if(!curRecs) return resResult(STATUS.TASK_NOT_ALL_RECEIVED);
if (!curRecs) return resResult(STATUS.TASK_NOT_ALL_RECEIVED);
}
// 更新数据
userTask = await UserTaskModel.incInfo(roleId, { mainTaskStage: 1 });
@@ -106,7 +117,7 @@ export class ShopHandler {
}
// 领取每日活跃奖励
async receiveActiveReward(msg: { }, session: BackendSession) {
async receiveActiveReward(msg: {}, session: BackendSession) {
const roleId: string = session.get('roleId');
const roleName: string = session.get('roleName');
@@ -115,12 +126,12 @@ export class ShopHandler {
// 检查
let userTask = await UserTaskModel.findByRole(roleId);
let { dailyTaskPoint } = userTask;
if(dailyTaskPoint < TASK.DAILYTASK_POINT) {
if (dailyTaskPoint < TASK.DAILYTASK_POINT) {
return resResult(STATUS.TASK_ACTIVE_NOT_ENOUGH);
}
// 更新数据
userTask = await UserTaskModel.decreaseDailyPoint(roleId, TASK.DAILYTASK_POINT);
if(!userTask) return resResult(STATUS.TASK_ACTIVE_NOT_ENOUGH);
if (!userTask) return resResult(STATUS.TASK_ACTIVE_NOT_ENOUGH);
let reward = parseGoodStr(TASK.DAILYTASK_POINT_REWARD);
let goods = await addItems(roleId, roleName, sid, reward);
@@ -141,22 +152,22 @@ export class ShopHandler {
let userTask = await UserTaskModel.findByRole(roleId);
let dicTaskBox = gameData.taskBox.get(type)?.get(id);
if(!dicTaskBox) return resResult(STATUS.DIC_DATA_NOT_FOUND);
if (!dicTaskBox) return resResult(STATUS.DIC_DATA_NOT_FOUND);
let point = 0, weeklyPoint = 0, box: number[] = [];
// 每日、成就增加积分
if(type == TASK_FUN_TYPE.DAILY) { // 增加积分
if (type == TASK_FUN_TYPE.DAILY) { // 增加积分
let curWeek = getZeroPointD(SHOP_REFRESH_TYPE.WEEKLY);
let shouldRefresh = false;
let { dailyTaskPointWeekly, dailyTaskBox, dailyTaskRefWeekly } = userTask;
if(curWeek > dailyTaskRefWeekly) {
if (curWeek > dailyTaskRefWeekly) {
shouldRefresh = true;
dailyTaskPointWeekly = 0;
dailyTaskBox = [];
}
if(dailyTaskPointWeekly < dicTaskBox.point) return resResult(STATUS.TASK_ACTIVE_NOT_ENOUGH);
if(dailyTaskBox.includes(id)) return resResult(STATUS.TASK_BOX_HAS_RECEIVED);
if (dailyTaskPointWeekly < dicTaskBox.point) return resResult(STATUS.TASK_ACTIVE_NOT_ENOUGH);
if (dailyTaskBox.includes(id)) return resResult(STATUS.TASK_BOX_HAS_RECEIVED);
userTask = await UserTaskModel.pushDailyBox(roleId, id, curWeek, shouldRefresh);
@@ -166,8 +177,8 @@ export class ShopHandler {
} else if (type == TASK_FUN_TYPE.ACHIEVEMENT) {
let { achievementPoint, achievementBox } = userTask;
if(achievementPoint > dicTaskBox.point) return resResult(STATUS.TASK_ACTIVE_NOT_ENOUGH);
if(achievementBox.includes(id)) return resResult(STATUS.TASK_BOX_HAS_RECEIVED);
if (achievementPoint > dicTaskBox.point) return resResult(STATUS.TASK_ACTIVE_NOT_ENOUGH);
if (achievementBox.includes(id)) return resResult(STATUS.TASK_BOX_HAS_RECEIVED);
userTask = await UserTaskModel.pushAchievementBox(roleId, id);
@@ -197,12 +208,12 @@ export class ShopHandler {
const sid: string = session.get('sid');
const funcs: number[] = session.get('funcs');
const { type } = msg
let tasks: (DicMainTask|DicDailyTask|DicAchievement)[] = [];
for(let [_id, task] of gameData.tasks.get(type)) {
let tasks: (DicMainTask | DicDailyTask | DicAchievement)[] = [];
for (let [_id, task] of gameData.tasks.get(type)) {
tasks.push(task);
}
let task = getRandSingleEelm(tasks);
await checkTask(roleId, sid, [1,2,3,4,5], task.taskType, task.condition, false, { isDebug: true });
await checkTask(roleId, sid, [1, 2, 3, 4, 5], task.taskType, task.condition, false, { isDebug: true });
return resResult(STATUS.SUCCESS, {
task
});
@@ -213,9 +224,9 @@ export class ShopHandler {
let sid = session.get('sid');
let { type } = msg
let userTask;
if(type == TASK_FUN_TYPE.DAILY) {
let uids = [{uid: roleId, sid}];
if (type == TASK_FUN_TYPE.DAILY) {
let uids = [{ uid: roleId, sid }];
// 转移每日任务
await removeHistoryTask(roleId, type, new Date(nowSeconds() * 1000 + 86400000));
pinus.app.get('channelService').pushMessageByUids('onDailyTaskRefresh', resResult(STATUS.SUCCESS, { taskList: [] }), uids);
@@ -223,7 +234,7 @@ export class ShopHandler {
await refDailyTaskBox(roleId, sid, true);
userTask = await UserTaskModel.updateInfo(roleId, { dailyTaskPoint: 0 });
} else if( type == TASK_FUN_TYPE.MAIN){
} else if (type == TASK_FUN_TYPE.MAIN) {
await UserTaskModel.updateInfo(roleId, { mainTaskStage: 1 });
userTask = await removeHistoryTask(roleId, type, new Date(nowSeconds() * 1000 + 86400000));
} else if (type == TASK_FUN_TYPE.ACHIEVEMENT) {
@@ -235,24 +246,24 @@ export class ShopHandler {
return resResult(STATUS.SUCCESS, curTask);
}
async debugCompleteMainStage(msg: { }, session: BackendSession) {
async debugCompleteMainStage(msg: {}, session: BackendSession) {
let roleId = session.get('roleId');
let sid = session.get('sid');
// 检查
let userTask = await UserTaskModel.findByRole(roleId);
let stage = userTask.mainTaskStage;
let dicMainStage = gameData.mainTaskStage.get(stage);
if(!dicMainStage) return resResult(STATUS.DIC_DATA_NOT_FOUND);
if (!dicMainStage) return resResult(STATUS.DIC_DATA_NOT_FOUND);
let recs = await UserTaskRecModel.getReceiveRec(roleId, TASK_FUN_TYPE.MAIN);
for(let id of dicMainStage.mainTaskId) {
for (let id of dicMainStage.mainTaskId) {
let dicTask = gameData.tasks.get(TASK_FUN_TYPE.MAIN)?.get(id);
if(!dicTask) continue;
if (!dicTask) continue;
let curRecs = recs.find(cur => cur.received.includes(id));
if(!curRecs) {
if (!curRecs) {
await UserTaskRecModel.setTaskRec(roleId, TASK_FUN_TYPE.MAIN, dicTask.taskType, dicTask.group, dicTask.condition);
};
}
@@ -268,10 +279,10 @@ export class ShopHandler {
// 每日、成就增加积分
let point = 0, weeklyPoint = 0;
if(type == TASK_FUN_TYPE.DAILY) { // 增加积分
if (type == TASK_FUN_TYPE.DAILY) { // 增加积分
let userTask = await UserTaskModel.findByRole(roleId);
let curWeek = getZeroPointD(SHOP_REFRESH_TYPE.WEEKLY);
if(curWeek > userTask.dailyTaskRefWeekly) {
if (curWeek > userTask.dailyTaskRefWeekly) {
userTask = await UserTaskModel.resetDailyScore(roleId, incPoint, curWeek);
} else {
userTask = await UserTaskModel.incInfo(roleId, { dailyTaskPoint: incPoint, dailyTaskPointWeekly: incPoint });