using BBWY.Client.APIServices; using BBWY.Client.Models; using BBWY.Common.Extensions; using BBWY.Common.Models; using GalaSoft.MvvmLight.Command; using Jd.Api; using Jd.Api.Request; using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Threading; using System.Threading.Tasks; using System.Windows; using System.Windows.Input; namespace BBWY.Client.ViewModels { public class MainViewModel : BaseVM, IDenpendency { #region Properties private MdsApiService mdsApiService; private LogisticsService logisticsService; private MenuModel selectedMenuModel; private bool showShopChoosePanel; public GlobalContext GlobalContext { get; set; } public IList MenuList { get; set; } public IList ShopList { get; set; } public MenuModel SelectedMenuModel { get => selectedMenuModel; set { if (value == null) return; Set(ref selectedMenuModel, value); foreach (var menu in MenuList) { foreach (var cmenu in menu.ChildList) { if (!ReferenceEquals(value, cmenu)) cmenu.IsSelected = false; } } } } /// /// 是否显示店铺选择列表 /// public bool ShowShopChoosePanel { get => showShopChoosePanel; set { Set(ref showShopChoosePanel, value); } } #endregion #region Commands public ICommand ClosingCommand { get; set; } public ICommand ChooseShopCommand { get; set; } #endregion #region Methods public MainViewModel(GlobalContext globalContext, MdsApiService mdsApiService, LogisticsService logisticsService) { this.mdsApiService = mdsApiService; this.logisticsService = logisticsService; ClosingCommand = new RelayCommand(Exit); ChooseShopCommand = new RelayCommand((s) => ChooseShop(s)); this.GlobalContext = globalContext; ShopList = new ObservableCollection(); MenuList = new List() { new MenuModel() { Name="订单管理",ChildList=new List() { new MenuModel(){ Name="最近订单",Url="/Views/Order/OrderList.xaml" }, new MenuModel(){ Name="售后管理",Url="/Views/Order/OrderList.xaml" } } }, new MenuModel() { Name="商品管理",ChildList=new List() { new MenuModel(){ Name="货源管理",Url="/Views/Ware/WareManager.xaml" }, new MenuModel(){ Name="产品库存",Url="/Views/Ware/WareStock.xaml" } } } }; Task.Factory.StartNew(Login); } private void Exit(System.ComponentModel.CancelEventArgs e) { App.Current.Shutdown(); //Environment.Exit(Environment.ExitCode); } private void Login() { try { Thread.Sleep(1000); var mdsUserResponse = mdsApiService.GetUserInfo(GlobalContext.UserToken); if (!mdsUserResponse.Success) throw new Exception($"获取磨刀石用户信息失败 {mdsUserResponse.Msg}"); GlobalContext.User = mdsUserResponse.Data.Map(); //请求用户信息接口 //GlobalContext.User = new User() //{ // Id = userId, // Name = "ShanJ", // Store = new Store() // { // Platform = Platform.京东, // AppKey = "120EA9EC65AB017567D78CC1139EEEA5", // AppSecret = "866a9877f5f24b03b537483b4defe75d", // AppToken = "d8433fb2a4994484b5d9e5a5896a6dfdmyjj" //10388155 // } //}; var shopListResponse = mdsApiService.GetShopsByUserId(GlobalContext.User.Id); if (!shopListResponse.Success) throw new Exception(shopListResponse.Msg); if (shopListResponse.Data == null || shopListResponse.Data.Count == 0) throw new Exception("未绑定店铺"); var shopList = shopListResponse.Data.Map>(); if (shopList.Count == 1) { ChooseShop(shopList[0], true); } else { App.Current.Dispatcher.Invoke(() => { foreach (var s in shopList) ShopList.Add(s); }); ShowShopChoosePanel = true; } } catch (Exception ex) { App.Current.Dispatcher.Invoke(() => { MessageBox.Show(ex.Message, "登录失败"); }); Environment.Exit(Environment.ExitCode); } } private void ChooseShop(Shop shop, bool _throw = false) { if (shop.ShopId == 0 || string.IsNullOrEmpty(shop.AppKey) || string.IsNullOrEmpty(shop.AppSecret) || string.IsNullOrEmpty(shop.AppToken) || (shop.Platform == Platform.京东 && string.IsNullOrEmpty(shop.VenderType))) { var error = $"{shop.Name} 店铺数据不完整"; if (_throw) throw new Exception(error); else { MessageBox.Show(error, "选择店铺"); return; } } GlobalContext.User.Shop = shop; ShowShopChoosePanel = false; Task.Factory.StartNew(GetLogisticsList); } private void GetLogisticsList() { var response = logisticsService.GetLogisticsList(); if (!response.Success) { App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "获取物流公司")); return; } GlobalContext.LogisticsResponseList = response.Data; } #endregion } }