fix 联调时遇到的问题

This commit is contained in:
luying
2020-11-05 19:33:39 +08:00
parent ff6b8bcdca
commit bd93d9dc1c
12 changed files with 598 additions and 119 deletions

View File

@@ -90,26 +90,29 @@ export default class Role extends BaseModel {
star: number; // 星级
}];
@prop({ required: true, default: 1 })
@prop({ required: true, default: 1 })
loginCnt: number; // 登录次数
@prop({ required: true })
createTime: Date; // 创建时间
@prop({ required: true })
loginTime: Date; // 更新 / 登录时间
// 天梯相关
@prop({ required: true, default: 1 })
towerLv: number; // 天梯当前层数
@prop({ required: true })
eventStatus: number; // 奇遇开启状态, 0-未开启 1-开启了第一场事件 2-完全开启
// @prop({ required: false })
// hangUpTime: Date; // 当前挂机开始时间
@prop({ required: true, default: HANG_UP_CONSTS.MAX_SPD_UP_CNT})
hangUpSpdUpCnt: number; // 挂机加速次数
@prop({ required: true, default: new Date()})
lastSpdUpTime: Date; // 最后一次挂机加速时间
@prop({ required: true, default: 0})
towerTaskReCnt: number; // 刷新派遣任务的次数,向上累加,消耗元宝和这个相关
@prop({ required: true, default: new Date()})
towerTaskRefTime: Date; // 刷新派遣任务的时间
@prop({ required: true })
eventStatus: number; // 奇遇开启状态, 0-未开启 1-开启了第一场事件 2-完全开启
@prop({ required: true })
expeditionPoint: number; // 远征点数
@@ -188,27 +191,27 @@ export default class Role extends BaseModel {
public static async addItems(roleId: string, field: string, id: number, cnt: number, lean = true) {
try {
let role = await RoleModel.findOne({roleId}).lean(lean);
let item = role?role[field]:[];
let curItem = item.find(cur => cur.id == id);
if(!curItem) {
let addToSet = {};
addToSet[field] = {id, count: cnt};
let result = await RoleModel.findOneAndUpdate({roleId}, { $addToSet: addToSet }, { "new": true, "upsert": true}).lean(lean);
return result;
} else {
let condition = { roleId };
condition[`${field}.id`] = id;
let update = {};
update[`${field}.$.count`] = cnt;
try {
let role = await RoleModel.findOne({roleId}).lean(lean);
let item = role?role[field]:[];
let curItem = item.find(cur => cur.id == id);
if(!curItem) {
let addToSet = {};
addToSet[field] = {id, count: cnt};
let result = await RoleModel.findOneAndUpdate({roleId}, { $addToSet: addToSet }, { "new": true, "upsert": true}).lean(lean);
return result;
} else {
let condition = { roleId };
condition[`${field}.id`] = id;
let update = {};
update[`${field}.$.count`] = cnt;
let result = await RoleModel.findOneAndUpdate(condition, { $inc: update }, { "new": true, "upsert": true}).lean(lean);
return result;
let result = await RoleModel.findOneAndUpdate(condition, { $inc: update }, { "new": true, "upsert": true}).lean(lean);
return result;
}
}catch(e) {
console.error(e)
}
}catch(e) {
console.error(e)
}
}
public static async addCoin(roleId: string, cnt: number, lean = true) {
@@ -239,6 +242,18 @@ try {
).lean(lean);
return result;
}
// 刷新派遣任务次数增长
public static async increaseTowerRefCnt(roleId: string, needRefresh: boolean, curTime: Date, lean = true) {
let role = null;
if (needRefresh) {
role = await RoleModel.findOneAndUpdate({roleId}, {towerTaskReCnt: 0, towerTaskRefTime: curTime}, {new: true}).lean(lean);
} else {
role = await RoleModel.findOneAndUpdate({roleId}, {$inc: {towerTaskReCnt: 1}}, {new: true}).lean(lean);
}
return role;
}
}
export const RoleModel = getModelForClass(Role);