diff --git a/BBWY.Client/ViewModels/Order/OrderListViewModel.cs b/BBWY.Client/ViewModels/Order/OrderListViewModel.cs index 541b0364..0710aac1 100644 --- a/BBWY.Client/ViewModels/Order/OrderListViewModel.cs +++ b/BBWY.Client/ViewModels/Order/OrderListViewModel.cs @@ -44,7 +44,7 @@ namespace BBWY.Client.ViewModels private bool onlyDF; private bool excludeSD; private bool excludeCanceled; - private bool onlyUnhandle; + //private bool onlyUnhandle; private Random random; public GlobalContext globalContext { get; set; } //private bool? includeAfterOrder; @@ -93,10 +93,7 @@ namespace BBWY.Client.ViewModels //public bool? IncludeAfterOrder { get => includeAfterOrder; set { Set(ref includeAfterOrder, value); } } public string SearchServiceId { get => searchServiceId; set { Set(ref searchServiceId, value); } } - /// - /// 仅显示未处理 - /// - public bool OnlyUnhandle { get => onlyUnhandle; set { Set(ref onlyUnhandle, value); } } + //public bool OnlyUnhandle { get => onlyUnhandle; set { Set(ref onlyUnhandle, value); } } public ToDayOrderAchievement ToDayOrderAchievement { get; set; } @@ -450,39 +447,39 @@ namespace BBWY.Client.ViewModels 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, - OnlyUnhandle, - pageIndex, - pageSize); - - if (!response.Success) - { - IsLoading = false; - App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "提示")); - return; - } + //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, + // OnlyUnhandle, + // 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; - } + // 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; + //} private void LoadTodayAchievement(DateTime startTime, DateTime endTime, long shopId) { diff --git a/BBWY.Client/ViewModels/ServiceOrder/EditServiceOrderViewModel.cs b/BBWY.Client/ViewModels/ServiceOrder/EditServiceOrderViewModel.cs index 4fcbee5f..12c9306a 100644 --- a/BBWY.Client/ViewModels/ServiceOrder/EditServiceOrderViewModel.cs +++ b/BBWY.Client/ViewModels/ServiceOrder/EditServiceOrderViewModel.cs @@ -2,6 +2,7 @@ using BBWY.Client.Models; using GalaSoft.MvvmLight.Command; using HandyControl.Controls; +using System.Collections.Generic; using System.Threading.Tasks; using System.Windows.Input; @@ -29,7 +30,7 @@ namespace BBWY.Client.ViewModels private decimal? reissueProductAmount; private bool isLoading; - + public IList RenewalTypeList { get; set; } public ServiceResult? ServiceResult { get => serviceResult; set { Set(ref serviceResult, value); } } public decimal? SDRefundFreight { get => sdRefundFreight; set { Set(ref sdRefundFreight, value); } } public ReturnDirection? ReturnDirection { get => returnDirection; set { Set(ref returnDirection, value); } } @@ -63,6 +64,7 @@ namespace BBWY.Client.ViewModels { this.serviceOrderService = serviceOrderService; SaveCommand = new RelayCommand(Save); + RenewalTypeList = new List() { StorageType.本地自发, StorageType.代发 }; } public void SetData(ServiceOrder serviceOrder) diff --git a/BBWY.Client/ViewModels/Setting/ShopSettingViewModel.cs b/BBWY.Client/ViewModels/Setting/ShopSettingViewModel.cs index ddf919fe..9c8c108e 100644 --- a/BBWY.Client/ViewModels/Setting/ShopSettingViewModel.cs +++ b/BBWY.Client/ViewModels/Setting/ShopSettingViewModel.cs @@ -147,6 +147,14 @@ namespace BBWY.Client.ViewModels MessageBox.Show("店铺密码验证未通过", "保存店铺设置"); return; } + + if (PurchaseAccount.PurchasePlatformId == Platform.拳探) + { + PurchaseAccount.AppKey = "BBWY2023022001"; + PurchaseAccount.AppSecret = "908e131365d5448ca651ba20ed7ddefe"; + PurchaseAccount.AppToken = PurchaseAccount.AccountName; + } + if (string.IsNullOrEmpty(PurchaseAccount.AppKey) || string.IsNullOrEmpty(PurchaseAccount.AppSecret) || string.IsNullOrEmpty(PurchaseAccount.AppToken) || diff --git a/BBWY.Client/Views/MainWindow.xaml b/BBWY.Client/Views/MainWindow.xaml index 3b7df1ad..453ebcc3 100644 --- a/BBWY.Client/Views/MainWindow.xaml +++ b/BBWY.Client/Views/MainWindow.xaml @@ -26,7 +26,7 @@ - + diff --git a/BBWY.Client/Views/Order/OrderList.xaml b/BBWY.Client/Views/Order/OrderList.xaml index a1392a7e..5ba2ce63 100644 --- a/BBWY.Client/Views/Order/OrderList.xaml +++ b/BBWY.Client/Views/Order/OrderList.xaml @@ -398,11 +398,11 @@ - + diff --git a/BBWY.Client/Views/ServiceOrder/EditServiceOrder.xaml b/BBWY.Client/Views/ServiceOrder/EditServiceOrder.xaml index 92078f87..ca2a9df6 100644 --- a/BBWY.Client/Views/ServiceOrder/EditServiceOrder.xaml +++ b/BBWY.Client/Views/ServiceOrder/EditServiceOrder.xaml @@ -23,11 +23,6 @@ - - - - - @@ -114,7 +109,7 @@ - - + + + + + + + diff --git a/BBWY.Client/Views/Setting/ShopSetting.xaml b/BBWY.Client/Views/Setting/ShopSetting.xaml index 852e73e6..e450b056 100644 --- a/BBWY.Client/Views/Setting/ShopSetting.xaml +++ b/BBWY.Client/Views/Setting/ShopSetting.xaml @@ -88,45 +88,63 @@ Foreground="{Binding PanelIndex,Converter={StaticResource objConverter},ConverterParameter=2:White:#4A4A4A}"/> - - - - - - - - - - - - - - - - + + + + + + + + - - + + + + + + + - - + + + + + + + - - + + + + + + + - - + + + + + + - + + diff --git a/BBWY.Server.API/Controllers/OrderSyncController.cs b/BBWY.Server.API/Controllers/OrderSyncController.cs index 0661e0c0..9598fd0f 100644 --- a/BBWY.Server.API/Controllers/OrderSyncController.cs +++ b/BBWY.Server.API/Controllers/OrderSyncController.cs @@ -47,6 +47,16 @@ namespace BBWY.Server.API.Controllers orderSyncBusiness.ManualSyncOrder(shopId, orderIds, null, null); } + /// + /// 订单批量删除 + /// + /// + /// + [HttpPost("{shopId}")] + public void OrderDelete([FromRoute]long shopId, [FromBody]IList orderIds) + { + orderSyncBusiness.OrderDelete(shopId, orderIds); + } /// /// 根据日期同步 @@ -85,5 +95,15 @@ namespace BBWY.Server.API.Controllers { orderSyncBusiness.CheckJDPauseOrder(shopId); } + + /// + /// 删除过期的待付款订单 + /// + [HttpPost] + public void DeleteTimeOutWaitPayOrder() + { + orderSyncBusiness.DeleteTimeOutWaitPayOrder(); + } + } } diff --git a/BBWY.Server.Business/BillCorrection/BillCorrectionBusiness.cs b/BBWY.Server.Business/BillCorrection/BillCorrectionBusiness.cs index 965ba98f..00b4f497 100644 --- a/BBWY.Server.Business/BillCorrection/BillCorrectionBusiness.cs +++ b/BBWY.Server.Business/BillCorrection/BillCorrectionBusiness.cs @@ -21,6 +21,7 @@ namespace BBWY.Server.Business request.EndTime = request.EndTime.Date.AddDays(1).AddSeconds(-1); var orderList = fsql.Select() .Where(o => request.ShopIds.Contains(o.ShopId) && o.StartTime >= request.StartTime && o.StartTime <= request.EndTime) + .Where(o => o.IsGift == false) .OrderBy(o => o.StartTime) .ToList(o => new BillCorrectionOrderResponse { @@ -113,7 +114,7 @@ namespace BBWY.Server.Business var currentOrderAfterOrderList = afterOrderList.Where(aso => aso.OrderId == billCorrectionRequest.OrderId).ToList(); orderCost.DeliveryExpressFreight = billCorrectionRequest.NewDeliveryExpressFreight; - + if (order.StorageType != Model.Enums.StorageType.SD) { orderCost.CalculationOrderProfitAndCost(order, currentOrderAfterOrderList); diff --git a/BBWY.Server.Business/Extensions/OrderCostExtension.cs b/BBWY.Server.Business/Extensions/OrderCostExtension.cs index c980374f..2111990c 100644 --- a/BBWY.Server.Business/Extensions/OrderCostExtension.cs +++ b/BBWY.Server.Business/Extensions/OrderCostExtension.cs @@ -25,6 +25,25 @@ namespace BBWY.Server.Business.Extensions orderCost.RefundPurchaseAmount; } + public static void CalculationOrderProfitAndCost(this OrderCost orderCost, decimal orderSellerPrice,decimal freightPrice, IList afterSaleOrders) + { + orderCost.AfterTotalCost = afterSaleOrders == null || afterSaleOrders.Count == 0 ? 0M : afterSaleOrders.Sum(aso => aso.AfterTotalCost); + orderCost.RefundAmount = afterSaleOrders == null || afterSaleOrders.Count == 0 ? 0M : afterSaleOrders.Sum(aso => aso.RefundAmount ?? 0M); + orderCost.RefundPurchaseAmount = afterSaleOrders == null || afterSaleOrders.Count == 0M ? 0M : afterSaleOrders.Sum(aso => aso.RefundPurchaseAmount ?? 0); + + //退款之后平台扣点 + orderCost.PlatformCommissionAmount = (orderSellerPrice - orderCost.RefundAmount) * (orderCost.PlatformCommissionRatio); + + orderCost.Profit = orderSellerPrice + freightPrice - orderCost.RefundAmount - + orderCost.PurchaseAmount - + orderCost.DeliveryExpressFreight - + orderCost.PlatformCommissionAmount - + orderCost.AfterTotalCost + + orderCost.RefundPurchaseAmount; + } + + + public static void CalculationSDOrderProfitAndCost(this OrderCost orderCost, Order order, IList afterSaleOrders) { orderCost.AfterTotalCost = afterSaleOrders == null || afterSaleOrders.Count == 0 ? 0M : afterSaleOrders.Sum(aso => aso.AfterTotalCost); diff --git a/BBWY.Server.Business/Order/OrderBusiness.cs b/BBWY.Server.Business/Order/OrderBusiness.cs index 48fa7d9e..59f0c485 100644 --- a/BBWY.Server.Business/Order/OrderBusiness.cs +++ b/BBWY.Server.Business/Order/OrderBusiness.cs @@ -86,7 +86,8 @@ namespace BBWY.Server.Business } select = select.WhereIf(searchOrderRequest.ShopId != null, (o, ocs, oct, sh) => o.ShopId == searchOrderRequest.ShopId) - .WhereIf(!string.IsNullOrEmpty(searchOrderRequest.SDOperator), (o, ocs, oct, sh) => o.SDOperator == searchOrderRequest.SDOperator); + .WhereIf(!string.IsNullOrEmpty(searchOrderRequest.SDOperator), (o, ocs, oct, sh) => o.SDOperator == searchOrderRequest.SDOperator) + .Where((o, ocs, oct, sh) => o.IsGift == false); //select = select.Where((o, ocs, oct) => o.ShopId == searchOrderRequest.ShopId); @@ -276,6 +277,7 @@ namespace BBWY.Server.Business select = select.WhereIf(searchOrderRequest.ShopId != null, (o, ocs, oct) => o.ShopId == searchOrderRequest.ShopId) .WhereIf(!string.IsNullOrEmpty(searchOrderRequest.SDOperator), (o, ocs, oct) => o.SDOperator == searchOrderRequest.SDOperator) + .Where((o, ocs, oct) => o.IsGift == false) .OrderByDescending((o, ocs, oct) => o.StartTime); var orderSourceList = select.ToList((o, ocs, oct) => new ExportOrderResponse() diff --git a/BBWY.Server.Business/ServiceOrder/ServiceOrderBusiness.cs b/BBWY.Server.Business/ServiceOrder/ServiceOrderBusiness.cs index 1d96f535..8c6e3878 100644 --- a/BBWY.Server.Business/ServiceOrder/ServiceOrderBusiness.cs +++ b/BBWY.Server.Business/ServiceOrder/ServiceOrderBusiness.cs @@ -26,6 +26,7 @@ namespace BBWY.Server.Business .WhereIf(!string.IsNullOrEmpty(request.OrderId), (s, o, osku) => s.OrderId == request.OrderId) .WhereIf(!string.IsNullOrEmpty(request.ServiceId), (s, o, osku) => s.ServiceId == request.ServiceId) .WhereIf(request.ServiceOrderState != null, (s, o, osku) => s.Status == request.ServiceOrderState) + .WhereIf(request.ServiceOrderState == null, (s, o, osku) => s.Status != Model.Enums.ServiceOrderState.已取消) .WhereIf(request.ReturnDirection != null, (s, o, osku) => s.ReturnDirection == request.ReturnDirection) .WhereIf(request.StartDate != null, (s, o, osku) => s.ApplyTime >= request.StartDate) .WhereIf(request.EndDate != null, (s, o, osku) => s.ApplyTime <= request.EndDate) diff --git a/BBWY.Server.Business/Sync/OrderSkuSaleDetailSyncBusiness.cs b/BBWY.Server.Business/Sync/OrderSkuSaleDetailSyncBusiness.cs index d8d7006e..0252010d 100644 --- a/BBWY.Server.Business/Sync/OrderSkuSaleDetailSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/OrderSkuSaleDetailSyncBusiness.cs @@ -88,59 +88,6 @@ namespace BBWY.Server.Business CancelItemTotal = (int)g.Sum(g.Value.Item1.ItemTotal) }); - var giftOskuGroups = fsql.Select() - .InnerJoin((gos, go) => gos.GiftOrderId == go.Id) - .WhereIf(shopId != null, (gos, go) => go.ShopId == shopId) - .Where((gos, go) => go.StartTime >= startDate && go.StartTime <= endTime) - //.Where((gos, go) => go.OrderState != Model.Enums.OrderState.已取消) - .GroupBy((gos, go) => new - { - go.Platform, - go.ShopId, - gos.ProductId, - gos.SkuId, - gos.Price, - go.StartTime.Value.Date - }) - .ToList(g => new SkuDailySalesDetail - { - Platform = g.Key.Platform, - ShopId = g.Key.ShopId, - Spu = g.Key.ProductId, - Sku = g.Key.SkuId, - Date = g.Key.Date, - Price = g.Key.Price, - Amount = g.Sum(g.Value.Item1.Price * g.Value.Item1.ItemTotal), - ItemTotal = (int)g.Sum(g.Value.Item1.ItemTotal) - }); - - var cancelGiftOskuGroups = fsql.Select() - .InnerJoin((gos, go) => gos.GiftOrderId == go.Id) - .WhereIf(shopId != null, (gos, go) => go.ShopId == shopId) - .Where((gos, go) => go.ModifyTime >= startDate && go.ModifyTime <= endTime) - .Where((gos, go) => go.OrderState == Model.Enums.OrderState.已取消) - .GroupBy((gos, go) => new - { - go.Platform, - go.ShopId, - gos.ProductId, - gos.SkuId, - gos.Price, - go.ModifyTime.Value.Date - }) - .ToList(g => new SkuDailySalesDetail - { - Platform = g.Key.Platform, - ShopId = g.Key.ShopId, - Spu = g.Key.ProductId, - Sku = g.Key.SkuId, - Date = g.Key.Date, - Price = g.Key.Price, - Amount = 0, - ItemTotal = 0, - CancelItemTotal = (int)g.Sum(g.Value.Item1.ItemTotal) - }); - insertSkuDailySalesDetailList.AddRange(oskuGroups); foreach (var canceloSkuGroup in cancelOskuGroups) @@ -154,33 +101,6 @@ namespace BBWY.Server.Business insertSkuDailySalesDetailList.Add(canceloSkuGroup); } - foreach (var giftOskuGroup in giftOskuGroups) - { - var skuDaily = insertSkuDailySalesDetailList.FirstOrDefault(s => s.ShopId == giftOskuGroup.ShopId && - s.Date == giftOskuGroup.Date && - s.Sku == giftOskuGroup.Sku); - if (skuDaily != null) - { - skuDaily.ItemTotal += giftOskuGroup.ItemTotal; - skuDaily.Amount += giftOskuGroup.Amount; - } - else - insertSkuDailySalesDetailList.Add(giftOskuGroup); - } - - - foreach (var cancelGiftOskuGroup in cancelGiftOskuGroups) - { - var skuDaily = insertSkuDailySalesDetailList.FirstOrDefault(s => s.ShopId == cancelGiftOskuGroup.ShopId && - s.Date == cancelGiftOskuGroup.Date && - s.Sku == cancelGiftOskuGroup.Sku); - if (skuDaily != null) - skuDaily.CancelItemTotal = cancelGiftOskuGroup.CancelItemTotal; - else - insertSkuDailySalesDetailList.Add(cancelGiftOskuGroup); - } - - if (insertSkuDailySalesDetailList.Count() > 0) { var noSpuSkuIds = insertSkuDailySalesDetailList.Where(s => string.IsNullOrEmpty(s.Spu)).Select(s => s.Sku).Distinct().ToList(); diff --git a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs index f345e429..4655069d 100644 --- a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs @@ -16,6 +16,7 @@ using System.Collections.Concurrent; using System.Collections.Generic; using System.Linq; using System.Net.Http; +using System.Security.Cryptography; using System.Threading; using System.Threading.Tasks; using Yitter.IdGenerator; @@ -28,6 +29,8 @@ namespace BBWY.Server.Business private IMemoryCache memoryCache; + private IList validOrderState; + public OrderSyncBusiness(RestApiService restApiService, IOptions options, @@ -51,6 +54,10 @@ namespace BBWY.Server.Business { { Enums.Platform.京东, SyncJDOrder } }; + this.validOrderState = new List() + { + "WAIT_SELLER_STOCK_OUT","WAIT_GOODS_RECEIVE_CONFIRM","FINISHED_L","LOCKED","TRADE_CANCELED","POP_ORDER_PAUSE","PAUSE" + }; } /// /// 手动同步订单 @@ -125,6 +132,16 @@ namespace BBWY.Server.Business if (orderListResponse.Data == null || orderListResponse.Data.Count == 0) return; + + if (shopId == 10388155) + { + try + { + nLogManager.GetLogger($"订单同步-{shop.ShopName}").Info(orderListApiResult.Content); + } + catch { } + } + syncOrderMethodDic[shop.PlatformId](orderListResponse.Data, shopId, relayAPIHost, shop.AppKey, shop.AppSecret, shop.AppToken, shop.PlatformCommissionRatio ?? 0.05M); } catch (Exception ex) @@ -192,10 +209,9 @@ namespace BBWY.Server.Business private void SyncJDOrder(JArray orderTokenJArray, long shopId, string relayAPIHost, string appKey, string appSecret, string appToken, decimal platformCommissionRatio) { - //if (shopId == 10388155) - //{ - // nLogManager.GetLogger("订单同步-布莱特玩具专营店").Info(JsonConvert.SerializeObject(orderTokenJArray)); - //} + var validOrders = orderTokenJArray.Where(o => validOrderState.Contains(o.Value("orderState"))); + if (validOrders.Count() == 0) + return; #region 数据库操作 List insertOrderList = new List(); @@ -205,97 +221,34 @@ namespace BBWY.Server.Business List insertOrderSkuList = new List(); List insertOrderCouponList = new List(); - List insertGiftOrderList = new List(); - List insertGiftOrderSkuList = new List(); - IList> updateGiftOrderList = new List>(); - IList> updateOrderList = new List>(); IList> updatePurchaseOrderList = new List>(); #endregion - #region 赠品 - var giftOrderJArray = orderTokenJArray.Where(o => o.Value("orderTotalPrice") == 0M); - if (giftOrderJArray.Count() > 0) - { - var giftOrderIds = giftOrderJArray.Select(orderJToken => orderJToken.Value("orderId")).ToArray(); - var dbGiftOrderList = fsql.Select(giftOrderIds).ToList(); - var dbGiftOrderIds = dbGiftOrderList.Select(go => go.Id).ToList(); - - var exceptIds = giftOrderIds.Except(dbGiftOrderIds); - if (exceptIds.Count() > 0) - { - var newGiftOrderJArray = giftOrderJArray.Where(o => exceptIds.Contains(o.Value("orderId"))); - foreach (var orderJToken in newGiftOrderJArray) - { - var orderState = ConvertOrderState(orderJToken); - if (orderState == Enums.OrderState.待付款 || orderState == Enums.OrderState.已取消) - continue; - var orderStartTime = orderJToken.Value("orderStartTime"); - var modifyTime = orderJToken.Value("modified"); - insertGiftOrderList.Add(new GiftOrder() - { - Id = orderJToken.Value("orderId"), - CreateTime = DateTime.Now, - Platform = Enums.Platform.京东, - ShopId = shopId, - StartTime = orderStartTime, - ModifyTime = modifyTime, - OrderState = orderState - }); - - var itemInfoList = orderJToken["itemInfoList"] as JArray; - foreach (var orderSkuJToken in itemInfoList) - { - var itemTotal = orderSkuJToken.Value("itemTotal"); - var jdPrice = orderSkuJToken.Value("jdPrice"); - var wareId = orderSkuJToken.Value("wareId"); - var skuId = orderSkuJToken.Value("skuId"); - insertGiftOrderSkuList.Add(new GiftOrderSku() - { - Id = idGenerator.NewLong(), - CreateTime = DateTime.Now, - GiftOrderId = orderJToken.Value("orderId"), - ItemTotal = itemTotal, - Price = jdPrice, - ProductId = wareId, - ShopId = shopId, - SkuId = skuId - }); - } - } - } - - var intersectIds = giftOrderIds.Intersect(dbGiftOrderIds); - if (intersectIds.Count() > 0) - { - foreach (var intersercId in intersectIds) - { - var orderJToken = giftOrderJArray.FirstOrDefault(o => o.Value("orderId") == intersercId); - var dbGiftOrder = dbGiftOrderList.FirstOrDefault(o => o.Id == intersercId); - var orderState = ConvertOrderState(orderJToken); - if (orderState != null && orderState != dbGiftOrder.OrderState) - { - var modifyTime = orderJToken.Value("modified"); - var update = fsql.Update(intersercId).Set(go => go.OrderState, orderState) - .Set(go => go.ModifyTime, modifyTime); - updateGiftOrderList.Add(update); - } - } - } - } - #endregion - var noGiftOrderList = orderTokenJArray.Where(o => o.Value("orderTotalPrice") != 0M); + var interfaceOrderIdList = validOrders.Select(orderJToken => orderJToken.Value("orderId")); + var interfaceCanceledOrderIdList = validOrders.Where(orderJToken => orderJToken.Value("orderState").Equals("TRADE_CANCELED")) + .Select(orderJToken => orderJToken.Value("orderId")); //接口查询结果中取消状态的订单Id - var interfaceOrderIdList = noGiftOrderList.Select(orderJToken => orderJToken.Value("orderId")); - var interfaceCanceledOrderIdList = noGiftOrderList.Where(orderJToken => orderJToken.Value("orderState").Equals("TRADE_CANCELED")) - .Select(orderJToken => orderJToken.Value("orderId")); //接口查询结果中取消状态的订单Id - var dbOrderList = fsql.Select().Where(o => interfaceOrderIdList.Contains(o.Id)).ToList(o => new Order() + var dbOrderList = fsql.Select().Where(o => interfaceOrderIdList.Contains(o.Id)).ToList(o => new Order { Id = o.Id, OrderState = o.OrderState, - StorageType = o.StorageType + StorageType = o.StorageType, + BuyerRemark = o.BuyerRemark, + VenderRemark = o.VenderRemark, + ModifyTime = o.ModifyTime, + EndTime = o.EndTime, + WaybillNo = o.WaybillNo, + FreightPrice = o.FreightPrice, + OrderPayment = o.OrderPayment, + SellerPreferentialAmount = o.SellerPreferentialAmount, + OrderSellerPrice = o.OrderSellerPrice, + OrderTotalPrice = o.OrderTotalPrice, + StoreOrder = o.StoreOrder, + PreferentialAmount = o.PreferentialAmount, + StoreId = o.StoreId }); //数据库订单 var dbOrderConsigneeList = fsql.Select().Where(oc => interfaceOrderIdList.Contains(oc.OrderId)).ToList(); //数据库订单收货信息 var dbOrderCostList = fsql.Select().Where(oc => interfaceOrderIdList.Contains(oc.OrderId)).ToList(); //数据库订单成本信息 @@ -309,7 +262,7 @@ namespace BBWY.Server.Business } var orderSkuIds = new List(); - foreach (var orderJToken in noGiftOrderList) + foreach (var orderJToken in validOrders) { var itemInfoList = orderJToken["itemInfoList"].Where(skuJToken => skuJToken.Value("jdPrice") != 0M); foreach (var josku in itemInfoList) @@ -319,13 +272,13 @@ namespace BBWY.Server.Business orderSkuIds.Add(skuId); } } - var dbPurchaseOrderList = fsql.Select().Where(po => po.RemainingQuantity != 0 && orderSkuIds.Contains(po.SkuId)).ToList(); //数据库采购单 + var dbPurchaseOrderList = fsql.Select().Where(po => po.ShopId == shopId && po.RemainingQuantity != 0 && orderSkuIds.Contains(po.SkuId)).ToList(); //数据库采购单 orderSkuIds.Clear(); - foreach (var orderJToken in noGiftOrderList) + foreach (var orderJToken in validOrders) { var orderId = orderJToken.Value("orderId"); - if (insertOrderList.Count(o => o.Id == orderId) > 0) + if (insertOrderList.Any(o => o.Id == orderId)) continue; var dbOrder = dbOrderList.FirstOrDefault(o => o.Id == orderId); var isNewOrder = dbOrder == null; @@ -337,6 +290,15 @@ namespace BBWY.Server.Business var modifyTime = orderJToken.Value("modified"); var endTime = orderJToken.Value("orderEndTime"); var waybillNo = orderJToken.Value("waybill"); + var freightPrice = orderJToken.Value("freightPrice"); + var orderPayment = orderJToken.Value("orderPayment"); + var sellerPreferentialAmount = orderJToken.Value("sellerDiscount"); + var orderSellerPrice = orderJToken.Value("orderSellerPrice"); + var orderTotalPrice = orderJToken.Value("orderTotalPrice"); + var storeOrder = orderJToken.Value("storeOrder") ?? string.Empty; + var storeId = orderJToken.Value("storeId"); + var storageType = ConvertStoreOrder(storeOrder); + var preferentialAmount = 0M; if (dbOrder == null) { dbOrder = new Order() @@ -344,21 +306,23 @@ namespace BBWY.Server.Business Id = orderId, BuyerRemark = buyerRemark, VenderRemark = venderRemark, - FreightPrice = orderJToken.Value("freightPrice"), + FreightPrice = freightPrice, EndTime = endTime, StartTime = orderJToken.Value("orderStartTime"), ModifyTime = modifyTime, - OrderPayment = orderJToken.Value("orderPayment"), - SellerPreferentialAmount = orderJToken.Value("sellerDiscount"), - OrderSellerPrice = orderJToken.Value("orderSellerPrice"), - OrderTotalPrice = orderJToken.Value("orderTotalPrice"), + OrderPayment = orderPayment, + SellerPreferentialAmount = sellerPreferentialAmount, + OrderSellerPrice = orderSellerPrice, + OrderTotalPrice = orderTotalPrice, OrderType = (Enums.OrderType)orderJToken.Value("orderType"), Platform = Enums.Platform.京东, ShopId = shopId, //VenderId = orderJToken.Value("venderId"), WaybillNo = waybillNo, - StoreOrder = orderJToken.Value("storeOrder") ?? string.Empty, - StoreId = orderJToken.Value("storeId") + StoreOrder = storeOrder, + StoreId = storeId, + IsGift = orderTotalPrice == 0M || orderSellerPrice == 0M, + StorageType = storageType }; if (memoryCache.TryGetValue(orderId, out sDCalculationCostRequest)) @@ -374,11 +338,6 @@ namespace BBWY.Server.Business dbOrder.SDPayChannel = sDCalculationCostRequest.SDPayChannel; } - if (dbOrder.StoreOrder.Contains("京仓")) - dbOrder.StorageType = Enums.StorageType.京仓; - else if (dbOrder.StoreOrder.Contains("云仓")) - dbOrder.StorageType = Enums.StorageType.云仓; - var payType = orderJToken.Value("payType"); if (payType.Contains("-")) dbOrder.PayType = (Enums.PayType)Convert.ToInt32(payType.Substring(0, 1)); @@ -415,6 +374,11 @@ namespace BBWY.Server.Business } #endregion } + else + { + if (storageType != null && dbOrder.StorageType != storageType) + dbOrder.StorageType = storageType; + } #endregion #region 收货人信息 @@ -445,7 +409,8 @@ namespace BBWY.Server.Business var couponType = orderCouponJToken.Value("couponType"); if (string.IsNullOrEmpty(couponType)) continue; - dbOrder.PreferentialAmount += orderCouponJToken.Value("couponPrice"); + //dbOrder.PreferentialAmount += orderCouponJToken.Value("couponPrice"); + preferentialAmount += orderCouponJToken.Value("couponPrice"); insertOrderCouponList.Add(new OrderCoupon() { Id = idGenerator.NewLong(), @@ -492,7 +457,7 @@ namespace BBWY.Server.Business orderState != Enums.OrderState.已取消) { var orderCost = dbOrderCostList.FirstOrDefault(oc => oc.OrderId == dbOrder.Id); - if (orderCost == null) + if (orderCost == null && orderTotalPrice > 0M) { if (isNewOrder && dbOrder.StorageType == Enums.StorageType.SD && sDCalculationCostRequest != null) { @@ -595,19 +560,17 @@ namespace BBWY.Server.Business { OrderId = orderId, PlatformCommissionRatio = platformCommissionRatio, - PreferentialAmount = dbOrder.PreferentialAmount, + PreferentialAmount = preferentialAmount, Profit = 0, PurchaseAmount = orderCostPurchaseAmount, DeliveryExpressFreight = orderDeliveryExpressFreight, CreateTime = DateTime.Now }; - orderCost.CalculationOrderProfitAndCost(dbOrder, null); - //orderCost.PlatformCommissionAmount = dbOrder.OrderSellerPrice * orderCost.PlatformCommissionRatio; - //orderCost.Profit = dbOrder.OrderSellerPrice + - // dbOrder.FreightPrice - - // orderCost.PurchaseAmount - - // orderCost.DeliveryExpressFreight - - // orderCost.PlatformCommissionAmount; + if (dbOrder.OrderTotalPrice != 0) + orderCost.CalculationOrderProfitAndCost(dbOrder, null); + else + orderCost.CalculationOrderProfitAndCost(orderSellerPrice, freightPrice, null); + insertOrderCostList.Add(orderCost); #endregion } @@ -626,14 +589,32 @@ namespace BBWY.Server.Business venderRemark != dbOrder.VenderRemark || modifyTime != dbOrder.ModifyTime || endTime != dbOrder.EndTime || - waybillNo != dbOrder.WaybillNo) + waybillNo != dbOrder.WaybillNo || + freightPrice != dbOrder.FreightPrice || + orderPayment != dbOrder.OrderPayment || + sellerPreferentialAmount != dbOrder.SellerPreferentialAmount || + orderSellerPrice != dbOrder.OrderSellerPrice || + orderTotalPrice != dbOrder.OrderTotalPrice || + storeOrder != dbOrder.StoreOrder || + preferentialAmount != dbOrder.PreferentialAmount || + storeId != dbOrder.StoreId) { var updateSql = fsql.Update(orderId).SetIf(orderState != null && orderState != dbOrder.OrderState, o => o.OrderState, orderState) .SetIf(buyerRemark != dbOrder.BuyerRemark, o => o.BuyerRemark, buyerRemark) .SetIf(venderRemark != dbOrder.VenderRemark, o => o.VenderRemark, venderRemark) .SetIf(modifyTime != dbOrder.ModifyTime, o => o.ModifyTime, modifyTime) .SetIf(endTime != dbOrder.EndTime, o => o.EndTime, modifyTime) - .SetIf(waybillNo != dbOrder.WaybillNo, o => o.WaybillNo, waybillNo); + .SetIf(waybillNo != dbOrder.WaybillNo, o => o.WaybillNo, waybillNo) + .SetIf(freightPrice != dbOrder.FreightPrice, o => o.FreightPrice, freightPrice) + .SetIf(orderPayment != dbOrder.OrderPayment, o => o.OrderPayment, orderPayment) + .SetIf(sellerPreferentialAmount != dbOrder.SellerPreferentialAmount, o => o.SellerPreferentialAmount, sellerPreferentialAmount) + .SetIf(orderSellerPrice != dbOrder.OrderSellerPrice, o => o.OrderSellerPrice, orderSellerPrice) + .SetIf(orderTotalPrice != dbOrder.OrderTotalPrice, o => o.OrderTotalPrice, orderTotalPrice) + .SetIf(orderTotalPrice != dbOrder.OrderTotalPrice && orderTotalPrice > 0M, o => o.IsGift, false) + .SetIf(storeOrder != dbOrder.StoreOrder, o => o.StoreOrder, storeOrder) + .SetIf(storeOrder != dbOrder.StoreOrder, o => o.StorageType, storageType) + .SetIf(preferentialAmount != dbOrder.PreferentialAmount, o => o.PreferentialAmount, preferentialAmount) + .SetIf(storeId != dbOrder.StoreId, o => o.StoreId, storeId); updateOrderList.Add(updateSql); } #endregion @@ -684,8 +665,6 @@ namespace BBWY.Server.Business } #endregion - - fsql.Transaction(() => { if (insertOrderList.Count() > 0) @@ -701,11 +680,6 @@ namespace BBWY.Server.Business if (insertOrderCouponList.Count() > 0) fsql.Insert(insertOrderCouponList).ExecuteAffrows(); - if (insertGiftOrderList.Count() > 0) - fsql.Insert(insertGiftOrderList).ExecuteAffrows(); - if (insertGiftOrderSkuList.Count() > 0) - fsql.Insert(insertGiftOrderSkuList).ExecuteAffrows(); - if (updatePurchaseOrderList.Count() > 0) { foreach (var update in updatePurchaseOrderList) @@ -717,16 +691,20 @@ namespace BBWY.Server.Business foreach (var update in updateOrderList) update.ExecuteAffrows(); } - - if (updateGiftOrderList.Count() > 0) - { - foreach (var update in updateGiftOrderList) - update.ExecuteAffrows(); - } - }); } + private Enums.StorageType? ConvertStoreOrder(string storeOrder) + { + if (string.IsNullOrEmpty(storeOrder)) + return null; + if (storeOrder.Contains("京仓")) + return Enums.StorageType.京仓; + else if (storeOrder.Contains("云仓")) + return Enums.StorageType.云仓; + return null; + } + /// /// 同步所有店铺的订单 /// @@ -809,6 +787,20 @@ namespace BBWY.Server.Business return orderState; } + public void OrderDelete(long ShopId, IList orderIds) + { + fsql.Transaction(() => + { + fsql.Delete().Where(o => o.ShopId == ShopId && orderIds.Contains(o.Id)).ExecuteAffrows(); + fsql.Delete().Where(osku => orderIds.Contains(osku.OrderId)).ExecuteAffrows(); + fsql.Delete().Where(ocd => orderIds.Contains(ocd.OrderId)).ExecuteAffrows(); + fsql.Delete().Where(oc => orderIds.Contains(oc.OrderId)).ExecuteAffrows(); + fsql.Delete().Where(ods => orderIds.Contains(ods.OrderId)).ExecuteAffrows(); + fsql.Delete().Where(ocs => orderIds.Contains(ocs.OrderId)).ExecuteAffrows(); + fsql.Delete().Where(oc => orderIds.Contains(oc.OrderId)).ExecuteAffrows(); + }); + } + /// /// 接收订单推送 /// @@ -838,7 +830,7 @@ namespace BBWY.Server.Business #region 同步暂停订单 public void CheckJDPauseOrder(long? shopId) { - var shopList = venderBusiness.GetShopList(shopId); + var shopList = venderBusiness.GetShopList(shopId, platform: Enums.Platform.京东); var shopIds = shopList.Select(s => long.Parse(s.ShopId)).ToList(); var deleteRow = fsql.Select().Where(wo => shopIds.Contains(wo.ShopId.Value)) @@ -869,6 +861,11 @@ namespace BBWY.Server.Business } } + public void DeleteTimeOutWaitPayOrder() + { + var deleteTime = DateTime.Now.AddHours(-24); + fsql.Delete().Where(w => w.CreateTime <= deleteTime).ExecuteAffrows(); + } #endregion } } diff --git a/BBWY.Server.Model/Db/Order/GiftOrder.cs b/BBWY.Server.Model/Db/Order/GiftOrder.cs deleted file mode 100644 index e10ad540..00000000 --- a/BBWY.Server.Model/Db/Order/GiftOrder.cs +++ /dev/null @@ -1,34 +0,0 @@ -using FreeSql.DataAnnotations; -using System; - -namespace BBWY.Server.Model.Db -{ - - [Table(Name = "giftorder", DisableSyncStructure = true)] - public partial class GiftOrder - { - - [Column(StringLength = 50, IsPrimary = true, IsNullable = false)] - public string Id { get; set; } - - [Column(DbType = "datetime")] - public DateTime? CreateTime { get; set; } - - [Column(DbType = "datetime")] - public DateTime? ModifyTime { get; set; } - - [Column(MapType = typeof(int?))] - public Enums.OrderState? OrderState { get; set; } - - [Column(MapType = typeof(int))] - public Enums.Platform Platform { get; set; } - - - public long ShopId { get; set; } - - [Column(DbType = "datetime")] - public DateTime? StartTime { get; set; } - - } - -} diff --git a/BBWY.Server.Model/Db/Order/GiftOrderSku.cs b/BBWY.Server.Model/Db/Order/GiftOrderSku.cs deleted file mode 100644 index 461039b3..00000000 --- a/BBWY.Server.Model/Db/Order/GiftOrderSku.cs +++ /dev/null @@ -1,36 +0,0 @@ -using FreeSql.DataAnnotations; -using System; - -namespace BBWY.Server.Model.Db -{ - - [Table(Name = "giftordersku", DisableSyncStructure = true)] - public partial class GiftOrderSku { - - [Column(DbType = "datetime")] - public DateTime? CreateTime { get; set; } - - [Column(StringLength = 50)] - public string GiftOrderId { get; set; } - - - public long? Id { get; set; } - - - public int? ItemTotal { get; set; } - - [Column(DbType = "decimal(18,2)")] - public decimal? Price { get; set; } - - [Column(StringLength = 50)] - public string ProductId { get; set; } - - - public long? ShopId { get; set; } - - [Column(StringLength = 50)] - public string SkuId { get; set; } - - } - -} diff --git a/BBWY.Server.Model/Db/Order/Order.cs b/BBWY.Server.Model/Db/Order/Order.cs index 1ed909df..e6649953 100644 --- a/BBWY.Server.Model/Db/Order/Order.cs +++ b/BBWY.Server.Model/Db/Order/Order.cs @@ -179,6 +179,12 @@ namespace BBWY.Server.Model.Db [Column(DbType = "bit")] public bool IsAfterSaleOrder { get; set; } = false; + /// + /// 是否为赠品 + /// + [Column(DbType = "bit")] + public bool IsGift { get; set; } = false; + #region 订单成本 /// /// 平台扣点金额 diff --git a/BBWY.Test/Program.cs b/BBWY.Test/Program.cs index d89d7415..f111c6f1 100644 --- a/BBWY.Test/Program.cs +++ b/BBWY.Test/Program.cs @@ -1,12 +1,7 @@ -using Jd.ACES; -using Jd.Api; +using Jd.Api; using Jd.Api.Request; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; using System; -using System.Collections.Generic; using System.Linq; -using System.Net.Http; using System.Security.Cryptography; using System.Text; @@ -37,13 +32,14 @@ namespace BBWY.Test var appSecret = "8a42bc2301e8439b896e99f5475e0a9b"; ////0e61c4a8ec3e4df4b5836e10884db9220yth 齐盛 - var token = "2ace3023200c4ea9aa682bbf8bffee18jztm"; //布莱特玩具 + //var token = "2ace3023200c4ea9aa682bbf8bffee18jztm"; //布莱特玩具 //var token = "01f5be2cb4d741dda66bce2356941597mdfm"; //布莱特玩具 token2 //var token = "01dc6f6e7fc34dcd99090d690312556cmdfk"; //齐盛 //var token = "9fffa982da23446fb035499ae5622f49odjk"; //腾奇 //var token = "c22ff4d37b6c4bbd82cd9e8d0dab42dbziyz"; //森王车品 //var token = "44c19a1c1fbd4641957e6e8985ed1358jmtl"; //森王玩具 //var token = "4a0ddc095e054c7aa90adcaccb14f83cwzgr"; //可比车品 + var token = "50a4c0f5c55848b5a8a715709e8d6fe0jntb"; //卿卿玩具专营店 //var dt1 = DateTime.Now; //List list = new List(); @@ -59,7 +55,15 @@ namespace BBWY.Test var jdClient = GetJdClient(appkey, appSecret); + var req = new AscFreightViewRequest(); + req.buId = "11926867"; + req.operatePin = "开发测试"; + req.operateNick = "开发测试"; + req.serviceId = 1701316861; + req.orderId = 264691201058; + + var res = jdClient.Execute(req,token, DateTime.Now.ToLocalTime()); Console.ReadKey(); } diff --git a/JD.API/Controllers/PlatformSDKController.cs b/JD.API/Controllers/PlatformSDKController.cs index 3e49f5f9..5436dbba 100644 --- a/JD.API/Controllers/PlatformSDKController.cs +++ b/JD.API/Controllers/PlatformSDKController.cs @@ -16,7 +16,7 @@ namespace JD.API.API.Controllers [Produces("application/json")] [Route("Api/[Controller]/[Action]")] [ApiController] - [ServiceFilter(typeof(YunDingFilter))] + //[ServiceFilter(typeof(YunDingFilter))] public class PlatformSDKController : ControllerBase { private IEnumerable platformSDKBusinessList;