using HKCardOUT.ViewModels; using Stylet; using StyletIoC; using System; using System.Windows.Threading; using System.Windows; using Microsoft.Extensions.Configuration; using HKCardOUT.Helper; using HKCardOUT.QuartzUtil.Job; using HKCardOUT.QuartzUtil; using HKCardOUT.Logic; using HKCardOUT.Logic.Service; using ImTools; using XExten.Advance.LinqFramework; using System.Threading; using HKLog; using HKLib.RabbitMQ.Config; using HKLib.RabbitMQ.Subscriber; using System.Linq; namespace HKCardOUT { public class Bootstrapper : Bootstrapper { /// /// 程序启动 /// protected override void OnStart() { ThreadManage.GetInstance().StartLong(new Action(() => { try { bool ping = PingHelper.PingTest(); //1.检测网络上下线 bool network = HKHelpers.GetInstance().GetNetworkState(); if (ping && network != DataBus.NetWordState) { DataBus.NetWordState = network && ping; if (DataBus.NetWordState) HandyControl.Controls.Growl.InfoGlobal("网络连接成功"); else HandyControl.Controls.Growl.InfoGlobal("系统已离线,请连接网络!!!"); } } catch (Exception ex) { HandyControl.Controls.Growl.InfoGlobal(ex.Message); } Thread.Sleep(3000); }), "循环状态监测线程", false); HKLogImport.Init("HKCardOUT"); } protected override void ConfigureIoC(IStyletIoCBuilder builder) { builder.Bind().ToSelf(); } /// /// 初始化系统相关参数配置 /// protected override void Configure() { #if DEBUG var configer = (new ConfigurationBuilder()).AddJsonFile("options.json").Build(); #else var configer = (new ConfigurationBuilder()).AddJsonFile("options.pro.json").Build(); #endif DataBus.ConnectionString = configer.GetConnectionString("Sqlite"); DataBus.SaasRoute = configer["SaasRoute"]; HKLib.Configer.MqAddress = configer["MQ"]; DataBus.Cron = configer["Cron"]; DataBus.Span= configer["Span"].AsInt(); DataBus.StoreId = configer["StoreId"]; DataBus.COM = configer["COM"]; DataBus.TenantId = configer["TenantId"]; DataBus.StartDevice = configer["StartDevice"].AsBool(); DataBus.Cancel = configer["Cancel"].AsBool(); DataBus.Count = configer["Count"].AsInt(); DataBus.Admin= configer.GetSection("Admin").GetChildren().Select(t => t.Value).ToList(); HKLib.Configer.SaasRoute = DataBus.SaasRoute; RemoteService.PullShopInfo(); //初始化表 DbContext.InitTable(); ServiceQueryExcute.QueryExcute.ExtuteMQ("CardStutasChanged", MQEnum.Push); ServiceQueryExcute.QueryExcute.ExtuteMQ("TimeChanged", MQEnum.Push); //服务器拉取数据 RemoteService.SyncTime(); RemoteService.GetCardStuatas(); base.Configure(); } /// /// 初始化VM /// protected override void Launch() { base.Launch(); } /// /// 加载首页VM /// /// protected override void DisplayRootView(object rootViewModel) { base.DisplayRootView(rootViewModel); } /// ///VM加载完毕 /// protected override void OnLaunch() { QuartzCoreFactory.QuartzCore().AddJob(new QuartzMap { JobDetail = "定时推送订单", Cron = DataBus.Cron, JobName = "订单", JobGroup = "订单" }); base.OnLaunch(); } /// /// 退出 /// /// protected override void OnExit(ExitEventArgs e) { base.OnExit(e); } /// /// 全局异常捕获 /// /// protected override void OnUnhandledException(DispatcherUnhandledExceptionEventArgs e) { HKLog.HKLogImport.WriteError(e.Exception.InnerException != null ? e.Exception.InnerException : e.Exception); GC.Collect(); } } }