67 lines
2.5 KiB
C#
67 lines
2.5 KiB
C#
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;
|
|
}
|
|
}
|
|
}
|
|
}
|