秘境保存首通武将
This commit is contained in:
@@ -15,7 +15,7 @@ export class DungeonBattleHandler {
|
||||
// 获取关卡列表
|
||||
async getData(msg: { }, session: BackendSession) {
|
||||
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();
|
||||
if(shouldRefresh(dungeonRefTime, curTime, DUNGEON_CONST.REFRESH_TIME)) {
|
||||
dungeonCnt = 0; dungeonBuyCnt = 0;
|
||||
@@ -24,6 +24,7 @@ export class DungeonBattleHandler {
|
||||
let nextCostGold = calculateNum(GOLD_COST_RATIO.DUNGRON_BUY_NUM, {num: dungeonBuyCnt + 1 }, 50);
|
||||
return resResult(STATUS.SUCCESS, {
|
||||
nextCostGold,
|
||||
dungeonHeroes,
|
||||
battleCount: DUNGEON_CONST.MAX_CNT + dungeonBuyCnt - dungeonCnt,
|
||||
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) {
|
||||
let checkResult = await checkDungeonAndIncrease(roleId, 1, false);
|
||||
await RoleModel.saveDungeonHero(roleId, battleId, heroes, isSuccess);
|
||||
if(checkResult.status == -1) {
|
||||
return checkResult.resResult;
|
||||
}
|
||||
|
||||
@@ -12,6 +12,13 @@ class TopHero {
|
||||
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; // 秘境购买次数
|
||||
@prop({ required: true, default: new Date() })
|
||||
dungeonRefTime: Date; // 秘境刷新时间
|
||||
@prop({ required: true, type: DungeonHero, default: [] })
|
||||
dungeonHeroes: Array<DungeonHero>; // 秘境首通使用的武将
|
||||
|
||||
public static async findByUid(uid: number, serverId: number, lean = true) {
|
||||
const role = await RoleModel.findOne({ 'userInfo.uid': uid, serverId }).lean(lean);
|
||||
@@ -373,6 +382,18 @@ export default class Role extends BaseModel {
|
||||
}, 0);
|
||||
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);
|
||||
|
||||
Reference in New Issue
Block a user