From b979e2876fb8c131ef85b1ed16c1c7e2bb1f2fbb Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Thu, 10 Feb 2022 02:13:15 +0800 Subject: [PATCH] =?UTF-8?q?1.=E5=AF=B9=E6=8E=A5JD=E5=BA=97=E9=93=BAToken?= =?UTF-8?q?=E6=8E=A8=E9=80=81=202.=E6=96=B0=E5=A2=9E=E9=80=89=E6=8B=A9?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E6=96=B9=E6=A1=88=E5=BC=B9=E7=AA=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWY.Client/APIServices/PurchaseService.cs | 20 ++++++++- .../Order/ChoosePurchaseSchemeViewModel.cs | 45 +++++++++++++++++++ BBWY.Client/ViewModels/ViewModelLocator.cs | 11 +++++ .../Views/Order/ChoosePurchaseScheme.xaml | 28 ++++++++++++ .../Views/Order/ChoosePurchaseScheme.xaml.cs | 15 +++++++ .../Controllers/BaseApiController.cs | 2 +- .../Controllers/OrderController.cs | 1 + .../Controllers/VenderController.cs | 28 +++++++++++- BBWY.Server.Business/Vender/VenderBusiness.cs | 20 +++++++++ .../Dto/Request/Vender/JDShopToken.cs | 11 +++++ 10 files changed, 176 insertions(+), 5 deletions(-) create mode 100644 BBWY.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs create mode 100644 BBWY.Client/Views/Order/ChoosePurchaseScheme.xaml create mode 100644 BBWY.Client/Views/Order/ChoosePurchaseScheme.xaml.cs create mode 100644 BBWY.Server.Model/Dto/Request/Vender/JDShopToken.cs diff --git a/BBWY.Client/APIServices/PurchaseService.cs b/BBWY.Client/APIServices/PurchaseService.cs index 46c57033..dc06b367 100644 --- a/BBWY.Client/APIServices/PurchaseService.cs +++ b/BBWY.Client/APIServices/PurchaseService.cs @@ -13,8 +13,9 @@ namespace BBWY.Client.APIServices /// /// 获取采购方案 /// - /// 产品Id - /// 采购商Id + /// + /// + /// /// public ApiResponse> GetPurchaseSchemeList(IList productIdList, string purchaserId, long shopId) { @@ -25,6 +26,21 @@ namespace BBWY.Client.APIServices HttpMethod.Post); } + /// + /// 获取采购方案 + /// + /// + /// + /// + public ApiResponse> GetPurchaseSchemeList(string skuId, long shopId) + { + return SendRequest>(globalContext.BBYWApiHost, + "api/PurchaseScheme/GetPurchaseSchemeList", + new { skuId, shopId }, + null, + HttpMethod.Post); + } + public ApiResponse EditPurchaseScheme(IList addPurchaseSchemeList, IList editPurchaseSchemeList) { return SendRequest(globalContext.BBYWApiHost, diff --git a/BBWY.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs b/BBWY.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs new file mode 100644 index 00000000..ea0fa04c --- /dev/null +++ b/BBWY.Client/ViewModels/Order/ChoosePurchaseSchemeViewModel.cs @@ -0,0 +1,45 @@ +using BBWY.Client.APIServices; +using BBWY.Client.Models; +using BBWY.Common.Models; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Threading.Tasks; +using System.Windows; + +namespace BBWY.Client.ViewModels +{ + public class ChoosePurchaseSchemeViewModel : BaseVM, IDenpendency + { + private PurchaseService purchaseService; + private GlobalContext globalContext; + + public string SkuId { get; set; } + public IList PurchaseSchemeList { get; set; } + + public ChoosePurchaseSchemeViewModel(PurchaseService purchaseService, GlobalContext globalContext) + { + this.purchaseService = purchaseService; + this.globalContext = globalContext; + PurchaseSchemeList = new ObservableCollection(); + } + + protected override void Load() + { + PurchaseSchemeList.Clear(); + Task.Factory.StartNew(() => purchaseService.GetPurchaseSchemeList(SkuId, globalContext.User.Shop.ShopId)).ContinueWith(t => + { + var r = t.Result; + if (!r.Success) + { + App.Current.Dispatcher.Invoke(() => MessageBox.Show(r.Msg, "获取采购方案")); + return; + } + + App.Current.Dispatcher.Invoke(() => + { + foreach (var apiModel in r.Data) PurchaseSchemeList.Add(PurchaseScheme.Convert(apiModel)); + }); + }); + } + } +} diff --git a/BBWY.Client/ViewModels/ViewModelLocator.cs b/BBWY.Client/ViewModels/ViewModelLocator.cs index 7d822608..bd3abc2e 100644 --- a/BBWY.Client/ViewModels/ViewModelLocator.cs +++ b/BBWY.Client/ViewModels/ViewModelLocator.cs @@ -66,5 +66,16 @@ namespace BBWY.Client.ViewModels } } } + + public ChoosePurchaseSchemeViewModel ChoosePurchaseScheme + { + get + { + using (var s = sp.CreateScope()) + { + return s.ServiceProvider.GetRequiredService(); + } + } + } } } diff --git a/BBWY.Client/Views/Order/ChoosePurchaseScheme.xaml b/BBWY.Client/Views/Order/ChoosePurchaseScheme.xaml new file mode 100644 index 00000000..3641dbbb --- /dev/null +++ b/BBWY.Client/Views/Order/ChoosePurchaseScheme.xaml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + diff --git a/BBWY.Client/Views/Order/ChoosePurchaseScheme.xaml.cs b/BBWY.Client/Views/Order/ChoosePurchaseScheme.xaml.cs new file mode 100644 index 00000000..afd36fd8 --- /dev/null +++ b/BBWY.Client/Views/Order/ChoosePurchaseScheme.xaml.cs @@ -0,0 +1,15 @@ +using BBWY.Controls; + +namespace BBWY.Client.Views.Order +{ + /// + /// ChoosePurchaseScheme.xaml 的交互逻辑 + /// + public partial class ChoosePurchaseScheme : BWindow + { + public ChoosePurchaseScheme() + { + InitializeComponent(); + } + } +} diff --git a/BBWY.Server.API/Controllers/BaseApiController.cs b/BBWY.Server.API/Controllers/BaseApiController.cs index ebb878e7..85263cd3 100644 --- a/BBWY.Server.API/Controllers/BaseApiController.cs +++ b/BBWY.Server.API/Controllers/BaseApiController.cs @@ -7,7 +7,7 @@ namespace BBWY.Server.API.Controllers [ApiController] public class BaseApiController : ControllerBase { - private IHttpContextAccessor httpContextAccessor; + protected IHttpContextAccessor httpContextAccessor; public BaseApiController(IHttpContextAccessor httpContextAccessor) { this.httpContextAccessor = httpContextAccessor; diff --git a/BBWY.Server.API/Controllers/OrderController.cs b/BBWY.Server.API/Controllers/OrderController.cs index b98e4203..f08b50ee 100644 --- a/BBWY.Server.API/Controllers/OrderController.cs +++ b/BBWY.Server.API/Controllers/OrderController.cs @@ -106,6 +106,7 @@ namespace BBWY.Server.API.Controllers [HttpPost("{shopId}/{orderId}")] public void SyncOrder([FromRoute] long shopId, [FromRoute] string orderId) { + Task.Factory.StartNew(() => orderBusiness.SyncOrder(shopId, orderId), System.Threading.CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.SyncOrderTaskScheduler); } } diff --git a/BBWY.Server.API/Controllers/VenderController.cs b/BBWY.Server.API/Controllers/VenderController.cs index 177280b7..fbd01b72 100644 --- a/BBWY.Server.API/Controllers/VenderController.cs +++ b/BBWY.Server.API/Controllers/VenderController.cs @@ -2,7 +2,11 @@ using BBWY.Server.Model.Dto; using Microsoft.AspNetCore.Http; using Microsoft.AspNetCore.Mvc; +using Newtonsoft.Json; +using NLog; using System.Collections.Generic; +using System.IO; +using System.Text; namespace BBWY.Server.API.Controllers { @@ -10,10 +14,14 @@ namespace BBWY.Server.API.Controllers public class VenderController : BaseApiController { private VenderBusiness venderBusiness; + private ILogger logger; - public VenderController(IHttpContextAccessor httpContextAccessor, VenderBusiness venderBusiness) : base(httpContextAccessor) + public VenderController(IHttpContextAccessor httpContextAccessor, + VenderBusiness venderBusiness, + ILogger logger) : base(httpContextAccessor) { this.venderBusiness = venderBusiness; + this.logger = logger; } /// @@ -33,9 +41,25 @@ namespace BBWY.Server.API.Controllers /// /// [HttpPost] - public IList GetLogisticsList(PlatformRequest platformRequest) + public IList GetLogisticsList([FromBody] PlatformRequest platformRequest) { return venderBusiness.GetLogisticsList(platformRequest); } + + /// + /// 接收JD店铺Token更新 + /// + /// + [HttpPost] + public void AcceptJDShopToken([FromBody] JDShopToken jDShopToken) + { + var httpContext = httpContextAccessor.HttpContext; + var stringBuilder = new StringBuilder(); + stringBuilder.AppendLine("AcceptJDShopToken"); + stringBuilder.AppendLine($"ContentType:{httpContext.Request.ContentType}"); + stringBuilder.Append($"jDShopToken:{JsonConvert.SerializeObject(jDShopToken)}"); + logger.Info(stringBuilder.ToString()); + venderBusiness.AcceptJDShopToken(jDShopToken); + } } } diff --git a/BBWY.Server.Business/Vender/VenderBusiness.cs b/BBWY.Server.Business/Vender/VenderBusiness.cs index f3f151c1..452b4232 100644 --- a/BBWY.Server.Business/Vender/VenderBusiness.cs +++ b/BBWY.Server.Business/Vender/VenderBusiness.cs @@ -6,6 +6,7 @@ using BBWY.Server.Model.Dto; using Microsoft.Extensions.Options; using Newtonsoft.Json; using System.Collections.Generic; +using System.Net.Http; namespace BBWY.Server.Business { @@ -39,5 +40,24 @@ namespace BBWY.Server.Business throw new BusinessException(response.Msg) { Code = response.Code }; return response.Data; } + + public void AcceptJDShopToken(JDShopToken jDShopToken) + { + var venderResponse = GetVenderInfo(new PlatformRequest() + { + AppKey = "120EA9EC65AB017567D78CC1139EEEA5", + AppSecret = "866a9877f5f24b03b537483b4defe75d", + AppToken = jDShopToken.Access_Token, + Platform = Enums.Platform.京东 + }); + + restApiService.SendRequest(globalConfig.MdsApi, "/TaskList/Shop/UpdateShop", new + { + venderResponse.ShopName, + venderResponse.ShopId, + ShopType = venderResponse.ColType, + AppToken = jDShopToken.Access_Token + }, new Dictionary() { { "qy", "qy" } }, HttpMethod.Post); + } } } diff --git a/BBWY.Server.Model/Dto/Request/Vender/JDShopToken.cs b/BBWY.Server.Model/Dto/Request/Vender/JDShopToken.cs new file mode 100644 index 00000000..1fa85f51 --- /dev/null +++ b/BBWY.Server.Model/Dto/Request/Vender/JDShopToken.cs @@ -0,0 +1,11 @@ +namespace BBWY.Server.Model.Dto +{ + public class JDShopToken + { + public string Access_Token { get; set; } + + public int Code { get; set; } + + public bool IsSuccess { get; set; } + } +}