Browse Source

新增订单sku查询

AddValidOverTime
shanji 2 years ago
parent
commit
b5ea53a858
  1. 22
      BBWY.Server.API/Controllers/OrderController.cs
  2. 80
      BBWY.Server.Business/Order/OrderBusiness.cs
  3. 23
      BBWY.Server.Model/Dto/Request/Order/QueryOrderSkuRequest.cs
  4. 39
      BBWY.Server.Model/Dto/Response/Order/ExportOrderSkuResponse.cs

22
BBWY.Server.API/Controllers/OrderController.cs

@ -144,5 +144,27 @@ namespace BBWY.Server.API.Controllers
{ {
return orderBusiness.SDGroupPullOrder(request); return orderBusiness.SDGroupPullOrder(request);
} }
/// <summary>
/// 查询订单SKU列表
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost]
public ExportOrderSkuListResponse QueryOrderSkuList([FromBody] QueryOrderSkuRequest request)
{
return orderBusiness.QueryOrderSkuList(request);
}
/// <summary>
/// 导出订单SKU列表
/// </summary>
/// <param name="request"></param>
/// <returns></returns>
[HttpPost]
public IList<ExportOrderSkuResponse> ExportOrderSkuList([FromBody] ExportOrderSkuRequest request)
{
return orderBusiness.ExportOrderSkuList(request);
}
} }
} }

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

@ -33,6 +33,9 @@ namespace BBWY.Server.Business
private Lazy<FreeSqlMultiDBManager> freeSqlMultiDBManagerLazy; private Lazy<FreeSqlMultiDBManager> freeSqlMultiDBManagerLazy;
private FreeSqlMultiDBManager freeSqlMultiDBManager => freeSqlMultiDBManagerLazy.Value; private FreeSqlMultiDBManager freeSqlMultiDBManager => freeSqlMultiDBManagerLazy.Value;
private Lazy<VenderBusiness> venderBusinessLazy;
private VenderBusiness venderBusiness => venderBusinessLazy.Value;
private IMemoryCache memoryCache; private IMemoryCache memoryCache;
private static TimeSpan sdGroupExpirationTimeSpan = TimeSpan.FromMinutes(20); private static TimeSpan sdGroupExpirationTimeSpan = TimeSpan.FromMinutes(20);
@ -48,6 +51,7 @@ namespace BBWY.Server.Business
this.memoryCache = memoryCache; this.memoryCache = memoryCache;
freeSqlMultiDBManagerLazy = new Lazy<FreeSqlMultiDBManager>(() => serviceProvider.GetService<FreeSqlMultiDBManager>()); freeSqlMultiDBManagerLazy = new Lazy<FreeSqlMultiDBManager>(() => serviceProvider.GetService<FreeSqlMultiDBManager>());
productBusinessLazy = new Lazy<ProductBusiness>(() => serviceProvider.GetService<ProductBusiness>()); productBusinessLazy = new Lazy<ProductBusiness>(() => serviceProvider.GetService<ProductBusiness>());
venderBusinessLazy = new Lazy<VenderBusiness>(() => serviceProvider.GetService<VenderBusiness>());
} }
private ISelect<Order, OrderConsignee, OrderCost, Storehouse> GetOrderListQueryConditions(SearchOrderRequest searchOrderRequest) private ISelect<Order, OrderConsignee, OrderCost, Storehouse> GetOrderListQueryConditions(SearchOrderRequest searchOrderRequest)
@ -1102,5 +1106,81 @@ namespace BBWY.Server.Business
} }
return orderResponse; return orderResponse;
} }
private ISelect<OrderSku, Order, OrderCostDetail, PurchaseOrder, Product> GetQueryOrderSkuListConditions(ExportOrderSkuRequest request)
{
var select = fsql.Select<OrderSku, Order, OrderCostDetail, PurchaseOrder, Product>()
.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<Func<OrderSku, Order, OrderCostDetail, PurchaseOrder, Product, ExportOrderSkuResponse>> 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<ExportOrderSkuResponse> 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;
}
} }
} }

23
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<long> ShopIds { get; set; }
public Enums.Platform? PurchasePlatform { get; set; }
public DateTime StartTime { get; set; }
public DateTime EndTime { get; set; }
}
}

39
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<ExportOrderSkuResponse> ItemList { get; set; }
}
}
Loading…
Cancel
Save