131 lines
4.0 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|