80 lines
2.1 KiB
C#
80 lines
2.1 KiB
C#
using FreeSql;
|
|
|
|
using LiveForum.IService.Others;
|
|
using LiveForum.Model;
|
|
|
|
namespace LiveForum.Service.Others
|
|
{
|
|
/// <summary>
|
|
/// 系统设置服务实现
|
|
/// </summary>
|
|
public class SystemSettingsService : ISystemSettingsService
|
|
{
|
|
private readonly IBaseRepository<T_SystemSettings> _settingsRepository;
|
|
|
|
/// <summary>
|
|
/// 构造函数
|
|
/// </summary>
|
|
public SystemSettingsService(IBaseRepository<T_SystemSettings> settingsRepository)
|
|
{
|
|
_settingsRepository = settingsRepository;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取配置值
|
|
/// </summary>
|
|
public async Task<string?> GetSettingAsync(string key)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(key))
|
|
{
|
|
return null;
|
|
}
|
|
|
|
var setting = await _settingsRepository.Select
|
|
.Where(x => x.SettingKey == key)
|
|
.FirstAsync();
|
|
|
|
return setting?.SettingValue;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 设置配置值
|
|
/// </summary>
|
|
public async Task<bool> SetSettingAsync(string key, string value, string? description = null)
|
|
{
|
|
if (string.IsNullOrWhiteSpace(key))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
var setting = await _settingsRepository.Select
|
|
.Where(x => x.SettingKey == key)
|
|
.FirstAsync();
|
|
|
|
var now = DateTime.Now;
|
|
|
|
if (setting == null)
|
|
{
|
|
// 新建配置
|
|
setting = new T_SystemSettings
|
|
{
|
|
SettingKey = key,
|
|
SettingValue = value,
|
|
Description = description,
|
|
UpdatedAt = now
|
|
};
|
|
await _settingsRepository.InsertAsync(setting);
|
|
}
|
|
else
|
|
{
|
|
// 更新配置
|
|
setting.SettingValue = value;
|
|
setting.UpdatedAt = now;
|
|
await _settingsRepository.UpdateAsync(setting);
|
|
}
|
|
|
|
return true;
|
|
}
|
|
}
|
|
}
|