镇念塔:刷新任务防并发
This commit is contained in:
@@ -162,8 +162,7 @@ export class TowerBattleHandler {
|
|||||||
let roleId = session.get('roleId');
|
let roleId = session.get('roleId');
|
||||||
let roleName = session.get('roleName');
|
let roleName = session.get('roleName');
|
||||||
|
|
||||||
let role = await RoleModel.findByRoleId(roleId);
|
let result = await getTasks(roleId);
|
||||||
let result = await getTasks(role);
|
|
||||||
|
|
||||||
return resResult(STATUS.SUCCESS, result);
|
return resResult(STATUS.SUCCESS, result);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,13 +47,14 @@ export async function addGuildPay(role: RoleType, price: number) {
|
|||||||
for(let activityData of activities) {
|
for(let activityData of activities) {
|
||||||
let { activityId, type: activityType } = activityData;
|
let { activityId, type: activityType } = activityData;
|
||||||
let obj = new GuildPayData(activityData, 0, openTime * 1000);
|
let obj = new GuildPayData(activityData, 0, openTime * 1000);
|
||||||
|
if(obj && obj.canShow()) {
|
||||||
let { isNew, result } = await ActivityGuildPayModel.addRecord(serverId, activityId, obj.roundIndex, guildCode, {
|
let { isNew, result } = await ActivityGuildPayModel.addRecord(serverId, activityId, obj.roundIndex, guildCode, {
|
||||||
roleId, roleName, price
|
roleId, roleName, price
|
||||||
});
|
});
|
||||||
if(isNew) {
|
if(isNew) {
|
||||||
let { memberRecord } = result;
|
let { memberRecord } = result;
|
||||||
pushResult.push({ activityId, activityType, param: { payMember: roleName, payMemberCnt: memberRecord.length } });
|
pushResult.push({ activityId, activityType, param: { payMember: roleName, payMemberCnt: memberRecord.length } });
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
await pushActivitiesToGuild(pushResult, guildCode);
|
await pushActivitiesToGuild(pushResult, guildCode);
|
||||||
|
|||||||
@@ -107,8 +107,9 @@ export async function getHungupRewards(roleId: string, role?: RoleType) {
|
|||||||
* 获取派遣任务列表
|
* 获取派遣任务列表
|
||||||
* @param role
|
* @param role
|
||||||
*/
|
*/
|
||||||
export async function getTasks(role: RoleType) {
|
export async function getTasks(roleId: string) {
|
||||||
let { roleId, roleName, towerLv, towerTaskRefTime, towerTaskReCnt = 0 } = role;
|
let role = await RoleModel.findByRoleId(roleId, 'roleName towerLv towerTaskRefTime towerTaskReCnt');
|
||||||
|
let { roleName, towerLv, towerTaskRefTime, towerTaskReCnt = 0 } = role;
|
||||||
|
|
||||||
// towerLv:从1开始,下次打得层数,dicParam内的:从0开始,打过的层数
|
// towerLv:从1开始,下次打得层数,dicParam内的:从0开始,打过的层数
|
||||||
if(towerLv - 1 < dicParam.TOWER_SEARCH.TOWER_SEARCH_STARTLIMITED) {
|
if(towerLv - 1 < dicParam.TOWER_SEARCH.TOWER_SEARCH_STARTLIMITED) {
|
||||||
@@ -116,11 +117,10 @@ export async function getTasks(role: RoleType) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let curTime = new Date();
|
let curTime = new Date();
|
||||||
let curTasks = await TowerTaskRecModel.getCurTasks(roleId); // 当前显示中的任务
|
|
||||||
|
|
||||||
const needRefresh = shouldRefresh(towerTaskRefTime, curTime);
|
const needRefresh = shouldRefresh(towerTaskRefTime, curTime);
|
||||||
|
let curTasks: TowerTaskRecType[] = []
|
||||||
if(needRefresh) {
|
if(needRefresh) {
|
||||||
|
role = await RoleModel.resetTowerCnt(roleId, curTime);
|
||||||
const batchCode = genCode(8);
|
const batchCode = genCode(8);
|
||||||
let preTasks = await TowerTaskRecModel.getPreTasks(roleId);
|
let preTasks = await TowerTaskRecModel.getPreTasks(roleId);
|
||||||
if(preTasks && preTasks.length) {
|
if(preTasks && preTasks.length) {
|
||||||
@@ -133,9 +133,11 @@ export async function getTasks(role: RoleType) {
|
|||||||
curTasks = await refreshTasks(towerLv, batchCode, roleId, roleName, []); // 新建任务
|
curTasks = await refreshTasks(towerLv, batchCode, roleId, roleName, []); // 新建任务
|
||||||
|
|
||||||
// 重置派遣次数
|
// 重置派遣次数
|
||||||
role = await RoleModel.resetTowerCnt(roleId, curTime);
|
|
||||||
towerTaskReCnt = role.towerTaskReCnt;
|
towerTaskReCnt = role.towerTaskReCnt;
|
||||||
}
|
}
|
||||||
|
if(curTasks.length <=0 ) {
|
||||||
|
curTasks = await TowerTaskRecModel.getCurTasks(roleId); // 当前显示中的任务
|
||||||
|
}
|
||||||
|
|
||||||
let refRemainTime = getRemainTime(curTime);
|
let refRemainTime = getRemainTime(curTime);
|
||||||
let nextCostGold = getTowerTaskCostGold(role.towerTaskReCnt, role.towerTaskRefTime);
|
let nextCostGold = getTowerTaskCostGold(role.towerTaskReCnt, role.towerTaskRefTime);
|
||||||
|
|||||||
@@ -243,11 +243,10 @@ async function getTowerEntryData(role: RoleType) {
|
|||||||
const { roleId } = role;
|
const { roleId } = role;
|
||||||
const status = await getTowerStatus(role);
|
const status = await getTowerStatus(role);
|
||||||
const hungUp = await getHungupRewards(roleId);
|
const hungUp = await getHungupRewards(roleId);
|
||||||
const tasks = await getTasks(role);
|
|
||||||
if (!hungUp) {
|
if (!hungUp) {
|
||||||
return { status, hungUp: {}, tasks }
|
return { status, hungUp: {} }
|
||||||
} else {
|
} else {
|
||||||
return { status, hungUp: hungUp, tasks }
|
return { status, hungUp: hungUp }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user