Files
BuYuHouDuan/FishGameSrc/FishGameService/Subscribers/TempSpawnFishSubscriber.cs
T

67 lines
2.5 KiB
C#
Raw Normal View History

2026-10-12 16:22:04 +08:00
using System;
using CommonDomain;
using DotNetCore.CAP;
using FishGameService.Services;
using Microsoft.Extensions.Logging;
namespace FishGameService.Subscribers
{
public class TempSpawnFishSubscriber : ICapSubscribe
{
private readonly FishSpawnService _fishSpawnService;
private readonly ILogger<TempSpawnFishSubscriber> _logger;
public TempSpawnFishSubscriber(FishSpawnService fishSpawnService, ILogger<TempSpawnFishSubscriber> logger)
{
_fishSpawnService = fishSpawnService;
_logger = logger;
}
[CapSubscribe(TopicKeys.临时强制出鱼)]
public void HandleTempSpawnFish(TempSpawnFishMessage msg)
{
var receivedAt = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
var deliveryDelay = msg.PublishedAtUnixMs > 0 ? receivedAt - msg.PublishedAtUnixMs : -1;
try
{
var handled = _fishSpawnService.SpawnTemporaryFish(msg.RoomId, msg.FishNumber, msg.Count, msg.RouteId, msg.Seconds);
}
catch (Exception ex)
{
_logger.LogError(ex,
"[TempSpawn] 执行失败 operationId={OperationId} roomId={RoomId} fishNumber={FishNumber} count={Count}",
msg.OperationId, msg.RoomId, msg.FishNumber, msg.Count);
throw;
}
}
[CapSubscribe(TopicKeys.召唤卡出鱼)]
public void HandleSummonCardFish(SummonCardFishMessage msg)
{
var receivedAt = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
var deliveryDelay = msg.PublishedAtUnixMs > 0 ? receivedAt - msg.PublishedAtUnixMs : -1;
try
{
var handled = _fishSpawnService.SpawnSummonCardFish(
msg.RoomId, msg.FishType, out var fishNumber, out var fishId);
if (handled)
{
_fishSpawnService.SendSummonCardFishNotice(
msg.RoomId, msg.UserId, msg.FishType, fishNumber, fishId);
}
}
catch (Exception ex)
{
_logger.LogError(ex,
"[SummonCard] 召唤失败 operationId={OperationId} userId={UserId} roomId={RoomId} fishType={FishType}",
msg.OperationId, msg.UserId, msg.RoomId, msg.FishType);
throw;
}
}
}
}