镇念塔:刷新任务防并发

This commit is contained in:
luying
2022-09-23 16:03:53 +08:00
parent 8d62021c12
commit d3683b5b4b
4 changed files with 19 additions and 18 deletions

View File

@@ -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);
} }

View File

@@ -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);

View File

@@ -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);

View File

@@ -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 }
} }
} }