Files
ZYZ/shared/db/GVGLeagueFarmRec.ts
2023-02-22 14:45:52 +08:00

75 lines
2.6 KiB
TypeScript

// 仅记录农场农田的记录,因为一块田可以反复被不同人种植、收获,不像矿场林场就是固定次数
import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType, } from '@typegoose/typegoose';
import { GVGLeagueFarmType } from './GVGLeagueFarm';
import { GVG_RESOURCE_TYPE } from '../consts';
@index({ leagueCode: 1, configId: 1, farmId: 1, fieldId: 1 })
export default class GVGLeagueFarmRec extends BaseModel {
@prop({ required: true })
leagueCode: string; // 联军唯一code
@prop({ required: true })
configId: number;
@prop({ required: true })
farmId: number; // 农庄id
@prop({ required: true })
type: number; // 农庄类型
@prop({ required: true })
fieldId: number; // 农庄id
@prop({ required: true })
startRoleId: string; // 种田玩家/开始游戏玩家
@prop({ required: true })
startTime: Date; // 种值时间/开始时间
@prop({ required: false })
addType: number; // 种子加成
@prop({ required: false })
seedType: number; // 实际种的种子类型
@prop({ required: false })
itemId: number; // 实际种的种子类型
@prop({ required: false })
endRoleId: string; // 收获玩家/结束游戏玩家
@prop({ required: false })
endTime: Date; // 收获时间/结束时间
@prop({ required: false })
output: number; // 产量
@prop({ required: false })
outputStr: string; // 产量计算公式
public static async insertRecs(type: GVG_RESOURCE_TYPE,params: GVGLeagueFarmType[]) {
let insertParams = params.map(field => {
delete field._id;
return { ...field, startRoleId: field.lockRoleId, startTime: new Date(), type }
})
await GVGLeagueFarmRecModel.insertMany(insertParams);
}
public static async updateRecs(params: GVGLeagueFarmType[], roleId: string) {
if(params.length == 0) return;
let { configId, leagueCode, farmId } = params[0];
let fieldIds = params.map(cur => cur.fieldId);
await GVGLeagueFarmRecModel.updateMany({ configId, leagueCode, farmId, fieldId: { $in: fieldIds } }, { $set: { endRoleId: roleId, endTime: new Date() } });
}
}
export const GVGLeagueFarmRecModel = getModelForClass(GVGLeagueFarmRec);
export interface GVGLeagueFarmRecType extends Pick<DocumentType<GVGLeagueFarmRec>, keyof GVGLeagueFarmRec> {
id: number;
};
export type GVGLeagueFarmRecUpdate = Partial<GVGLeagueFarmRecType>; // 将所有字段变成可选项