Browse Source

代发信息一对多过度

qianyi
shanji 3 years ago
parent
commit
441221486d
  1. 4
      BBWY.Client/Models/APIModel/Response/Order/OrderDropShippingResponse.cs
  2. 2
      BBWY.Client/Models/APIModel/Response/Order/OrderResponse.cs
  3. 5
      BBWY.Client/Models/APIModel/Response/Order/OrderSkuResponse.cs
  4. 3
      BBWY.Client/Models/Enums.cs
  5. 2
      BBWY.Client/Models/Order/Order.cs
  6. 4
      BBWY.Client/Models/Order/OrderDropShipping.cs
  7. 5
      BBWY.Client/Models/Order/OrderSku.cs
  8. 2
      BBWY.Client/ViewModels/Order/OrderListViewModel.cs
  9. 2
      BBWY.Client/Views/MainWindow.xaml
  10. 82
      BBWY.Client/Views/Order/OrderList.xaml
  11. 10
      BBWY.Server.API/Controllers/PurchaseOrderController.cs
  12. 244
      BBWY.Server.Business/Order/OrderBusiness.cs
  13. 127
      BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
  14. 70
      BBWY.Server.Model/Db/Order/Order.cs
  15. 11
      BBWY.Server.Model/Db/Order/OrderDropShipping.cs
  16. 8
      BBWY.Server.Model/Db/Order/OrderSku.cs
  17. 2
      BBWY.Server.Model/Dto/Response/Order/OrderResponse.cs
  18. 7
      BBWY.Server.Model/Dto/Response/Order/OrderSkuResponse.cs
  19. 21
      BBWY.Server.Model/MappingProfiles.cs
  20. 2
      BBWY.Test/BBWY.Test.csproj
  21. 48
      BBWY.Test/Program.cs

4
BBWY.Client/Models/APIModel/Response/Order/OrderDropShippingResponse.cs

@ -2,6 +2,8 @@
{ {
public class OrderDropShippingResponse public class OrderDropShippingResponse
{ {
public long Id { get; set; }
public string OrderId { get; set; } public string OrderId { get; set; }
public string BuyerAccount { get; set; } public string BuyerAccount { get; set; }
@ -12,6 +14,8 @@
public string PurchaseOrderId { get; set; } public string PurchaseOrderId { get; set; }
public string MerchantOrderId { get; set; }
public Platform? PurchasePlatform { get; set; } public Platform? PurchasePlatform { get; set; }
public string SellerAccount { get; set; } public string SellerAccount { get; set; }

2
BBWY.Client/Models/APIModel/Response/Order/OrderResponse.cs

@ -163,7 +163,7 @@ namespace BBWY.Client.Models
/// <summary> /// <summary>
/// 代发信息 /// 代发信息
/// </summary> /// </summary>
public OrderDropShippingResponse OrderDropShipping { get; set; } public IList<OrderDropShippingResponse> OrderDropShippingList { get; set; }
} }
public class OrderListResponse public class OrderListResponse

5
BBWY.Client/Models/APIModel/Response/Order/OrderSkuResponse.cs

@ -21,5 +21,10 @@
public string Title { get; set; } public string Title { get; set; }
public string Logo { get; set; } public string Logo { get; set; }
/// <summary>
/// 代发信息Id
/// </summary>
public long? OrderDropShippingId { get; set; }
} }
} }

3
BBWY.Client/Models/Enums.cs

@ -8,7 +8,8 @@
= 0, = 0,
= 1, = 1,
= 2, = 2,
= 3 = 3,
= 4
} }
/// <summary> /// <summary>

2
BBWY.Client/Models/Order/Order.cs

@ -189,7 +189,7 @@ namespace BBWY.Client.Models
/// <summary> /// <summary>
/// 代发信息 /// 代发信息
/// </summary> /// </summary>
public OrderDropShipping OrderDropShipping { get; set; } public IList<OrderDropShipping> OrderDropShippingList { get; set; }
public void ConvertOrderCostDetailToGroup() public void ConvertOrderCostDetailToGroup()
{ {

4
BBWY.Client/Models/Order/OrderDropShipping.cs

@ -7,12 +7,13 @@
if (PurchaseFreight != 0M) if (PurchaseFreight != 0M)
PurchaseFreightStr = PurchaseFreight.ToString(); PurchaseFreightStr = PurchaseFreight.ToString();
} }
public long Id { get; set; }
public string OrderId { get; set; } public string OrderId { get; set; }
public string BuyerAccount { get => buyerAccount; set { Set(ref buyerAccount, value); } } public string BuyerAccount { get => buyerAccount; set { Set(ref buyerAccount, value); } }
public string SellerAccount { get => sellerAccount; set { Set(ref sellerAccount, value); } } public string SellerAccount { get => sellerAccount; set { Set(ref sellerAccount, value); } }
public decimal DeliveryFreight { get => deliveryFreight; set { Set(ref deliveryFreight, value); } } public decimal DeliveryFreight { get => deliveryFreight; set { Set(ref deliveryFreight, value); } }
public string PurchaseOrderId { get => purchaseOrderId; set { Set(ref purchaseOrderId, value); } } public string PurchaseOrderId { get => purchaseOrderId; set { Set(ref purchaseOrderId, value); } }
public string MerchantOrderId { get => merchantOrderId; set { Set(ref merchantOrderId, value); } }
public Platform PurchasePlatform { get => purchasePlatform; set { Set(ref purchasePlatform, value); } } public Platform PurchasePlatform { get => purchasePlatform; set { Set(ref purchasePlatform, value); } }
public decimal PurchaseAmount { get => purchaseAmount; set { Set(ref purchaseAmount, value); } } public decimal PurchaseAmount { get => purchaseAmount; set { Set(ref purchaseAmount, value); } }
@ -49,6 +50,7 @@
private string sellerAccount; private string sellerAccount;
private decimal deliveryFreight; private decimal deliveryFreight;
private string purchaseOrderId; private string purchaseOrderId;
private string merchantOrderId;
private Platform purchasePlatform; private Platform purchasePlatform;
private decimal purchaseAmount; private decimal purchaseAmount;
private decimal skuAmount; private decimal skuAmount;

5
BBWY.Client/Models/Order/OrderSku.cs

@ -18,5 +18,10 @@
public string Title { get; set; } public string Title { get; set; }
public string Logo { get; set; } public string Logo { get; set; }
/// <summary>
/// 代发信息Id
/// </summary>
public long? OrderDropShippingId { get; set; }
} }
} }

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

