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