From 1a8621207cc54eba416f7a72d46a4afce54067b7 Mon Sep 17 00:00:00 2001 From: luying Date: Wed, 24 Nov 2021 10:09:45 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=8D=E5=8D=96=EF=BC=9A=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E6=8E=A8=E9=80=81=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/servers/chat/remote/guildRemote.ts | 5 ++ game-server/app/services/auctionService.ts | 56 +++++++++++-------- 2 files changed, 37 insertions(+), 24 deletions(-) diff --git a/game-server/app/servers/chat/remote/guildRemote.ts b/game-server/app/servers/chat/remote/guildRemote.ts index 325b2d7fe..c6d0e0de8 100644 --- a/game-server/app/servers/chat/remote/guildRemote.ts +++ b/game-server/app/servers/chat/remote/guildRemote.ts @@ -43,6 +43,7 @@ export class GuildRemote { private GUILD_TRAIN_RESET = 'onGuildTainReset'; // 试炼场重置 private GUILD_BOSS_ENCOURAGE = 'onGuildBossEncourage'; // 鼓舞 private AUCTION_UPDATE = 'onAuctionUpdate'; // 拍卖行更新 + private AUCTION_ADD = 'onAuctionAdd'; // 拍卖行增加 /** * 封装,军团相关channel名: 'guild'+guildCode @@ -322,4 +323,8 @@ export class GuildRemote { public async pushAuctionUpdate(guildCode: string, param: { lots: LotType[]; dividends: DividendType[] }) { this.pushMessage(guildCode, this.AUCTION_UPDATE, param); } + + public async pushAuctionAdd(guildCode: string, param: { lots: LotType[]; dividends: DividendType[] }) { + this.pushMessage(guildCode, this.AUCTION_ADD, param); + } } \ No newline at end of file diff --git a/game-server/app/services/auctionService.ts b/game-server/app/services/auctionService.ts index 75f62a1f9..1765cbc46 100644 --- a/game-server/app/services/auctionService.ts +++ b/game-server/app/services/auctionService.ts @@ -221,8 +221,9 @@ export async function genAuction(guildCode: string, sourceType: number, sourceCo }), }; const dividend = await DividendModel.createDividend(dividendData); - await pushAuctionUpdate(lots, [dividend]); - return { lots, dividend }; + let channelSid = await getGuildChannelSid(guildCode); + pinus.app.rpc.chat.guildRemote.pushAuctionAdd.toServer(channelSid, guildCode, { lots, dividends: [dividend] }); +return { lots, dividend }; } function posDividend(totalPrice: number, roleRatio: number, totalRatio: number) { @@ -458,36 +459,43 @@ export async function pushAuctionOver(lot: LotType) { } export async function pushAuctionUpdate(lots: LotType[], dividends: DividendType[]) { - let lotsResult = new Map(), dividendsResult = new Map(); - let serverLotsResult = new Map(); - for(let lot of lots) { - if (lot.auctionStage === AUCTION_STAGE.DEFAULT || lot.auctionStage === AUCTION_STAGE.GUILD) { + const stage = await auctionStage(); + if(stage === AUCTION_STAGE.DEFAULT || stage === AUCTION_STAGE.GUILD) { + let lotsResult = new Map(), dividendsResult = new Map(); + + for(let lot of lots) { if(!lotsResult.has(lot.guildCode)) { lotsResult.set(lot.guildCode, []); } lotsResult.get(lot.guildCode).push(lot); - } else if (lot.auctionStage === AUCTION_STAGE.WORLD || lot.auctionStage === AUCTION_STAGE.END ) { - if(!serverLotsResult.has(lot.serverId)) { - serverLotsResult.set(lot.serverId, []); + } + for(let dividend of dividends) { + if(!dividendsResult.has(dividend.guildCode)) { + dividendsResult.set(dividend.guildCode, []); } - serverLotsResult.get(lot.serverId).push(lot); + dividendsResult.get(dividend.guildCode).push(dividend); } - } - for(let dividend of dividends) { - if(!dividendsResult.has(dividend.guildCode)) { - dividendsResult.set(dividend.guildCode, []); + + for(let [guildCode, lots] of lotsResult) { + let dividends = dividendsResult.get(guildCode)||[]; + let channelSid = await getGuildChannelSid(guildCode); + pinus.app.rpc.chat.guildRemote.pushAuctionUpdate.toServer(channelSid, guildCode, { lots, dividends }); + } + + } else { + let lotsResult = new Map(); + for(let lot of lots) { + + if(!lotsResult.has(lot.serverId)) { + lotsResult.set(lot.serverId, []); + } + lotsResult.get(lot.serverId).push(lot); } - dividendsResult.get(dividend.guildCode).push(dividend); - } - for(let [guildCode, lots] of lotsResult) { - let dividends = dividendsResult.get(guildCode)||[]; - let channelSid = await getGuildChannelSid(guildCode); - pinus.app.rpc.chat.guildRemote.pushAuctionUpdate.toServer(channelSid, guildCode, { lots, dividends }); + for(let [serverId, lots] of lotsResult) { + let channelSid = await getWorldAuctionChannelSid(serverId); + pinus.app.rpc.chat.chatRemote.sendAuctionUpdate.toServer(channelSid, serverId, { lots }); + } } - for(let [serverId, lots] of serverLotsResult) { - let channelSid = await getWorldAuctionChannelSid(serverId); - pinus.app.rpc.chat.chatRemote.sendAuctionUpdate.toServer(channelSid, serverId, { lots }); - } } \ No newline at end of file