From 8fcbba3f2d3e7aa2c8c5df2a26a29e42022309c0 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Fri, 14 Apr 2023 18:28:59 +0800 Subject: [PATCH] 1 --- .../APIServices/BatchPurchaseService.cs | 77 ++++++++++-- .../BatchPurchase/BatchCreareOrderResponse.cs | 21 ++++ .../BatchPurchaseCreateNewOrderViewModel.cs | 112 +++++++++++------- .../BatchCreateNewPurchaseOrder.xaml | 2 +- .../BatchCreateNewPurchaseOrder.xaml.cs | 26 ++-- .../BatchPurchase/BatchPurchaseBusiness.cs | 8 +- .../PurchaseOrderV2Response.cs | 8 ++ 7 files changed, 181 insertions(+), 73 deletions(-) create mode 100644 BBWY.Client/Models/APIModel/Response/BatchPurchase/BatchCreareOrderResponse.cs create mode 100644 BBWY.Server.Model/Dto/Response/PurchaseOrderV2/PurchaseOrderV2Response.cs diff --git a/BBWY.Client/APIServices/BatchPurchaseService.cs b/BBWY.Client/APIServices/BatchPurchaseService.cs index bd9a6435..2a74f4aa 100644 --- a/BBWY.Client/APIServices/BatchPurchaseService.cs +++ b/BBWY.Client/APIServices/BatchPurchaseService.cs @@ -37,18 +37,59 @@ namespace BBWY.Client.APIServices PurchaseOrderMode purchaseOrderMode, IList purchaseAccountList) { + var productParamList = new List(); + foreach (var productSkuWithScheme in productSkuWithSchemeList) + { + foreach (var purchaseSchemeProductSku in productSkuWithScheme.PurchaseSchemeProductSkuList) + { + productParamList.Add(new + { + purchaseSchemeProductSku.PurchaseProductId, + purchaseSchemeProductSku.PurchaseSkuId, + PurchaseSpecId = purchaseSchemeProductSku.PurchaseSkuSpecId, + Quantity = purchaseSchemeProductSku.ItemTotal, + productSkuWithScheme.PurchaserId, + productSkuWithScheme.PurchaserName, + productSkuWithScheme.PurchasePlatform, + BelongSkuId = productSkuWithScheme.SkuId + }); + } + } + + return SendRequest(globalContext.BBYWApiHost, "api/BatchPurchase/PreviewOrder", new + { + consignee, + purchaseOrderMode, + purchaseAccountList, + productParamList + }, null, HttpMethod.Post); + } + + public ApiResponse CreateOrder(IList productSkuWithSchemeList, + Consignee consignee, + PurchaseOrderMode purchaseOrderMode, + IList purchaseAccountList, + string extensions, + string remark) + { /* - public string PurchaseProductId { get; set; } - public string PuchaseSkuId { get; set; } - public string PurchaseSpecId { get; set; } - public int Quantity { get; set; } - public string PurchaserId { get; set; } - public string PurchaserName { get; set; } - public Enums.Platform PurchasePlatform { get; set; } public string BelongSkuId { get; set; } + + public string BelongProductId { get; set; } + + public decimal BelongPrice { get; set; } + + public string BelongSkuTitle { get; set; } + + public string BelongLogo { get; set; } + + public int BelongQuantity { get; set; } + + public long BelongPurchaseSchemeId { get; set; } */ + var productParamList = new List(); foreach (var productSkuWithScheme in productSkuWithSchemeList) { @@ -60,20 +101,30 @@ namespace BBWY.Client.APIServices purchaseSchemeProductSku.PurchaseSkuId, PurchaseSpecId = purchaseSchemeProductSku.PurchaseSkuSpecId, Quantity = purchaseSchemeProductSku.ItemTotal, - PurchaserId = productSkuWithScheme.PurchaserId, - PurchaserName = productSkuWithScheme.PurchaserName, - PurchasePlatform = productSkuWithScheme.PurchasePlatform, - BelongSkuId = productSkuWithScheme.SkuId + productSkuWithScheme.PurchaserId, + productSkuWithScheme.PurchaserName, + productSkuWithScheme.PurchasePlatform, + BelongSkuId = productSkuWithScheme.SkuId, + BelongProductId = productSkuWithScheme.ProductId, + BelongPrice = productSkuWithScheme.Price, + BelongSkuTitle = productSkuWithScheme.Title, + BelongLogo = productSkuWithScheme.Logo, + BelongQuantity = productSkuWithScheme.Quantity, + BelongPurchaseSchemeId = productSkuWithScheme.PurchaseSchemeId }); } } - return SendRequest(globalContext.BBYWApiHost, "api/BatchPurchase/PreviewOrder", new + return SendRequest(globalContext.BBYWApiHost, "api/BatchPurchase/BatchCreateOrder", new { consignee, purchaseOrderMode, purchaseAccountList, - productParamList + productParamList, + extensions, + remark, + globalContext.User.Shop.ShopId, + globalContext.User.Shop.ShopName }, null, HttpMethod.Post); } } diff --git a/BBWY.Client/Models/APIModel/Response/BatchPurchase/BatchCreareOrderResponse.cs b/BBWY.Client/Models/APIModel/Response/BatchPurchase/BatchCreareOrderResponse.cs new file mode 100644 index 00000000..49eed28c --- /dev/null +++ b/BBWY.Client/Models/APIModel/Response/BatchPurchase/BatchCreareOrderResponse.cs @@ -0,0 +1,21 @@ +using System.Collections.Generic; + +namespace BBWY.Client.Models +{ + public class BatchCreareOrderResponse + { + /// + /// 已经成功下单的SkuId集合 + /// + public IList SuccessSkuIdList { get; set; } + + public IList FailSkuList { get; set; } + } + + public class BatchCreareOrderFailDetail + { + public string SkuId { get; set; } + + public string ErrorMsg { get; set; } + } +} diff --git a/BBWY.Client/ViewModels/BatchPurchase/BatchPurchaseCreateNewOrderViewModel.cs b/BBWY.Client/ViewModels/BatchPurchase/BatchPurchaseCreateNewOrderViewModel.cs index 537928fc..7bb5611c 100644 --- a/BBWY.Client/ViewModels/BatchPurchase/BatchPurchaseCreateNewOrderViewModel.cs +++ b/BBWY.Client/ViewModels/BatchPurchase/BatchPurchaseCreateNewOrderViewModel.cs @@ -7,6 +7,7 @@ using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; +using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows; @@ -33,10 +34,10 @@ namespace BBWY.Client.ViewModels private string city; private string county; private string town; - private string prucahseRemark; + private string purchaseRemark; private PurchaseOrderMode purchaseOrderMode = PurchaseOrderMode.批发; - private string tradeMode; + //private string tradeMode; private string extensions; public bool IsLoading { get => isLoading; set { Set(ref isLoading, value); } } @@ -51,7 +52,7 @@ namespace BBWY.Client.ViewModels public string City { get => city; set { Set(ref city, value); } } public string County { get => county; set { Set(ref county, value); } } public string Town { get => town; set { Set(ref town, value); } } - public string PrucahseRemark { get => prucahseRemark; set { Set(ref prucahseRemark, value); } } + public string PurchaseRemark { get => purchaseRemark; set { Set(ref purchaseRemark, value); } } public PurchaseOrderMode PurchaseOrderMode { @@ -145,14 +146,14 @@ namespace BBWY.Client.ViewModels if (!r.Success) { ProductAmount = FreightAmount = TotalAmount = 0; - tradeMode = string.Empty; + //tradeMode = string.Empty; App.Current.Dispatcher.Invoke(() => MessageBox.Show(r.Msg, "预览订单报价")); return; } ProductAmount = r.Data.ProductAmount; FreightAmount = r.Data.FreightAmount; TotalAmount = r.Data.TotalAmount; - tradeMode = r.Data.OrderTradeType?.Code; + //tradeMode = r.Data.OrderTradeType?.Code; extensions = r.Data.Extensions; }); } @@ -183,46 +184,67 @@ namespace BBWY.Client.ViewModels return; } - //IsLoading = true; - //Task.Factory.StartNew(() => purchaseOrderService.FastCreateOrder(new Consignee() - //{ - // Address = Address, - // City = City, - // ContactName = ContactName, - // County = County, - // Mobile = Mobile, - // Province = Province, - // TelePhone = Mobile, - // Town = Town - //}, PurchaseSchemeProductSkuList, - // purchaseAccount.PurchasePlatformId, - // purchaseAccount, - // PurchaseOrderMode, - // tradeMode, - // PrucahseRemark, - // order.Id, - // globalContext.User.Shop.ShopId, - // purchaseAccount.Id, - // purchaseAccount.AccountName, - // purchaseSchemeList[0].PurchaserName, - // purchaser.Id, - // globalContext.User.Shop.PlatformCommissionRatio ?? 0.05M, - // extensions)).ContinueWith(t => - // { - // IsLoading = false; - // var r = t.Result; - // if (!r.Success) - // { - // App.Current.Dispatcher.Invoke(() => MessageBox.Show(r.Msg, "下单")); - // return; - // } - - // //刷新订单列表 - // orderListViewModel.RefreshOrder(order.Id); - - // //关闭当前窗口 - // GalaSoft.MvvmLight.Messaging.Messenger.Default.Send(null, "OnlinePurchase_Close"); - // }); + IsLoading = true; + + Task.Factory.StartNew(() => batchPurchaseService.CreateOrder(ProductSkuWithSchemeList, + new Consignee() + { + Address = Address, + City = City, + ContactName = ContactName, + County = County, + Mobile = Mobile, + Province = Province, + TelePhone = Mobile, + Town = Town + }, + this.PurchaseOrderMode, + globalContext.User.Shop.PurchaseAccountList, + this.extensions, + this.PurchaseRemark)).ContinueWith(t => + { + IsLoading = false; + var response = t.Result; + if (!response.Success) + { + App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "创建采购单")); + return; + } + + if (response.Data.SuccessSkuIdList != null && response.Data.SuccessSkuIdList.Count() > 0) + { + //删除下单成功的订单 + App.Current.Dispatcher.Invoke(() => + { + for (var i = 0; i < ProductSkuWithSchemeList.Count(); i++) + { + if (response.Data.SuccessSkuIdList.Contains(ProductSkuWithSchemeList[i].SkuId)) + { + ProductSkuWithSchemeList.Remove(ProductSkuWithSchemeList[i]); + i--; + } + } + }); + } + + if (response.Data.FailSkuList != null && response.Data.FailSkuList.Count() > 0) + { + var errorBuilder = new StringBuilder(); + foreach (var error in response.Data.FailSkuList) + { + errorBuilder.AppendLine($"SkuId {error.SkuId}"); + errorBuilder.AppendLine($"错误信息 {error.ErrorMsg}"); + errorBuilder.AppendLine(); + } + App.Current.Dispatcher.Invoke(() => MessageBox.Show(errorBuilder.ToString(), "创建采购单")); + } + else + { + //关闭窗口 + App.Current.Dispatcher.Invoke(() => GalaSoft.MvvmLight.Messaging.Messenger.Default.Send(true, "BatchCreateNewPurchaseOrderClose")); + + } + }); } private void AddProductSku() diff --git a/BBWY.Client/Views/BatchPurchase/BatchCreateNewPurchaseOrder.xaml b/BBWY.Client/Views/BatchPurchase/BatchCreateNewPurchaseOrder.xaml index 21fcb855..d7b0cc98 100644 --- a/BBWY.Client/Views/BatchPurchase/BatchCreateNewPurchaseOrder.xaml +++ b/BBWY.Client/Views/BatchPurchase/BatchCreateNewPurchaseOrder.xaml @@ -282,7 +282,7 @@ - (this, "BatchCreateNewPurchaseOrderClose", (r) => + { + this.DialogResult = r; + this.Close(); + }); } } } diff --git a/BBWY.Server.Business/PurchaseOrderV2/BatchPurchase/BatchPurchaseBusiness.cs b/BBWY.Server.Business/PurchaseOrderV2/BatchPurchase/BatchPurchaseBusiness.cs index 594a3d66..fd71b6c1 100644 --- a/BBWY.Server.Business/PurchaseOrderV2/BatchPurchase/BatchPurchaseBusiness.cs +++ b/BBWY.Server.Business/PurchaseOrderV2/BatchPurchase/BatchPurchaseBusiness.cs @@ -128,7 +128,7 @@ namespace BBWY.Server.Business throw new BusinessException("缺少采购账号"); var skuGroups = request.ProductParamList.GroupBy(p => p.BelongSkuId); - var carIds = new List(); + var extJArray = new List(); var errorBuilder = new StringBuilder(); var freightAmount = 0M; var productAmount = 0M; @@ -162,9 +162,9 @@ namespace BBWY.Server.Business }); if (purchasePlatform == Enums.Platform.拳探) - carIds.Add(new { BelongSkuId = skuGroup.Key, CardId = previewOrderResponse.Extensions }); + extJArray.Add(new { BelongSkuId = skuGroup.Key, CardId = previewOrderResponse.Extensions }); else if (purchasePlatform == Enums.Platform.阿里巴巴) - carIds.Add(new { BelongSkuId = skuGroup.Key, OrderTradeTypeCode = previewOrderResponse.OrderTradeType?.Code }); + extJArray.Add(new { BelongSkuId = skuGroup.Key, OrderTradeTypeCode = previewOrderResponse.OrderTradeType?.Code }); freightAmount += previewOrderResponse.FreightAmount; productAmount += previewOrderResponse.ProductAmount; @@ -181,7 +181,7 @@ namespace BBWY.Server.Business return new PreviewOrderResponse() { - Extensions = JsonConvert.SerializeObject(carIds), + Extensions = JsonConvert.SerializeObject(extJArray), FreightAmount = freightAmount, ProductAmount = productAmount, TotalAmount = totalAmount diff --git a/BBWY.Server.Model/Dto/Response/PurchaseOrderV2/PurchaseOrderV2Response.cs b/BBWY.Server.Model/Dto/Response/PurchaseOrderV2/PurchaseOrderV2Response.cs new file mode 100644 index 00000000..c82d988a --- /dev/null +++ b/BBWY.Server.Model/Dto/Response/PurchaseOrderV2/PurchaseOrderV2Response.cs @@ -0,0 +1,8 @@ +using BBWY.Server.Model.Db; + +namespace BBWY.Server.Model.Dto +{ + public class PurchaseOrderV2Response : PurchaseOrderV2 + { + } +}