Browse Source

新增打印模板

qianyi
连坤 林 2 years ago
parent
commit
8ca592cc4a
  1. 69
      BBWY.Client/ViewModels/Order/OrderListViewModel.cs
  2. 4
      BBWY.Client/ViewModels/ServiceOrder/EditServiceOrderViewModel.cs
  3. 8
      BBWY.Client/ViewModels/Setting/ShopSettingViewModel.cs
  4. 2
      BBWY.Client/Views/MainWindow.xaml
  5. 4
      BBWY.Client/Views/Order/OrderList.xaml
  6. 17
      BBWY.Client/Views/ServiceOrder/EditServiceOrder.xaml
  7. 42
      BBWY.Client/Views/Setting/ShopSetting.xaml
  8. 20
      BBWY.Server.API/Controllers/OrderSyncController.cs
  9. 1
      BBWY.Server.Business/BillCorrection/BillCorrectionBusiness.cs
  10. 19
      BBWY.Server.Business/Extensions/OrderCostExtension.cs
  11. 4
      BBWY.Server.Business/Order/OrderBusiness.cs
  12. 1
      BBWY.Server.Business/ServiceOrder/ServiceOrderBusiness.cs
  13. 80
      BBWY.Server.Business/Sync/OrderSkuSaleDetailSyncBusiness.cs
  14. 249
      BBWY.Server.Business/Sync/OrderSyncBusiness.cs
  15. 34
      BBWY.Server.Model/Db/Order/GiftOrder.cs
  16. 36
      BBWY.Server.Model/Db/Order/GiftOrderSku.cs
  17. 6
      BBWY.Server.Model/Db/Order/Order.cs
  18. 18
      BBWY.Test/Program.cs
  19. 2
      JD.API/Controllers/PlatformSDKController.cs

69
BBWY.Client/ViewModels/Order/OrderListViewModel.cs

