活动:修改活动的时间配置规则
This commit is contained in:
@@ -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 });
|
||||
|
||||
Reference in New Issue
Block a user