@ -417,7 +417,7 @@ namespace BBWY.Client.ViewModels
return; return;
if (order.StorageType == StorageType.) if (order.StorageType == StorageType.)
{ {
var relationPurchaseOrder = new RelationPurchaseOrder(order.Id, globalContext.User.Shop.PurchaseAccountList, order.OrderDropShipping, order.ItemList.Select(osku => new RelationPurchaseOrderSku() var relationPurchaseOrder = new RelationPurchaseOrder(order.Id, globalContext.User.Shop.PurchaseAccountList, order.OrderDropShippingList[0], order.ItemList.Select(osku => new RelationPurchaseOrderSku()
{ {
Logo = osku.Logo, Logo = osku.Logo,
ProductId = osku.ProductId, ProductId = osku.ProductId,

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="v10023" Margin="5,0,0,0"/> <TextBlock Text="v10024" Margin="5,0,0,0"/>
</StackPanel> </StackPanel>
</Border> </Border>
<Grid Grid.Row="1"> <Grid Grid.Row="1">

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

@ -299,19 +299,9 @@
Command="{Binding DataContext.CopyTextCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}}}" Command="{Binding DataContext.CopyTextCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}}}"
CommandParameter="{Binding Id}"/> CommandParameter="{Binding Id}"/>
<Border Width="1" Margin="5,5,0,5" Background="{StaticResource Border.Brush}"/> <Border Width="1" Margin="5,5,0,5" Background="{StaticResource Border.Brush}"/>
<!--<TextBlock VerticalAlignment="Center" Margin="5,0,0,0">
<Run Text="下单账号:"/>
<Run Text="{Binding BuyerAccount}"/>
</TextBlock>-->
<c:BButton x:Name="btn_decodeCommand" Content="解密收货信息" Style="{StaticResource LinkButton}" Margin="5,0,0,0" <c:BButton x:Name="btn_decodeCommand" Content="解密收货信息" Style="{StaticResource LinkButton}" Margin="5,0,0,0"
Command="{Binding DataContext.DecodeConsigneeCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}}}" Command="{Binding DataContext.DecodeConsigneeCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}}}"
CommandParameter="{Binding }"/> CommandParameter="{Binding }"/>
<!--<TextBlock x:Name="txt_consignee" VerticalAlignment="Center" Margin="5,0,0,0" Visibility="Collapsed">
<Run Text="收货人:"/>
<Run Text="{Binding Consignee.ContactName}"/>
<Run Text="联系电话:"/>
<Run Text="{Binding Consignee.Mobile}"/>
</TextBlock>-->
<StackPanel x:Name="txt_consignee" Margin="5,0,0,0" Orientation="Horizontal" VerticalAlignment="Center"> <StackPanel x:Name="txt_consignee" Margin="5,0,0,0" Orientation="Horizontal" VerticalAlignment="Center">
<TextBlock Text="收货人:"/> <TextBlock Text="收货人:"/>
<TextBox Text="{Binding Consignee.ContactName}" Foreground="{StaticResource Text.Color}" <TextBox Text="{Binding Consignee.ContactName}" Foreground="{StaticResource Text.Color}"
@ -458,34 +448,46 @@
</ListBox.ItemTemplate> </ListBox.ItemTemplate>
</ListBox> </ListBox>
<StackPanel x:Name="sp_df" Grid.Column="2" VerticalAlignment="Center" <ListBox x:Name="listbox_df" Grid.Column="2"
HorizontalAlignment="Center" Margin="0,0,0,10" Visibility="Collapsed"> Style="{StaticResource NoScrollViewListBoxStyle}"
<TextBlock> ItemContainerStyle="{StaticResource NoBgListBoxItemStyle}"
<Run Text="采购平台"/> ItemsSource="{Binding OrderDropShippingList}"
<Run Text="{Binding OrderDropShipping.PurchasePlatform}"/> Visibility="Collapsed"
</TextBlock> VerticalAlignment="Center"
<TextBlock> Foreground="{StaticResource Text.Color}">
<Run Text="买家账号"/> <ListBox.ItemTemplate>
<Run Text="{Binding OrderDropShipping.BuyerAccount}"/> <DataTemplate>
</TextBlock> <StackPanel Grid.Column="2" VerticalAlignment="Center"
<TextBlock> HorizontalAlignment="Center" Margin="10,0,0,10">
<Run Text="卖家账号"/> <TextBlock>
<Run Text="{Binding OrderDropShipping.SellerAccount}"/> <Run Text="采购平台"/>
</TextBlock> <Run Text="{Binding PurchasePlatform}"/>
<StackPanel Orientation="Horizontal"> </TextBlock>
<TextBlock> <TextBlock>
<Run Text="采购单号"/> <Run Text="买家账号"/>
<Run Text="{Binding OrderDropShipping.PurchaseOrderId}"/> <Run Text="{Binding BuyerAccount}"/>
</TextBlock> </TextBlock>
<c:BButton Content="复制" Style="{StaticResource LinkButton}" VerticalAlignment="Center" <TextBlock ToolTip="{Binding SellerAccount}">
Command="{Binding DataContext.CopyTextCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type ListBox}}}" <Run Text="卖家账号"/>
CommandParameter="{Binding OrderDropShipping.PurchaseOrderId}"/> <Run Text="{Binding SellerAccount}"/>
</StackPanel> </TextBlock>
<TextBlock> <StackPanel Orientation="Horizontal">
<Run Text="采购成本"/> <TextBlock Text="采购单号"/>
<Run Text="{Binding OrderDropShipping.PurchaseAmount}"/> <c:BButton Content="{Binding PurchaseOrderId}" Style="{StaticResource LinkButton}"
</TextBlock> Command="{Binding DataContext.CopyTextCommand,RelativeSource={RelativeSource Mode=FindAncestor,AncestorType={x:Type Page}}}"
</StackPanel> CommandParameter="{Binding PurchaseOrderId}"
Margin="3,0,0,0"/>
</StackPanel>
<TextBlock>
<Run Text="采购成本"/>
<Run Text="{Binding PurchaseAmount}"/>
</TextBlock>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<Border Width="1" Background="{StaticResource Border.Brush}" Grid.Column="2" HorizontalAlignment="Right"/> <Border Width="1" Background="{StaticResource Border.Brush}" Grid.Column="2" HorizontalAlignment="Right"/>
<Border Width="1" Background="{StaticResource Border.Brush}" Grid.Column="3" HorizontalAlignment="Right"/> <Border Width="1" Background="{StaticResource Border.Brush}" Grid.Column="3" HorizontalAlignment="Right"/>
@ -518,7 +520,7 @@
</Path.ToolTip> </Path.ToolTip>
</Path> </Path>
</StackPanel> </StackPanel>
<StackPanel x:Name="sp_orderCoupon" Orientation="Horizontal"> <StackPanel x:Name="sp_orderCoupon" Orientation="Horizontal">
<TextBlock> <TextBlock>
@ -799,7 +801,7 @@
<Setter TargetName="sp_purchaseAmount" Property="Visibility" Value="Collapsed"/> <Setter TargetName="sp_purchaseAmount" Property="Visibility" Value="Collapsed"/>
</DataTrigger> </DataTrigger>
<DataTrigger Binding="{Binding StorageType}" Value="代发"> <DataTrigger Binding="{Binding StorageType}" Value="代发">
<Setter TargetName="sp_df" Property="Visibility" Value="Visible"/> <Setter TargetName="listbox_df" Property="Visibility" Value="Visible"/>
</DataTrigger> </DataTrigger>
<MultiDataTrigger> <MultiDataTrigger>
<MultiDataTrigger.Conditions> <MultiDataTrigger.Conditions>

10
BBWY.Server.API/Controllers/PurchaseOrderController.cs

@ -53,16 +53,6 @@ namespace BBWY.Server.API.Controllers
return purchaseOrderBusiness.PreviewPurchaseOrder(previewOrderReuqest); return purchaseOrderBusiness.PreviewPurchaseOrder(previewOrderReuqest);
} }
/// <summary>
/// 创建在线采购单,即将废弃
/// </summary>
/// <param name="createOnlinePurchaseOrderRequest"></param>
[HttpPost]
public void FastCreateOrder([FromBody] CreateOnlinePurchaseOrderRequest createOnlinePurchaseOrderRequest)
{
purchaseOrderBusiness.FastCreateOrder(createOnlinePurchaseOrderRequest);
}
/// <summary> /// <summary>
/// 创建在线采购单 /// 创建在线采购单
/// </summary> /// </summary>

244
BBWY.Server.Business/Order/OrderBusiness.cs

@ -60,12 +60,11 @@ namespace BBWY.Server.Business
if (searchOrderRequest.EndDate != null) if (searchOrderRequest.EndDate != null)
searchOrderRequest.EndDate = searchOrderRequest.EndDate.Value.Date.AddDays(1).AddSeconds(-1); searchOrderRequest.EndDate = searchOrderRequest.EndDate.Value.Date.AddDays(1).AddSeconds(-1);
var select = fsql.Select<Order, OrderConsignee, OrderCost, OrderDropShipping>().LeftJoin((o, ocs, oct, ods) => o.Id == ocs.OrderId) var select = fsql.Select<Order, OrderConsignee, OrderCost>().LeftJoin((o, ocs, oct) => o.Id == ocs.OrderId)
.LeftJoin((o, ocs, oct, ods) => o.Id == oct.OrderId) .LeftJoin((o, ocs, oct) => o.Id == oct.OrderId);
.LeftJoin((o, ocs, oct, ods) => o.Id == ods.OrderId);
if (!string.IsNullOrEmpty(searchOrderRequest.OrderId)) if (!string.IsNullOrEmpty(searchOrderRequest.OrderId))
{ {
select = select.Where((o, ocs, oct, ods) => o.Id == searchOrderRequest.OrderId); select = select.Where((o, ocs, oct) => o.Id == searchOrderRequest.OrderId);
} }
else else
{ {
@ -74,25 +73,25 @@ namespace BBWY.Server.Business
var childSelect = fsql.Select<OrderSku>().As("osku") var childSelect = fsql.Select<OrderSku>().As("osku")
.WhereIf(string.IsNullOrEmpty(searchOrderRequest.Sku) == false, osku => osku.SkuId == searchOrderRequest.Sku) .WhereIf(string.IsNullOrEmpty(searchOrderRequest.Sku) == false, osku => osku.SkuId == searchOrderRequest.Sku)
.WhereIf(string.IsNullOrEmpty(searchOrderRequest.ProductNo) == false, osku => osku.ProductNo == searchOrderRequest.ProductNo); .WhereIf(string.IsNullOrEmpty(searchOrderRequest.ProductNo) == false, osku => osku.ProductNo == searchOrderRequest.ProductNo);
select = select.Where((o, ocs, oct, ods) => childSelect.Where(osku => osku.OrderId == o.Id).Any()); select = select.Where((o, ocs, oct) => childSelect.Where(osku => osku.OrderId == o.Id).Any());
} }
select = select.WhereIf(searchOrderRequest.OrderState != null, (o, ocs, oct, ods) => o.OrderState == searchOrderRequest.OrderState) select = select.WhereIf(searchOrderRequest.OrderState != null, (o, ocs, oct) => o.OrderState == searchOrderRequest.OrderState)
.WhereIf(searchOrderRequest.StartDate != null, (o, ocs, oct, ods) => o.StartTime >= searchOrderRequest.StartDate) .WhereIf(searchOrderRequest.StartDate != null, (o, ocs, oct) => o.StartTime >= searchOrderRequest.StartDate)
.WhereIf(searchOrderRequest.EndDate != null, (o, ocs, oct, ods) => o.StartTime <= searchOrderRequest.EndDate) .WhereIf(searchOrderRequest.EndDate != null, (o, ocs, oct) => o.StartTime <= searchOrderRequest.EndDate)
.WhereIf(searchOrderRequest.OnlyDF, (o, ocs, oct, ods) => o.StorageType == Enums.StorageType.) .WhereIf(searchOrderRequest.OnlyDF, (o, ocs, oct) => o.StorageType == Enums.StorageType.)
.WhereIf(searchOrderRequest.ExcludeCanceled, (o, ocs, oct, ods) => o.OrderState != Enums.OrderState.) .WhereIf(searchOrderRequest.ExcludeCanceled, (o, ocs, oct) => o.OrderState != Enums.OrderState.)
.WhereIf(searchOrderRequest.ExcludeSD && !searchOrderRequest.OnlyDF, (o, ocs, oct, ods) => o.StorageType == null || o.StorageType != Enums.StorageType.SD) .WhereIf(searchOrderRequest.ExcludeSD && !searchOrderRequest.OnlyDF, (o, ocs, oct) => o.StorageType == null || o.StorageType != Enums.StorageType.SD)
.WhereIf(string.IsNullOrEmpty(searchOrderRequest.ContactName) == false, (o, ocs, oct, ods) => ocs.ContactName == searchOrderRequest.ContactName) .WhereIf(string.IsNullOrEmpty(searchOrderRequest.ContactName) == false, (o, ocs, oct) => ocs.ContactName == searchOrderRequest.ContactName)
.WhereIf(string.IsNullOrEmpty(searchOrderRequest.Waybill) == false, (o, ocs, oct, ods) => o.WaybillNo == searchOrderRequest.Waybill); .WhereIf(string.IsNullOrEmpty(searchOrderRequest.Waybill) == false, (o, ocs, oct) => o.WaybillNo == searchOrderRequest.Waybill);
} }
select = select.Where((o, ocs, oct, ods) => o.ShopId == searchOrderRequest.ShopId) select = select.Where((o, ocs, oct) => o.ShopId == searchOrderRequest.ShopId)
.OrderByDescending((o, ocs, oct, ods) => o.StartTime) .OrderByDescending((o, ocs, oct) => o.StartTime)
.Count(out var total) .Count(out var total)
.Page(searchOrderRequest.PageIndex, searchOrderRequest.PageSize); .Page(searchOrderRequest.PageIndex, searchOrderRequest.PageSize);
var orderSourceList = select.ToList((o, ocs, oct, ods) => new Order() var orderSourceList = select.ToList((o, ocs, oct) => new Order()
{ {
Id = o.Id, Id = o.Id,
BuyerRemark = o.BuyerRemark, BuyerRemark = o.BuyerRemark,
@ -140,13 +139,13 @@ namespace BBWY.Server.Business
IsManualEdited = oct.IsManualEdited, IsManualEdited = oct.IsManualEdited,
SDCommissionAmount = oct.SDCommissionAmount, SDCommissionAmount = oct.SDCommissionAmount,
BuyerAccount = ods.BuyerAccount, //BuyerAccount = ods.BuyerAccount,
DeliveryFreight = ods.DeliveryFreight, //DeliveryFreight = ods.DeliveryFreight,
PurchaseOrderId = ods.PurchaseOrderId, //PurchaseOrderId = ods.PurchaseOrderId,
PurchasePlatform = ods.PurchasePlatform, //PurchasePlatform = ods.PurchasePlatform,
SellerAccount = ods.SellerAccount, //SellerAccount = ods.SellerAccount,
OrderDropShippingSkuAmount = ods.SkuAmount, //OrderDropShippingSkuAmount = ods.SkuAmount,
OrderDropShippingPurchaseFreight = ods.PurchaseFreight, //OrderDropShippingPurchaseFreight = ods.PurchaseFreight,
}); });
var orderList = orderSourceList.Map<IList<OrderResponse>>(); var orderList = orderSourceList.Map<IList<OrderResponse>>();
@ -154,10 +153,27 @@ namespace BBWY.Server.Business
{ {
var orderIdList = orderList.Select(o => o.Id).ToList(); var orderIdList = orderList.Select(o => o.Id).ToList();
#region 处理代发信息
var orderDropShippingList = fsql.Select<OrderDropShipping>().Where(ods => orderIdList.Contains(ods.OrderId)).ToList().Map<IList<OrderDropShippingResponse>>();
foreach (var order in orderList)
order.OrderDropShippingList = orderDropShippingList.Where(ods => ods.OrderId == order.Id).ToList();
#endregion
#region 处理Sku #region 处理Sku
var orderSkuList = fsql.Select<OrderSku>().Where(osku => orderIdList.Contains(osku.OrderId)).ToList().Map<IList<OrderSkuResponse>>(); var orderSkuList = fsql.Select<OrderSku>().Where(osku => orderIdList.Contains(osku.OrderId)).ToList().Map<IList<OrderSkuResponse>>();
foreach (var order in orderList) foreach (var order in orderList)
{
order.ItemList = orderSkuList.Where(osku => osku.OrderId == order.Id).ToList(); order.ItemList = orderSkuList.Where(osku => osku.OrderId == order.Id).ToList();
if (order.StorageType == Enums.StorageType.)
{
foreach (var orderSku in order.ItemList)
{
if (orderSku.OrderDropShippingId == null && (order.OrderDropShippingList?.Count() ?? 0) > 0)
orderSku.OrderDropShippingId = order.OrderDropShippingList[0].Id;
}
}
}
#endregion #endregion
#region 处理优惠券 #region 处理优惠券
@ -193,13 +209,12 @@ namespace BBWY.Server.Business
if (searchOrderRequest.EndDate != null) if (searchOrderRequest.EndDate != null)
searchOrderRequest.EndDate = searchOrderRequest.EndDate.Value.Date.AddDays(1).AddSeconds(-1); searchOrderRequest.EndDate = searchOrderRequest.EndDate.Value.Date.AddDays(1).AddSeconds(-1);
var select = fsql.Select<Order, OrderConsignee, OrderCost, OrderDropShipping>().LeftJoin((o, ocs, oct, ods) => o.Id == ocs.OrderId) var select = fsql.Select<Order, OrderConsignee, OrderCost>().LeftJoin((o, ocs, oct) => o.Id == ocs.OrderId)
.LeftJoin((o, ocs, oct, ods) => o.Id == oct.OrderId) .LeftJoin((o, ocs, oct) => o.Id == oct.OrderId);
.LeftJoin((o, ocs, oct, ods) => o.Id == ods.OrderId);
if (!string.IsNullOrEmpty(searchOrderRequest.OrderId)) if (!string.IsNullOrEmpty(searchOrderRequest.OrderId))
{ {
select = select.Where((o, ocs, oct, ods) => o.Id == searchOrderRequest.OrderId); select = select.Where((o, ocs, oct) => o.Id == searchOrderRequest.OrderId);
} }
else else
{ {
@ -208,23 +223,23 @@ namespace BBWY.Server.Business
var childSelect = fsql.Select<OrderSku>().As("osku") var childSelect = fsql.Select<OrderSku>().As("osku")
.WhereIf(string.IsNullOrEmpty(searchOrderRequest.Sku) == false, osku => osku.SkuId == searchOrderRequest.Sku) .WhereIf(string.IsNullOrEmpty(searchOrderRequest.Sku) == false, osku => osku.SkuId == searchOrderRequest.Sku)
.WhereIf(string.IsNullOrEmpty(searchOrderRequest.ProductNo) == false, osku => osku.ProductNo == searchOrderRequest.ProductNo); .WhereIf(string.IsNullOrEmpty(searchOrderRequest.ProductNo) == false, osku => osku.ProductNo == searchOrderRequest.ProductNo);
select = select.Where((o, ocs, oct, ods) => childSelect.Where(osku => osku.OrderId == o.Id).Any()); select = select.Where((o, ocs, oct) => childSelect.Where(osku => osku.OrderId == o.Id).Any());
} }
select = select.WhereIf(searchOrderRequest.OrderState != null, (o, ocs, oct, ods) => o.OrderState == searchOrderRequest.OrderState) select = select.WhereIf(searchOrderRequest.OrderState != null, (o, ocs, oct) => o.OrderState == searchOrderRequest.OrderState)
.WhereIf(searchOrderRequest.StartDate != null, (o, ocs, oct, ods) => o.StartTime >= searchOrderRequest.StartDate) .WhereIf(searchOrderRequest.StartDate != null, (o, ocs, oct) => o.StartTime >= searchOrderRequest.StartDate)
.WhereIf(searchOrderRequest.EndDate != null, (o, ocs, oct, ods) => o.StartTime <= searchOrderRequest.EndDate) .WhereIf(searchOrderRequest.EndDate != null, (o, ocs, oct) => o.StartTime <= searchOrderRequest.EndDate)
.WhereIf(searchOrderRequest.OnlyDF, (o, ocs, oct, ods) => o.StorageType == Enums.StorageType.) .WhereIf(searchOrderRequest.OnlyDF, (o, ocs, oct) => o.StorageType == Enums.StorageType.)
.WhereIf(searchOrderRequest.ExcludeCanceled, (o, ocs, oct, ods) => o.OrderState != Enums.OrderState.) .WhereIf(searchOrderRequest.ExcludeCanceled, (o, ocs, oct) => o.OrderState != Enums.OrderState.)
.WhereIf(searchOrderRequest.ExcludeSD && !searchOrderRequest.OnlyDF, (o, ocs, oct, ods) => o.StorageType == null || o.StorageType != Enums.StorageType.SD) .WhereIf(searchOrderRequest.ExcludeSD && !searchOrderRequest.OnlyDF, (o, ocs, oct) => o.StorageType == null || o.StorageType != Enums.StorageType.SD)
.WhereIf(string.IsNullOrEmpty(searchOrderRequest.ContactName) == false, (o, ocs, oct, ods) => ocs.ContactName == searchOrderRequest.ContactName) .WhereIf(string.IsNullOrEmpty(searchOrderRequest.ContactName) == false, (o, ocs, oct) => ocs.ContactName == searchOrderRequest.ContactName)
.WhereIf(string.IsNullOrEmpty(searchOrderRequest.Waybill) == false, (o, ocs, oct, ods) => o.WaybillNo == searchOrderRequest.Waybill); .WhereIf(string.IsNullOrEmpty(searchOrderRequest.Waybill) == false, (o, ocs, oct) => o.WaybillNo == searchOrderRequest.Waybill);
} }
select = select.Where((o, ocs, oct, ods) => o.ShopId == searchOrderRequest.ShopId) select = select.Where((o, ocs, oct) => o.ShopId == searchOrderRequest.ShopId)
.OrderByDescending((o, ocs, oct, ods) => o.StartTime); .OrderByDescending((o, ocs, oct) => o.StartTime);
var orderSourceList = select.ToList((o, ocs, oct, ods) => new ExportOrderResponse() var orderSourceList = select.ToList((o, ocs, oct) => new ExportOrderResponse()
{ {
OrderId = o.Id, OrderId = o.Id,
FreightPrice = o.FreightPrice, FreightPrice = o.FreightPrice,
@ -236,7 +251,7 @@ namespace BBWY.Server.Business
PlatformCommissionAmount = oct.PlatformCommissionAmount, PlatformCommissionAmount = oct.PlatformCommissionAmount,
Profit = oct.Profit, Profit = oct.Profit,
TotalCost = oct.SDCommissionAmount + oct.PlatformCommissionAmount + oct.PurchaseAmount + oct.DeliveryExpressFreight, TotalCost = oct.SDCommissionAmount + oct.PlatformCommissionAmount + oct.PurchaseAmount + oct.DeliveryExpressFreight,
PurchaseOrderIds = ods.PurchaseOrderId, //PurchaseOrderIds = ods.PurchaseOrderId,
OrderState = o.OrderState.Value OrderState = o.OrderState.Value
}); });
@ -250,6 +265,7 @@ namespace BBWY.Server.Business
FirstFreight = g.Sum(g.Value.FirstFreight), FirstFreight = g.Sum(g.Value.FirstFreight),
StorageAmount = g.Sum(g.Value.StorageAmount) StorageAmount = g.Sum(g.Value.StorageAmount)
}); });
var orderDropShippingList = fsql.Select<OrderDropShipping>().Where(ods => orderIdList.Contains(ods.OrderId)).ToList();
foreach (var order in orderSourceList) foreach (var order in orderSourceList)
{ {
@ -259,84 +275,86 @@ namespace BBWY.Server.Business
order.StorageAmount = statistics?.StorageAmount ?? 0M; order.StorageAmount = statistics?.StorageAmount ?? 0M;
order.SkuIds = string.Join("|", orderSkuList.Where(osku => osku.OrderId == order.OrderId).Select(osku => osku.SkuId)); order.SkuIds = string.Join("|", orderSkuList.Where(osku => osku.OrderId == order.OrderId).Select(osku => osku.SkuId));
order.ProfitRatio = order.TotalCost == 0 ? 0 : Math.Round(order.Profit / order.TotalCost * 100, 2); order.ProfitRatio = order.TotalCost == 0 ? 0 : Math.Round(order.Profit / order.TotalCost * 100, 2);
if (order.StorageType == Enums.StorageType.)
order.PurchaseOrderIds = string.Join("|", orderDropShippingList.Where(ods => ods.OrderId == order.OrderId).Select(ods => ods.PurchaseOrderId));
} }
return orderSourceList; return orderSourceList;
} }
public OrderResponse GetOrderById(string orderId) public OrderResponse GetOrderById(string orderId)
{ {
var order = fsql.Select<Order, OrderConsignee, OrderCost, OrderDropShipping>().LeftJoin((o, ocs, oct, ods) => o.Id == ocs.OrderId) var order = fsql.Select<Order, OrderConsignee, OrderCost>().LeftJoin((o, ocs, oct) => o.Id == ocs.OrderId)
.LeftJoin((o, ocs, oct, ods) => o.Id == oct.OrderId) .LeftJoin((o, ocs, oct) => o.Id == oct.OrderId)
.LeftJoin((o, ocs, oct, ods) => o.Id == ods.OrderId) .Where((o, ocs, oct) => o.Id == orderId)
.Where((o, ocs, oct, ods) => o.Id == orderId) .ToOne((o, ocs, oct) => new Order()
.ToOne((o, ocs, oct, ods) => new Order() {
{ Id = o.Id,
Id = o.Id, BuyerRemark = o.BuyerRemark,
BuyerRemark = o.BuyerRemark, EndTime = o.EndTime,
EndTime = o.EndTime, FreightPrice = o.FreightPrice,
FreightPrice = o.FreightPrice, ModifyTime = o.ModifyTime,
ModifyTime = o.ModifyTime, OrderPayment = o.OrderPayment,
OrderPayment = o.OrderPayment, OrderSellerPrice = o.OrderSellerPrice,
OrderSellerPrice = o.OrderSellerPrice, OrderState = o.OrderState,
OrderState = o.OrderState, OrderTotalPrice = o.OrderTotalPrice,
OrderTotalPrice = o.OrderTotalPrice, OrderType = o.OrderType,
OrderType = o.OrderType, PayType = o.PayType,
PayType = o.PayType, Platform = o.Platform,
Platform = o.Platform, ShopId = o.ShopId,
ShopId = o.ShopId, StartTime = o.StartTime,
StartTime = o.StartTime, StorageType = o.StorageType,
StorageType = o.StorageType, StoreId = o.StoreId,
StoreId = o.StoreId, StoreOrder = o.StoreOrder,
StoreOrder = o.StoreOrder, VenderRemark = o.VenderRemark,
VenderRemark = o.VenderRemark, PurchaseRemark = o.PurchaseRemark,
PurchaseRemark = o.PurchaseRemark, WaybillNo = o.WaybillNo,
WaybillNo = o.WaybillNo, Flag = o.Flag,
Flag = o.Flag, SDType = o.SDType,
SDType = o.SDType, SDKey = o.SDKey,
SDKey = o.SDKey, SDOperator = o.SDOperator,
SDOperator = o.SDOperator, SDPayBillNo = o.SDPayBillNo,
SDPayBillNo = o.SDPayBillNo, SDPayChannel = o.SDPayChannel,
SDPayChannel = o.SDPayChannel,
ContactName = ocs.ContactName,
ContactName = ocs.ContactName, Address = ocs.Address,
Address = ocs.Address, Province = ocs.Province,
Province = ocs.Province, County = ocs.County,
County = ocs.County, Town = ocs.Town,
Town = ocs.Town, City = ocs.City,
City = ocs.City, IsDecode = ocs.IsDecode,
IsDecode = ocs.IsDecode, Mobile = ocs.Mobile,
Mobile = ocs.Mobile, TelePhone = ocs.TelePhone,
TelePhone = ocs.TelePhone,
DeliveryExpressFreight = oct.DeliveryExpressFreight,
DeliveryExpressFreight = oct.DeliveryExpressFreight, PlatformCommissionAmount = oct.PlatformCommissionAmount,
PlatformCommissionAmount = oct.PlatformCommissionAmount, PlatformCommissionRatio = oct.PlatformCommissionRatio,
PlatformCommissionRatio = oct.PlatformCommissionRatio, PreferentialAmount = oct.PreferentialAmount,
PreferentialAmount = oct.PreferentialAmount, Profit = oct.Profit,
Profit = oct.Profit, PurchaseAmount = oct.PurchaseAmount,
PurchaseAmount = oct.PurchaseAmount, IsManualEdited = oct.IsManualEdited,
IsManualEdited = oct.IsManualEdited, SDCommissionAmount = oct.SDCommissionAmount
SDCommissionAmount = oct.SDCommissionAmount, });
BuyerAccount = ods.BuyerAccount,
DeliveryFreight = ods.DeliveryFreight,
PurchaseOrderId = ods.PurchaseOrderId,
PurchasePlatform = ods.PurchasePlatform,
SellerAccount = ods.SellerAccount,
OrderDropShippingSkuAmount = ods.SkuAmount,
OrderDropShippingPurchaseFreight = ods.PurchaseFreight,
});
if (order == null) if (order == null)
throw new BusinessException("订单不存在"); throw new BusinessException("订单不存在");
var orderResponse = order.Map<OrderResponse>(); var orderResponse = order.Map<OrderResponse>();
var orderSkuList = fsql.Select<OrderSku>().Where(osku => osku.OrderId == orderId).ToList().Map<IList<OrderSkuResponse>>(); var orderSkuList = fsql.Select<OrderSku>().Where(osku => osku.OrderId == orderId).ToList().Map<IList<OrderSkuResponse>>();
var orderCouponList = fsql.Select<OrderCoupon>().Where(oc => oc.OrderId == orderId).ToList().Map<IList<OrderCouponResponse>>(); var orderCouponList = fsql.Select<OrderCoupon>().Where(oc => oc.OrderId == orderId).ToList().Map<IList<OrderCouponResponse>>();
var orderCostDetailList = fsql.Select<OrderCostDetail>().Where(ocd => ocd.OrderId == orderId && ocd.IsEnabled == true).ToList().Map<IList<OrderCostDetailResponse>>(); var orderCostDetailList = fsql.Select<OrderCostDetail>().Where(ocd => ocd.OrderId == orderId && ocd.IsEnabled == true).ToList().Map<IList<OrderCostDetailResponse>>();
var orderDropShippingList = fsql.Select<OrderDropShipping>().Where(ods => ods.OrderId == orderId).ToList().Map<IList<OrderDropShippingResponse>>();
orderResponse.OrderDropShippingList = orderDropShippingList;
orderResponse.ItemList = orderSkuList; orderResponse.ItemList = orderSkuList;
if (order.StorageType == Enums.StorageType.)
{
foreach (var orderSku in orderResponse.ItemList)
{
if (orderSku.OrderDropShippingId == null && (orderResponse.OrderDropShippingList?.Count() ?? 0) > 0)
orderSku.OrderDropShippingId = orderResponse.OrderDropShippingList[0].Id;
}
}
orderResponse.OrderCouponList = orderCouponList; orderResponse.OrderCouponList = orderCouponList;
orderResponse.OrderCostDetailList = orderCostDetailList; orderResponse.OrderCostDetailList = orderCostDetailList;
orderResponse.StoreName = globalConfig.Stores.FirstOrDefault(s => s.StoreId == orderResponse.StoreId)?.StoreName ?? order.StoreId; orderResponse.StoreName = globalConfig.Stores.FirstOrDefault(s => s.StoreId == orderResponse.StoreId)?.StoreName ?? order.StoreId;
@ -735,21 +753,30 @@ namespace BBWY.Server.Business
IUpdate<OrderCost> updateOrderCost = null; IUpdate<OrderCost> updateOrderCost = null;
IDelete<PurchaseOrder> deletePurchaseOrder = null; IDelete<PurchaseOrder> deletePurchaseOrder = null;
IDelete<OrderCostDetail> deleteOrderCostDetail = null; IDelete<OrderCostDetail> deleteOrderCostDetail = null;
IUpdate<OrderSku> updateOrderSku = null;
List<PurchaseOrder> insertPurchaseOrderList = new List<PurchaseOrder>(); List<PurchaseOrder> insertPurchaseOrderList = new List<PurchaseOrder>();
List<OrderCostDetail> insertOrderCostDetailList = new List<OrderCostDetail>(); List<OrderCostDetail> insertOrderCostDetailList = new List<OrderCostDetail>();
#region 代发信息表 #region 代发信息表
var orderDropShipping = relationPurchaseOrderRequest.OrderDropShipping.Map<OrderDropShipping>(); var dbOrderDropShipping = fsql.Select<OrderDropShipping>().Where(ods => ods.OrderId == relationPurchaseOrderRequest.OrderDropShipping.OrderId).ToOne();
if (fsql.Select<OrderDropShipping>(relationPurchaseOrderRequest.OrderDropShipping.OrderId).Any()) if (dbOrderDropShipping == null)
updateOrderDropShipping = fsql.Update<OrderDropShipping>().SetSource(orderDropShipping);
else
{ {
var orderDropShipping = relationPurchaseOrderRequest.OrderDropShipping.Map<OrderDropShipping>();
orderDropShipping.CreateTime = DateTime.Now; orderDropShipping.CreateTime = DateTime.Now;
orderDropShipping.ShopId = dbOrder.ShopId; orderDropShipping.ShopId = dbOrder.ShopId;
orderDropShipping.Id = idGenerator.NewLong();
insertOrderDropShipping = fsql.Insert(orderDropShipping); insertOrderDropShipping = fsql.Insert(orderDropShipping);
updateOrderSku = fsql.Update<OrderSku>().Set(osku => osku.OrderDropShippingId, orderDropShipping.Id)
.Where(osku => osku.OrderId == dbOrder.Id);
}
else
{
var orderDropShippingId = dbOrderDropShipping.Id;
relationPurchaseOrderRequest.OrderDropShipping.Map(dbOrderDropShipping);
dbOrderDropShipping.Id = orderDropShippingId;
updateOrderDropShipping = fsql.Update<OrderDropShipping>().IgnoreColumns(new string[] { "CreateTime" }).SetSource(dbOrderDropShipping);
} }
#endregion #endregion
#region 采购单表 #region 采购单表
@ -859,6 +886,7 @@ namespace BBWY.Server.Business
updateOrderDropShipping?.ExecuteAffrows(); updateOrderDropShipping?.ExecuteAffrows();
insertOrderCost?.ExecuteAffrows(); insertOrderCost?.ExecuteAffrows();
updateOrderCost?.ExecuteAffrows(); updateOrderCost?.ExecuteAffrows();
updateOrderSku?.ExecuteAffrows();
fsql.Insert(insertPurchaseOrderList).ExecuteAffrows(); fsql.Insert(insertPurchaseOrderList).ExecuteAffrows();
fsql.Insert(insertOrderCostDetailList).ExecuteAffrows(); fsql.Insert(insertOrderCostDetailList).ExecuteAffrows();
if (dbOrder.StorageType != Enums.StorageType.) if (dbOrder.StorageType != Enums.StorageType.)

127
BBWY.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs

@ -103,124 +103,6 @@ namespace BBWY.Server.Business
return platformSDKBusinessList.FirstOrDefault(p => p.Platform == previewOrderReuqest.Platform).PreviewOrder(previewOrderReuqest); return platformSDKBusinessList.FirstOrDefault(p => p.Platform == previewOrderReuqest.Platform).PreviewOrder(previewOrderReuqest);
} }
public void FastCreateOrder(CreateOnlinePurchaseOrderRequest createOnlinePurchaseOrderRequest)
{
if (createOnlinePurchaseOrderRequest.Platform != Enums.Platform.)
throw new NotImplementedException();
var dbOrder = fsql.Select<Order>(createOnlinePurchaseOrderRequest.OrderId).ToOne();
if (dbOrder == null)
throw new BusinessException("订单不存在");
//if (dbOrder.OrderState != Model.Enums.OrderState.等待采购)
// throw new BusinessException("只能为等待采购的订单进行采购");
var orderSku = fsql.Select<OrderSku>().Where(osku => osku.OrderId == createOnlinePurchaseOrderRequest.OrderId).ToOne();
if (orderSku == null)
throw new BusinessException("订单Sku不存在");
var createOrderResponse = platformSDKBusinessList.FirstOrDefault(p => p.Platform == createOnlinePurchaseOrderRequest.Platform)
.FastCreateOrder(createOnlinePurchaseOrderRequest);
IInsert<PurchaseOrder> insertPurchaseOrder = null;
IInsert<OrderCostDetail> insertOrderCostDetail = null;
IInsert<OrderCost> insertOrderCost = null;
IInsert<OrderDropShipping> insertOrderDropShipping = null;
#region 采购单
var purchaseOrder = new PurchaseOrder()
{
Id = idGenerator.NewLong(),
CreateTime = DateTime.Now,
ProductId = orderSku.ProductId,
SkuId = orderSku.SkuId,
PurchaseMethod = Enums.PurchaseMethod.线,
PurchaseOrderId = createOrderResponse.PurchaseOrderId,
PurchasePlatform = createOnlinePurchaseOrderRequest.Platform,
PurchaseQuantity = orderSku.ItemTotal.Value,
RemainingQuantity = 0,
ShopId = createOnlinePurchaseOrderRequest.ShopId,
SingleConsumableAmount = 0,
SingleDeliveryFreight = 0,
SingleFirstFreight = 0,
SingleStorageAmount = 0,
SingleOperationAmount = 0,
SingleSkuAmount = createOrderResponse.ProductAmount / orderSku.ItemTotal.Value,
SingleFreight = createOrderResponse.FreightAmount / orderSku.ItemTotal.Value,
StorageType = Enums.StorageType.
};
insertPurchaseOrder = fsql.Insert(purchaseOrder);
#endregion
#region 成本明细
var orderCostDetail = new OrderCostDetail()
{
Id = idGenerator.NewLong(),
ConsumableAmount = 0,
CreateTime = DateTime.Now,
DeductionQuantity = orderSku.ItemTotal.Value,
DeliveryExpressFreight = 0,
FirstFreight = 0,
OperationAmount = 0,
OrderId = createOnlinePurchaseOrderRequest.OrderId,
ProductId = orderSku.ProductId,
PurchaseFreight = createOrderResponse.FreightAmount,
PurchaseOrderPKId = purchaseOrder.Id,
SkuAmount = createOrderResponse.ProductAmount,
SkuId = orderSku.SkuId,
StorageAmount = 0,
UnitCost = purchaseOrder.UnitCost,
TotalCost = createOrderResponse.TotalAmount //purchaseOrder.UnitCost * orderSku.ItemTotal.Value
};
insertOrderCostDetail = fsql.Insert(orderCostDetail);
#endregion
#region 订单成本
var orderCost = new OrderCost()
{
OrderId = orderSku.OrderId,
CreateTime = DateTime.Now,
DeliveryExpressFreight = 0,
IsManualEdited = false,
PlatformCommissionRatio = 0.05M,
PreferentialAmount = dbOrder.PreferentialAmount,
SDCommissionAmount = 0,
PurchaseAmount = createOrderResponse.TotalAmount
};
orderCost.PlatformCommissionAmount = dbOrder.OrderSellerPrice * orderCost.PlatformCommissionRatio;
orderCost.Profit = dbOrder.OrderSellerPrice +
dbOrder.FreightPrice -
orderCost.PurchaseAmount -
orderCost.DeliveryExpressFreight -
orderCost.PlatformCommissionAmount;
insertOrderCost = fsql.Insert(orderCost);
#endregion
#region 采购信息
var orderDropShipping = new OrderDropShipping()
{
OrderId = createOnlinePurchaseOrderRequest.OrderId,
PurchaseAccountId = createOnlinePurchaseOrderRequest.PurchaseAccountId,
BuyerAccount = createOnlinePurchaseOrderRequest.BuyerAccount,
SellerAccount = createOnlinePurchaseOrderRequest.SellerAccount,
CreateTime = DateTime.Now,
DeliveryFreight = 0,
PurchaseAmount = createOrderResponse.TotalAmount,
PurchaseOrderId = createOrderResponse.PurchaseOrderId,
PurchasePlatform = createOnlinePurchaseOrderRequest.Platform
};
insertOrderDropShipping = fsql.Insert(orderDropShipping);
#endregion
fsql.Transaction(() =>
{
insertPurchaseOrder.ExecuteAffrows();
insertOrderCostDetail.ExecuteAffrows();
insertOrderCost.ExecuteAffrows();
insertOrderDropShipping.ExecuteAffrows();
fsql.Update<Order>(createOnlinePurchaseOrderRequest.OrderId).SetIf(dbOrder.OrderState == Enums.OrderState., o => o.OrderState, Model.Enums.OrderState.)
.Set(o => o.StorageType, Model.Enums.StorageType.)
.ExecuteAffrows();
});
}
public void NewFastCreateOrder(CreateOnlinePurchaseOrderRequest createOnlinePurchaseOrderRequest) public void NewFastCreateOrder(CreateOnlinePurchaseOrderRequest createOnlinePurchaseOrderRequest)
{ {
if (createOnlinePurchaseOrderRequest.PlatformCommissionRatio == 0M) if (createOnlinePurchaseOrderRequest.PlatformCommissionRatio == 0M)
@ -255,6 +137,7 @@ namespace BBWY.Server.Business
#endregion #endregion
var orderSkus = fsql.Select<OrderSku>().Where(osku => osku.OrderId == createOnlinePurchaseOrderRequest.OrderId).ToList(); var orderSkus = fsql.Select<OrderSku>().Where(osku => osku.OrderId == createOnlinePurchaseOrderRequest.OrderId).ToList();
var orderSkuIds = orderSkus.Select(osku => osku.Id).ToList();
var createOrderResponse = platformSDKBusinessList.FirstOrDefault(p => p.Platform == createOnlinePurchaseOrderRequest.Platform) var createOrderResponse = platformSDKBusinessList.FirstOrDefault(p => p.Platform == createOnlinePurchaseOrderRequest.Platform)
.FastCreateOrder(createOnlinePurchaseOrderRequest); .FastCreateOrder(createOnlinePurchaseOrderRequest);
@ -373,6 +256,7 @@ namespace BBWY.Server.Business
#region 代发信息 #region 代发信息
var orderDropShipping = new OrderDropShipping() var orderDropShipping = new OrderDropShipping()
{ {
Id = idGenerator.NewLong(),
OrderId = createOnlinePurchaseOrderRequest.OrderId, OrderId = createOnlinePurchaseOrderRequest.OrderId,
PurchaseAccountId = createOnlinePurchaseOrderRequest.PurchaseAccountId, PurchaseAccountId = createOnlinePurchaseOrderRequest.PurchaseAccountId,
BuyerAccount = createOnlinePurchaseOrderRequest.BuyerAccount, BuyerAccount = createOnlinePurchaseOrderRequest.BuyerAccount,
@ -394,11 +278,14 @@ namespace BBWY.Server.Business
fsql.Insert(insertPurchaseOrders).ExecuteAffrows(); fsql.Insert(insertPurchaseOrders).ExecuteAffrows();
fsql.Insert(insertPurchaseOrderDetails).ExecuteAffrows(); fsql.Insert(insertPurchaseOrderDetails).ExecuteAffrows();
fsql.Insert(insertOrderCostDetails).ExecuteAffrows(); fsql.Insert(insertOrderCostDetails).ExecuteAffrows();
insertOrderCost.ExecuteAffrows(); insertOrderCost?.ExecuteAffrows();
insertOrderDropShipping.ExecuteAffrows(); insertOrderDropShipping?.ExecuteAffrows();
fsql.Update<Order>(createOnlinePurchaseOrderRequest.OrderId).SetIf(dbOrder.OrderState == Enums.OrderState., o => o.OrderState, Model.Enums.OrderState.) fsql.Update<Order>(createOnlinePurchaseOrderRequest.OrderId).SetIf(dbOrder.OrderState == Enums.OrderState., o => o.OrderState, Model.Enums.OrderState.)
.Set(o => o.StorageType, Model.Enums.StorageType.) .Set(o => o.StorageType, Model.Enums.StorageType.)
.ExecuteAffrows(); .ExecuteAffrows();
fsql.Update<OrderSku>().Set(osku => osku.OrderDropShippingId, orderDropShipping.Id)
.Where(osku => orderSkuIds.Contains(osku.Id))
.ExecuteAffrows();
}); });
} }

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