@ -44,7 +44,7 @@ namespace BBWY.Client.ViewModels
private bool onlyDF; private bool onlyDF;
private bool excludeSD; private bool excludeSD;
private bool excludeCanceled; private bool excludeCanceled;
private bool onlyUnhandle; //private bool onlyUnhandle;
private Random random; private Random random;
public GlobalContext globalContext { get; set; } public GlobalContext globalContext { get; set; }
//private bool? includeAfterOrder; //private bool? includeAfterOrder;
@ -93,10 +93,7 @@ namespace BBWY.Client.ViewModels
//public bool? IncludeAfterOrder { get => includeAfterOrder; set { Set(ref includeAfterOrder, value); } } //public bool? IncludeAfterOrder { get => includeAfterOrder; set { Set(ref includeAfterOrder, value); } }
public string SearchServiceId { get => searchServiceId; set { Set(ref searchServiceId, value); } } public string SearchServiceId { get => searchServiceId; set { Set(ref searchServiceId, value); } }
/// <summary> //public bool OnlyUnhandle { get => onlyUnhandle; set { Set(ref onlyUnhandle, value); } }
/// 仅显示未处理
/// </summary>
public bool OnlyUnhandle { get => onlyUnhandle; set { Set(ref onlyUnhandle, value); } }
public ToDayOrderAchievement ToDayOrderAchievement { get; set; } public ToDayOrderAchievement ToDayOrderAchievement { get; set; }
@ -450,39 +447,39 @@ namespace BBWY.Client.ViewModels
IsLoading = false; IsLoading = false;
} }
private void LoadAfterSaleOrder(int pageIndex) //private void LoadAfterSaleOrder(int pageIndex)
{ //{
IsLoading = true; // IsLoading = true;
Thread.Sleep(random.Next(0, 1000)); // Thread.Sleep(random.Next(0, 1000));
var response = afterOrderService.GetAfterSaleOrderList(globalContext.User.Shop.ShopId, // var response = afterOrderService.GetAfterSaleOrderList(globalContext.User.Shop.ShopId,
SearchOrderId, // SearchOrderId,
StartDate, // StartDate,
EndDate, // EndDate,
SearchProductId, // SearchProductId,
SearchSku, // SearchSku,
SearchServiceId, // SearchServiceId,
OnlyUnhandle, // OnlyUnhandle,
pageIndex, // pageIndex,
pageSize); // pageSize);
if (!response.Success) // if (!response.Success)
{ // {
IsLoading = false; // IsLoading = false;
App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "提示")); // App.Current.Dispatcher.Invoke(() => MessageBox.Show(response.Msg, "提示"));
return; // return;
} // }
OrderCount = response.Data.Count; // OrderCount = response.Data.Count;
var afterOrderList = response.Data.Items.Map<IList<AfterSaleOrder>>(); // var afterOrderList = response.Data.Items.Map<IList<AfterSaleOrder>>();
App.Current.Dispatcher.Invoke(() => // App.Current.Dispatcher.Invoke(() =>
{ // {
AfterSaleOrderList.Clear(); // AfterSaleOrderList.Clear();
foreach (var aso in afterOrderList) // foreach (var aso in afterOrderList)
AfterSaleOrderList.Add(aso); // AfterSaleOrderList.Add(aso);
Messenger.Default.Send(string.Empty, "AfterSaleOrderList_ScrollToTop"); // Messenger.Default.Send(string.Empty, "AfterSaleOrderList_ScrollToTop");
}); // });
IsLoading = false; // IsLoading = false;
} //}
private void LoadTodayAchievement(DateTime startTime, DateTime endTime, long shopId) private void LoadTodayAchievement(DateTime startTime, DateTime endTime, long shopId)
{ {

4
BBWY.Client/ViewModels/ServiceOrder/EditServiceOrderViewModel.cs

@ -2,6 +2,7 @@
using BBWY.Client.Models; using BBWY.Client.Models;
using GalaSoft.MvvmLight.Command; using GalaSoft.MvvmLight.Command;
using HandyControl.Controls; using HandyControl.Controls;
using System.Collections.Generic;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Input; using System.Windows.Input;
@ -29,7 +30,7 @@ namespace BBWY.Client.ViewModels
private decimal? reissueProductAmount; private decimal? reissueProductAmount;
private bool isLoading; private bool isLoading;
public IList<StorageType> RenewalTypeList { get; set; }
public ServiceResult? ServiceResult { get => serviceResult; set { Set(ref serviceResult, value); } } public ServiceResult? ServiceResult { get => serviceResult; set { Set(ref serviceResult, value); } }
public decimal? SDRefundFreight { get => sdRefundFreight; set { Set(ref sdRefundFreight, value); } } public decimal? SDRefundFreight { get => sdRefundFreight; set { Set(ref sdRefundFreight, value); } }
public ReturnDirection? ReturnDirection { get => returnDirection; set { Set(ref returnDirection, value); } } public ReturnDirection? ReturnDirection { get => returnDirection; set { Set(ref returnDirection, value); } }
@ -63,6 +64,7 @@ namespace BBWY.Client.ViewModels
{ {
this.serviceOrderService = serviceOrderService; this.serviceOrderService = serviceOrderService;
SaveCommand = new RelayCommand(Save); SaveCommand = new RelayCommand(Save);
RenewalTypeList = new List<StorageType>() { StorageType., StorageType. };
} }
public void SetData(ServiceOrder serviceOrder) public void SetData(ServiceOrder serviceOrder)

8
BBWY.Client/ViewModels/Setting/ShopSettingViewModel.cs

@ -147,6 +147,14 @@ namespace BBWY.Client.ViewModels
MessageBox.Show("店铺密码验证未通过", "保存店铺设置"); MessageBox.Show("店铺密码验证未通过", "保存店铺设置");
return; return;
} }
if (PurchaseAccount.PurchasePlatformId == Platform.)
{
PurchaseAccount.AppKey = "BBWY2023022001";
PurchaseAccount.AppSecret = "908e131365d5448ca651ba20ed7ddefe";
PurchaseAccount.AppToken = PurchaseAccount.AccountName;
}
if (string.IsNullOrEmpty(PurchaseAccount.AppKey) || if (string.IsNullOrEmpty(PurchaseAccount.AppKey) ||
string.IsNullOrEmpty(PurchaseAccount.AppSecret) || string.IsNullOrEmpty(PurchaseAccount.AppSecret) ||
string.IsNullOrEmpty(PurchaseAccount.AppToken) || string.IsNullOrEmpty(PurchaseAccount.AppToken) ||

2
BBWY.Client/Views/MainWindow.xaml

@ -26,7 +26,7 @@
<!--<TextBlock Text="{Binding GlobalContext.User.TeamName}" Margin="5,0,0,0"/> <!--<TextBlock Text="{Binding GlobalContext.User.TeamName}" Margin="5,0,0,0"/>
<TextBlock Text="{Binding GlobalContext.User.Shop.Platform}" Margin="5,0,0,0"/>--> <TextBlock Text="{Binding GlobalContext.User.Shop.Platform}" Margin="5,0,0,0"/>-->
<TextBlock Text="{Binding GlobalContext.User.Shop.ShopName}" Margin="5,0,0,0"/> <TextBlock Text="{Binding GlobalContext.User.Shop.ShopName}" Margin="5,0,0,0"/>
<TextBlock Text="v10086" Margin="5,0,0,0"/> <TextBlock Text="v10087" Margin="5,0,0,0"/>
</StackPanel> </StackPanel>
</Border> </Border>
<Grid Grid.Row="1"> <Grid Grid.Row="1">

4
BBWY.Client/Views/Order/OrderList.xaml

@ -398,11 +398,11 @@
</StackPanel> </StackPanel>
</Border> </Border>
<Border Grid.Row="4" Background="{StaticResource Border.Background}"> <!--<Border Grid.Row="4" Background="{StaticResource Border.Background}">
<StackPanel Orientation="Horizontal"> <StackPanel Orientation="Horizontal">
<CheckBox Content="仅显示未处理" Margin="5,0,0,0" IsChecked="{Binding OnlyUnhandle}"/> <CheckBox Content="仅显示未处理" Margin="5,0,0,0" IsChecked="{Binding OnlyUnhandle}"/>
</StackPanel> </StackPanel>
</Border> </Border>-->
<!--Visibility="{Binding IncludeAfterOrder,Converter={StaticResource objConverter},ConverterParameter=true:Collapsed:Visible}"--> <!--Visibility="{Binding IncludeAfterOrder,Converter={StaticResource objConverter},ConverterParameter=true:Collapsed:Visible}"-->

17
BBWY.Client/Views/ServiceOrder/EditServiceOrder.xaml

@ -23,11 +23,6 @@
<x:Type TypeName="clientModel:ReturnDirection"/> <x:Type TypeName="clientModel:ReturnDirection"/>
</ObjectDataProvider.MethodParameters> </ObjectDataProvider.MethodParameters>
</ObjectDataProvider> </ObjectDataProvider>
<ObjectDataProvider x:Key="storageTypeProvider" MethodName="GetValues" ObjectType="{x:Type sys:Enum}">
<ObjectDataProvider.MethodParameters>
<x:Type TypeName="clientModel:StorageType"/>
</ObjectDataProvider.MethodParameters>
</ObjectDataProvider>
<ObjectDataProvider x:Key="platformProvider" MethodName="GetValues" ObjectType="{x:Type sys:Enum}"> <ObjectDataProvider x:Key="platformProvider" MethodName="GetValues" ObjectType="{x:Type sys:Enum}">
<ObjectDataProvider.MethodParameters> <ObjectDataProvider.MethodParameters>
<x:Type TypeName="clientModel:Platform"/> <x:Type TypeName="clientModel:Platform"/>
@ -114,7 +109,7 @@
<ColumnDefinition/> <ColumnDefinition/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<TextBlock Text="换新方式:" VerticalAlignment="Center" HorizontalAlignment="Right"/> <TextBlock Text="换新方式:" VerticalAlignment="Center" HorizontalAlignment="Right"/>
<ComboBox ItemsSource="{Binding Source={StaticResource storageTypeProvider}}" <ComboBox ItemsSource="{Binding RenewalTypeList}"
SelectedItem="{Binding RenewalType,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding RenewalType,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
Grid.Column="1" Grid.Column="1"
HorizontalAlignment="Left" HorizontalAlignment="Left"
@ -122,8 +117,14 @@
Width="160" Width="160"
Margin="5,0,0,0"/> Margin="5,0,0,0"/>
</Grid> </Grid>
<Grid Height="25" Margin="0,5,0,0" <Grid Height="25" Margin="0,5,0,0">
Visibility="{Binding ServiceResult,ConverterParameter=线下换新:Visible:Collapsed,Converter={StaticResource objConverter}}"> <Grid.Visibility>
<MultiBinding Converter="{StaticResource mobjConverter}"
ConverterParameter="线下换新;代发:&amp;:Visible:Collapsed:1">
<Binding Path="ServiceResult"/>
<Binding Path="RenewalType"/>
</MultiBinding>
</Grid.Visibility>
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/> <ColumnDefinition Width="80"/>
<ColumnDefinition/> <ColumnDefinition/>

42
BBWY.Client/Views/Setting/ShopSetting.xaml

@ -88,20 +88,12 @@
Foreground="{Binding PanelIndex,Converter={StaticResource objConverter},ConverterParameter=2:White:#4A4A4A}"/> Foreground="{Binding PanelIndex,Converter={StaticResource objConverter},ConverterParameter=2:White:#4A4A4A}"/>
</StackPanel> </StackPanel>
<Grid Grid.Row="2" Margin="20,0" Visibility="{Binding PanelIndex,Converter={StaticResource objConverter},ConverterParameter=0:Visible:Collapsed}"> <StackPanel Grid.Row="2" Margin="20,0" Visibility="{Binding PanelIndex,Converter={StaticResource objConverter},ConverterParameter=0:Visible:Collapsed}">
<Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions> <Grid.ColumnDefinitions>
<ColumnDefinition Width="80"/> <ColumnDefinition Width="100"/>
<ColumnDefinition/> <ColumnDefinition/>
</Grid.ColumnDefinitions> </Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition Height="40"/>
<RowDefinition Height="40"/>
<RowDefinition Height="40"/>
<RowDefinition Height="40"/>
<RowDefinition Height="40"/>
<RowDefinition/>
</Grid.RowDefinitions>
<TextBlock Text="采购平台" Style="{StaticResource textblockPropertyStyle}"/> <TextBlock Text="采购平台" Style="{StaticResource textblockPropertyStyle}"/>
<ComboBox ItemsSource="{Binding Source={StaticResource PlatformProvider}}" Grid.Column="1" <ComboBox ItemsSource="{Binding Source={StaticResource PlatformProvider}}" Grid.Column="1"
SelectedItem="{Binding PurchasePlatform,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}" SelectedItem="{Binding PurchasePlatform,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"
@ -110,23 +102,49 @@
Width="150" Width="150"
HorizontalAlignment="Left" HorizontalAlignment="Left"
VerticalContentAlignment="Center"/> VerticalContentAlignment="Center"/>
</Grid>
<TextBlock Text="账号名称" Style="{StaticResource textblockPropertyStyle}" Grid.Row="1"/> <Grid Margin="0,10,0,0">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="{Binding PurchasePlatform,ConverterParameter=拳探:用户账号:账号名称,Converter={StaticResource objConverter}}" Style="{StaticResource textblockPropertyStyle}" Grid.Row="1"/>
<c:BTextBox Grid.Column="1" Style="{StaticResource textboxValueStyle}" Grid.Row="1" <c:BTextBox Grid.Column="1" Style="{StaticResource textboxValueStyle}" Grid.Row="1"
Text="{Binding PurchaseAccount.AccountName,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/> Text="{Binding PurchaseAccount.AccountName,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
</Grid>
<Grid Margin="0,10,0,0"
Visibility="{Binding PurchasePlatform,ConverterParameter=拳探:Collapsed:Visible,Converter={StaticResource objConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="AppKey" Style="{StaticResource textblockPropertyStyle}" Grid.Row="2"/> <TextBlock Text="AppKey" Style="{StaticResource textblockPropertyStyle}" Grid.Row="2"/>
<c:BTextBox Grid.Column="1" Grid.Row="2" <c:BTextBox Grid.Column="1" Grid.Row="2"
Text="{Binding PurchaseAccount.AppKey,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/> Text="{Binding PurchaseAccount.AppKey,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
</Grid>
<Grid Margin="0,10,0,0" Visibility="{Binding PurchasePlatform,ConverterParameter=拳探:Collapsed:Visible,Converter={StaticResource objConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="AppSecret" Style="{StaticResource textblockPropertyStyle}" Grid.Row="3"/> <TextBlock Text="AppSecret" Style="{StaticResource textblockPropertyStyle}" Grid.Row="3"/>
<c:BTextBox Grid.Column="1" Grid.Row="3" <c:BTextBox Grid.Column="1" Grid.Row="3"
Text="{Binding PurchaseAccount.AppSecret,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/> Text="{Binding PurchaseAccount.AppSecret,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
</Grid>
<Grid Margin="0,10,0,0" Visibility="{Binding PurchasePlatform,ConverterParameter=拳探:Collapsed:Visible,Converter={StaticResource objConverter}}">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="100"/>
<ColumnDefinition/>
</Grid.ColumnDefinitions>
<TextBlock Text="AppToken" Style="{StaticResource textblockPropertyStyle}" Grid.Row="4"/> <TextBlock Text="AppToken" Style="{StaticResource textblockPropertyStyle}" Grid.Row="4"/>
<c:BTextBox Grid.Column="1" Grid.Row="4" <c:BTextBox Grid.Column="1" Grid.Row="4"
Text="{Binding PurchaseAccount.AppToken,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/> Text="{Binding PurchaseAccount.AppToken,Mode=TwoWay,UpdateSourceTrigger=PropertyChanged}"/>
</Grid> </Grid>
</StackPanel>
<Grid Grid.Row="2" Margin="20,0" Visibility="{Binding PanelIndex,Converter={StaticResource objConverter},ConverterParameter=1:Visible:Collapsed}"> <Grid Grid.Row="2" Margin="20,0" Visibility="{Binding PanelIndex,Converter={StaticResource objConverter},ConverterParameter=1:Visible:Collapsed}">
<Grid.RowDefinitions> <Grid.RowDefinitions>

20
BBWY.Server.API/Controllers/OrderSyncController.cs

@ -47,6 +47,16 @@ namespace BBWY.Server.API.Controllers
orderSyncBusiness.ManualSyncOrder(shopId, orderIds, null, null); orderSyncBusiness.ManualSyncOrder(shopId, orderIds, null, null);
} }
/// <summary>
/// 订单批量删除
/// </summary>
/// <param name="shopId"></param>
/// <param name="orderIds"></param>
[HttpPost("{shopId}")]
public void OrderDelete([FromRoute]long shopId, [FromBody]IList<string> orderIds)
{
orderSyncBusiness.OrderDelete(shopId, orderIds);
}
/// <summary> /// <summary>
/// 根据日期同步 /// 根据日期同步
@ -85,5 +95,15 @@ namespace BBWY.Server.API.Controllers
{ {
orderSyncBusiness.CheckJDPauseOrder(shopId); orderSyncBusiness.CheckJDPauseOrder(shopId);
} }
/// <summary>
/// 删除过期的待付款订单
/// </summary>
[HttpPost]
public void DeleteTimeOutWaitPayOrder()
{
orderSyncBusiness.DeleteTimeOutWaitPayOrder();
}
} }
} }

