//using Atomx.Common.Entities;

//namespace Atomx.Data.CacheServices
//{
//    public partial interface ICacheService
//    {
//        /// <summary>
//        /// 获取管理员菜单系统
//        /// </summary>
//        /// <param name="reload"></param>
//        /// <returns></returns>
//        Task<List<PermissionRecord>> GetAdminMenu(List<PermissionRecord>? data = null);

//        /// <summary>
//        /// 获取角色信息
//        /// </summary>
//        /// <param name="data"></param>
//        /// <returns></returns>
//        Task<List<Role>> GetRoles(Role? data = null, bool remove = false);

//        /// <summary>
//        /// 获取基本配置信息
//        /// </summary>
//        /// <param name="data"></param>
//        /// <returns></returns>
//        Task<GeneralConfig> GetGeneralConfig(bool? reload = false);

//        /// <summary>
//        /// 获取系统默认语言ID
//        /// </summary>
//        /// <returns></returns>
//        Task<int> GetDefaultLanguageId();

//        /// <summary>
//        /// 获取系统默认语言
//        /// </summary>
//        /// <returns></returns>
//        Task<string> GetDefaultLanguage();

//        /// <summary>
//        /// 获取货币ID
//        /// </summary>
//        /// <returns></returns>
//        Task<int> GetCurrencyId();

//        /// <summary>
//        /// 货币代码
//        /// </summary>
//        /// <returns></returns>
//        Task<string> GetCurrency();

//        /// <summary>
//        /// 获取邮件配置
//        /// </summary>
//        /// <param name="reload"></param>
//        /// <returns></returns>
//        Task<EmailConfig> GetEmailConfig(bool? reload = false);

//        /// <summary>
//        /// 获取忘记交易密码邮件内容模板
//        /// </summary>
//        /// <param name="reload"></param>
//        /// <returns></returns>
//        Task<EmailTemplateConfig> GetForgetTransactionPasswordEmailTemplate(bool? reload = false);

//        /// <summary>
//        /// 获取忘记交易密码邮件内容模板
//        /// </summary>
//        /// <param name="reload"></param>
//        /// <returns></returns>
//        Task<EmailTemplateConfig> GetForgetPasswordEmailTemplate(bool? reload = false);

//        /// <summary>
//        /// 账号激活邮件内容模板
//        /// </summary>
//        /// <param name="reload"></param>
//        /// <returns></returns>
//        Task<EmailTemplateConfig> GetRegisterActiveEmailTemplate(bool? reload = false);

//    }
//    public partial class CacheService : ICacheService
//    {

//        /// <summary>
//        /// 获取管理员菜单系统
//        /// </summary>
//        /// <param name="reload"></param>
//        /// <returns></returns>
//        public async Task<List<PermissionRecord>> GetAdminMenu(List<PermissionRecord>? data = null)
//        {

//            var cacheData = await GetCacheAsync<List<PermissionRecord>>(CacheKeys.AdminMenu);
//            if (data != null)
//            {
//                await SetCacheAsync(CacheKeys.AdminMenu, data);
//                cacheData = data;
//            }
//            if (cacheData == null)
//            {
//                return new List<PermissionRecord>();
//            }

//            return cacheData;
//        }

//        /// <summary>
//        /// 获取基础缓存信息
//        /// </summary>
//        /// <param name="data"></param>
//        /// <returns></returns>
//        /// <exception cref="NotImplementedException"></exception>
//        public async Task<GeneralConfig> GetGeneralConfig(bool? reload = false)
//        {
//            var cacheData = await GetCacheAsync<GeneralConfig>(CacheKeys.GeneralConfig);
//            var needReload = reload.Value;

//            if (cacheData == null || needReload)
//            {
//                var config = _dbContext.Configs.SingleOrDefault(p => p.Key == ConfigKeys.General);
//                if (config != null)
//                {
//                    cacheData = config.Content.FromJson<GeneralConfig>();
//                    await SetCacheAsync(CacheKeys.GeneralConfig, cacheData);
//                }
//                else
//                {
//                    return new GeneralConfig();
//                }
//            }

//            return cacheData;
//        }

//        /// <summary>
//        /// 获取角色得信息
//        /// </summary>
//        /// <param name="data"></param>
//        /// <returns></returns>
//        public async Task<List<Role>> GetRoles(Role? data = null, bool remove = false)
//        {
//            var cacheData = await GetCacheAsync<List<Role>>(CacheKeys.Roles);
//            if (data != null)
//            {
//                if (cacheData != null)
//                {
//                    var role = cacheData.SingleOrDefault(p => p.Id == data.Id);
//                    if (role != null)
//                    {
//                        cacheData.Remove(role);
//                    }
//                }
//                else
//                {
//                    cacheData = new List<Role>();

//                }
//                if (!remove)
//                {
//                    cacheData.Add(data);
//                }
//                await SetCacheAsync(CacheKeys.Roles, cacheData);
//            }
//            if (cacheData == null)
//            {
//                return new List<Role>();
//            }