@ -241,41 +241,41 @@ namespace BBWY.Server.Model.Db
#endregion #endregion
#region 代发信息 #region 代发信息
/// <summary> ///// <summary>
/// 买家账号 ///// 买家账号
/// </summary> ///// </summary>
[Column(IsIgnore = true)] //[Column(IsIgnore = true)]
public string BuyerAccount { get; set; } //public string BuyerAccount { get; set; }
/// <summary> ///// <summary>
/// 发货运费 ///// 发货运费
/// </summary> ///// </summary>
[Column(IsIgnore = true)] //[Column(IsIgnore = true)]
public decimal DeliveryFreight { get; set; } = 0.00M; //public decimal DeliveryFreight { get; set; } = 0.00M;
/// <summary> ///// <summary>
/// 采购单号 ///// 采购单号
/// </summary> ///// </summary>
[Column(IsIgnore = true)] //[Column(IsIgnore = true)]
public string PurchaseOrderId { get; set; } //public string PurchaseOrderId { get; set; }
/// <summary> ///// <summary>
/// 采购平台 ///// 采购平台
/// </summary> ///// </summary>
[Column(IsIgnore = true)] //[Column(IsIgnore = true)]
public Enums.Platform? PurchasePlatform { get; set; } //public Enums.Platform? PurchasePlatform { get; set; }
/// <summary> ///// <summary>
/// 卖家账号 ///// 卖家账号
/// </summary> ///// </summary>
[Column(IsIgnore = true)] //[Column(IsIgnore = true)]
public string SellerAccount { get; set; } //public string SellerAccount { get; set; }
[Column(IsIgnore = true)] //[Column(IsIgnore = true)]
public decimal OrderDropShippingSkuAmount { get; set; } //public decimal OrderDropShippingSkuAmount { get; set; }
[Column(IsIgnore = true)] //[Column(IsIgnore = true)]
public decimal OrderDropShippingPurchaseFreight { get; set; } //public decimal OrderDropShippingPurchaseFreight { get; set; }
#endregion #endregion
} }

