live-forum/server/webapi/LiveForum/LiveForum.Service/Others/SystemSettingsService.cs
2026-03-24 11:27:37 +08:00

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;
}
}
}