From 1bb51d6adb0d7377e01ef2207ca77aae6d60232d Mon Sep 17 00:00:00 2001 From: liangtongchuan Date: Mon, 15 Mar 2021 21:02:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=8D=E5=8D=96=E8=A1=8C=EF=BC=9A=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../servers/battle/handler/auctionHandler.ts | 32 +++++++++++++ game-server/app/services/auctionService.ts | 26 +++++++++++ shared/db/Dividend.ts | 29 ++++++++++++ shared/db/Lot.ts | 43 +++++++++++++++++ shared/domain/dbGeneral.ts | 46 +++++++++++++++++++ 5 files changed, 176 insertions(+) create mode 100644 game-server/app/servers/battle/handler/auctionHandler.ts create mode 100644 game-server/app/services/auctionService.ts create mode 100644 shared/db/Dividend.ts create mode 100644 shared/db/Lot.ts diff --git a/game-server/app/servers/battle/handler/auctionHandler.ts b/game-server/app/servers/battle/handler/auctionHandler.ts new file mode 100644 index 000000000..7ce13a5ee --- /dev/null +++ b/game-server/app/servers/battle/handler/auctionHandler.ts @@ -0,0 +1,32 @@ +import { Application, BackendSession, ChannelService } from "pinus"; + +export default function (app: Application) { + return new AuctionHandler(app); +} + +export class AuctionHandler { + channelService: ChannelService; + constructor(private app: Application) { + this.channelService = app.get('channelService'); + } + + async getAuction(msg: {}, session: BackendSession) { + + } + + async offer(msg: { max: boolean }, session: BackendSession) { + + } + + async checkDividend(msg: {}, session: BackendSession) { + + } + + async getDividend(msg: {}, session: BackendSession) { + + } + + async myOffers(msg: { count: number }, session: BackendSession) { + + } +} diff --git a/game-server/app/services/auctionService.ts b/game-server/app/services/auctionService.ts new file mode 100644 index 000000000..f89da4bd4 --- /dev/null +++ b/game-server/app/services/auctionService.ts @@ -0,0 +1,26 @@ +import { ItemReward } from "../domain/dbGeneral"; + +/** + * @description 生成拍卖数据 + * @export + * @param {string} guildCode + * @param {number} sourceType + * @param {string} sourceCode + * @param {number} serverId + * @param {ItemReward[]} rewards + */ +export async function genAuction(guildCode: string, sourceType: number, sourceCode: string, serverId: number, rewards: ItemReward[]) { + +} + + +/** + * @description 获取活动参加者 + * @export + * @param {string} guildCode + * @param {number} sourceType + * @param {string} sourceCode + */ +export async function participants(guildCode: string, sourceType: number, sourceCode: string) { + +} diff --git a/shared/db/Dividend.ts b/shared/db/Dividend.ts new file mode 100644 index 000000000..cc492e710 --- /dev/null +++ b/shared/db/Dividend.ts @@ -0,0 +1,29 @@ +import { LotRec, DividendRec } from './../domain/dbGeneral'; +import BaseModel from './BaseModel'; +import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose'; + +/** + * 分红记录表 +**/ +@modelOptions({ schemaOptions: { id: false } }) +@index({ code: 1 }) +@index({ guildCode: 1 }) +export default class Dividend extends BaseModel { + @prop({ required: true, default: 0 }) + type: number; // 0:初始值,1:演武;2:蛮夷入侵;3:诸侯混战;4:粮草先行 + @prop({ required: true, default: '' }) + guildCode: string; // 军团编号 + @prop({ required: true, default: '' }) + sourceCode: string; // 来源的唯一标识,如活动编号 + @prop({ required: true, type: LotRec, default: [] }) + lots: LotRec[]; + @prop({ required: true, default: 0 }) + totalPrice: number; // 分红总金额 + @prop({ required: true, type: DividendRec, default: [] }) + dividends: DividendRec[]; +} + +export const DividendModel = getModelForClass(Dividend); + +export interface DividendType extends Pick, keyof Dividend>{} +export type DividendParam = Partial; diff --git a/shared/db/Lot.ts b/shared/db/Lot.ts new file mode 100644 index 000000000..a9310edd4 --- /dev/null +++ b/shared/db/Lot.ts @@ -0,0 +1,43 @@ +import { BidRec } from './../domain/dbGeneral'; +import BaseModel from './BaseModel'; +import { index, getModelForClass, prop, DocumentType, modelOptions } from '@typegoose/typegoose'; + +/** + * 竞拍物品表 +**/ +@modelOptions({ schemaOptions: { id: false } }) +@index({ code: 1 }) +@index({ guildCode: 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; // 竞拍结束时间 +} + +export const LotModel = getModelForClass(Lot); + +export interface LotType extends Pick, keyof Lot>{} +export type LotParam = Partial; diff --git a/shared/domain/dbGeneral.ts b/shared/domain/dbGeneral.ts index 6150f071e..452db7cc3 100644 --- a/shared/domain/dbGeneral.ts +++ b/shared/domain/dbGeneral.ts @@ -228,3 +228,49 @@ export class Figure { } } + +/** + * @description 出价记录 + * @export + * @class BidRec + */ +export class BidRec { + @prop({ required: true, default: '' }) + roleId: string; // 出价玩家 + @prop({ required: true, default: 0 }) + price: number; // 出价金额 + @prop({ required: true }) + time: Date; // 出价时间 +} + +/** + * @description 拍品记录 + * @export + * @class LotRec + */ +export class LotRec { + @prop({ required: true, default: '' }) + code: string; // 竞拍物品唯一标识 + @prop({ required: true, default: 0 }) + gid: number; // 物品 id + @prop({ required: true, default: 0 }) + price: number; // 物品成交价 +} + +/** + * @description 分红记录 + * @export + * @class DividendRec + */ +export class DividendRec { + @prop({ required: true, default: '' }) + roleId: string; + @prop({ required: true, default: 0 }) + baseNum: number; // 基础分红 + @prop({ required: true, default: 0 }) + posNum: number; // 职位分红 + @prop({ required: true, default: 0 }) + weekendNum: number; // 额外分红,周末 + @prop({ required: true, default: 0 }) + total: number; // 总分红 +} \ No newline at end of file