后台:活动类型表

This commit is contained in:
luying
2021-06-17 17:19:51 +08:00
parent 703a128811
commit 46595fcbed
10 changed files with 194 additions and 21 deletions

View File

@@ -76,7 +76,7 @@ export default class Activity extends BaseModel {
}
if (groupId != undefined) {
if (groupId == 0) {
let newGroup = await ActivityGroupModel.createGroup();
let newGroup = await ActivityGroupModel.createGroup(uid);
groupId = newGroup.groupId;
}
await ActivityGroupModel.addActivitiesToGroupData(groupId, aids, uid);

View File

@@ -27,11 +27,11 @@ export default class Activity_Group extends BaseModel {
//查询组
public static async createGroup() {
public static async createGroup(uid = 1) {
let groupId = await CounterModel.getNewCounter(COUNTER.ACTIVITY_GROUP);
let result: ActivityGroupModelType = await ActivityGroupModel.findOneAndUpdate({ groupId }, {
$setOnInsert: { groupName: `活动组${groupId}`, activities: [], serverIds: [] }
$setOnInsert: { groupName: `活动组${groupId}`, activities: [], serverIds: [], createdBy: uid }, $set: { updatedBy: uid }
}, { new: true, upsert: true }).lean();
return result;
}
@@ -49,9 +49,9 @@ export default class Activity_Group extends BaseModel {
}
//更新名字
public static async updateGroupName(groupId: number, groupName: string) {
public static async updateGroupName(groupId: number, groupName: string, uid = 1) {
let result: ActivityGroupModelType = await ActivityGroupModel.findOneAndUpdate({ groupId },
{ $set: { groupName } }, { new: true }).lean(true);
{ $set: { groupName, updatedBy: uid } }, { new: true }).lean(true);
return result;
}
@@ -59,9 +59,9 @@ export default class Activity_Group extends BaseModel {
public static async setActivitiesToGroupData(groupId: number, activities: number[], uid = 1) {
await this.pullByActivityIds(activities, uid); // 先将原先的删除
let result: ActivityGroupModelType = await ActivityGroupModel.findOneAndUpdate({ groupId },
{ $set: { activities } }, { new: true }).lean(true);
{ $set: { activities, updatedBy: uid } }, { new: true }).lean(true);
await ActivityModel.updateGroupId(activities, groupId, uid);
result = await this.updateTime(result.groupId, result.activities);
result = await this.updateTime(result.groupId, result.activities, uid);
return result;
}
@@ -71,12 +71,12 @@ export default class Activity_Group extends BaseModel {
let result: ActivityGroupModelType = await ActivityGroupModel.findOneAndUpdate({ groupId },
{ $addToSet: { activities: { $each: activities } } }, { new: true }).lean(true);
await ActivityModel.updateGroupId(activities, groupId, uid);
result = await this.updateTime(result.groupId, result.activities);
result = await this.updateTime(result.groupId, result.activities, uid);
return result;
}
// 根据包含的活动更新开始和结束时间
private static async updateTime(groupId: number, aids: number[]) {
private static async updateTime(groupId: number, aids: number[], uid = 1) {
let activities = await ActivityModel.findActivityByIds(aids);
let beginTime = undefined, endTime = undefined;
for (let activity of activities) {
@@ -84,7 +84,7 @@ export default class Activity_Group extends BaseModel {
if (!endTime || activity.endTime > endTime) endTime = activity.endTime;
}
let result: ActivityGroupModelType = await ActivityGroupModel.findOneAndUpdate({ groupId },
{ $set: { beginTime, endTime } }, { new: true }).lean(true);
{ $set: { beginTime, endTime, updatedBy: uid } }, { new: true }).lean(true);
return result;
}
@@ -94,16 +94,16 @@ export default class Activity_Group extends BaseModel {
await ActivityModel.updateGroupId(activities, 0, uid);
let activityGroups = await ActivityGroupModel.find({ activities: { $in: activities } });
for (let { groupId } of activityGroups) {
let result = await ActivityGroupModel.findOneAndUpdate({ groupId }, { $pull: { activities: { $in: activities } } }, { new: true }).lean(true);
let result = await ActivityGroupModel.findOneAndUpdate({ groupId }, { $pull: { activities: { $in: activities } }, $set: { updatedBy: uid } }, { new: true }).lean(true);
await this.updateTime(result.groupId, result.activities);
}
}
//更新服务器
public static async updateServerData(groupId: number, serverIds: number[]) {
public static async updateServerData(groupId: number, serverIds: number[], uid = 1) {
let result: ActivityGroupModelType = await ActivityGroupModel.findOneAndUpdate({ groupId },
{ $set: { serverIds } }, { new: true }).lean(true);
{ $set: { serverIds, updatedBy: uid } }, { new: true }).lean(true);
return result;
}

View File

@@ -0,0 +1,78 @@
import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose';
import { CounterModel } from './Counter';
import { COUNTER, ACTIVITY_TYPE } from '../consts';
/**
* 活动合集
*/
@index({ activityId: 1 })
class ActivityType {
@prop({ required: true })
index: number; // 活动集合内部id防止activityType有重复的情况
@prop({ required: true, enum: ACTIVITY_TYPE })
activityType: ACTIVITY_TYPE; // 活动类型
}
export default class Activity_GroupType extends BaseModel {
@prop({ required: true })
groupType: number; // 类型id创建时自增
@prop({ required: true })
groupTypeName: string; // 类型名
@prop({ required: true, type: ActivityType, _id: false })
activityTypes: ActivityType[]; // 活动类型集合
public static async createActivityGroupType(groupTypeName: string, types: number[], uid = 1) {
let activityTypes = types.map((value, index) => {
return { index: index + 1, activityType: value };
});
let groupType = await CounterModel.getNewCounter(COUNTER.ACTIVITY_GROUP_TYPE);
let result: ActivityGroupTypeInter = await ActivityGroupTypeModel.findOneAndUpdate({ groupType }, {
$setOnInsert: { groupTypeName, activityTypes, createdBy: uid }, $set: { updatedBy: uid }
}, { new: true, upsert: true }).lean();
return result;
}
private static getSearchObj(form: { groupType?: number, groupTypeName?: string }) {
let searchObj = {};
if(form.groupType != undefined) searchObj['groupType'] = form.groupType;
if(form.groupTypeName != undefined) searchObj['groupTypeName'] = form.groupTypeName;
return searchObj;
}
//查询
public static async findByCondition(page: number, pageSize: number, sortField: string, sortOrder: string, form: { groupType?: number, groupTypeName?: string } = {}) {
let searchObj = this.getSearchObj(form);
let sort = {};
if(sortField && sortOrder) {
if(sortOrder == 'ascend') {
sort[sortField] = 1;
} else if (sortOrder == 'descend') {
sort[sortField] = -1;
}
}
const result: ActivityGroupTypeInter[] = await ActivityGroupTypeModel.find(searchObj, { _id: 0 }).limit(pageSize).skip((page - 1) * pageSize).sort(sort).lean({ getters: true, virtuals: true });
return result;
}
// 获得活动数量
public static async countByCondition(form: { groupType?: number, groupTypeName?: string } = {}) {
let searchObj = this.getSearchObj(form);
const result = await ActivityGroupTypeModel.count(searchObj);
return result;
}
}
export const ActivityGroupTypeModel = getModelForClass(Activity_GroupType);
export interface ActivityGroupTypeInter extends Pick<DocumentType<Activity_GroupType>, keyof Activity_GroupType> {
id: number;
};
export type ActivityGroupTypeUpdate = Partial<ActivityGroupTypeInter>; // 将所有字段变成可选项

View File

@@ -4,6 +4,7 @@ import { GameModel } from './Game';
import { CounterModel } from './Counter';
import { COUNTER } from '../consts';
import { ServerStategyTypeParam } from './ServerStategy';
import { getServerName, getServerGroupName } from '../pubUtils/data';
// 暂时服务器列表是从game表取的之后会转移到使用这张表目前用作查询该服战力中位数
@@ -99,11 +100,11 @@ export default class Serverlist extends BaseModel {
if(groupServerCount > 10) {
groupId = await CounterModel.getNewCounter(COUNTER.SERVER_GROUP);
}
let groupName = '逍遥津' + groupId;
let groupName = getServerGroupName(groupId)||"";
let serverId = await CounterModel.getNewCounter({ name: `${COUNTER.SERVER_BY_TYPE.name}_${serverType}`, def: COUNTER.SERVER_BY_TYPE.def });
let id = await CounterModel.getNewCounter(COUNTER.SERVER);
if(!name) name = '出师表' + id
if(!name) name = getServerName(id)||"";
const doc = new ServerlistModel();
const update = Object.assign(doc.toJSON(), params, { id, serverId, host, groupId, groupName, name, createdBy: uid, updatedBy: uid }, { activityGroupId: stategy.activityGroupId, maxPlayerCnt: stategy.maxPlayerCnt});