You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
229 lines
11 KiB
229 lines
11 KiB
using BBWY.Client.Models;
|
|
using BBWY.Client.ViewModels;
|
|
using BBWY.Client.ViewModels.PackTask;
|
|
using BBWY.Client.ViewModels.SealBox;
|
|
using BBWY.Common.Extensions;
|
|
using BBWY.Common.Http;
|
|
using BBWY.Common.Models;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Newtonsoft.Json;
|
|
using QuanTan.SDK.Client;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
using System.IO;
|
|
using System.IO.MemoryMappedFiles;
|
|
using System.Linq;
|
|
using System.Net.Http;
|
|
using System.Reflection;
|
|
using System.Security.Principal;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
using Utils;
|
|
|
|
namespace BBWY.Client
|
|
{
|
|
/// <summary>
|
|
/// Interaction logic for App.xaml
|
|
/// </summary>
|
|
public partial class App : Application
|
|
{
|
|
public IServiceProvider ServiceProvider { get; private set; }
|
|
public IConfiguration Configuration { get; private set; }
|
|
|
|
public bool IsAdministrator()
|
|
{
|
|
WindowsIdentity current = WindowsIdentity.GetCurrent();
|
|
WindowsPrincipal windowsPrincipal = new WindowsPrincipal(current);
|
|
return windowsPrincipal.IsInRole(WindowsBuiltInRole.Administrator);
|
|
}
|
|
protected override void OnStartup(StartupEventArgs e)
|
|
{
|
|
var isAdmin = IsAdministrator();
|
|
Console.WriteLine($"run as admin : {isAdmin}");
|
|
//System.Diagnostics.Debug.WriteLine($"run as admin : {isAdmin}");
|
|
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
|
|
var gl = new GlobalContext();
|
|
string userToken = string.Empty;
|
|
|
|
#if DEBUG
|
|
//仓库组测试
|
|
//userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNjM1OTMyMDAyMjcwMDU2NDQ4IiwidGVhbUlkIjoiMTU0MDg4NTU3MDYyNzA0NzQyNCIsInNvblRlYW1JZHMiOiIxNTQwODg1NTcwNjI3MDQ3NDI0IiwiZXhwIjoxNzEwNDk2NTQ1fQ.Sx2vGJcYGf98x99slQLU3vt7yWdjspptSpbUCcZgWek";
|
|
|
|
//齐越梧桐
|
|
//userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNjY1ODk1OTgzMzc4MDc1NjQ4IiwidGVhbUlkIjoiMTUxNjcxNTM3MjQ0NTcwMDA5NiIsInNvblRlYW1JZHMiOiIxNTQwODg1NTcwNjI3MDQ3NDI0LDE1MTY3MTUzNzI0NDU3MDAwOTYiLCJleHAiOjE3MjQyOTE2MDZ9.NG6wDqHJ5ozmEDcAt2duJ50IcGarygrQ2bmiP4TGNRE";
|
|
|
|
//齐越山鸡
|
|
// userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNTM1MzMwMzI4ODkyMTQ5NzYwIiwidGVhbUlkIjoiMTUxNjk3NDI1MDU0MjUwMTg4OCIsInNvblRlYW1JZHMiOiIxNDM2Mjg4NTAwMjM1MjQzNTIwIiwiZXhwIjoxNzI2MzAwNjY0fQ.hPSbgJEuTt0MLy_7YkSJX4rRG3drJAfso-5IS8ZlOkY";
|
|
|
|
//飞鱼
|
|
userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNjI3NDg2MDI0Mjk0NzMxNzc2IiwidGVhbUlkIjoiMTUxNjk3NDI1MDU0MjUwMTg4OCIsInNvblRlYW1JZHMiOiIxNTE2OTc0MjUwNTQyNTAxODg4IiwiZXhwIjoxNzI0NTY1ODU5fQ._ezJmsvaStab8nDPB7qeoc2aakWfhHbeqq_X_RQsc4s";
|
|
|
|
//小叶
|
|
// userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNDM5OTA3NDY1MDMzNDIwODAwIiwidGVhbUlkIjoiMTQzNjI4ODUwMDIzNTI0MzUyMCIsInNvblRlYW1JZHMiOiIiLCJleHAiOjE3MjYyMTkyMDZ9.AYGBxDtX7PD8O6NOzUhRurOEJynSzoRzZpuK7RUKCKg";
|
|
|
|
//齐越陈默
|
|
// userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNjI0OTUxNjgzNTc2NTAwMjI0IiwidGVhbUlkIjoiMTYyMDM0MjAxNDcwNjk3ODgxNiIsInNvblRlYW1JZHMiOiIxNjIwMzQyMDE0NzA2OTc4ODE2LDE2MjAzNDQxNDA4NTAwMDgwNjQsMTQxMDk1NTYwNDYxMjA5MTkwNCIsImV4cCI6MTcyNDkxNDM5M30.tIgo70tzRxZyUQkX1Jsh9I4ySciX0VC9HMMOoTnwVtM";
|
|
|
|
//包装组
|
|
/// userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxMzk1NzA4MjA4NjU1MzcyMjg4IiwidGVhbUlkIjoiMTcxODU0MTA2MzM5NzgzODg0OCIsInNvblRlYW1JZHMiOiIiLCJleHAiOjE3MzAyODcxNjh9.lpiLJjP0prtQgZZfpG0NN6n60LNKstbFCJc-nLgb62A";
|
|
|
|
|
|
//齐越琳琳
|
|
|
|
//userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNjY4NDI2OTQyNTY0NTM2MzIwIiwidGVhbUlkIjoiMTUxNjcxNTM3MjQ0NTcwMDA5NiIsInNvblRlYW1JZHMiOiIxNzE4NTQxMDYzMzk3ODM4ODQ4LDE1MTY3MTUzNzI0NDU3MDAwOTYiLCJleHAiOjE3MzAyODcxNjh9.6vXadZWQfhnxbR3320RloKv3LqqbNdZ7wDDfO3tY_5U";
|
|
//齐越季夏
|
|
// userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNjIyNzY3NTkzODM0MTU2MDMyIiwidGVhbUlkIjoiMTUxNjcxNTM3MjQ0NTcwMDA5NiIsInNvblRlYW1JZHMiOiIxNTE2NzE1MzcyNDQ1NzAwMDk2LDE3MTg1NDEwNjMzOTc4Mzg4NDgiLCJleHAiOjE3MzAyODcxNjh9.ZGBU0MoJbKdkgqe9x2e3l6q-AVZwfAkUwa3oB47PWhY";
|
|
|
|
//店铺自打包
|
|
// userToken = "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VySWQiOiIxNzE5Nzc5OTU4MTYwNjI1NjY0IiwidGVhbUlkIjoiMTU0MDg4NTU3MDYyNzA0NzQyNCIsInNvblRlYW1JZHMiOiIxNzE4NTQxMDYzMzk3ODM4ODQ4IiwiZXhwIjoxNzMxNzI1NDA2fQ.VV6k8nDqTtQOY6_ma6QcX6geMU_kaswl16BGXF89so8";
|
|
#else
|
|
//var uid = e.Args.Count() > 0 ? e.Args.LastOrDefault(args => args.StartsWith("uid:")) : string.Empty;
|
|
//if (string.IsNullOrEmpty(uid))
|
|
//{
|
|
// MessageBox.Show("缺少启动参数", "提示");
|
|
// Environment.Exit(0);
|
|
//}
|
|
var tokenResult = ReadMMF();
|
|
if (tokenResult.isOk)
|
|
userToken = tokenResult.content;
|
|
else
|
|
{
|
|
MessageBox.Show($"读取内存数据失败\r\n{tokenResult.content}", "提示");
|
|
Environment.Exit(0);
|
|
}
|
|
#endif
|
|
gl.UserToken = userToken;
|
|
|
|
#region 注册全局异常
|
|
this.DispatcherUnhandledException += App_DispatcherUnhandledException;
|
|
AppDomain.CurrentDomain.UnhandledException += CurrentDomain_UnhandledException;
|
|
TaskScheduler.UnobservedTaskException += TaskScheduler_UnobservedTaskException;
|
|
#endregion
|
|
|
|
var applicationPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
|
|
var builder = new ConfigurationBuilder().SetBasePath(applicationPath).AddJsonFile("BBWYAppSettings.json", false, true);
|
|
Configuration = builder.Build();
|
|
gl.BBYWApiHost = Configuration.GetSection("BBWYApiHost").Value;
|
|
gl.MDSApiHost = Configuration.GetSection("MDSApiHost").Value;
|
|
gl.JOSApiHost = Configuration.GetSection("JOSApiHost").Value;
|
|
gl._1688ApiHost = Configuration.GetSection("1688ApiHost").Value;
|
|
gl.QKApiHost = Configuration.GetSection("QKApiHost").Value;
|
|
|
|
IServiceCollection serviceCollection = new ServiceCollection();
|
|
serviceCollection.AddHttpClient();
|
|
// serviceCollection.AddTransient<CreatePackTaskViewModel>();
|
|
serviceCollection.AddHttpClient("gzip").ConfigurePrimaryHttpMessageHandler(handler => new HttpClientHandler()
|
|
{
|
|
AutomaticDecompression = System.Net.DecompressionMethods.GZip
|
|
});
|
|
|
|
|
|
serviceCollection.AddMemoryCache();
|
|
serviceCollection.AddSingleton<RestApiService>();
|
|
serviceCollection.AddSingleton(gl);
|
|
serviceCollection.BatchRegisterServices(new Assembly[] { Assembly.Load("BBWY.Client") }, typeof(IDenpendency));
|
|
serviceCollection.AddMapper(new MappingProfile());
|
|
|
|
serviceCollection.AddTransient<_1688PreviewPurchaseViewModel>();
|
|
serviceCollection.AddTransient<EditServiceOrderViewModel>();
|
|
serviceCollection.AddTransient<BatchPurchaseCreateNewOrderViewModel>();
|
|
serviceCollection.AddTransient<BatchPurchaseAddProductSkuViewModel>();
|
|
serviceCollection.AddTransient<PackSkuSplitConfigViewModel>();
|
|
serviceCollection.AddTransient<SealBoxConfigureViewModel>();
|
|
serviceCollection.AddTransient<PublishTaskViewModel>();
|
|
serviceCollection.AddTransient<QualityViewModel>();
|
|
serviceCollection.AddTransient<PackServiceViewModel>();
|
|
serviceCollection.AddTransient<PackDetailViewModel>();
|
|
serviceCollection.AddTransient<UpdatePurchaseTaskViewModel>();
|
|
serviceCollection.AddTransient<OrderCouponDetailViewModel>();
|
|
#region 注册拳探SDK相关类
|
|
serviceCollection.AddSingleton<QuanTanProductClient>();
|
|
#endregion
|
|
|
|
ServiceProvider = serviceCollection.BuildServiceProvider();
|
|
|
|
#region 启动本机WebSocket服务
|
|
{
|
|
var wssExeList = Process.GetProcessesByName("BBWY.WebSocket.Server");
|
|
if (wssExeList == null || wssExeList.Count() == 0)
|
|
{
|
|
try
|
|
{
|
|
ProcessStartInfo p = new ProcessStartInfo();
|
|
p.CreateNoWindow = true;
|
|
p.FileName = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "BBWY.WebSocket.Server.exe");
|
|
p.Verb = "runas";
|
|
Process.Start(p);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show(ex.Message, "启动bbwy websocket服务");
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
|
|
//设置一个值,此值指示数据绑定 TextBox 是否应显示与源的 Text 属性值一致的字符串 为false
|
|
System.Windows.FrameworkCompatibilityPreferences.KeepTextBoxDisplaySynchronizedWithTextProperty = false;
|
|
|
|
|
|
base.OnStartup(e);
|
|
}
|
|
|
|
protected override void OnExit(ExitEventArgs e)
|
|
{
|
|
using (var s = ServiceProvider.CreateScope())
|
|
{
|
|
var wb2m = s.ServiceProvider.GetRequiredService<WebView2Manager>();
|
|
wb2m.Close();
|
|
}
|
|
base.OnExit(e);
|
|
}
|
|
|
|
private void TaskScheduler_UnobservedTaskException(object sender, UnobservedTaskExceptionEventArgs e)
|
|
{
|
|
Console.WriteLine(e.Exception);
|
|
e.SetObserved();
|
|
}
|
|
|
|
private void CurrentDomain_UnhandledException(object sender, UnhandledExceptionEventArgs e)
|
|
{
|
|
throw new NotImplementedException();
|
|
}
|
|
|
|
private void App_DispatcherUnhandledException(object sender, System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
|
|
{
|
|
Console.WriteLine(e.Exception);
|
|
}
|
|
|
|
public (bool isOk, string content) ReadMMF()
|
|
{
|
|
|
|
try
|
|
{
|
|
var token = MemoryHelper.GetMemoryToken();
|
|
if (string.IsNullOrEmpty(token))
|
|
return (false, "token为空");
|
|
else
|
|
return (true, token);
|
|
//using (MemoryMappedFile mmf = MemoryMappedFile.OpenExisting(mapname))
|
|
//{
|
|
// using (var mmfStream = mmf.CreateViewStream(0, 1000, MemoryMappedFileAccess.ReadWrite))
|
|
// {
|
|
// StreamReader reader = new StreamReader(mmfStream);
|
|
// string jwt = reader.ReadToEnd().Replace("\0", "").TrimEnd();
|
|
// return (true, jwt);
|
|
// }
|
|
//}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
return (false, ex.Message);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|