11
BBWY.Server.Model/Db/Order/OrderDropShipping.cs

@ -10,8 +10,11 @@ namespace BBWY.Server.Model.Db
[Table(Name = "orderdropshipping", DisableSyncStructure = true)] [Table(Name = "orderdropshipping", DisableSyncStructure = true)]
public partial class OrderDropShipping public partial class OrderDropShipping
{ {
[Column(DbType = "bigint(1)", IsPrimary = true)]
public long Id { get; set; }
[Column(StringLength = 50, IsPrimary = true, IsNullable = false)]
[Column(StringLength = 50, IsNullable = false)]
public string OrderId { get; set; } public string OrderId { get; set; }
/// <summary> /// <summary>
@ -58,6 +61,12 @@ namespace BBWY.Server.Model.Db
[Column(StringLength = 200)] [Column(StringLength = 200)]
public string PurchaseOrderId { get; set; } public string PurchaseOrderId { get; set; }
/// <summary>
/// 商户订单号
/// </summary>
[Column(StringLength = 50, IsNullable = true)]
public string MerchantOrderId { get; set; }
/// <summary> /// <summary>
/// 采购平台 /// 采购平台
/// </summary> /// </summary>

8
BBWY.Server.Model/Db/Order/OrderSku.cs

@ -8,7 +8,7 @@ namespace BBWY.Server.Model.Db
public partial class OrderSku public partial class OrderSku
{ {
[Column(IsPrimary = true)] [Column(DbType = "bigint(1)", IsPrimary = true)]
public long Id { get; set; } public long Id { get; set; }
[Column(DbType = "datetime")] [Column(DbType = "datetime")]
@ -49,6 +49,12 @@ namespace BBWY.Server.Model.Db
[Column(StringLength = 255)] [Column(StringLength = 255)]
public string Logo { get; set; } public string Logo { get; set; }
/// <summary>
/// 代发信息Id
/// </summary>
[Column(DbType = "bigint(1)", IsNullable = true)]
public long? OrderDropShippingId { get; set; }
} }
} }

