Files
zszq-trs/YLWinSer/RealTimeCalcPositionService/Program.cs
T
2024-05-09 14:06:26 +08:00

82 lines
2.7 KiB
C#

using FluentFTP.Helpers;
using NLog.Web;
using RealTimeCalcPositionService;
using YieldChain.Commons;
using YLErp;
using YLErp.Abstract;
using YLErp.Helpers;
using YLErp.Model;
internal class Program
{
private static async Task Main(string[] args)
{
var host = Host.CreateDefaultBuilder(args)
.ConfigureAppConfiguration((ctx, cfgBuilder) =>
{
var config = cfgBuilder.Build();
var vpath = config.GetSection("AppSettings").GetValue<string>("VirtualPathRoot");
OtcAppContext.Initialize(new InnerServer(vpath).MapPath);
})
.ConfigureServices((hostContext, services) =>
{
YLServiceLocator.SetServiceCollection(services);
var appConfig = hostContext.Configuration;
services.Configure<KafkaConfig>(appConfig.GetSection("KafkaConfig"));
AppManager.Initialize(YLErp.Enums.SubSystemName.RealTimeCalcPosition, appConfig);
services.AddSingleton<IKafkaProduce,KafkaProduceHelper>();
services.AddHostedService<ClientPosiTask>();
services.AddHostedService<Worker>();
services.AddHostedService<BondCalcKafkTask>();
services.AddHostedService<ClientNoDMABalanceTask>();
services.AddHostedService<ClientRealBalanceTask>();
}).ConfigureLogging(logging =>
{
logging.ClearProviders();
logging.SetMinimumLevel(LogLevel.Trace);
})
.UseNLog()
.Build();
//YLServiceLocator.SetServiceProvider(host.Services);
await host.RunAsync();
}
class InnerServer
{
public string VirtualRootPath { get; private set; }
public InnerServer(string virtualRootPath)
{
VirtualRootPath = virtualRootPath.TrimToNull() ?? AppContext.BaseDirectory;
}
public string MapPath(string path)
{
if (string.IsNullOrEmpty(path))
{
return VirtualRootPath;
}
if (OperatingSystem.IsWindows())
{
path = path.TrimStart(MapPathTrim).Replace('/', '\\');
}
else
{
path = path.TrimStart(MapPathTrim).Replace('\\', '/');
}
if (path.StartsWith("App_", StringComparison.OrdinalIgnoreCase)
|| path.Equals("Scripts") || path.Equals("Style"))
{
return Path.Combine(VirtualRootPath, path);
}
return Path.Combine(VirtualRootPath, path);
}
static readonly char[] MapPathTrim = new[] { '~', '/', '\\' };
}
}