fix bug 远征显示下一关等
This commit is contained in:
@@ -67,7 +67,7 @@ export default class ExpeditionWarRecord extends BaseModel {
|
||||
ce: number; // 敌军战力
|
||||
|
||||
public static async getRecordByCode(expeditionCode: string, lean = true) {
|
||||
const result = await ExpeditionWarRecordModel.find({ expeditionCode }).select('expeditionId battleId battleCode battleStatus ce').sort({expeditionId: 1}).lean(lean);
|
||||
const result = await ExpeditionWarRecordModel.find({ expeditionCode, battleStatus: {$gte: 0} }).select('expeditionId battleId battleCode battleStatus ce').sort({expeditionId: 1}).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -76,14 +76,19 @@ export default class ExpeditionWarRecord extends BaseModel {
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async saveRecord(expeditionCode: string, expeditionId: number, params: {roleId: string, battleId: number, enemyFrom: number, enemyId: string, enemies: Array<any>}, lean = true) {
|
||||
public static async saveRecord(expeditionCode: string, expeditionId: number, params: {roleId: string, battleId: number, enemyFrom: number, enemyId: string, enemies: Array<any>, battleStatus: number}, lean = true) {
|
||||
const doc = new ExpeditionWarRecordModel();
|
||||
const update = Object.assign(doc.toJSON(), params, {expeditionCode, expeditionId});
|
||||
const result = await ExpeditionWarRecordModel.findOneAndUpdate({ expeditionCode, expeditionId }, update, {new: true, upsert: true}).select('expeditionId battleId battleCode battleStatus enemyFrom enemies ce').lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async updateStatus(expeditionCode: string, expeditionId: number, battleStatus: number, battleCode: string, lean = true) {
|
||||
public static async updateStatus(expeditionCode: string, expeditionId: number, battleStatus: number, lean = true) {
|
||||
const result = await ExpeditionWarRecordModel.findOneAndUpdate({ expeditionCode, expeditionId }, {battleStatus}, {new: true}).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static async updateBattleCode(expeditionCode: string, expeditionId: number, battleStatus: number, battleCode: string, lean = true) {
|
||||
const result = await ExpeditionWarRecordModel.findOneAndUpdate({ expeditionCode, expeditionId }, {battleStatus, battleCode}, {new: true}).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -41,7 +41,7 @@ export default class HangUpRecord extends BaseModel {
|
||||
public static async initRecord(roleId: string, roleName: string, lean = true) {
|
||||
const curTime = new Date();
|
||||
const recDoc = new HangUpRecordModel();
|
||||
const update = Object.assign(recDoc.toJSON(), {roleId, roleName, startTime: curTime});
|
||||
const update = Object.assign(recDoc.toJSON(), {roleId, roleName, startTime: curTime, startLv: HANG_UP_CONSTS.ENABLE_LV});
|
||||
const rec = await HangUpRecordModel.findOneAndUpdate({roleId, startLv: HANG_UP_CONSTS.ENABLE_LV}, update, {upsert: true, new: true}).lean(lean);
|
||||
return rec;
|
||||
}
|
||||
@@ -59,7 +59,7 @@ export default class HangUpRecord extends BaseModel {
|
||||
public static async updateRec(roleId: string, roleName: string, endLv: number, endTime: Date, needReceiveGoods: Array<{gid:number, count: number}>, lean = true) {
|
||||
await HangUpRecordModel.findOneAndUpdate({roleId, received: false}, {endLv, endTime, received: true, notReceivedGoods: needReceiveGoods}).lean(lean);
|
||||
const recDoc = new HangUpRecordModel();
|
||||
const update = Object.assign(recDoc.toJSON(), {roleId, roleName, startTime: endTime});
|
||||
const update = Object.assign(recDoc.toJSON(), {roleId, roleName, startTime: endTime, startLv: endLv});
|
||||
delete update._id;
|
||||
const newRec = await HangUpRecordModel.findOneAndUpdate({roleId, startLv: endLv, received: false}, update, {upsert: true, new: true}).lean(lean);
|
||||
return newRec;
|
||||
|
||||
@@ -7,6 +7,7 @@ import { updateCe } from '../pubUtils/util';
|
||||
* 英雄表
|
||||
*/
|
||||
@index({ roleId: 1, hid: 1 })
|
||||
@index({ roleId: 1, seqId: 1 })
|
||||
export default class Hero extends BaseModel {
|
||||
|
||||
@prop({ required: true })
|
||||
@@ -60,6 +61,10 @@ export default class Hero extends BaseModel {
|
||||
return heros || [];
|
||||
}
|
||||
|
||||
public static async findBySeqIdRange(seqIds: Array<number>, roleId: string, lean = true) {
|
||||
const hero = await HeroModel.find({ seqId: {$in: seqIds}, roleId }).lean(lean);
|
||||
return hero;
|
||||
}
|
||||
public static async findBySeqIdAndRole(seqId: number, roleId: string, lean = true) {
|
||||
const hero = await HeroModel.findOne({ seqId, roleId }).lean(lean);
|
||||
return hero;
|
||||
|
||||
@@ -123,7 +123,7 @@ export default class Role extends BaseModel {
|
||||
|
||||
@prop({ required: true, default: 0})
|
||||
towerTaskCnt: number; // 刷新派遣任务的次数,向上累加,每天8个
|
||||
@prop({ required: true, default: new Date()})
|
||||
@prop({ required: false})
|
||||
towerTaskRefTime: Date; // 刷新派遣任务的时间
|
||||
|
||||
// 奇遇事件相关
|
||||
|
||||
@@ -256,14 +256,19 @@ export default class Actor {
|
||||
return baseAbility
|
||||
}
|
||||
|
||||
calculateCE() {
|
||||
// 武将
|
||||
getAttributeJson() {
|
||||
let json = {hp: 0, atk: 0, matk: 0, def: 0, mdef: 0, agi: 0, speed: 0, luk: 0, hit: 0, cri: 0, flee: 0, antCri: 0, damageIncrease: 0, damageDecrease: 0, defIngnore: 0, bloodSuck: 0};
|
||||
|
||||
for(let i = ABI_TYPE.ABI_HP;i < ABI_TYPE.ABI_MAX;i++){
|
||||
let field = WAR_JSON_ATTRIBUTE_TYPE[i];
|
||||
json[field] = this.getRealAbility(i);
|
||||
}
|
||||
return json
|
||||
}
|
||||
|
||||
calculateCE() {
|
||||
// 武将
|
||||
let json = this.getAttributeJson();
|
||||
let ce = this.calculateCEByExpression(json);
|
||||
|
||||
// 装备
|
||||
|
||||
@@ -61,6 +61,19 @@ const moment = require('moment');
|
||||
result = { min: parseInt(min), max: parseInt(max) };
|
||||
break;
|
||||
}
|
||||
case 'suitLevelSingle': {
|
||||
let [min, max] = arr;
|
||||
console.log(min, max)
|
||||
if(max) {
|
||||
if(isNaN(min) || isNaN(max)) throw new Error('data table format wrong');
|
||||
result = { min: parseInt(min), max: parseInt(max) };
|
||||
break;
|
||||
} else {
|
||||
if(isNaN(min)) throw new Error('data table format wrong');
|
||||
result = { min: parseInt(min) };
|
||||
break;
|
||||
}
|
||||
}
|
||||
case 'attribute': {
|
||||
let [id, value] = arr;
|
||||
if(isNaN(id) || isNaN(value)) throw new Error('data table format wrong');
|
||||
@@ -187,7 +200,7 @@ export function shouldRefresh(preTime: Date, now: Date, hour: number, deltaDay =
|
||||
if(!preTime) return true;
|
||||
let curTime = new Date(now.getTime());
|
||||
let refeshTime = setLocalHours(hour, curTime);
|
||||
console.log(refeshTime - preTime.getTime())
|
||||
console.log(refeshTime - preTime.getTime(), (deltaDay>=1?deltaDay-1:0) * 24 * 60 * 60 * 1000, curTime.getTime(), refeshTime)
|
||||
if (refeshTime - preTime.getTime() > (deltaDay>=1?deltaDay-1:0) * 24 * 60 * 60 * 1000 && curTime.getTime() >= refeshTime) {
|
||||
return true;
|
||||
}
|
||||
@@ -324,7 +337,7 @@ export function setLocalHours(hour: number, curTime = new Date()) {
|
||||
let offset = curTime.getTimezoneOffset(); // 格林威治时间和本地时间之间的时差(分)
|
||||
let localTime = new Date(curTime.getTime() + offset * 60 * 1000 + 8 * 60 * 60 * 1000); // 中国时间
|
||||
localTime.setUTCHours(hour, 0, 0, 0); // 中国的几点
|
||||
return localTime.getTime() - offset * 60 * 1000 - 8 * 60 * 60 * 1000; // 回到格林威治时间
|
||||
return localTime.getTime() - 8 * 60 * 60 * 1000; // 回到格林威治时间
|
||||
}
|
||||
|
||||
export async function updateCe(roleId: string, hero: any ) {
|
||||
|
||||
Reference in New Issue
Block a user