import BaseModel from "./BaseModel"; import { index, getModelForClass, prop, DocumentType } from '@typegoose/typegoose'; import { GVGTeamType } from "./GVGTeam"; @index({ configId: 1, pontId: 1, groupId: 1, serverType: 1 }) // GVGCityAreaPoint 类,继承自 BaseModel export default class GVGCityAreaPoint extends BaseModel { @prop({ required: true, default: 1 }) configId: number; // config唯一id @prop({ required: true, default: 1 }) groupId: number; // 战区 @prop({ required: true, default: 1 }) serverType: number; // 1-单服 2-跨服 @prop({ required: true }) cityId: number; // 城池id @prop({ required: true }) areaId: number; // 区域 @prop({ required: true }) pointId: number; // 积分点 @prop({ required: true }) leagueCode: string; // 联军 @prop({ required: true }) leagueName: string; // 联军 @prop({ required: true }) roleId: string; // 玩家 @prop({ required: true }) roleName: string; // 玩家 @prop({ required: true }) teamCode: string; // 玩家的编队 public static async settlePoint(cityId: number, areaId: number, pointId: number, team: GVGTeamType) { let { configId, groupId, serverType, leagueCode, leagueName, roleId, roleName, teamCode } = team; await GVGCityAreaPointModel.findOneAndUpdate({ configId, groupId, serverType, pointId }, { $setOnInsert: { teamCode: '' }}, { upsert: true }); let result: GVGCityAreaPointType = await GVGCityAreaPointModel.findOneAndUpdate( { configId, groupId, serverType, pointId }, { $set: { cityId, areaId, leagueCode, leagueName, roleId, roleName, teamCode } }, { new: true }).lean(); return result; } public static async leavePoint(configId: number, groupId: number, serverType: number, pointId: number) { let result: GVGCityAreaPointType = await GVGCityAreaPointModel.findOneAndUpdate({ configId, groupId, serverType, pointId }, { $set: { teamCode: '' }}, { new: true }).lean(); return result; } public static async findByConfig(configId: number, groupId: number, serverType: number) { let result: GVGCityAreaPointType[] = await GVGCityAreaPointModel.find({ configId, groupId, serverType }).lean(); return result } } export const GVGCityAreaPointModel = getModelForClass(GVGCityAreaPoint); export interface GVGCityAreaPointType extends Pick, keyof GVGCityAreaPoint> {}; export type GVGCityAreaPointUpdate = Partial; // 将所有字段变成可选项