From ec623c35e67f3fe3cf430cbfb23935372b6fe46d Mon Sep 17 00:00:00 2001
From: smartwyy <645583145@qq.com>
Date: Fri, 31 May 2024 15:33:32 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E7=B3=BB=E7=BB=9F=E6=A1=86?=
=?UTF-8?q?=E6=9E=B6?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Autofac/AutofacModuleRegister.cs | 3 -
.../Configuration/AppSettingsHelper.cs | 71 +++++++++++++++----
Service/Charger/Client/ClientMgr.cs | 12 +++-
WebStarter/Program.cs | 25 +++----
WebStarter/Properties/launchSettings.json | 6 +-
WebStarter/WebStarter.csproj | 2 +-
WebStarter/appsettings.Development.json | 8 ---
WebStarter/appsettings.dev.json | 31 ++++++++
WebStarter/appsettings.json | 25 +------
WebStarter/appsettings.prod.json | 31 ++++++++
.../Debug/net6.0/appsettings.Development.json | 8 ---
11 files changed, 145 insertions(+), 77 deletions(-)
delete mode 100644 WebStarter/appsettings.Development.json
create mode 100644 WebStarter/appsettings.dev.json
create mode 100644 WebStarter/appsettings.prod.json
delete mode 100644 WebStarter/bin/Debug/net6.0/appsettings.Development.json
diff --git a/HybirdFrameworkCore/Autofac/AutofacModuleRegister.cs b/HybirdFrameworkCore/Autofac/AutofacModuleRegister.cs
index 9510427..b47c643 100644
--- a/HybirdFrameworkCore/Autofac/AutofacModuleRegister.cs
+++ b/HybirdFrameworkCore/Autofac/AutofacModuleRegister.cs
@@ -50,17 +50,14 @@ public class AutofacModuleRegister : Module
{
if (ScopeConst.InstancePerLifetimeScope == scope.Scope)
{
- Log.Debug($"register InstancePerLifetimeScope {type}");
instancePerLifetimeScopeList.Add(type);
}
else if (ScopeConst.InstancePerDependency == scope.Scope)
{
- Log.Debug($"register InstancePerDependency {type}");
instancePerDependencyList.Add(type);
}
else
{
- Log.Debug($"register SingleInstance {type}");
defaultList.Add(type);
}
}
diff --git a/HybirdFrameworkCore/Configuration/AppSettingsHelper.cs b/HybirdFrameworkCore/Configuration/AppSettingsHelper.cs
index b0d1d8a..118423a 100644
--- a/HybirdFrameworkCore/Configuration/AppSettingsHelper.cs
+++ b/HybirdFrameworkCore/Configuration/AppSettingsHelper.cs
@@ -1,4 +1,5 @@
-using Microsoft.Extensions.Configuration;
+using log4net;
+using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Configuration.Json;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
@@ -10,11 +11,8 @@ namespace HybirdFrameworkCore.Configuration;
///
public class AppSettingsHelper
{
- public AppSettingsHelper(string contentPath)
- {
- }
-
- private static IConfiguration Configuration { get; set; }
+ private static readonly ILog Log = LogManager.GetLogger(typeof(AppSettingsHelper));
+ private static IConfiguration? Configuration { get; set; }
///
/// 封装要操作的字符
@@ -22,21 +20,35 @@ public class AppSettingsHelper
///
/// 节点配置
///
- public static string GetContent(params string[] sections)
+ public static string? GetContent(params string[] sections)
{
try
{
- var contentPath = AppDomain.CurrentDomain.BaseDirectory;
- var Path = "appsettings.json";
- Configuration = new ConfigurationBuilder().SetBasePath(contentPath).Add(new JsonConfigurationSource
- { Path = Path, Optional = false, ReloadOnChange = true }).Build();
+ if (Configuration == null)
+ {
+ string? activeProfile = Environment.GetEnvironmentVariable("profiles_active");
+ if (activeProfile == null)
+ {
+ activeProfile = "";
+ }
+ else
+ {
+ activeProfile += ".";
+ }
+ var path = "appsettings."+ activeProfile+ "json";
+ Log.Info($"read path={path}");
+ var contentPath = AppDomain.CurrentDomain.BaseDirectory;
+ Configuration = new ConfigurationBuilder().SetBasePath(contentPath).Add(new JsonConfigurationSource
+ { Path = path, Optional = false, ReloadOnChange = true }).Build();
+ }
+
if (sections.Any()) return Configuration[string.Join(":", sections)];
}
catch (Exception)
{
}
- return "";
+ return null;
}
public static bool SetContent(string value, params string[] sections)
@@ -44,9 +56,18 @@ public class AppSettingsHelper
try
{
var contentPath = AppDomain.CurrentDomain.BaseDirectory;
- var Path = contentPath + "appsettings.json";
+ string? activeProfile = Environment.GetEnvironmentVariable("profiles_active");
+ if (activeProfile == null)
+ {
+ activeProfile = "";
+ }
+ else
+ {
+ activeProfile += ".";
+ }
+ var path = "appsettings."+ activeProfile+ "json";
JObject jsonObject;
- using (var file = new StreamReader(Path))
+ using (var file = new StreamReader(path))
using (var reader = new JsonTextReader(file))
{
jsonObject = (JObject)JToken.ReadFrom(reader);
@@ -54,7 +75,7 @@ public class AppSettingsHelper
jsonObject[sections[0]][sections[1]] = value;
}
- using (var writer = new StreamWriter(Path))
+ using (var writer = new StreamWriter(path))
using (var jsonwriter = new JsonTextWriter(writer))
{
jsonObject.WriteTo(jsonwriter);
@@ -67,4 +88,24 @@ public class AppSettingsHelper
return true;
}
+
+ ///
+ ///
+ ///
+ ///
+ ///
+ public static bool GetBool(params string[] sections)
+ {
+ string s = GetContent(sections);
+ if (string.IsNullOrWhiteSpace(s))
+ {
+ return false;
+ }
+ if (bool.TryParse(s, out var result))
+ {
+ return result;
+ }
+
+ return false;
+ }
}
\ No newline at end of file
diff --git a/Service/Charger/Client/ClientMgr.cs b/Service/Charger/Client/ClientMgr.cs
index 4d02615..eacbf02 100644
--- a/Service/Charger/Client/ClientMgr.cs
+++ b/Service/Charger/Client/ClientMgr.cs
@@ -159,6 +159,12 @@ public static class ClientMgr
Thread.Sleep(1000 * 30);
DateTime now = DateTime.Now;
+ if (StaticStationInfo.AutoChargeEnabled != 1)
+ {
+ Log.Info("AutoChargeEnabled = 0 continue");
+ continue;
+ }
+
List binInfos = binInfoRepository.Query();
if (binInfos.Count < 0)
{
@@ -227,6 +233,7 @@ public static class ClientMgr
int needStopCount = chargingList.Count - (canSwapList.Count - needBatteryCount);
if (needStopCount > 0)
{
+ //停电量低的
chargingList.Sort((a,b) => (a.Soc??0).CompareTo(b.Soc??0));
for (int i = 0; i < needStopCount; i++)
{
@@ -238,6 +245,7 @@ public static class ClientMgr
else
{
List canChargeList = binInfos.Where(it => it.Soc != null && Convert.ToSingle(it.Soc) < StaticStationInfo.SwapSoc && it.CanChargeFlag == 1).ToList();
+ //启动电量高的
canChargeList.Sort((a,b) => (b.Soc??0).CompareTo(a.Soc??0));
byte chargeSoc = StaticStationInfo.ChargeSoc;
@@ -277,8 +285,8 @@ public static class ClientMgr
{
Log.Info($"begin to connect {netInfo.Code} {netInfo.NetAddr}:{netInfo.NetPort}");
ChargerClient client = AppInfo.Container.Resolve();
- client.BinNo = binInfo.No;
- client.BatteryNo = binInfo.BatteryNo;
+ client.BinNo = binInfo?.No;
+ client.BatteryNo = binInfo?.BatteryNo;
client.InitBootstrap(netInfo.NetAddr, int.Parse(netInfo.NetPort));
Task.Run(() =>
diff --git a/WebStarter/Program.cs b/WebStarter/Program.cs
index 62c75a0..0fcbbb1 100644
--- a/WebStarter/Program.cs
+++ b/WebStarter/Program.cs
@@ -4,11 +4,13 @@ using HybirdFrameworkCore.Autofac;
using HybirdFrameworkCore.Configuration;
using HybirdFrameworkCore.Entity;
using HybirdFrameworkCore.Redis;
+using log4net;
using Service.Charger.Client;
using SqlSugar;
using SqlSugar.IOC;
var builder = WebApplication.CreateBuilder(args);
+var log = LogManager.GetLogger(typeof(Program));
builder.Host.UseServiceProviderFactory(new AutofacServiceProviderFactory());
builder.Host.ConfigureContainer(cb =>
@@ -31,15 +33,11 @@ builder.Host.ConfigureContainer(cb =>
});
//redis
-var section = builder.Configuration.GetSection("Redis");
-//连接字符串
-var redisConnectionString = section.GetSection("Connection").Value;
-//实例名称
-var instanceName = section.GetSection("InstanceName").Value;
-//默认数据库
-var _defaultDB = int.Parse(section.GetSection("DefaultDB").Value ?? "0");
+var redisConnectionString = AppSettingsHelper.GetContent("Redis", "Connection");
+var instanceName = AppSettingsHelper.GetContent("Redis", "InstanceName");//默认数据库
+var defaultDb = int.Parse(AppSettingsHelper.GetContent("Redis", "DefaultDB") ?? "0");
if (redisConnectionString != null && instanceName != null)
- builder.Services.AddSingleton(new RedisHelper(redisConnectionString, instanceName, _defaultDB));
+ builder.Services.AddSingleton(new RedisHelper(redisConnectionString, instanceName, defaultDb));
builder.Services.AddControllers();
@@ -79,12 +77,9 @@ var app = builder.Build();
// Configure the HTTP request pipeline.
-if (app.Environment.IsDevelopment())
-{
- app.UseSwagger();
- app.UseSwaggerUI();
- app.UseStaticFiles();
-}
+app.UseSwagger();
+app.UseSwaggerUI();
+app.UseStaticFiles();
app.UseAuthorization();
app.UseCors("myCors");
@@ -93,9 +88,11 @@ app.MapControllers();
var list = AppSettingsHelper.GetContent("Kestrel", "Endpoints", "http", "Url");
foreach (var s in list.Split(";"))
{
+ log.Info($"use url={s}");
app.Urls.Add(s);
}
+
AppInfo.Container = app.Services.GetAutofacRoot();
ClientMgr.InitClient();
diff --git a/WebStarter/Properties/launchSettings.json b/WebStarter/Properties/launchSettings.json
index e7e364f..b37c499 100644
--- a/WebStarter/Properties/launchSettings.json
+++ b/WebStarter/Properties/launchSettings.json
@@ -16,7 +16,8 @@
"launchUrl": "swagger",
"applicationUrl": "http://localhost:5034",
"environmentVariables": {
- "ASPNETCORE_ENVIRONMENT": "Development"
+ "ASPNETCORE_ENVIRONMENT": "Development",
+ "profiles_active": "dev"
}
},
"IIS Express": {
@@ -24,7 +25,8 @@
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
- "ASPNETCORE_ENVIRONMENT": "Development"
+ "ASPNETCORE_ENVIRONMENT": "Development",
+ "profiles_active": "dev"
}
}
}
diff --git a/WebStarter/WebStarter.csproj b/WebStarter/WebStarter.csproj
index 00e10cf..a81f116 100644
--- a/WebStarter/WebStarter.csproj
+++ b/WebStarter/WebStarter.csproj
@@ -26,7 +26,7 @@
-
+
Always
diff --git a/WebStarter/appsettings.Development.json b/WebStarter/appsettings.Development.json
deleted file mode 100644
index 0c208ae..0000000
--- a/WebStarter/appsettings.Development.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "Logging": {
- "LogLevel": {
- "Default": "Information",
- "Microsoft.AspNetCore": "Warning"
- }
- }
-}
diff --git a/WebStarter/appsettings.dev.json b/WebStarter/appsettings.dev.json
new file mode 100644
index 0000000..49bf581
--- /dev/null
+++ b/WebStarter/appsettings.dev.json
@@ -0,0 +1,31 @@
+{
+ "ConnectionStrings": {
+ "ConfigId": "master",
+ "DbType": "MySql",
+ "SqlConnection": "server=192.168.2.2;Port=3306;Database=huanneng_dev;Uid=root;Pwd=Rszn123;Charset=utf8;"
+ },
+ "Update": {
+ "AutoUpdate": "false",
+ "Version": "1.1.0.1",
+ "Url": "http://121.4.95.243:8090/Updates/AutoUpdaterStarter.xml"
+ },
+ "Redis": {
+ "Connection": "106.12.36.89:6379,password=123456",
+ "InstanceName": "local",
+ "DefaultDB": "8"
+ },
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning"
+ }
+ },
+ "Kestrel": {
+ "Endpoints": {
+ "http": {
+ "Url": "http://*:15035"
+ }
+ }
+ },
+ "AllowedHosts": "*"
+}
diff --git a/WebStarter/appsettings.json b/WebStarter/appsettings.json
index 3bd6db4..0c208ae 100644
--- a/WebStarter/appsettings.json
+++ b/WebStarter/appsettings.json
@@ -1,31 +1,8 @@
{
- "ConnectionStrings": {
- "ConfigId": "master",
- "DbType": "MySql",
- "SqlConnection": "server=127.0.0.1;Port=3306;Database=huanneng_dev;Uid=root;Pwd=anyixing2023!@#;Charset=utf8;"
- },
- "Update": {
- "AutoUpdate": "false",
- "Version": "1.1.0.1",
- "Url": "http://121.4.95.243:8090/Updates/AutoUpdaterStarter.xml"
- },
- "Redis": {
- "Connection": "106.12.36.89:6379,password=123456",
- "InstanceName": "local",
- "DefaultDB": "8"
- },
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft.AspNetCore": "Warning"
}
- },
- "Kestrel": {
- "Endpoints": {
- "http": {
- "Url": "http://0.0.0.0:5035"
- }
- }
- },
- "AllowedHosts": "*"
+ }
}
diff --git a/WebStarter/appsettings.prod.json b/WebStarter/appsettings.prod.json
new file mode 100644
index 0000000..82082d3
--- /dev/null
+++ b/WebStarter/appsettings.prod.json
@@ -0,0 +1,31 @@
+{
+ "ConnectionStrings": {
+ "ConfigId": "master",
+ "DbType": "MySql",
+ "SqlConnection": "server=localhost;Port=3306;Database=huanneng_dev;Uid=root;Pwd=123456;Charset=utf8;"
+ },
+ "Update": {
+ "AutoUpdate": "false",
+ "Version": "1.1.0.1",
+ "Url": "http://121.4.95.243:8090/Updates/AutoUpdaterStarter.xml"
+ },
+ "Redis": {
+ "Connection": "localhost:6379,password=123456",
+ "InstanceName": "local",
+ "DefaultDB": "8"
+ },
+ "Logging": {
+ "LogLevel": {
+ "Default": "Information",
+ "Microsoft.AspNetCore": "Warning"
+ }
+ },
+ "Kestrel": {
+ "Endpoints": {
+ "http": {
+ "Url": "http://*:5035"
+ }
+ }
+ },
+ "AllowedHosts": "*"
+}
diff --git a/WebStarter/bin/Debug/net6.0/appsettings.Development.json b/WebStarter/bin/Debug/net6.0/appsettings.Development.json
deleted file mode 100644
index 0c208ae..0000000
--- a/WebStarter/bin/Debug/net6.0/appsettings.Development.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "Logging": {
- "LogLevel": {
- "Default": "Information",
- "Microsoft.AspNetCore": "Warning"
- }
- }
-}