Files
ZYZ/shared/db/Lot.ts
2021-03-16 12:24:35 +08:00

62 lines
2.4 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { BidRec } from './../domain/dbGeneral';
import BaseModel from './BaseModel';
import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose';
import { genCode } from '../pubUtils/util';
/**
* 竞拍物品表
**/
@modelOptions({ schemaOptions: { id: false } })
@index({ code: 1 })
@index({ guildCode: 1, createdAt: -1 })
export default class Lot extends BaseModel {
@prop({ required: true, default: 0 })
auctionStage: number; // 0初始添加1军团拍卖2世界拍卖3拍卖结束
@prop({ required: true, default: 0 })
type: number; // 0初始值1演武2蛮夷入侵3诸侯混战4粮草先行
@prop({ required: true, default: '' })
sourceCode: string; // 来源的唯一标识,如活动编号
@prop({ required: true, default: 0 })
serverId: number; // 区服编号
@prop({ required: true, default: '' })
guildCode: string; // 军团编号
@prop({ required: true, default: '' })
code: string; // 竞拍物品唯一标识
@prop({ required: true, default: 0 })
gid: number; // 物品 id
@prop({ required: true, default: 0 })
curPrice: number; // 当前出价
@prop({ required: true, default: '' })
curBuyer: string; // 当前出价最高者 RoleId
@prop({ required: true, default: 0 })
maxPrice: number; // 一口价,最高价格
@prop({ required: true, type: BidRec, default: [] })
bidRoles: BidRec[];
@prop({ required: true })
begin: Date; // 竞拍开始时间
@prop({ required: true })
end: Date; // 竞拍结束时间
public static async createRec(data: LotParam) {
const code = genCode(8);
const docData = new LotModel();
const result: LotType = await LotModel.findOneAndUpdate({ code }, { ...docData.toJSON(), ...data, code }, { upsert: true, new: true }).select('-_id').lean();
return result;
}
public static async findLot(code: string) {
const result = await LotModel.findOne({ code }).select('-_id -__v').lean();
return result;
}
public static async findGuildLotsByTime(guildCode: string, time: Date) {
const results = await LotModel.find({ guildCode, createdAt: { $gte: time } }).select('-_id -__v').lean();
return results;
}
}
export const LotModel = getModelForClass(Lot);
export interface LotType extends Pick<DocumentType<Lot>, keyof Lot>{}
export type LotParam = Partial<LotType>;