1
BBWY.Server.Business/BillCorrection/BillCorrectionBusiness.cs

@ -21,6 +21,7 @@ namespace BBWY.Server.Business
request.EndTime = request.EndTime.Date.AddDays(1).AddSeconds(-1); request.EndTime = request.EndTime.Date.AddDays(1).AddSeconds(-1);
var orderList = fsql.Select<Order>() var orderList = fsql.Select<Order>()
.Where(o => request.ShopIds.Contains(o.ShopId) && o.StartTime >= request.StartTime && o.StartTime <= request.EndTime) .Where(o => request.ShopIds.Contains(o.ShopId) && o.StartTime >= request.StartTime && o.StartTime <= request.EndTime)
.Where(o => o.IsGift == false)
.OrderBy(o => o.StartTime) .OrderBy(o => o.StartTime)
.ToList(o => new BillCorrectionOrderResponse .ToList(o => new BillCorrectionOrderResponse
{ {

19
BBWY.Server.Business/Extensions/OrderCostExtension.cs

@ -25,6 +25,25 @@ namespace BBWY.Server.Business.Extensions
orderCost.RefundPurchaseAmount; orderCost.RefundPurchaseAmount;
} }
public static void CalculationOrderProfitAndCost(this OrderCost orderCost, decimal orderSellerPrice,decimal freightPrice, IList<AfterSaleOrder> 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<AfterSaleOrder> afterSaleOrders) public static void CalculationSDOrderProfitAndCost(this OrderCost orderCost, Order order, IList<AfterSaleOrder> afterSaleOrders)
{ {
orderCost.AfterTotalCost = afterSaleOrders == null || afterSaleOrders.Count == 0 ? 0M : afterSaleOrders.Sum(aso => aso.AfterTotalCost); orderCost.AfterTotalCost = afterSaleOrders == null || afterSaleOrders.Count == 0 ? 0M : afterSaleOrders.Sum(aso => aso.AfterTotalCost);

4
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) 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); //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) 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) .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); .OrderByDescending((o, ocs, oct) => o.StartTime);
var orderSourceList = select.ToList((o, ocs, oct) => new ExportOrderResponse() var orderSourceList = select.ToList((o, ocs, oct) => new ExportOrderResponse()

1
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.OrderId), (s, o, osku) => s.OrderId == request.OrderId)
.WhereIf(!string.IsNullOrEmpty(request.ServiceId), (s, o, osku) => s.ServiceId == request.ServiceId) .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 == 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.ReturnDirection != null, (s, o, osku) => s.ReturnDirection == request.ReturnDirection)
.WhereIf(request.StartDate != null, (s, o, osku) => s.ApplyTime >= request.StartDate) .WhereIf(request.StartDate != null, (s, o, osku) => s.ApplyTime >= request.StartDate)
.WhereIf(request.EndDate != null, (s, o, osku) => s.ApplyTime <= request.EndDate) .WhereIf(request.EndDate != null, (s, o, osku) => s.ApplyTime <= request.EndDate)

80
BBWY.Server.Business/Sync/OrderSkuSaleDetailSyncBusiness.cs

@ -88,59 +88,6 @@ namespace BBWY.Server.Business
CancelItemTotal = (int)g.Sum(g.Value.Item1.ItemTotal) CancelItemTotal = (int)g.Sum(g.Value.Item1.ItemTotal)
}); });
var giftOskuGroups = fsql.Select<GiftOrderSku, GiftOrder>()
.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<GiftOrderSku, GiftOrder>()
.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); insertSkuDailySalesDetailList.AddRange(oskuGroups);
foreach (var canceloSkuGroup in cancelOskuGroups) foreach (var canceloSkuGroup in cancelOskuGroups)
@ -154,33 +101,6 @@ namespace BBWY.Server.Business
insertSkuDailySalesDetailList.Add(canceloSkuGroup); 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) if (insertSkuDailySalesDetailList.Count() > 0)
{ {
var noSpuSkuIds = insertSkuDailySalesDetailList.Where(s => string.IsNullOrEmpty(s.Spu)).Select(s => s.Sku).Distinct().ToList(); var noSpuSkuIds = insertSkuDailySalesDetailList.Where(s => string.IsNullOrEmpty(s.Spu)).Select(s => s.Sku).Distinct().ToList();

249
BBWY.Server.Business/Sync/OrderSyncBusiness.cs

@ -16,6 +16,7 @@ using System.Collections.Concurrent;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net.Http; using System.Net.Http;
using System.Security.Cryptography;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using Yitter.IdGenerator; using Yitter.IdGenerator;
@ -28,6 +29,8 @@ namespace BBWY.Server.Business
private IMemoryCache memoryCache; private IMemoryCache memoryCache;
private IList<string> validOrderState;
public OrderSyncBusiness(RestApiService restApiService, public OrderSyncBusiness(RestApiService restApiService,
IOptions<GlobalConfig> options, IOptions<GlobalConfig> options,
@ -51,6 +54,10 @@ namespace BBWY.Server.Business
{ {
{ Enums.Platform., SyncJDOrder } { Enums.Platform., SyncJDOrder }
}; };
this.validOrderState = new List<string>()
{
"WAIT_SELLER_STOCK_OUT","WAIT_GOODS_RECEIVE_CONFIRM","FINISHED_L","LOCKED","TRADE_CANCELED","POP_ORDER_PAUSE","PAUSE"
};
} }
/// <summary> /// <summary>
/// 手动同步订单 /// 手动同步订单
@ -125,6 +132,16 @@ namespace BBWY.Server.Business
if (orderListResponse.Data == null || orderListResponse.Data.Count == 0) if (orderListResponse.Data == null || orderListResponse.Data.Count == 0)
return; 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); syncOrderMethodDic[shop.PlatformId](orderListResponse.Data, shopId, relayAPIHost, shop.AppKey, shop.AppSecret, shop.AppToken, shop.PlatformCommissionRatio ?? 0.05M);
} }
catch (Exception ex) 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) private void SyncJDOrder(JArray orderTokenJArray, long shopId, string relayAPIHost, string appKey, string appSecret, string appToken, decimal platformCommissionRatio)
{ {
//if (shopId == 10388155) var validOrders = orderTokenJArray.Where(o => validOrderState.Contains(o.Value<string>("orderState")));
//{ if (validOrders.Count() == 0)
// nLogManager.GetLogger("订单同步-布莱特玩具专营店").Info(JsonConvert.SerializeObject(orderTokenJArray)); return;
//}
#region 数据库操作 #region 数据库操作
List<Order> insertOrderList = new List<Order>(); List<Order> insertOrderList = new List<Order>();
@ -205,97 +221,34 @@ namespace BBWY.Server.Business
List<OrderSku> insertOrderSkuList = new List<OrderSku>(); List<OrderSku> insertOrderSkuList = new List<OrderSku>();
List<OrderCoupon> insertOrderCouponList = new List<OrderCoupon>(); List<OrderCoupon> insertOrderCouponList = new List<OrderCoupon>();
List<GiftOrder> insertGiftOrderList = new List<GiftOrder>();
List<GiftOrderSku> insertGiftOrderSkuList = new List<GiftOrderSku>();
IList<IUpdate<GiftOrder>> updateGiftOrderList = new List<IUpdate<GiftOrder>>();
IList<IUpdate<Order>> updateOrderList = new List<IUpdate<Order>>(); IList<IUpdate<Order>> updateOrderList = new List<IUpdate<Order>>();
IList<IUpdate<PurchaseOrder>> updatePurchaseOrderList = new List<IUpdate<PurchaseOrder>>(); IList<IUpdate<PurchaseOrder>> updatePurchaseOrderList = new List<IUpdate<PurchaseOrder>>();
#endregion #endregion
#region 赠品
var giftOrderJArray = orderTokenJArray.Where(o => o.Value<decimal>("orderTotalPrice") == 0M);
if (giftOrderJArray.Count() > 0)
{
var giftOrderIds = giftOrderJArray.Select(orderJToken => orderJToken.Value<string>("orderId")).ToArray();
var dbGiftOrderList = fsql.Select<GiftOrder>(giftOrderIds).ToList();
var dbGiftOrderIds = dbGiftOrderList.Select(go => go.Id).ToList();
var exceptIds = giftOrderIds.Except(dbGiftOrderIds); var interfaceOrderIdList = validOrders.Select(orderJToken => orderJToken.Value<string>("orderId"));
if (exceptIds.Count() > 0) var interfaceCanceledOrderIdList = validOrders.Where(orderJToken => orderJToken.Value<string>("orderState").Equals("TRADE_CANCELED"))
{
var newGiftOrderJArray = giftOrderJArray.Where(o => exceptIds.Contains(o.Value<string>("orderId")));
foreach (var orderJToken in newGiftOrderJArray)
{
var orderState = ConvertOrderState(orderJToken);
if (orderState == Enums.OrderState. || orderState == Enums.OrderState.)
continue;
var orderStartTime = orderJToken.Value<DateTime>("orderStartTime");
var modifyTime = orderJToken.Value<DateTime?>("modified");
insertGiftOrderList.Add(new GiftOrder()
{
Id = orderJToken.Value<string>("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<int>("itemTotal");
var jdPrice = orderSkuJToken.Value<decimal>("jdPrice");
var wareId = orderSkuJToken.Value<string>("wareId");
var skuId = orderSkuJToken.Value<string>("skuId");
insertGiftOrderSkuList.Add(new GiftOrderSku()
{
Id = idGenerator.NewLong(),
CreateTime = DateTime.Now,
GiftOrderId = orderJToken.Value<string>("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<string>("orderId") == intersercId);
var dbGiftOrder = dbGiftOrderList.FirstOrDefault(o => o.Id == intersercId);
var orderState = ConvertOrderState(orderJToken);
if (orderState != null && orderState != dbGiftOrder.OrderState)
{
var modifyTime = orderJToken.Value<DateTime?>("modified");
var update = fsql.Update<GiftOrder>(intersercId).Set(go => go.OrderState, orderState)
.Set(go => go.ModifyTime, modifyTime);
updateGiftOrderList.Add(update);
}
}
}
}
#endregion
var noGiftOrderList = orderTokenJArray.Where(o => o.Value<decimal>("orderTotalPrice") != 0M);
var interfaceOrderIdList = noGiftOrderList.Select(orderJToken => orderJToken.Value<string>("orderId"));
var interfaceCanceledOrderIdList = noGiftOrderList.Where(orderJToken => orderJToken.Value<string>("orderState").Equals("TRADE_CANCELED"))
.Select(orderJToken => orderJToken.Value<string>("orderId")); //接口查询结果中取消状态的订单Id .Select(orderJToken => orderJToken.Value<string>("orderId")); //接口查询结果中取消状态的订单Id
var dbOrderList = fsql.Select<Order>().Where(o => interfaceOrderIdList.Contains(o.Id)).ToList(o => new Order()
var dbOrderList = fsql.Select<Order>().Where(o => interfaceOrderIdList.Contains(o.Id)).ToList(o => new Order
{ {
Id = o.Id, Id = o.Id,
OrderState = o.OrderState, 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<OrderConsignee>().Where(oc => interfaceOrderIdList.Contains(oc.OrderId)).ToList(); //数据库订单收货信息 var dbOrderConsigneeList = fsql.Select<OrderConsignee>().Where(oc => interfaceOrderIdList.Contains(oc.OrderId)).ToList(); //数据库订单收货信息
var dbOrderCostList = fsql.Select<OrderCost>().Where(oc => interfaceOrderIdList.Contains(oc.OrderId)).ToList(); //数据库订单成本信息 var dbOrderCostList = fsql.Select<OrderCost>().Where(oc => interfaceOrderIdList.Contains(oc.OrderId)).ToList(); //数据库订单成本信息
@ -309,7 +262,7 @@ namespace BBWY.Server.Business
} }
var orderSkuIds = new List<string>(); var orderSkuIds = new List<string>();
foreach (var orderJToken in noGiftOrderList) foreach (var orderJToken in validOrders)
{ {
var itemInfoList = orderJToken["itemInfoList"].Where(skuJToken => skuJToken.Value<decimal>("jdPrice") != 0M); var itemInfoList = orderJToken["itemInfoList"].Where(skuJToken => skuJToken.Value<decimal>("jdPrice") != 0M);
foreach (var josku in itemInfoList) foreach (var josku in itemInfoList)
@ -319,13 +272,13 @@ namespace BBWY.Server.Business
orderSkuIds.Add(skuId); orderSkuIds.Add(skuId);
} }
} }
var dbPurchaseOrderList = fsql.Select<PurchaseOrder>().Where(po => po.RemainingQuantity != 0 && orderSkuIds.Contains(po.SkuId)).ToList(); //数据库采购单 var dbPurchaseOrderList = fsql.Select<PurchaseOrder>().Where(po => po.ShopId == shopId && po.RemainingQuantity != 0 && orderSkuIds.Contains(po.SkuId)).ToList(); //数据库采购单
orderSkuIds.Clear(); orderSkuIds.Clear();
foreach (var orderJToken in noGiftOrderList) foreach (var orderJToken in validOrders)
{ {
var orderId = orderJToken.Value<string>("orderId"); var orderId = orderJToken.Value<string>("orderId");
if (insertOrderList.Count(o => o.Id == orderId) > 0) if (insertOrderList.Any(o => o.Id == orderId))
continue; continue;
var dbOrder = dbOrderList.FirstOrDefault(o => o.Id == orderId); var dbOrder = dbOrderList.FirstOrDefault(o => o.Id == orderId);
var isNewOrder = dbOrder == null; var isNewOrder = dbOrder == null;
@ -337,6 +290,15 @@ namespace BBWY.Server.Business
var modifyTime = orderJToken.Value<DateTime?>("modified"); var modifyTime = orderJToken.Value<DateTime?>("modified");
var endTime = orderJToken.Value<DateTime?>("orderEndTime"); var endTime = orderJToken.Value<DateTime?>("orderEndTime");
var waybillNo = orderJToken.Value<string>("waybill"); var waybillNo = orderJToken.Value<string>("waybill");
var freightPrice = orderJToken.Value<decimal>("freightPrice");
var orderPayment = orderJToken.Value<decimal>("orderPayment");
var sellerPreferentialAmount = orderJToken.Value<decimal>("sellerDiscount");
var orderSellerPrice = orderJToken.Value<decimal>("orderSellerPrice");
var orderTotalPrice = orderJToken.Value<decimal>("orderTotalPrice");
var storeOrder = orderJToken.Value<string>("storeOrder") ?? string.Empty;
var storeId = orderJToken.Value<string>("storeId");
var storageType = ConvertStoreOrder(storeOrder);
var preferentialAmount = 0M;
if (dbOrder == null) if (dbOrder == null)
{ {
dbOrder = new Order() dbOrder = new Order()
@ -344,21 +306,23 @@ namespace BBWY.Server.Business
Id = orderId, Id = orderId,
BuyerRemark = buyerRemark, BuyerRemark = buyerRemark,
VenderRemark = venderRemark, VenderRemark = venderRemark,
FreightPrice = orderJToken.Value<decimal>("freightPrice"), FreightPrice = freightPrice,
EndTime = endTime, EndTime = endTime,
StartTime = orderJToken.Value<DateTime>("orderStartTime"), StartTime = orderJToken.Value<DateTime>("orderStartTime"),
ModifyTime = modifyTime, ModifyTime = modifyTime,
OrderPayment = orderJToken.Value<decimal>("orderPayment"), OrderPayment = orderPayment,
SellerPreferentialAmount = orderJToken.Value<decimal>("sellerDiscount"), SellerPreferentialAmount = sellerPreferentialAmount,
OrderSellerPrice = orderJToken.Value<decimal>("orderSellerPrice"), OrderSellerPrice = orderSellerPrice,
OrderTotalPrice = orderJToken.Value<decimal>("orderTotalPrice"), OrderTotalPrice = orderTotalPrice,
OrderType = (Enums.OrderType)orderJToken.Value<int>("orderType"), OrderType = (Enums.OrderType)orderJToken.Value<int>("orderType"),
Platform = Enums.Platform., Platform = Enums.Platform.,
ShopId = shopId, ShopId = shopId,
//VenderId = orderJToken.Value<long>("venderId"), //VenderId = orderJToken.Value<long>("venderId"),
WaybillNo = waybillNo, WaybillNo = waybillNo,
StoreOrder = orderJToken.Value<string>("storeOrder") ?? string.Empty, StoreOrder = storeOrder,
StoreId = orderJToken.Value<string>("storeId") StoreId = storeId,
IsGift = orderTotalPrice == 0M || orderSellerPrice == 0M,
StorageType = storageType
}; };
if (memoryCache.TryGetValue(orderId, out sDCalculationCostRequest)) if (memoryCache.TryGetValue(orderId, out sDCalculationCostRequest))
@ -374,11 +338,6 @@ namespace BBWY.Server.Business
dbOrder.SDPayChannel = sDCalculationCostRequest.SDPayChannel; 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<string>("payType"); var payType = orderJToken.Value<string>("payType");
if (payType.Contains("-")) if (payType.Contains("-"))
dbOrder.PayType = (Enums.PayType)Convert.ToInt32(payType.Substring(0, 1)); dbOrder.PayType = (Enums.PayType)Convert.ToInt32(payType.Substring(0, 1));
@ -415,6 +374,11 @@ namespace BBWY.Server.Business
} }
#endregion #endregion
} }
else
{
if (storageType != null && dbOrder.StorageType != storageType)
dbOrder.StorageType = storageType;
}
#endregion #endregion
#region 收货人信息 #region 收货人信息
@ -445,7 +409,8 @@ namespace BBWY.Server.Business
var couponType = orderCouponJToken.Value<string>("couponType"); var couponType = orderCouponJToken.Value<string>("couponType");
if (string.IsNullOrEmpty(couponType)) if (string.IsNullOrEmpty(couponType))
continue; continue;
dbOrder.PreferentialAmount += orderCouponJToken.Value<decimal>("couponPrice"); //dbOrder.PreferentialAmount += orderCouponJToken.Value<decimal>("couponPrice");
preferentialAmount += orderCouponJToken.Value<decimal>("couponPrice");
insertOrderCouponList.Add(new OrderCoupon() insertOrderCouponList.Add(new OrderCoupon()
{ {
Id = idGenerator.NewLong(), Id = idGenerator.NewLong(),
@ -492,7 +457,7 @@ namespace BBWY.Server.Business
orderState != Enums.OrderState.) orderState != Enums.OrderState.)
{ {
var orderCost = dbOrderCostList.FirstOrDefault(oc => oc.OrderId == dbOrder.Id); 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) if (isNewOrder && dbOrder.StorageType == Enums.StorageType.SD && sDCalculationCostRequest != null)
{ {
@ -595,19 +560,17 @@ namespace BBWY.Server.Business
{ {
OrderId = orderId, OrderId = orderId,
PlatformCommissionRatio = platformCommissionRatio, PlatformCommissionRatio = platformCommissionRatio,
PreferentialAmount = dbOrder.PreferentialAmount, PreferentialAmount = preferentialAmount,
Profit = 0, Profit = 0,
PurchaseAmount = orderCostPurchaseAmount, PurchaseAmount = orderCostPurchaseAmount,
DeliveryExpressFreight = orderDeliveryExpressFreight, DeliveryExpressFreight = orderDeliveryExpressFreight,
CreateTime = DateTime.Now CreateTime = DateTime.Now
}; };
if (dbOrder.OrderTotalPrice != 0)
orderCost.CalculationOrderProfitAndCost(dbOrder, null); orderCost.CalculationOrderProfitAndCost(dbOrder, null);
//orderCost.PlatformCommissionAmount = dbOrder.OrderSellerPrice * orderCost.PlatformCommissionRatio; else
//orderCost.Profit = dbOrder.OrderSellerPrice + orderCost.CalculationOrderProfitAndCost(orderSellerPrice, freightPrice, null);
// dbOrder.FreightPrice -
// orderCost.PurchaseAmount -
// orderCost.DeliveryExpressFreight -
// orderCost.PlatformCommissionAmount;
insertOrderCostList.Add(orderCost); insertOrderCostList.Add(orderCost);
#endregion #endregion
} }
@ -626,14 +589,32 @@ namespace BBWY.Server.Business
venderRemark != dbOrder.VenderRemark || venderRemark != dbOrder.VenderRemark ||
modifyTime != dbOrder.ModifyTime || modifyTime != dbOrder.ModifyTime ||
endTime != dbOrder.EndTime || 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<Order>(orderId).SetIf(orderState != null && orderState != dbOrder.OrderState, o => o.OrderState, orderState) var updateSql = fsql.Update<Order>(orderId).SetIf(orderState != null && orderState != dbOrder.OrderState, o => o.OrderState, orderState)
.SetIf(buyerRemark != dbOrder.BuyerRemark, o => o.BuyerRemark, buyerRemark) .SetIf(buyerRemark != dbOrder.BuyerRemark, o => o.BuyerRemark, buyerRemark)
.SetIf(venderRemark != dbOrder.VenderRemark, o => o.VenderRemark, venderRemark) .SetIf(venderRemark != dbOrder.VenderRemark, o => o.VenderRemark, venderRemark)
.SetIf(modifyTime != dbOrder.ModifyTime, o => o.ModifyTime, modifyTime) .SetIf(modifyTime != dbOrder.ModifyTime, o => o.ModifyTime, modifyTime)
.SetIf(endTime != dbOrder.EndTime, o => o.EndTime, 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); updateOrderList.Add(updateSql);
} }
#endregion #endregion
@ -684,8 +665,6 @@ namespace BBWY.Server.Business
} }
#endregion #endregion
fsql.Transaction(() => fsql.Transaction(() =>
{ {
if (insertOrderList.Count() > 0) if (insertOrderList.Count() > 0)
@ -701,11 +680,6 @@ namespace BBWY.Server.Business
if (insertOrderCouponList.Count() > 0) if (insertOrderCouponList.Count() > 0)
fsql.Insert(insertOrderCouponList).ExecuteAffrows(); fsql.Insert(insertOrderCouponList).ExecuteAffrows();
if (insertGiftOrderList.Count() > 0)
fsql.Insert(insertGiftOrderList).ExecuteAffrows();
if (insertGiftOrderSkuList.Count() > 0)
fsql.Insert(insertGiftOrderSkuList).ExecuteAffrows();
if (updatePurchaseOrderList.Count() > 0) if (updatePurchaseOrderList.Count() > 0)
{ {
foreach (var update in updatePurchaseOrderList) foreach (var update in updatePurchaseOrderList)
@ -717,14 +691,18 @@ namespace BBWY.Server.Business
foreach (var update in updateOrderList) foreach (var update in updateOrderList)
update.ExecuteAffrows(); 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;
} }
/// <summary> /// <summary>
@ -809,6 +787,20 @@ namespace BBWY.Server.Business
return orderState; return orderState;
} }
public void OrderDelete(long ShopId, IList<string> orderIds)
{
fsql.Transaction(() =>
{
fsql.Delete<Order>().Where(o => o.ShopId == ShopId && orderIds.Contains(o.Id)).ExecuteAffrows();
fsql.Delete<OrderSku>().Where(osku => orderIds.Contains(osku.OrderId)).ExecuteAffrows();
fsql.Delete<OrderCostDetail>().Where(ocd => orderIds.Contains(ocd.OrderId)).ExecuteAffrows();
fsql.Delete<OrderCost>().Where(oc => orderIds.Contains(oc.OrderId)).ExecuteAffrows();
fsql.Delete<OrderDropShipping>().Where(ods => orderIds.Contains(ods.OrderId)).ExecuteAffrows();
fsql.Delete<OrderConsignee>().Where(ocs => orderIds.Contains(ocs.OrderId)).ExecuteAffrows();
fsql.Delete<OrderCoupon>().Where(oc => orderIds.Contains(oc.OrderId)).ExecuteAffrows();
});
}
/// <summary> /// <summary>
/// 接收订单推送 /// 接收订单推送
/// </summary> /// </summary>
@ -838,7 +830,7 @@ namespace BBWY.Server.Business
#region 同步暂停订单 #region 同步暂停订单
public void CheckJDPauseOrder(long? shopId) 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 shopIds = shopList.Select(s => long.Parse(s.ShopId)).ToList();
var deleteRow = fsql.Select<WaitPayOrder>().Where(wo => shopIds.Contains(wo.ShopId.Value)) var deleteRow = fsql.Select<WaitPayOrder>().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<WaitPayOrder>().Where(w => w.CreateTime <= deleteTime).ExecuteAffrows();
}
#endregion #endregion
} }
} }

34
BBWY.Server.Model/Db/Order/GiftOrder.cs

@ -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; }
}
}

