fix 联调时遇到的问题
This commit is contained in:
@@ -19,7 +19,7 @@ export default class DailyRecord extends BaseModel {
|
||||
refTime: number; // 刷新时间
|
||||
|
||||
public static async getDailyRecordById(roleId: string, type: number, lean = true) {
|
||||
const result = await DailyRecordModel.findOneAndUpdate({ roleId, type }, {}, {new: true, upsert: true}).select('type count buyCount refTime').lean(lean);
|
||||
const result = await DailyRecordModel.findOneAndUpdate({ roleId, type }, {}, {new: true, upsert: true}).lean(lean);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
import BaseModel from './BaseModel';
|
||||
import { index, getModelForClass, prop } from '@typegoose/typegoose';
|
||||
import { getRefTime } from '../pubUtils/util';
|
||||
import { TOWER_TASK_CONST } from '../consts/consts';
|
||||
|
||||
function genCodeTmp(len) {
|
||||
const chars = '123456789ABCDEFGHJKLMNPQRSTWXYZabcdefghijklmnopqrstuvwxyz';
|
||||
@@ -11,13 +13,7 @@ function genCodeTmp(len) {
|
||||
return code;
|
||||
}
|
||||
|
||||
function getRefTime(curTime = new Date()) {
|
||||
if (curTime.getHours() < 5) {
|
||||
curTime.setDate(curTime.getDate() - 1);
|
||||
}
|
||||
curTime.setHours(5, 0, 0, 0);
|
||||
return curTime;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 天梯派遣记录表
|
||||
@@ -34,6 +30,8 @@ export default class TowerTaskRec extends BaseModel {
|
||||
batchCode: string; // 本批派遣任务唯一标识
|
||||
@prop({ required: true, default: 0})
|
||||
status: number; // 派遣任务当前状态,0-可派遣,1-已派遣,2-已完成,3-已领取
|
||||
@prop({ required: true, default: 1})
|
||||
refreshStatus: number; // 派遣任务是否显示 0-不显示,被刷新掉了 1-显示
|
||||
@prop({ required: true, type: Number, default: [] })
|
||||
heroes: Array<number>; // 此批派遣使用的全部武将
|
||||
|
||||
@@ -43,10 +41,13 @@ export default class TowerTaskRec extends BaseModel {
|
||||
taskCode: string; // 服务器生成的任务唯一编号
|
||||
@prop({ required: false })
|
||||
sendTime: Date; // 派遣时间
|
||||
@prop({ required: false })
|
||||
completeTime: Date; // 派遣结束时间
|
||||
|
||||
public static async getCurTasks(roleId: string, lean = true) {
|
||||
const refTime = getRefTime();
|
||||
const recs = await TowerTaskRecModel.find({roleId, createdAt: {$gte: refTime}}).lean(lean);
|
||||
let curTime = new Date();
|
||||
const refTime = getRefTime(curTime, TOWER_TASK_CONST.REFRESH_TIME);
|
||||
const recs = await TowerTaskRecModel.find({roleId, createdAt: {$gte: refTime}, refreshStatus: 1}).sort({createdAt: 1}).lean(lean);
|
||||
return recs;
|
||||
}
|
||||
|
||||
@@ -67,13 +68,14 @@ export default class TowerTaskRec extends BaseModel {
|
||||
return recs;
|
||||
}
|
||||
|
||||
public static async sendHeroes(_roleId: string, batchCode: string, tasks: Array<{taskCode:string, heroes: Array<number>}>, sendTime: Date, lean = true) {
|
||||
public static async sendHeroes(_roleId: string, batchCode: string, tasks: Array<{taskCode:string, heroes: Array<number>, completeTime: number}>, sendTime: Date, lean = true) {
|
||||
let recs = new Array();
|
||||
const refTime = getRefTime();
|
||||
for (let task of tasks) {
|
||||
let curTime = new Date();
|
||||
const refTime = getRefTime(curTime, TOWER_TASK_CONST.REFRESH_TIME);
|
||||
for (let {taskCode, heroes, completeTime} of tasks) {
|
||||
const rec = await TowerTaskRecModel.findOneAndUpdate(
|
||||
{batchCode, taskCode: task.taskCode, createdAt: {$gte: refTime}},
|
||||
{heroes: task.heroes, status: 1, sendTime},
|
||||
{batchCode, taskCode: taskCode, createdAt: {$gte: refTime}},
|
||||
{heroes: heroes, status: 1, sendTime, completeTime: new Date(sendTime.getTime() + completeTime * 1000)},
|
||||
{new: true}).lean(lean);
|
||||
|
||||
recs.push(rec);
|
||||
@@ -95,6 +97,15 @@ export default class TowerTaskRec extends BaseModel {
|
||||
return recs;
|
||||
}
|
||||
|
||||
// 刷掉旧任务
|
||||
public static async refreshTask(roleId: string, lean = true) {
|
||||
let curTime = new Date();
|
||||
const refTime = getRefTime(curTime, TOWER_TASK_CONST.REFRESH_TIME);
|
||||
console.log(refTime)
|
||||
const recs = await TowerTaskRecModel.updateMany({roleId, createdAt: {$gte: refTime}, refreshStatus: 1}, {refreshStatus: 0}, {new: true}).lean(lean);
|
||||
return recs;
|
||||
}
|
||||
|
||||
public static async deleteAccount(roleId: string, lean = true) {
|
||||
let result = await TowerTaskRecModel.deleteMany({roleId}).lean(lean);
|
||||
return result||{};
|
||||
|
||||
Reference in New Issue
Block a user