Files
Atomx/Atomx.Data/CacheServices/CurrencyCacheService.cs
2025-12-17 00:37:57 +08:00

131 lines
4.0 KiB
C#

using Atomx.Common.Constants;
using Atomx.Common.Entities;
namespace Atomx.Data.CacheServices
{
public partial interface ICacheService
{
/// <summary>
/// 获取支持充值的货币信息
/// </summary>
/// <returns></returns>
Task<List<Currency>> GetDepositCurrencies();
/// <summary>
/// 获取所有可用的货币信息
/// </summary>
/// <param name="reload"></param>
/// <returns></returns>
Task<List<Currency>?> GetCurrencies(bool? reload = null);
/// <summary>
/// 通过ID获取或更新缓存
/// </summary>
/// <param name="id"></param>
/// <param name="data"></param>
/// <returns></returns>
Task<Currency> GetCurrenciesById(long id, Currency? data = null);
/// <summary>
/// 根据代码获取货币信息
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
Task<Currency> GetCurrency(string code);
/// <summary>
/// 从缓存中删除数据
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
Task RemoveCurrencies(long id);
}
public partial class CacheService : ICacheService
{
/// <summary>
/// 获取支持充值的货币信息
/// </summary>
/// <returns></returns>
public async Task<List<Currency>> GetDepositCurrencies()
{
var data = await GetCurrencies();
return data.Where(p => p.EnablePay).ToList();
}
public async Task<List<Currency>?> GetCurrencies(bool? reload = null)
{
var cacheData = await GetCacheAsync<List<Currency>>(CacheKeys.Currencies);
if (cacheData == null || reload.HasValue)
{
var data = _dbContext.Currencies.Where(p => p.Enabled).ToList();
if (data != null)
{
cacheData = data;
await SetCacheAsync(CacheKeys.Currencies, cacheData);
}
}
return cacheData;
}
public async Task<Currency> GetCurrenciesById(long id, Currency? data = null)
{
var cacheData = await GetCurrencies();
if (data != null)
{
var currency = cacheData.SingleOrDefault(p => p.Id == id);
if (currency != null)
{
cacheData.Remove(currency);
cacheData.Add(data);
await SetCacheAsync(CacheKeys.Currencies, cacheData);
}
else
{
cacheData.Add(data);
await SetCacheAsync(CacheKeys.Currencies, cacheData);
}
return data;
}
else
{
var manufacturer = cacheData.SingleOrDefault(p => p.Id == id);
if (manufacturer != null)
{
return manufacturer;
}
return new Currency();
}
}
/// <summary>
/// 根据代码获取货币信息
/// </summary>
/// <param name="code"></param>
/// <returns></returns>
public async Task<Currency> GetCurrency(string code)
{
var cacheData = await GetCurrencies();
if (cacheData != null)
{
return cacheData.SingleOrDefault(p => p.CurrencyCode == code);
}
return new Currency();
}
public async Task RemoveCurrencies(long id)
{
var cacheData = await GetCurrencies();
if (cacheData != null)
{
var data = cacheData.SingleOrDefault(p => p.Id == id);
if (data != null)
{
cacheData.Remove(data);
await SetCacheAsync(CacheKeys.Currencies, cacheData);
}
}
}
}
}