Files
BuYuHouDuan/UserSrc/UserService/GameConfigs/ActivityConfigService.cs
T
2026-10-12 16:22:04 +08:00

65 lines
1.9 KiB
C#

using CommonDomain;
using Microsoft.Extensions.Logging;
using MongoRepository;
using RedisService;
namespace UserService.GameConfigs
{
public class ActivityConfigService : IActivityConfigService
{
private readonly IMongoBaseRepository<ActivityConfig> _mongo;
private readonly IRedisService _redis;
public ActivityConfigService(IMongoBaseRepository<ActivityConfig> mongo, IRedisService redis)
{
_mongo = mongo;
_redis = redis;
}
public async Task<ActivityConfig> Get()
{
var config = _redis.GetActivityConfig();
if (config == null)
{
config = await _mongo.FindOneAsync(c => true);
if (config != null)
_redis.SetActivityConfig(config);
}
if (config != null && config.AutoStopExpired(DateTimeOffset.UtcNow.ToUnixTimeSeconds()))
{
_redis.SetActivityConfig(config);
var result = await _mongo.ReplaceOneAsync(config);
}
return config;
}
public async Task<(bool isok, string msg)> Update(ActivityConfig config)
{
var existing = await Get();
if (existing == null)
{
config.Id = Guid.NewGuid().ToString("N");
}
else
{
config.Id = existing.Id;
}
_redis.SetActivityConfig(config);
var killConfig = _redis.GetFishingKillConfig();
if (killConfig != null)
{
killConfig.BattleOrderIsOpen = config.BattleOrderConfig?.IsOpen ?? false;
_redis.SetFishingKillConfig(killConfig);
}
if (existing == null)
return await _mongo.InsertOneAsync(config);
else
return await _mongo.ReplaceOneAsync(config);
}
}
}