批量设置和获取ABP SettingManager

发布时间 2023-05-24 16:29:35作者: liaer

/// <summary>
/// 批量修改系统设置
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public async Task ChangeSystemSetting(ChangeSystemSettingDto input)
{
var settings = new Dictionary<string, object> { };

// 遍历 ChangeSystemSettingDto 的所有属性
foreach (var propertyInfo in typeof(ChangeSystemSettingDto).GetProperties())
{
// 获取属性名称和值
var propertyName = propertyInfo.Name;
var propertyValue = propertyInfo.GetValue(input);
settings.Add(propertyName, propertyValue);
}

//批量修改
foreach (var setting in settings)
{
// 修改所有租户的这个设置项的值
await SettingManager.ChangeSettingForApplicationAsync(setting.Key, setting.Value.ToString());

}

/// <summary>
/// 获取所有的系统设置属性
/// </summary>
/// <returns></returns>
public async Task<ChangeSystemSettingDto> GetSystemSetting()
{
// 创建一个 MyDto 实例
ChangeSystemSettingDto systemSettingDto = new ChangeSystemSettingDto();

var myStaticClassType = typeof(AppSettingNames);
// 遍历 ChangeSystemSettingDto 的所有属性并为其赋值
foreach (var propertyInfo in typeof(ChangeSystemSettingDto).GetProperties())
{
// 获取属性名称和类型
var propertyName = propertyInfo.Name;

// 获取 常量字段并读取其值
var stringValueField = myStaticClassType.GetField(propertyName);
var stringValue = (string)stringValueField.GetValue(null);
//获取setting 值
propertyInfo.SetValue(systemSettingDto, await SettingManager.GetSettingValueAsync(stringValue));
}
return systemSettingDto;
}

 

 

/// <summary>
/// 系统设置
/// </summary>
public static class AppSettingNames
{
public const string UiTheme = "App.UiTheme";

/// <summary>
/// 文件上传地址
/// </summary>

public const string FilePath = "App.FilePath";

/// <summary>
/// 图片上传大小
/// </summary>

public const string ImageSize = "App.Image.Size";

/// <summary>
/// 文件上传类型
/// </summary>

public const string FileExtension = "App.File.Extension";

}

 

/// <summary>
/// 系统设置Dto
/// </summary>
public class ChangeSystemSettingDto
{
/// <summary>
/// 文件地址
/// </summary>
public string FilePath { get; set; }

/// <summary>
/// 图片大小
/// </summary>
public string ImageSize { get; set; }

/// <summary>
/// 文件上传类型
/// </summary>
public string FileExtension { get; set; }
}