using Atomx.Common.Constants;
using Atomx.Common.Entities;
namespace Atomx.Data.CacheServices
{
public partial interface ICacheService
{
///
/// 获取支持充值的货币信息
///
///
Task> GetDepositCurrencies();
///
/// 获取所有可用的货币信息
///
///
///
Task?> GetCurrencies(bool? reload = null);
///
/// 通过ID获取或更新缓存
///
///
///
///
Task GetCurrenciesById(long id, Currency? data = null);
///
/// 根据代码获取货币信息
///
///
///
Task GetCurrency(string code);
///
/// 从缓存中删除数据
///
///
///
Task RemoveCurrencies(long id);
}
public partial class CacheService : ICacheService
{
///
/// 获取支持充值的货币信息
///
///
public async Task> GetDepositCurrencies()
{
var data = await GetCurrencies();
return data.Where(p => p.EnablePay).ToList();
}
public async Task?> GetCurrencies(bool? reload = null)
{
var cacheData = await GetCacheAsync>(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 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();
}
}
///
/// 根据代码获取货币信息
///
///
///
public async Task 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);
}
}
}
}
}