diff --git a/BBWY.Server.API/Controllers/OrderController.cs b/BBWY.Server.API/Controllers/OrderController.cs
index d5590c07..5d9bdb61 100644
--- a/BBWY.Server.API/Controllers/OrderController.cs
+++ b/BBWY.Server.API/Controllers/OrderController.cs
@@ -144,5 +144,27 @@ namespace BBWY.Server.API.Controllers
{
return orderBusiness.SDGroupPullOrder(request);
}
+
+ ///
+ /// 查询订单SKU列表
+ ///
+ ///
+ ///
+ [HttpPost]
+ public ExportOrderSkuListResponse QueryOrderSkuList([FromBody] QueryOrderSkuRequest request)
+ {
+ return orderBusiness.QueryOrderSkuList(request);
+ }
+
+ ///
+ /// 导出订单SKU列表
+ ///
+ ///
+ ///
+ [HttpPost]
+ public IList ExportOrderSkuList([FromBody] ExportOrderSkuRequest request)
+ {
+ return orderBusiness.ExportOrderSkuList(request);
+ }
}
}
diff --git a/BBWY.Server.Business/Order/OrderBusiness.cs b/BBWY.Server.Business/Order/OrderBusiness.cs
index 59f0c485..870349cf 100644
--- a/BBWY.Server.Business/Order/OrderBusiness.cs
+++ b/BBWY.Server.Business/Order/OrderBusiness.cs
@@ -33,6 +33,9 @@ namespace BBWY.Server.Business
private Lazy freeSqlMultiDBManagerLazy;
private FreeSqlMultiDBManager freeSqlMultiDBManager => freeSqlMultiDBManagerLazy.Value;
+ private Lazy venderBusinessLazy;
+ private VenderBusiness venderBusiness => venderBusinessLazy.Value;
+
private IMemoryCache memoryCache;
private static TimeSpan sdGroupExpirationTimeSpan = TimeSpan.FromMinutes(20);
@@ -48,6 +51,7 @@ namespace BBWY.Server.Business
this.memoryCache = memoryCache;
freeSqlMultiDBManagerLazy = new Lazy(() => serviceProvider.GetService());
productBusinessLazy = new Lazy(() => serviceProvider.GetService());
+ venderBusinessLazy = new Lazy(() => serviceProvider.GetService());
}
private ISelect GetOrderListQueryConditions(SearchOrderRequest searchOrderRequest)
@@ -1102,5 +1106,81 @@ namespace BBWY.Server.Business
}
return orderResponse;
}
+
+
+ private ISelect GetQueryOrderSkuListConditions(ExportOrderSkuRequest request)
+ {
+ var select = fsql.Select()
+ .InnerJoin((osku, o, ocd, po, p) => osku.OrderId == o.Id)
+ .InnerJoin((osku, o, ocd, po, p) => osku.OrderId == ocd.OrderId && osku.SkuId == ocd.SkuId)
+ .InnerJoin((osku, o, ocd, po, p) => ocd.PurchaseOrderPKId == po.Id)
+ .LeftJoin((osku, o, ocd, po, p) => osku.ProductId == p.Id)
+ .WhereIf(request.ShopIds != null && request.ShopIds.Count() > 0, (osku, o, ocd, po, p) => request.ShopIds.Contains(o.ShopId))
+ .WhereIf(request.PurchasePlatform != null, (osku, o, ocd, po, p) => po.PurchasePlatform == request.PurchasePlatform)
+ .Where((osku, o, ocd, po, p) => o.StartTime >= request.StartTime &&
+ o.StartTime <= request.EndTime &&
+ o.OrderState != Enums.OrderState.已取消)
+ .OrderByDescending((osku, o, ocd, po, p) => o.StartTime);
+ return select;
+ }
+
+ private Expression> GetQueryOrderSkuListField()
+ {
+ return (osku, o, ocd, po, p) => new ExportOrderSkuResponse()
+ {
+ ItemTotal = osku.ItemTotal,
+ OrderId = osku.OrderId,
+ PurchaseFreight = ocd.PurchaseFreight,
+ PurchaseSkuAmount = ocd.SkuAmount,
+ ShopId = o.ShopId,
+ Sku = osku.SkuId,
+ SkuPrice = osku.Price,
+ Spu = osku.ProductId,
+ SpuName = p.Title,
+ StartTime = o.StartTime,
+ StorageType = o.StorageType
+ };
+ }
+
+ public ExportOrderSkuListResponse QueryOrderSkuList(QueryOrderSkuRequest request)
+ {
+ request.EndTime = request.EndTime.Date.AddDays(1).AddSeconds(-1);
+ var select = GetQueryOrderSkuListConditions(request);
+ var list = select.Count(out long count).Page(request.PageIndex, request.PageSize).ToList(GetQueryOrderSkuListField());
+
+ if (list.Count() > 0)
+ {
+ var shops = venderBusiness.GetShopList();
+ foreach (var item in list)
+ {
+ var shopId = item.ShopId.ToString();
+ item.ShopName = shops.Where(s => s.ShopId == shopId).FirstOrDefault()?.ShopName;
+ }
+ }
+
+ return new ExportOrderSkuListResponse()
+ {
+ Count = count,
+ ItemList = list
+ };
+ }
+
+ public IList ExportOrderSkuList(ExportOrderSkuRequest request)
+ {
+ request.EndTime = request.EndTime.Date.AddDays(1).AddSeconds(-1);
+ var select = GetQueryOrderSkuListConditions(request);
+ var list = select.ToList(GetQueryOrderSkuListField());
+
+ if (list.Count() > 0)
+ {
+ var shops = venderBusiness.GetShopList();
+ foreach (var item in list)
+ {
+ var shopId = item.ShopId.ToString();
+ item.ShopName = shops.Where(s => s.ShopId == shopId).FirstOrDefault()?.ShopName;
+ }
+ }
+ return list;
+ }
}
}
diff --git a/BBWY.Server.Model/Dto/Request/Order/QueryOrderSkuRequest.cs b/BBWY.Server.Model/Dto/Request/Order/QueryOrderSkuRequest.cs
new file mode 100644
index 00000000..b013c54f
--- /dev/null
+++ b/BBWY.Server.Model/Dto/Request/Order/QueryOrderSkuRequest.cs
@@ -0,0 +1,23 @@
+using System;
+using System.Collections.Generic;
+
+namespace BBWY.Server.Model.Dto
+{
+ public class QueryOrderSkuRequest : ExportOrderSkuRequest
+ {
+ public int PageIndex { get; set; }
+
+ public int PageSize { get; set; }
+ }
+
+ public class ExportOrderSkuRequest
+ {
+ public List ShopIds { get; set; }
+
+ public Enums.Platform? PurchasePlatform { get; set; }
+
+ public DateTime StartTime { get; set; }
+
+ public DateTime EndTime { get; set; }
+ }
+}
diff --git a/BBWY.Server.Model/Dto/Response/Order/ExportOrderSkuResponse.cs b/BBWY.Server.Model/Dto/Response/Order/ExportOrderSkuResponse.cs
new file mode 100644
index 00000000..a0d779e6
--- /dev/null
+++ b/BBWY.Server.Model/Dto/Response/Order/ExportOrderSkuResponse.cs
@@ -0,0 +1,39 @@
+using System;
+using System.Collections.Generic;
+
+namespace BBWY.Server.Model.Dto
+{
+ public class ExportOrderSkuResponse
+ {
+ public string OrderId { get; set; }
+
+ public DateTime? StartTime { get; set; }
+
+ public long ShopId { get; set; }
+
+ public string ShopName { get; set; }
+
+ public string Spu { get; set; }
+
+ public string Sku { get; set; }
+
+ public Enums.StorageType? StorageType { get; set; }
+
+ public decimal? PurchaseSkuAmount { get; set; }
+
+ public decimal? PurchaseFreight { get; set; }
+
+ public decimal? SkuPrice { get; set; }
+
+ public int? ItemTotal { get; set; }
+
+ public string SpuName { get; set; }
+ }
+
+ public class ExportOrderSkuListResponse
+ {
+ public long Count { get; set; }
+
+ public IList ItemList { get; set; }
+ }
+}