using BBWY.Client.APIServices; using BBWY.Client.Models; using BBWY.Client.Views.Setting; using BBWY.Common.Models; using GalaSoft.MvvmLight.Command; using System.Collections.Generic; using System.Linq; using System.Threading.Tasks; using System.Windows; using System.Windows.Input; namespace BBWY.Client.ViewModels { public class ShopSettingViewModel : BaseVM, IDenpendency { private bool isValidated; private bool isLoading; private GlobalContext globalContext; private ShopService shopService; private PurchaseAccount purchaseAccount; private string managePwd; private decimal platformCommissionRatio; private int panelIndex; private string dingDingWebHook; private string dingDingKey; private KVModel selectedSkuSafeTurnoverDay; private string siNanDingDingWebHook; private string siNanDingDingKey; private SiNanPolicyLevel selectedSiNanPolicyLevel; public ICommand SaveCommand { get; set; } public ICommand SetPanelIndexCommand { get; set; } public PurchaseAccount PurchaseAccount { get => purchaseAccount; set { Set(ref purchaseAccount, value); } } public bool IsLoading { get => isLoading; set { Set(ref isLoading, value); } } public string ManagePwd { get => managePwd; set { Set(ref managePwd, value); } } public decimal PlatformCommissionRatio { get => platformCommissionRatio; set { Set(ref platformCommissionRatio, value); } } public int PanelIndex { get => panelIndex; set { Set(ref panelIndex, value); } } public IList SafeDayList { get; set; } public string DingDingWebHook { get => dingDingWebHook; set { Set(ref dingDingWebHook, value); } } public string DingDingKey { get => dingDingKey; set { Set(ref dingDingKey, value); } } public KVModel SelectedSkuSafeTurnoverDay { get => selectedSkuSafeTurnoverDay; set { Set(ref selectedSkuSafeTurnoverDay, value); } } public string SiNanDingDingWebHook { get => siNanDingDingWebHook; set { Set(ref siNanDingDingWebHook, value); } } public string SiNanDingDingKey { get => siNanDingDingKey; set { Set(ref siNanDingDingKey, value); } } public SiNanPolicyLevel SelectedSiNanPolicyLevel { get => selectedSiNanPolicyLevel; set { Set(ref selectedSiNanPolicyLevel, value); } } public ShopSettingViewModel(GlobalContext globalContext, ShopService shopService) { PanelIndex = 0; this.globalContext = globalContext; this.shopService = shopService; SaveCommand = new RelayCommand(Save); SetPanelIndexCommand = new RelayCommand(i => { PanelIndex = i; }); SafeDayList = new List() { new KVModel() { Key="不提醒", Value="0" }, new KVModel() { Key="14", Value="14" }, new KVModel() { Key="21", Value="21" }, new KVModel() { Key="28", Value="28" } }; } protected override void Load() { IsLoading = false; if (!string.IsNullOrEmpty(globalContext.User.Shop.ManagePwd)) { var validatePwd = new ValidateManagePwd(globalContext.User.Shop.ManagePwd); if (validatePwd.ShowDialog() != true) return; } isValidated = true; this.ManagePwd = globalContext.User.Shop.ManagePwd; this.PlatformCommissionRatio = (globalContext.User.Shop.PlatformCommissionRatio ?? 0.05M) * 100; this.PurchaseAccount = globalContext.User.Shop.PurchaseAccountList == null || globalContext.User.Shop.PurchaseAccountList.Count() == 0 ? new PurchaseAccount() : globalContext.User.Shop.PurchaseAccountList[0].Clone() as PurchaseAccount; DingDingKey = globalContext.User.Shop.DingDingKey; DingDingWebHook = globalContext.User.Shop.DingDingWebHook; SelectedSkuSafeTurnoverDay = SafeDayList.FirstOrDefault(s => s.Value == globalContext.User.Shop.SkuSafeTurnoverDays.ToString()); SelectedSiNanPolicyLevel = (SiNanPolicyLevel)globalContext.User.Shop.SiNanPolicyLevel; SiNanDingDingKey = globalContext.User.Shop.SiNanDingDingKey; SiNanDingDingWebHook = globalContext.User.Shop.SiNanDingDingWebHook; } protected override void Unload() { this.PurchaseAccount = null; this.PlatformCommissionRatio = 0M; this.ManagePwd = string.Empty; this.isValidated = false; this.DingDingKey = this.DingDingWebHook = string.Empty; SelectedSkuSafeTurnoverDay = SafeDayList[0]; } private void Save() { if (!isValidated) { MessageBox.Show("店铺密码验证未通过", "保存店铺设置"); return; } if (string.IsNullOrEmpty(PurchaseAccount.AppKey) || string.IsNullOrEmpty(PurchaseAccount.AppSecret) || string.IsNullOrEmpty(PurchaseAccount.AppToken) || string.IsNullOrEmpty(PurchaseAccount.AccountName)) { MessageBox.Show("采购信息不能为空", "保存店铺设置"); return; } PurchaseAccount.AppKey = PurchaseAccount.AppKey.Trim(); PurchaseAccount.AppSecret = PurchaseAccount.AppSecret.Trim(); PurchaseAccount.AppToken = PurchaseAccount.AppToken.Trim(); PurchaseAccount.AccountName = PurchaseAccount.AccountName.Trim(); var p = PlatformCommissionRatio / 100; IsLoading = true; Task.Factory.StartNew(() => shopService.SaveShopSetting(globalContext.User.Shop.ShopId, ManagePwd, p, PurchaseAccount, DingDingWebHook, DingDingKey, int.Parse(SelectedSkuSafeTurnoverDay.Value), SiNanDingDingWebHook, SiNanDingDingKey, (int)SelectedSiNanPolicyLevel)).ContinueWith(r => { IsLoading = false; var response = r.Result; if (!response.Success) { App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "保存店铺设置")); return; } if (globalContext.User.Shop.PurchaseAccountList == null) globalContext.User.Shop.PurchaseAccountList = new List(); globalContext.User.Shop.PurchaseAccountList.Clear(); PurchaseAccount.Id = response.Data; globalContext.User.Shop.PurchaseAccountList.Add(PurchaseAccount); globalContext.User.Shop.PlatformCommissionRatio = p; globalContext.User.Shop.ManagePwd = this.ManagePwd; globalContext.User.Shop.DingDingKey = this.DingDingKey; globalContext.User.Shop.DingDingWebHook = this.DingDingWebHook; globalContext.User.Shop.SkuSafeTurnoverDays = int.Parse(SelectedSkuSafeTurnoverDay.Value); globalContext.User.Shop.SiNanDingDingKey = this.SiNanDingDingKey; globalContext.User.Shop.SiNanDingDingWebHook = this.SiNanDingDingWebHook; globalContext.User.Shop.SiNanPolicyLevel = (int)this.SelectedSiNanPolicyLevel; }); } } }