using Microsoft.Extensions.Logging;
using XiangYi.Application.Interfaces;
using XiangYi.Core.Entities.Biz;
using XiangYi.Core.Interfaces;
namespace XiangYi.Application.Services;
///
/// 系统配置服务实现
///
public class SystemConfigService : ISystemConfigService
{
private readonly IRepository _configRepository;
private readonly ILogger _logger;
///
/// 默认头像配置键
///
public const string DefaultAvatarKey = "default_avatar";
///
/// 用户协议配置键
///
public const string UserAgreementKey = "user_agreement";
///
/// 隐私协议配置键
///
public const string PrivacyPolicyKey = "privacy_policy";
///
/// 会员权益长图配置键
///
public const string MemberBenefitsImageKey = "member_benefits_image";
///
/// 搜索页Banner配置键
///
public const string SearchBannerKey = "search_banner";
///
/// 管家二维码配置键
///
public const string ButlerQrcodeKey = "butler_qrcode";
public SystemConfigService(
IRepository configRepository,
ILogger logger)
{
_configRepository = configRepository;
_logger = logger;
}
///
public async Task GetConfigValueAsync(string key)
{
var configs = await _configRepository.GetListAsync(c => c.ConfigKey == key);
return configs.FirstOrDefault()?.ConfigValue;
}
///
public async Task SetConfigValueAsync(string key, string value, string? description = null)
{
try
{
var configs = await _configRepository.GetListAsync(c => c.ConfigKey == key);
var config = configs.FirstOrDefault();
if (config != null)
{
config.ConfigValue = value;
config.UpdateTime = DateTime.Now;
if (description != null)
{
config.Description = description;
}
await _configRepository.UpdateAsync(config);
}
else
{
config = new SystemConfig
{
ConfigKey = key,
ConfigValue = value,
ConfigType = "system",
Description = description,
CreateTime = DateTime.Now,
UpdateTime = DateTime.Now
};
await _configRepository.AddAsync(config);
}
return true;
}
catch (Exception ex)
{
_logger.LogError(ex, "设置配置失败: {Key}", key);
return false;
}
}
///
public async Task GetDefaultAvatarAsync()
{
return await GetConfigValueAsync(DefaultAvatarKey);
}
///
public async Task SetDefaultAvatarAsync(string avatarUrl)
{
return await SetConfigValueAsync(DefaultAvatarKey, avatarUrl, "新用户默认头像");
}
///
public async Task> GetAllConfigsAsync()
{
var configs = await _configRepository.GetListAsync(c => true);
return configs.ToDictionary(c => c.ConfigKey, c => c.ConfigValue);
}
///
public async Task GetUserAgreementAsync()
{
return await GetConfigValueAsync(UserAgreementKey);
}
///
public async Task SetUserAgreementAsync(string content)
{
return await SetConfigValueAsync(UserAgreementKey, content, "用户协议内容");
}
///
public async Task GetPrivacyPolicyAsync()
{
return await GetConfigValueAsync(PrivacyPolicyKey);
}
///
public async Task SetPrivacyPolicyAsync(string content)
{
return await SetConfigValueAsync(PrivacyPolicyKey, content, "隐私协议内容");
}
///
public async Task GetMemberBenefitsImageAsync()
{
return await GetConfigValueAsync(MemberBenefitsImageKey);
}
///
public async Task SetMemberBenefitsImageAsync(string imageUrl)
{
return await SetConfigValueAsync(MemberBenefitsImageKey, imageUrl, "会员权益长图URL");
}
///
public async Task GetSearchBannerAsync()
{
return await GetConfigValueAsync(SearchBannerKey);
}
///
public async Task SetSearchBannerAsync(string imageUrl)
{
return await SetConfigValueAsync(SearchBannerKey, imageUrl, "搜索页Banner图URL");
}
///
public async Task GetButlerQrcodeAsync()
{
return await GetConfigValueAsync(ButlerQrcodeKey);
}
///
public async Task SetButlerQrcodeAsync(string imageUrl)
{
return await SetConfigValueAsync(ButlerQrcodeKey, imageUrl, "管家指导二维码URL");
}
}