136 lines
4.3 KiB
C#
136 lines
4.3 KiB
C#
using Abp.Dependency;
|
|
using Newtonsoft.Json;
|
|
using Newtonsoft.Json.Linq;
|
|
using System;
|
|
using System.IO;
|
|
|
|
namespace Yunda.ISAS.DataMonitoringServer.DataAnalysis.Helper
|
|
{
|
|
public class ConfigurationHepler : ISingletonDependency
|
|
{
|
|
|
|
private Guid substationId;
|
|
private string substationName;
|
|
//private readonly IConfigurationRoot _appConfiguration;
|
|
private readonly object selflocker = new object();
|
|
#if DEBUG
|
|
private readonly string _path = "./appsettings.development.json";
|
|
|
|
#else
|
|
private readonly string _path = "./appsettings.json";
|
|
#endif
|
|
|
|
public Guid SubstationId
|
|
{
|
|
get => substationId;
|
|
set
|
|
{
|
|
substationId = value;
|
|
SetAppsettingsValue(value.ToString(), "ServiceConfig", "SubstationId");
|
|
}
|
|
}
|
|
public string SubstationName
|
|
{
|
|
get => substationName;
|
|
set
|
|
{
|
|
substationName = value;
|
|
SetAppsettingsValue(value.ToString(), "ServiceConfig", "SubstationName");
|
|
}
|
|
}
|
|
|
|
public void InitSubstationId()
|
|
{
|
|
try
|
|
{
|
|
substationName = GetAppsettingsValue("ServiceConfig", "SubstationName");
|
|
var str = GetAppsettingsValue("ServiceConfig", "SubstationId");
|
|
if (!string.IsNullOrWhiteSpace(str))
|
|
{
|
|
substationId = new Guid(str);
|
|
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
throw ex;
|
|
}
|
|
}
|
|
|
|
public ConfigurationHepler()
|
|
{
|
|
|
|
}
|
|
|
|
public void SetAppsettingsValue(string value, params string[] keys)
|
|
{
|
|
if (keys.Length > 4)
|
|
{
|
|
throw new ArgumentOutOfRangeException(nameof(keys), "json嵌套最多为4层");
|
|
}
|
|
if (File.Exists(_path))
|
|
{
|
|
string text = "";
|
|
lock (selflocker)
|
|
{
|
|
using (StreamReader reader = File.OpenText(_path))
|
|
{
|
|
JObject obj = (JObject)JToken.ReadFrom(new JsonTextReader(reader));
|
|
switch (keys.Length)
|
|
{
|
|
case 1:
|
|
obj[keys[0]] = value; break;
|
|
case 2:
|
|
obj[keys[0]][keys[1]] = value; break;
|
|
case 3:
|
|
obj[keys[0]][keys[1]][keys[2]] = value; break;
|
|
case 4:
|
|
obj[keys[0]][keys[1]][keys[2]][keys[3]] = value; break;
|
|
}
|
|
text = obj.ToString();
|
|
}
|
|
}
|
|
lock (selflocker)
|
|
{
|
|
using (StreamWriter streamWriter = new StreamWriter(_path))
|
|
{
|
|
streamWriter.WriteLine(text);
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|
|
public string GetAppsettingsValue(params string[] keys)
|
|
{
|
|
if (keys.Length > 4)
|
|
{
|
|
throw new ArgumentOutOfRangeException(nameof(keys), "json嵌套最多为4层");
|
|
}
|
|
if (File.Exists(_path))
|
|
{
|
|
lock (selflocker)
|
|
{
|
|
using (StreamReader reader = File.OpenText(_path))
|
|
{
|
|
JObject obj = (JObject)JToken.ReadFrom(new JsonTextReader(reader));
|
|
string value = "";
|
|
switch (keys.Length)
|
|
{
|
|
case 1:
|
|
value = obj[keys[0]].ToString(); break;
|
|
case 2:
|
|
value = obj[keys[0]][keys[1]].ToString(); break;
|
|
case 3:
|
|
value = obj[keys[0]][keys[1]][keys[2]].ToString(); break;
|
|
case 4:
|
|
value = obj[keys[0]][keys[1]][keys[2]][keys[3]].ToString(); break;
|
|
}
|
|
return value;
|
|
}
|
|
}
|
|
}
|
|
return "";
|
|
}
|
|
}
|
|
}
|