后台:活动类型表
This commit is contained in:
@@ -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);
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
78
shared/db/ActivityGroupType.ts
Normal file
78
shared/db/ActivityGroupType.ts
Normal 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>; // 将所有字段变成可选项
|
||||
@@ -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});
|
||||
|
||||
Reference in New Issue
Block a user