36
BBWY.Server.Model/Db/Order/GiftOrderSku.cs

@ -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; }
}
}

6
BBWY.Server.Model/Db/Order/Order.cs

@ -179,6 +179,12 @@ namespace BBWY.Server.Model.Db
[Column(DbType = "bit")] [Column(DbType = "bit")]
public bool IsAfterSaleOrder { get; set; } = false; public bool IsAfterSaleOrder { get; set; } = false;
/// <summary>
/// 是否为赠品
/// </summary>
[Column(DbType = "bit")]
public bool IsGift { get; set; } = false;
#region 订单成本 #region 订单成本
/// <summary> /// <summary>
/// 平台扣点金额 /// 平台扣点金额

18
BBWY.Test/Program.cs

@ -1,12 +1,7 @@
using Jd.ACES; using Jd.Api;
using Jd.Api;
using Jd.Api.Request; using Jd.Api.Request;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using System; using System;
using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net.Http;
using System.Security.Cryptography; using System.Security.Cryptography;
using System.Text; using System.Text;
@ -37,13 +32,14 @@ namespace BBWY.Test
var appSecret = "8a42bc2301e8439b896e99f5475e0a9b"; var appSecret = "8a42bc2301e8439b896e99f5475e0a9b";
////0e61c4a8ec3e4df4b5836e10884db9220yth 齐盛 ////0e61c4a8ec3e4df4b5836e10884db9220yth 齐盛
var token = "2ace3023200c4ea9aa682bbf8bffee18jztm"; //布莱特玩具 //var token = "2ace3023200c4ea9aa682bbf8bffee18jztm"; //布莱特玩具
//var token = "01f5be2cb4d741dda66bce2356941597mdfm"; //布莱特玩具 token2 //var token = "01f5be2cb4d741dda66bce2356941597mdfm"; //布莱特玩具 token2
//var token = "01dc6f6e7fc34dcd99090d690312556cmdfk"; //齐盛 //var token = "01dc6f6e7fc34dcd99090d690312556cmdfk"; //齐盛
//var token = "9fffa982da23446fb035499ae5622f49odjk"; //腾奇 //var token = "9fffa982da23446fb035499ae5622f49odjk"; //腾奇
//var token = "c22ff4d37b6c4bbd82cd9e8d0dab42dbziyz"; //森王车品 //var token = "c22ff4d37b6c4bbd82cd9e8d0dab42dbziyz"; //森王车品
//var token = "44c19a1c1fbd4641957e6e8985ed1358jmtl"; //森王玩具 //var token = "44c19a1c1fbd4641957e6e8985ed1358jmtl"; //森王玩具
//var token = "4a0ddc095e054c7aa90adcaccb14f83cwzgr"; //可比车品 //var token = "4a0ddc095e054c7aa90adcaccb14f83cwzgr"; //可比车品
var token = "50a4c0f5c55848b5a8a715709e8d6fe0jntb"; //卿卿玩具专营店
//var dt1 = DateTime.Now; //var dt1 = DateTime.Now;
//List<string> list = new List<string>(); //List<string> list = new List<string>();
@ -59,7 +55,15 @@ namespace BBWY.Test
var jdClient = GetJdClient(appkey, appSecret); 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(); Console.ReadKey();
} }

2
JD.API/Controllers/PlatformSDKController.cs

@ -16,7 +16,7 @@ namespace JD.API.API.Controllers
[Produces("application/json")] [Produces("application/json")]
[Route("Api/[Controller]/[Action]")] [Route("Api/[Controller]/[Action]")]
[ApiController] [ApiController]
[ServiceFilter(typeof(YunDingFilter))] //[ServiceFilter(typeof(YunDingFilter))]
public class PlatformSDKController : ControllerBase public class PlatformSDKController : ControllerBase
{ {
private IEnumerable<PlatformSDKBusiness> platformSDKBusinessList; private IEnumerable<PlatformSDKBusiness> platformSDKBusinessList;

Loading…
Cancel
Save