From 978e71ca831849309e367c2db6fcc62fbb57788f Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sun, 14 Aug 2022 23:29:13 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E6=9C=8D=E5=8A=A1=E5=8D=95?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E6=8E=A5=E5=8F=A3=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- BBWY.Client/APIServices/AfterOrderService.cs | 32 ++++- .../AfterSaleOrderListResponse.cs | 11 ++ .../AfterSaleOrder/AfterSaleOrderResponse.cs | 113 ++++++++++++++++++ .../Response/Order/AfterSaleOrderResponse.cs | 55 --------- .../Models/AfterSaleOrder/AfterSaleOrder.cs | 113 ++++++++++++++++++ BBWY.Client/Models/Order/AfterSaleOrder.cs | 63 ---------- .../ViewModels/Order/OrderListViewModel.cs | 57 ++++++++- .../Views/Order/EditAfterSaleOrderSku.xaml.cs | 4 +- BBWY.Client/Views/Order/OrderList.xaml | 112 ++++++++--------- BBWY.Client/Views/Order/OrderList.xaml.cs | 11 +- .../AfterSaleOrder/AfterSaleOrderBusiness.cs | 4 +- 11 files changed, 391 insertions(+), 184 deletions(-) create mode 100644 BBWY.Client/Models/APIModel/Response/AfterSaleOrder/AfterSaleOrderListResponse.cs create mode 100644 BBWY.Client/Models/APIModel/Response/AfterSaleOrder/AfterSaleOrderResponse.cs delete mode 100644 BBWY.Client/Models/APIModel/Response/Order/AfterSaleOrderResponse.cs create mode 100644 BBWY.Client/Models/AfterSaleOrder/AfterSaleOrder.cs delete mode 100644 BBWY.Client/Models/Order/AfterSaleOrder.cs diff --git a/BBWY.Client/APIServices/AfterOrderService.cs b/BBWY.Client/APIServices/AfterOrderService.cs index c9ce0753..13ea9ce8 100644 --- a/BBWY.Client/APIServices/AfterOrderService.cs +++ b/BBWY.Client/APIServices/AfterOrderService.cs @@ -1,8 +1,8 @@ -using BBWY.Common.Http; +using BBWY.Client.Models; +using BBWY.Common.Http; using BBWY.Common.Models; using System; -using System.Collections.Generic; -using System.Text; +using System.Net.Http; namespace BBWY.Client.APIServices { @@ -12,5 +12,29 @@ namespace BBWY.Client.APIServices { } + + public ApiResponse GetAfterSaleOrderList(long shopId, + string orderId, + DateTime? startDate, + DateTime? endDate, + string spu, + string sku, + string serviceId, + int pageIndex, + int pageSize) + { + return SendRequest(globalContext.BBYWApiHost, "/Api/AfterSaleOrder/GetAfterSaleOrderList", new + { + shopId, + orderId, + startDate, + endDate, + spu, + sku, + serviceId, + pageIndex, + pageSize + }, null, HttpMethod.Post); + } } -} +} \ No newline at end of file diff --git a/BBWY.Client/Models/APIModel/Response/AfterSaleOrder/AfterSaleOrderListResponse.cs b/BBWY.Client/Models/APIModel/Response/AfterSaleOrder/AfterSaleOrderListResponse.cs new file mode 100644 index 00000000..869ecc3d --- /dev/null +++ b/BBWY.Client/Models/APIModel/Response/AfterSaleOrder/AfterSaleOrderListResponse.cs @@ -0,0 +1,11 @@ +using System.Collections.Generic; + +namespace BBWY.Client.Models +{ + public class AfterSaleOrderListResponse + { + public int Count { get; set; } + + public IList Items { get; set; } + } +} diff --git a/BBWY.Client/Models/APIModel/Response/AfterSaleOrder/AfterSaleOrderResponse.cs b/BBWY.Client/Models/APIModel/Response/AfterSaleOrder/AfterSaleOrderResponse.cs new file mode 100644 index 00000000..5781c2e9 --- /dev/null +++ b/BBWY.Client/Models/APIModel/Response/AfterSaleOrder/AfterSaleOrderResponse.cs @@ -0,0 +1,113 @@ +using System; + +namespace BBWY.Client.Models +{ + public class AfterSaleOrderResponse + { + + public long Id { get; set; } + + + public DateTime? CreateTime { get; set; } + + /// + /// 申请时间 + /// + + public DateTime? ApplyTime { get; set; } + + + public string OrderId { get; set; } + + + public string ProductId { get; set; } + + /// + /// 商品处理结果 + /// + public ProductResult? ProductResult { get; set; } + + /// + /// 退款金额 + /// + public decimal? RefundAmount { get; set; } = 0.00M; + + /// + /// 退款时间 + /// + public DateTime? RefundTime { get; set; } + + /// + /// 售后补发成本 + /// + public decimal? ReissueAfterSaleAmount { get; set; } = 0.00M; + + /// + /// 补发快递费 + /// + public decimal? ReissueFreight { get; set; } = 0.00M; + + /// + /// 补发货款成本 + /// + public decimal? ReissueProductAmount { get; set; } = 0.00M; + + /// + /// 服务单处理结果 + /// + public ServiceResult? ServiceResult { get; set; } + + public long? ShopId { get; set; } + + public string SkuId { get; set; } + + /// + /// 服务单号 + /// + public string ServiceId { get; set; } + + /// + /// 退货入仓操作费 + /// + public decimal? RefundInStorageAmount { get; set; } = 0.00M; + + /// + /// 退款采购成本 + /// + public decimal? RefundPurchaseAmount { get; set; } = 0.00M; + + /// + /// 耗材费 + /// + public decimal? ConsumableAmount { get; set; } = 0.00M; + + /// + /// 发货快递费 + /// + public decimal? DeliveryExpressFreight { get; set; } = 0.00M; + + /// + /// 头程费 + /// + public decimal? FirstFreight { get; set; } = 0.00M; + + /// + /// 入仓操作费 + /// + public decimal? InStorageAmount { get; set; } = 0.00M; + + /// + /// 出仓操作费 + /// + public decimal? OutStorageAmount { get; set; } = 0.00M; + + /// + /// 商品情况 + /// + public ProductHealth? ProductHealth { get; set; } + + public string Logo { get; set; } + + public string Title { get; set; } + } +} diff --git a/BBWY.Client/Models/APIModel/Response/Order/AfterSaleOrderResponse.cs b/BBWY.Client/Models/APIModel/Response/Order/AfterSaleOrderResponse.cs deleted file mode 100644 index 33f4face..00000000 --- a/BBWY.Client/Models/APIModel/Response/Order/AfterSaleOrderResponse.cs +++ /dev/null @@ -1,55 +0,0 @@ -using BBWY.Client.Models; -using System; - -namespace BBWY.Client.Models -{ - public class AfterSaleOrderResponse - { - - public long Id { get; set; } - public DateTime? CreateTime { get; set; } - - public string OrderId { get; set; } - - public string ProductId { get; set; } - - /// - /// 商品处理结果 - /// - public ProductResult? ProductResult { get; set; } - - /// - /// 退款金额 - /// - public decimal? RefundAmount { get; set; } = 0.00M; - - /// - /// 退款时间 - /// - public DateTime? RefundTime { get; set; } - - /// - /// 售后补发成本 - /// - public decimal? ReissueAfterSaleAmount { get; set; } = 0.00M; - - /// - /// 补发快递费 - /// - public decimal? ReissueFreight { get; set; } = 0.00M; - - /// - /// 补发货款成本 - /// - public decimal? ReissueProductAmount { get; set; } = 0.00M; - - /// - /// 服务单处理结果 - /// - public ServiceResult? ServiceResult { get; set; } - - public long? ShopId { get; set; } - - public string SkuId { get; set; } - } -} diff --git a/BBWY.Client/Models/AfterSaleOrder/AfterSaleOrder.cs b/BBWY.Client/Models/AfterSaleOrder/AfterSaleOrder.cs new file mode 100644 index 00000000..c9f0492c --- /dev/null +++ b/BBWY.Client/Models/AfterSaleOrder/AfterSaleOrder.cs @@ -0,0 +1,113 @@ +using System; + +namespace BBWY.Client.Models +{ + public class AfterSaleOrder : NotifyObject + { + + public long Id { get; set; } + + + public DateTime? CreateTime { get; set; } + + /// + /// 申请时间 + /// + + public DateTime? ApplyTime { get; set; } + + + public string OrderId { get; set; } + + + public string ProductId { get; set; } + + /// + /// 商品处理结果 + /// + public ProductResult? ProductResult { get; set; } + + /// + /// 退款金额 + /// + public decimal? RefundAmount { get; set; } = 0.00M; + + /// + /// 退款时间 + /// + public DateTime? RefundTime { get; set; } + + /// + /// 售后补发成本 + /// + public decimal? ReissueAfterSaleAmount { get; set; } = 0.00M; + + /// + /// 补发快递费 + /// + public decimal? ReissueFreight { get; set; } = 0.00M; + + /// + /// 补发货款成本 + /// + public decimal? ReissueProductAmount { get; set; } = 0.00M; + + /// + /// 服务单处理结果 + /// + public ServiceResult? ServiceResult { get; set; } + + public long? ShopId { get; set; } + + public string SkuId { get; set; } + + /// + /// 服务单号 + /// + public string ServiceId { get; set; } + + /// + /// 退货入仓操作费 + /// + public decimal? RefundInStorageAmount { get; set; } = 0.00M; + + /// + /// 退款采购成本 + /// + public decimal? RefundPurchaseAmount { get; set; } = 0.00M; + + /// + /// 耗材费 + /// + public decimal? ConsumableAmount { get; set; } = 0.00M; + + /// + /// 发货快递费 + /// + public decimal? DeliveryExpressFreight { get; set; } = 0.00M; + + /// + /// 头程费 + /// + public decimal? FirstFreight { get; set; } = 0.00M; + + /// + /// 入仓操作费 + /// + public decimal? InStorageAmount { get; set; } = 0.00M; + + /// + /// 出仓操作费 + /// + public decimal? OutStorageAmount { get; set; } = 0.00M; + + /// + /// 商品情况 + /// + public ProductHealth? ProductHealth { get; set; } + + public string Logo { get; set; } + + public string Title { get; set; } + } +} diff --git a/BBWY.Client/Models/Order/AfterSaleOrder.cs b/BBWY.Client/Models/Order/AfterSaleOrder.cs deleted file mode 100644 index 466212ab..00000000 --- a/BBWY.Client/Models/Order/AfterSaleOrder.cs +++ /dev/null @@ -1,63 +0,0 @@ -using System; - -namespace BBWY.Client.Models -{ - public class AfterSaleOrder : NotifyObject, ICloneable - { - private ProductResult? productResult; - private ServiceResult? serviceResult; - private decimal? reissueAfterSaleAmount = 0.00M; - private decimal? reissueFreight = 0.00M; - private decimal? reissueProductAmount = 0.00M; - - public long Id { get; set; } - public DateTime? CreateTime { get; set; } - - public string OrderId { get; set; } - - public string ProductId { get; set; } - - - /// - /// 退款金额 - /// - public decimal? RefundAmount { get; set; } = 0.00M; - - /// - /// 退款时间 - /// - public DateTime? RefundTime { get; set; } - - - public long? ShopId { get; set; } - - public string SkuId { get; set; } - public ProductResult? ProductResult { get => productResult; set { Set(ref productResult, value); } } - /// - /// 售后补偿成本 - /// - public decimal? ReissueAfterSaleAmount { get => reissueAfterSaleAmount; set { Set(ref reissueAfterSaleAmount, value); } } - /// - /// 补发快递费 - /// - public decimal? ReissueFreight { get => reissueFreight; set { Set(ref reissueFreight, value); } } - /// - /// 补发货款成本 - /// - public decimal? ReissueProductAmount { get => reissueProductAmount; set { Set(ref reissueProductAmount, value); } } - /// - /// 服务单处理结果 - /// - public ServiceResult? ServiceResult { get => serviceResult; set { Set(ref serviceResult, value); } } - - /// - /// 是否位占位数据 - /// - public bool IsPlaceholder { get; set; } = false; - - public object Clone() - { - return this.MemberwiseClone(); - } - } -} diff --git a/BBWY.Client/ViewModels/Order/OrderListViewModel.cs b/BBWY.Client/ViewModels/Order/OrderListViewModel.cs index f074d2fd..eba92507 100644 --- a/BBWY.Client/ViewModels/Order/OrderListViewModel.cs +++ b/BBWY.Client/ViewModels/Order/OrderListViewModel.cs @@ -23,6 +23,7 @@ namespace BBWY.Client.ViewModels { private OrderService orderService; private StatisticsService statisticsService; + private AfterOrderService afterOrderService; private ChoosePurchaseSchemeViewModel choosePurchaseSchemeViewModel; private bool isLoading; @@ -46,9 +47,12 @@ namespace BBWY.Client.ViewModels private GlobalContext globalContext; private bool? includeAfterOrder; private decimal currentConditionsTotalProfit; + private string searchServiceId; public IList OrderList { get; set; } + public IList AfterSaleOrderList { get; set; } + public bool IsLoading { get => isLoading; set { Set(ref isLoading, value); } } public string SearchOrderId { get => searchOrderId; set { Set(ref searchOrderId, value); } } @@ -76,6 +80,7 @@ namespace BBWY.Client.ViewModels public bool ExcludeCanceled { get => excludeCanceled; set { Set(ref excludeCanceled, value); } } public bool? IncludeAfterOrder { get => includeAfterOrder; set { Set(ref includeAfterOrder, value); } } + public string SearchServiceId { get => searchServiceId; set { Set(ref searchServiceId, value); } } public ToDayOrderAchievement ToDayOrderAchievement { get; set; } @@ -114,14 +119,18 @@ namespace BBWY.Client.ViewModels /// public decimal CurrentConditionsTotalProfit { get => currentConditionsTotalProfit; set { Set(ref currentConditionsTotalProfit, value); } } - public OrderListViewModel(OrderService orderService, StatisticsService statisticsService, GlobalContext globalContext, ChoosePurchaseSchemeViewModel choosePurchaseSchemeViewModel) + + + public OrderListViewModel(OrderService orderService, StatisticsService statisticsService, AfterOrderService afterOrderService, GlobalContext globalContext, ChoosePurchaseSchemeViewModel choosePurchaseSchemeViewModel) { random = new Random(); this.globalContext = globalContext; this.orderService = orderService; this.statisticsService = statisticsService; + this.afterOrderService = afterOrderService; this.choosePurchaseSchemeViewModel = choosePurchaseSchemeViewModel; OrderList = new ObservableCollection(); + AfterSaleOrderList = new ObservableCollection(); //EndDate = DateTime.Now; //StartDate = DateTime.Now.Date.AddDays(-6); ToDayOrderAchievement = new ToDayOrderAchievement(); @@ -219,7 +228,7 @@ namespace BBWY.Client.ViewModels { InitSearchParam(); IncludeAfterOrder = true; - //Task.Factory.StartNew(() => LoadOrder(1)); + Task.Factory.StartNew(() => LoadOrder(1)); } public void RefreshOrder(string orderId) @@ -253,6 +262,15 @@ namespace BBWY.Client.ViewModels } private void LoadOrder(int pageIndex) + { + if (IncludeAfterOrder == true) + LoadAfterSaleOrder(pageIndex); + else + LoadNormalOrder(pageIndex); + } + + + private void LoadNormalOrder(int pageIndex) { IsLoading = true; Thread.Sleep(random.Next(0, 1000)); @@ -290,7 +308,40 @@ namespace BBWY.Client.ViewModels OrderList.Add(order); } - Messenger.Default.Send(string.Empty, "OrderList_OrderListScrollToTop"); + Messenger.Default.Send(string.Empty, "OrderList_ScrollToTop"); + }); + IsLoading = false; + } + + private void LoadAfterSaleOrder(int pageIndex) + { + IsLoading = true; + Thread.Sleep(random.Next(0, 1000)); + var response = afterOrderService.GetAfterSaleOrderList(globalContext.User.Shop.ShopId, + SearchOrderId, + StartDate, + EndDate, + SearchProductId, + SearchSku, + SearchServiceId, + pageIndex, + pageSize); + + if (!response.Success) + { + IsLoading = false; + App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "提示")); + return; + } + + OrderCount = response.Data.Count; + var afterOrderList = response.Data.Items.Map>(); + App.Current.Dispatcher.Invoke(() => + { + AfterSaleOrderList.Clear(); + foreach (var aso in afterOrderList) + AfterSaleOrderList.Add(aso); + Messenger.Default.Send(string.Empty, "AfterSaleOrderList_ScrollToTop"); }); IsLoading = false; } diff --git a/BBWY.Client/Views/Order/EditAfterSaleOrderSku.xaml.cs b/BBWY.Client/Views/Order/EditAfterSaleOrderSku.xaml.cs index fad2d34c..b5894a07 100644 --- a/BBWY.Client/Views/Order/EditAfterSaleOrderSku.xaml.cs +++ b/BBWY.Client/Views/Order/EditAfterSaleOrderSku.xaml.cs @@ -13,8 +13,8 @@ namespace BBWY.Client.Views.Order public EditAfterSaleOrderSku(AfterSaleOrder afterSaleOrder) { InitializeComponent(); - if (afterSaleOrder.Id != 0) - SaleOrder = (AfterSaleOrder)afterSaleOrder.Clone(); + //if (afterSaleOrder.Id != 0) + // SaleOrder = (AfterSaleOrder)afterSaleOrder.Clone(); this.DataContext = this; } diff --git a/BBWY.Client/Views/Order/OrderList.xaml b/BBWY.Client/Views/Order/OrderList.xaml index d16711d0..c38e40b6 100644 --- a/BBWY.Client/Views/Order/OrderList.xaml +++ b/BBWY.Client/Views/Order/OrderList.xaml @@ -154,7 +154,7 @@ CommandParameter="{StaticResource d30}"/> - @@ -267,6 +267,12 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + Margin="0,0,5,0" + Visibility="{Binding Visibility,ElementName=listbox_order}"> diff --git a/BBWY.Client/Views/Order/OrderList.xaml.cs b/BBWY.Client/Views/Order/OrderList.xaml.cs index 30533f45..0895c90a 100644 --- a/BBWY.Client/Views/Order/OrderList.xaml.cs +++ b/BBWY.Client/Views/Order/OrderList.xaml.cs @@ -10,6 +10,7 @@ namespace BBWY.Client.Views.Order public partial class OrderList : Page { private ScrollViewer scrollviewer_OrderList; + private ScrollViewer scrollveewer_AfterSaleOrderList; public OrderList() { @@ -17,10 +18,17 @@ namespace BBWY.Client.Views.Order this.Loaded += OrderList_Loaded; this.Unloaded += OrderList_Unloaded; - Messenger.Default.Register(this, "OrderList_OrderListScrollToTop", (x) => + Messenger.Default.Register(this, "OrderList_ScrollToTop", (x) => { scrollviewer_OrderList.Dispatcher.Invoke(() => scrollviewer_OrderList.ScrollToTop()); }); + + Messenger.Default.Register(this, "AfterSaleOrderList_ScrollToTop", (x) => + { + if (scrollveewer_AfterSaleOrderList == null) + scrollveewer_AfterSaleOrderList = listbox_afterSaleOrder.FindFirstVisualChild(); + scrollviewer_OrderList.Dispatcher.Invoke(() => scrollveewer_AfterSaleOrderList.ScrollToTop()); + }); } private void OrderList_Unloaded(object sender, System.Windows.RoutedEventArgs e) @@ -31,6 +39,7 @@ namespace BBWY.Client.Views.Order private void OrderList_Loaded(object sender, System.Windows.RoutedEventArgs e) { scrollviewer_OrderList = listbox_order.FindFirstVisualChild(); + //scrollveewer_AfterSaleOrderList = listbox_afterSaleOrder.FindFirstVisualChild(); } } } diff --git a/BBWY.Server.Business/AfterSaleOrder/AfterSaleOrderBusiness.cs b/BBWY.Server.Business/AfterSaleOrder/AfterSaleOrderBusiness.cs index 32446a12..bdec24aa 100644 --- a/BBWY.Server.Business/AfterSaleOrder/AfterSaleOrderBusiness.cs +++ b/BBWY.Server.Business/AfterSaleOrder/AfterSaleOrderBusiness.cs @@ -14,7 +14,7 @@ namespace BBWY.Server.Business public AfterSaleOrderListResponse GetAfterSaleOrderList(SearchAfterSaleOrderRequest request) { - var select = fsql.Select().InnerJoin((aso, osku) => aso.SkuId == osku.SkuId); + var select = fsql.Select().InnerJoin((aso, osku) => aso.OrderId == osku.OrderId && aso.SkuId == osku.SkuId); if (!string.IsNullOrEmpty(request.ServiceId)) { select = select.Where((aso, osku) => aso.ServiceId == request.ServiceId); @@ -28,7 +28,7 @@ namespace BBWY.Server.Business .WhereIf(!string.IsNullOrEmpty(request.OrderId), (aso, osku) => aso.OrderId == request.OrderId); } select = select.Where((aso, osku) => aso.ShopId == request.ShopId) - .OrderByDescending((aso, osku) => aso.CreateTime) + .OrderByDescending((aso, osku) => aso.ApplyTime) .Count(out var total) .Page(request.PageIndex, request.PageSize);