//            return cacheData;
//        }


//        /// <summary>
//        /// 获取系统默认语言ID
//        /// </summary>
//        /// <returns></returns>
//        public async Task<int> GetDefaultLanguageId()
//        {
//            var data = await GetGeneralConfig();
//            return data.LanguageId;
//        }

//        /// <summary>
//        /// 获取系统默认语言
//        /// </summary>
//        /// <returns></returns>
//        public async Task<string> GetDefaultLanguage()
//        {
//            var data = await GetGeneralConfig();
//            return data.Language;
//        }

//        /// <summary>
//        /// 获取货币ID
//        /// </summary>
//        /// <returns></returns>
//        public async Task<int> GetCurrencyId()
//        {
//            var data = await GetGeneralConfig();
//            return data.PrimaryCurrencyId;
//        }

//        /// <summary>
//        /// 货币代码
//        /// </summary>
//        /// <returns></returns>
//        public async Task<string> GetCurrency()
//        {
//            var data = await GetGeneralConfig();
//            return data.PrimaryCurrency;
//        }

//        /// <summary>
//        /// 获取邮件服务配置
//        /// </summary>
//        /// <param name="reload"></param>
//        /// <returns></returns>
//        public async Task<EmailConfig> GetEmailConfig(bool? reload = false)
//        {
//            var cacheData = await GetCacheAsync<EmailConfig>(CacheKeys.EmailConfig);
//            var needReload = reload.Value;

//            if (cacheData == null || needReload)
//            {
//                var config = _dbContext.Configs.SingleOrDefault(p => p.Key == ConfigKeys.EmailServer);
//                if (config != null)
//                {
//                    cacheData = config.Content.FromJson<EmailConfig>();
//                    await SetCacheAsync(CacheKeys.EmailConfig, cacheData);
//                }
//                else
//                {
//                    return new EmailConfig();
//                }
//            }

//            return cacheData;
//        }


//        /// <summary>
//        /// 获取忘记交易密码邮件内容模板
//        /// </summary>
//        /// <param name="reload"></param>
//        /// <returns></returns>
//        public async Task<EmailTemplateConfig> GetForgetTransactionPasswordEmailTemplate(bool? reload = false)
//        {
//            var cacheData = await GetCacheAsync<EmailTemplateConfig>(CacheKeys.ForgetTransactionPasswordEmailTemplateConfig);
//            var needReload = reload.Value;

//            if (cacheData == null || needReload)
//            {
//                var config = _dbContext.Configs.SingleOrDefault(p => p.Key == ConfigKeys.ForgetTransactionPasswordEmailTemplate);
//                if (config != null)
//                {
//                    cacheData = config.Content.FromJson<EmailTemplateConfig>();
//                    await SetCacheAsync(CacheKeys.ForgetTransactionPasswordEmailTemplateConfig, cacheData);
//                }
//                else
//                {
//                    return new EmailTemplateConfig();
//                }
//            }

//            return cacheData;
//        }

//        /// <summary>
//        /// 获取忘记交易密码邮件内容模板
//        /// </summary>
//        /// <param name="reload"></param>
//        /// <returns></returns>
//        public async Task<EmailTemplateConfig> GetForgetPasswordEmailTemplate(bool? reload = false)
//        {
//            var cacheData = await GetCacheAsync<EmailTemplateConfig>(CacheKeys.ForgetPasswordEmailTemplateConfig);
//            var needReload = reload.Value;

//            if (cacheData == null || needReload)
//            {
//                var config = _dbContext.Configs.SingleOrDefault(p => p.Key == ConfigKeys.ForgetPasswordEmailTemplate);
//                if (config != null)
//                {
//                    cacheData = config.Content.FromJson<EmailTemplateConfig>();
//                    await SetCacheAsync(CacheKeys.ForgetPasswordEmailTemplateConfig, cacheData);
//                }
//                else
//                {
//                    return new EmailTemplateConfig();
//                }
//            }
//            return cacheData;
//        }

//        /// <summary>
//        /// 获取忘记交易密码邮件内容模板
//        /// </summary>
//        /// <param name="reload"></param>
//        /// <returns></returns>
//        public async Task<EmailTemplateConfig> GetRegisterActiveEmailTemplate(bool? reload = false)
//        {
//            var cacheData = await GetCacheAsync<EmailTemplateConfig>(CacheKeys.RegisterActiveEmailTemplateConfig);
//            var needReload = reload.Value;

//            if (cacheData == null || needReload)
//            {
//                var config = _dbContext.Configs.SingleOrDefault(p => p.Key == ConfigKeys.RegisterEmailActiveTemplate);
//                if (config != null)
//                {
//                    cacheData = config.Content.FromJson<EmailTemplateConfig>();
//                    await SetCacheAsync(CacheKeys.RegisterActiveEmailTemplateConfig, cacheData);
//                }
//                else
//                {
//                    return new EmailTemplateConfig();
//                }
//            }

//            return cacheData;
//        }
//    }
//}