2
BBWY.Server.Model/Dto/Response/Order/OrderResponse.cs

@ -177,7 +177,7 @@ namespace BBWY.Server.Model.Dto
/// <summary> /// <summary>
/// 代发信息 /// 代发信息
/// </summary> /// </summary>
public OrderDropShippingResponse OrderDropShipping { get; set; } public IList<OrderDropShippingResponse> OrderDropShippingList { get; set; }
} }
public class OrderListResponse public class OrderListResponse

7
BBWY.Server.Model/Dto/Response/Order/OrderSkuResponse.cs

@ -1,6 +1,6 @@
namespace BBWY.Server.Model.Dto namespace BBWY.Server.Model.Dto
{ {
public class OrderSkuResponse: ProductSkuResponse public class OrderSkuResponse : ProductSkuResponse
{ {
public string OrderId { get; set; } public string OrderId { get; set; }
@ -10,5 +10,10 @@
public int ItemTotal { get; set; } public int ItemTotal { get; set; }
public string ProductNo { get; set; } public string ProductNo { get; set; }
/// <summary>
/// 代发信息Id
/// </summary>
public long? OrderDropShippingId { get; set; }
} }
} }

21
BBWY.Server.Model/MappingProfiles.cs

@ -25,6 +25,7 @@ namespace BBWY.Server.Model
CreateMap<PurchaseOrder, PurchaseOrderResponse>(); CreateMap<PurchaseOrder, PurchaseOrderResponse>();
CreateMap<OrderDropShippingRequest, OrderDropShipping>(); CreateMap<OrderDropShippingRequest, OrderDropShipping>();
CreateMap<OrderDropShipping, OrderDropShippingResponse>();
CreateMap<OrderCostDetailRequest, OrderCostDetail>(); CreateMap<OrderCostDetailRequest, OrderCostDetail>();
CreateMap<OrderCostDetail, OrderCostDetailResponse>(); CreateMap<OrderCostDetail, OrderCostDetailResponse>();
CreateMap<OrderConsignee, ConsigneeResponse>(); CreateMap<OrderConsignee, ConsigneeResponse>();
@ -51,16 +52,16 @@ namespace BBWY.Server.Model
.ForPath(t => t.OrderCost.PlatformCommissionRatio, opt => opt.MapFrom(f => f.PlatformCommissionRatio ?? 0)) .ForPath(t => t.OrderCost.PlatformCommissionRatio, opt => opt.MapFrom(f => f.PlatformCommissionRatio ?? 0))
.ForPath(t => t.OrderCost.PreferentialAmount, opt => opt.MapFrom(f => f.PreferentialAmount)) .ForPath(t => t.OrderCost.PreferentialAmount, opt => opt.MapFrom(f => f.PreferentialAmount))
.ForPath(t => t.OrderCost.IsManualEdited, opt => opt.MapFrom(f => f.IsManualEdited)) .ForPath(t => t.OrderCost.IsManualEdited, opt => opt.MapFrom(f => f.IsManualEdited))
.ForPath(t => t.OrderCost.SDCommissionAmount, opt => opt.MapFrom(f => f.SDCommissionAmount)) .ForPath(t => t.OrderCost.SDCommissionAmount, opt => opt.MapFrom(f => f.SDCommissionAmount));
.ForPath(t => t.OrderDropShipping.PurchaseAmount, opt => opt.MapFrom(f => f.PurchaseAmount)) //.ForPath(t => t.OrderDropShipping.PurchaseAmount, opt => opt.MapFrom(f => f.PurchaseAmount))
.ForPath(t => t.OrderDropShipping.PurchaseOrderId, opt => opt.MapFrom(f => f.PurchaseOrderId)) //.ForPath(t => t.OrderDropShipping.PurchaseOrderId, opt => opt.MapFrom(f => f.PurchaseOrderId))
.ForPath(t => t.OrderDropShipping.OrderId, opt => opt.MapFrom(f => f.Id)) //.ForPath(t => t.OrderDropShipping.OrderId, opt => opt.MapFrom(f => f.Id))
.ForPath(t => t.OrderDropShipping.DeliveryFreight, opt => opt.MapFrom(f => f.DeliveryFreight)) //.ForPath(t => t.OrderDropShipping.DeliveryFreight, opt => opt.MapFrom(f => f.DeliveryFreight))
.ForPath(t => t.OrderDropShipping.PurchasePlatform, opt => opt.MapFrom(f => f.PurchasePlatform)) //.ForPath(t => t.OrderDropShipping.PurchasePlatform, opt => opt.MapFrom(f => f.PurchasePlatform))
.ForPath(t => t.OrderDropShipping.BuyerAccount, opt => opt.MapFrom(f => f.BuyerAccount)) //.ForPath(t => t.OrderDropShipping.BuyerAccount, opt => opt.MapFrom(f => f.BuyerAccount))
.ForPath(t => t.OrderDropShipping.SellerAccount, opt => opt.MapFrom(f => f.SellerAccount)) //.ForPath(t => t.OrderDropShipping.SellerAccount, opt => opt.MapFrom(f => f.SellerAccount))
.ForPath(t => t.OrderDropShipping.SkuAmount, opt => opt.MapFrom(f => f.OrderDropShippingSkuAmount)) //.ForPath(t => t.OrderDropShipping.SkuAmount, opt => opt.MapFrom(f => f.OrderDropShippingSkuAmount))
.ForPath(t => t.OrderDropShipping.PurchaseFreight, opt => opt.MapFrom(f => f.OrderDropShippingPurchaseFreight)); //.ForPath(t => t.OrderDropShipping.PurchaseFreight, opt => opt.MapFrom(f => f.OrderDropShippingPurchaseFreight));
} }
} }

