后台:运营活动后台

This commit is contained in:
luying
2021-05-19 16:24:27 +08:00
parent 0c39b9ebb7
commit 91af65259c
14 changed files with 178 additions and 6 deletions

View File

@@ -30,7 +30,8 @@ export const COUNTER = {
GM_GROUP: { name: 'gmgroup', def: 1 },
HID: { name: 'hid', def: 10000 },
EID: { name: 'eid', def: 1 },
ROLE: { name: 'role', def: 1 }
ROLE: { name: 'role', def: 1 },
ACTIVITY: { name: 'aid', def: 1 }
};
export const DEFAULT_HEROES = [19, 53, 46, 40, 22, 56, 32, 28, 18];

View File

@@ -1,5 +1,7 @@
import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
import { CounterModel } from './Counter';
import { COUNTER } from '@consts';
/**
* 活动系统
@@ -39,9 +41,10 @@ export default class Activity extends BaseModel {
}
//新增活动
public static async addActivity(activityId: number, beginTime: Date, endTime: Date, type: number, data: string, lean = true) {
let result: ActivityModelType = await ActivityModel.findOneAndUpdate({ activityId }, { beginTime, endTime, type, data },
{ upsert: true, new: true }).lean(lean);
public static async addActivity(activityId: number, serverId: number, beginTime: Date, endTime: Date, type: number, data: string, lean = true) {
if(!activityId) activityId = await CounterModel.getNewCounter(COUNTER.ACTIVITY);
let result: ActivityModelType = await ActivityModel.findOneAndUpdate({ activityId }, { serverId, beginTime, endTime, type, data },
{ new: true, upsert: true }).lean(lean);
return result;
}
@@ -50,6 +53,34 @@ export default class Activity extends BaseModel {
let result = await ActivityModel.deleteMany({ activityId });
return result;
}
//查询
public static async findByCondition(page: number, pageSize: number, type: number = 0, serverId: number = 0, current: boolean = false, activityId: number = 0) {
let searchObj = {};
if(type != 0) searchObj['type'] = type;
if(serverId != 0) searchObj['serverId'] = { $in: [0, serverId] };
if(activityId != 0) searchObj['activityId'] = activityId;
if(current) {
searchObj['beginTime'] = { $lte: new Date };
searchObj['endTime'] = { $gte: new Date };
}
const result: ActivityModelType[] = await ActivityModel.find(searchObj, { _id: 0 }).limit(pageSize).skip((page - 1) * pageSize).sort({updatedAt: -1}).lean();
return result;
}
// 获得活动数量
public static async countByCondition(type: number = 0, serverId: number = 0, current: boolean = false, activityId: number = 0) {
let searchObj = {};
if(type != 0) searchObj['type'] = type;
if(serverId != 0) searchObj['serverId'] = { $in: [0, serverId] };
if(activityId != 0) searchObj['activityId'] = activityId;
if(current) {
searchObj['beginTime'] = { $lte: new Date };
searchObj['endTime'] = { $gte: new Date };
}
const result = await ActivityModel.count(searchObj);
return result;
}
}
export const ActivityModel = getModelForClass(Activity);

View File

@@ -76,6 +76,11 @@ export default class Serverlist extends BaseModel {
let server: ServerlistType = await ServerlistModel.findOneAndUpdate({ id: serverId, serverType }, {$setOnInsert: update }, {new: true, upsert: true}).lean({ getters: true, virtuals: true });
return server;
}
public static async findByServerType(serverType: string) {
let server: ServerlistType[] = await ServerlistModel.find({ serverType }).lean({ getters: true, virtuals: true });
return server;
}
}
export const ServerlistModel = getModelForClass(Serverlist);