秘境保存首通武将
This commit is contained in:
@@ -15,7 +15,7 @@ export class DungeonBattleHandler {
|
|||||||
// 获取关卡列表
|
// 获取关卡列表
|
||||||
async getData(msg: { }, session: BackendSession) {
|
async getData(msg: { }, session: BackendSession) {
|
||||||
let roleId = session.get('roleId');
|
let roleId = session.get('roleId');
|
||||||
let { dungeonCnt = 0, dungeonBuyCnt = 0, dungeonRefTime } = await RoleModel.findByRoleId(roleId);
|
let { dungeonCnt = 0, dungeonBuyCnt = 0, dungeonRefTime, dungeonHeroes=[] } = await RoleModel.findByRoleId(roleId);
|
||||||
let curTime = new Date();
|
let curTime = new Date();
|
||||||
if(shouldRefresh(dungeonRefTime, curTime, DUNGEON_CONST.REFRESH_TIME)) {
|
if(shouldRefresh(dungeonRefTime, curTime, DUNGEON_CONST.REFRESH_TIME)) {
|
||||||
dungeonCnt = 0; dungeonBuyCnt = 0;
|
dungeonCnt = 0; dungeonBuyCnt = 0;
|
||||||
@@ -24,6 +24,7 @@ export class DungeonBattleHandler {
|
|||||||
let nextCostGold = calculateNum(GOLD_COST_RATIO.DUNGRON_BUY_NUM, {num: dungeonBuyCnt + 1 }, 50);
|
let nextCostGold = calculateNum(GOLD_COST_RATIO.DUNGRON_BUY_NUM, {num: dungeonBuyCnt + 1 }, 50);
|
||||||
return resResult(STATUS.SUCCESS, {
|
return resResult(STATUS.SUCCESS, {
|
||||||
nextCostGold,
|
nextCostGold,
|
||||||
|
dungeonHeroes,
|
||||||
battleCount: DUNGEON_CONST.MAX_CNT + dungeonBuyCnt - dungeonCnt,
|
battleCount: DUNGEON_CONST.MAX_CNT + dungeonBuyCnt - dungeonCnt,
|
||||||
buyCount: DUNGEON_CONST.MAX_BUY_CNT - dungeonBuyCnt
|
buyCount: DUNGEON_CONST.MAX_BUY_CNT - dungeonBuyCnt
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -212,6 +212,7 @@ export class NormalBattleHandler {
|
|||||||
}
|
}
|
||||||
} else if (warInfo.warType == WAR_TYPE.MYSTERY || warInfo.warType == WAR_TYPE.MYSTERY_ELITE) {
|
} else if (warInfo.warType == WAR_TYPE.MYSTERY || warInfo.warType == WAR_TYPE.MYSTERY_ELITE) {
|
||||||
let checkResult = await checkDungeonAndIncrease(roleId, 1, false);
|
let checkResult = await checkDungeonAndIncrease(roleId, 1, false);
|
||||||
|
await RoleModel.saveDungeonHero(roleId, battleId, heroes, isSuccess);
|
||||||
if(checkResult.status == -1) {
|
if(checkResult.status == -1) {
|
||||||
return checkResult.resResult;
|
return checkResult.resResult;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,13 @@ class TopHero {
|
|||||||
ce: number; // 战力
|
ce: number; // 战力
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
class DungeonHero {
|
||||||
|
@prop({ required: true })
|
||||||
|
battleId: number; // 关卡id
|
||||||
|
@prop({ required: true, type: Number, default:[] })
|
||||||
|
heroes: Array<number>; // 武将id
|
||||||
|
}
|
||||||
/**
|
/**
|
||||||
* 角色字段接口
|
* 角色字段接口
|
||||||
*/
|
*/
|
||||||
@@ -152,6 +159,8 @@ export default class Role extends BaseModel {
|
|||||||
dungeonBuyCnt: number; // 秘境购买次数
|
dungeonBuyCnt: number; // 秘境购买次数
|
||||||
@prop({ required: true, default: new Date() })
|
@prop({ required: true, default: new Date() })
|
||||||
dungeonRefTime: Date; // 秘境刷新时间
|
dungeonRefTime: Date; // 秘境刷新时间
|
||||||
|
@prop({ required: true, type: DungeonHero, default: [] })
|
||||||
|
dungeonHeroes: Array<DungeonHero>; // 秘境首通使用的武将
|
||||||
|
|
||||||
public static async findByUid(uid: number, serverId: number, lean = true) {
|
public static async findByUid(uid: number, serverId: number, lean = true) {
|
||||||
const role = await RoleModel.findOne({ 'userInfo.uid': uid, serverId }).lean(lean);
|
const role = await RoleModel.findOne({ 'userInfo.uid': uid, serverId }).lean(lean);
|
||||||
@@ -373,6 +382,18 @@ export default class Role extends BaseModel {
|
|||||||
}, 0);
|
}, 0);
|
||||||
await RoleModel.findOneAndUpdate({roleId}, { topFive, topFiveCe, $inc: {ce: distance} }).lean(lean);
|
await RoleModel.findOneAndUpdate({roleId}, { topFive, topFiveCe, $inc: {ce: distance} }).lean(lean);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// 保存秘境首通队伍
|
||||||
|
public static async saveDungeonHero(roleId: string, battleId: number, heroes: Array<number>, isSuccess: boolean) {
|
||||||
|
if(isSuccess) {
|
||||||
|
const role = await Role.findByRoleId(roleId);
|
||||||
|
let {dungeonHeroes} = role;
|
||||||
|
let hasHero = dungeonHeroes&&dungeonHeroes.find(cur => cur.battleId == battleId);
|
||||||
|
if(!dungeonHeroes || !hasHero) {
|
||||||
|
await RoleModel.findOneAndUpdate({roleId}, {$push:{dungeonHeroes: {battleId, heroes}}})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const RoleModel = getModelForClass(Role);
|
export const RoleModel = getModelForClass(Role);
|
||||||
|
|||||||
Reference in New Issue
Block a user