2
BBWY.Test/BBWY.Test.csproj

@ -6,6 +6,8 @@
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
<PackageReference Include="FreeSql" Version="2.6.100" />
<PackageReference Include="FreeSql.Provider.MySql" Version="2.6.100" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.1" /> <PackageReference Include="Newtonsoft.Json" Version="13.0.1" />
</ItemGroup> </ItemGroup>

48
BBWY.Test/Program.cs

@ -1,5 +1,6 @@
using BBWY.Common.Models; using BBWY.Common.Models;
using BBWY.JDSDK.Request; using BBWY.JDSDK.Request;
using BBWY.Server.Model.Db;
using BBWY.Server.Model.Dto; using BBWY.Server.Model.Dto;
using Jd.Api; using Jd.Api;
using Jd.Api.Request; using Jd.Api.Request;
@ -10,6 +11,7 @@ using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text; using System.Text;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading.Tasks;
using io = System.IO; using io = System.IO;
namespace BBWY.Test namespace BBWY.Test
{ {
@ -22,16 +24,44 @@ namespace BBWY.Test
static void Main(string[] args) static void Main(string[] args)
{ {
var jdClient = GetJdClient("120EA9EC65AB017567D78CC1139EEEA5", "866a9877f5f24b03b537483b4defe75d"); var sqlConnectString = "data source=rm-bp1508okrh23710yfao.mysql.rds.aliyuncs.com;port=3306;user id=qyroot;password=kaicn1132+-;initial catalog=bbwy_test;charset=utf8;sslmode=none;";
var response = jdClient.Execute(new FceAlphaGetVenderCarrierRequest(), "940b1e24d84843ffbbee3833984a6f0bwyjf", DateTime.Now.ToLocalTime()); var fsql = new FreeSql.FreeSqlBuilder().UseConnectionString(FreeSql.DataType.MySql, sqlConnectString).Build();
if (response.IsError) var orderDropShippingList = fsql.Select<OrderSku, OrderDropShipping>()
throw new BusinessException($"{response.RealErrorMsg}"); .InnerJoin((osku, ods) => osku.OrderId == ods.OrderId)
//if (response.Json == null) .Where((osku, ods) => osku.OrderDropShippingId == null)
// response.Json = JObject.Parse(response.Body); .ToList((osku, ods) => new OrderDropShipping
{
Id = ods.Id,
OrderId = ods.OrderId
});
var orderDropShoppingCount = orderDropShippingList.Count();
var threadCount = 3;
var perTaskCount = orderDropShoppingCount / threadCount;
var lastTaskCount = orderDropShoppingCount % threadCount;
Action<IList<OrderDropShipping>, int, int> insertAction = (taskList, threadIndex, lessCount) =>
{
foreach (var ods in taskList)
{
fsql.Update<OrderSku>().Set(osku => osku.OrderDropShippingId, ods.Id).Where(osku => osku.OrderId == ods.OrderId).ExecuteAffrows();
lessCount--;
Console.WriteLine($"ThreadId:{threadIndex} OrderDropShippingId {ods.Id},Less {lessCount}");
}
};
for (var i = 0; i < threadCount; i++)
{
var taskList = orderDropShippingList.Skip(i * perTaskCount).Take(perTaskCount + (i == threadCount - 1 ? lastTaskCount : 0)).ToList();
var threadIndex = i;
Task.Factory.StartNew(() =>
{
var lessCount = taskList.Count();
insertAction(taskList, threadIndex, lessCount);
});
}
Console.Write(JsonConvert.SerializeObject(response));
//orderCount = sopResponse.Json["jingdong_pop_order_enSearch_responce"]["searchorderinfo_result"].Value<int>("orderTotal");
//orderJtokens.AddRange((JArray)sopResponse.Json["jingdong_pop_order_enSearch_responce"]["searchorderinfo_result"]["orderInfoList"]);
Console.ReadKey(); Console.ReadKey();
} }
} }

Loading…
Cancel
Save