|
@ -1,6 +1,9 @@ |
|
|
using BBWY.Common.Models; |
|
|
using BBWY.Common.Models; |
|
|
using BBWY.Server.Model.Db; |
|
|
using BBWY.Server.Model.Db; |
|
|
using BBWY.Server.Model.Dto; |
|
|
using BBWY.Server.Model.Dto; |
|
|
|
|
|
using System; |
|
|
|
|
|
using System.Linq; |
|
|
|
|
|
using System.Linq.Expressions; |
|
|
using Yitter.IdGenerator; |
|
|
using Yitter.IdGenerator; |
|
|
|
|
|
|
|
|
namespace BBWY.Server.Business |
|
|
namespace BBWY.Server.Business |
|
@ -12,30 +15,10 @@ namespace BBWY.Server.Business |
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
public AfterSaleOrderListResponse GetAfterSaleOrderList(SearchAfterSaleOrderRequest request) |
|
|
private Expression<Func<AfterSaleOrder, OrderSku, OrderConsignee, AfterSaleOrderResponse>> GetExpressionField() |
|
|
{ |
|
|
{ |
|
|
var select = fsql.Select<AfterSaleOrder, OrderSku, OrderConsignee>().InnerJoin((aso, osku, oc) => aso.OrderId == osku.OrderId && aso.SkuId == osku.SkuId) |
|
|
return (aso, osku, oc) => new AfterSaleOrderResponse(aso.Id) |
|
|
.InnerJoin((aso, osku, oc) => aso.OrderId == oc.OrderId); |
|
|
|
|
|
if (!string.IsNullOrEmpty(request.ServiceId)) |
|
|
|
|
|
{ |
|
|
{ |
|
|
select = select.Where((aso, osku, o) => aso.ServiceId == request.ServiceId); |
|
|
|
|
|
} |
|
|
|
|
|
else |
|
|
|
|
|
{ |
|
|
|
|
|
select = select.WhereIf(request.StartDate != null, (aso, osku, oc) => aso.ApplyTime >= request.StartDate) |
|
|
|
|
|
.WhereIf(request.EndDate != null, (aso, osku, oc) => aso.ApplyTime <= request.EndDate) |
|
|
|
|
|
.WhereIf(!string.IsNullOrEmpty(request.Spu), (aso, osku, oc) => aso.ProductId == request.Spu) |
|
|
|
|
|
.WhereIf(!string.IsNullOrEmpty(request.Sku), (aso, osku, oc) => aso.SkuId == request.Sku) |
|
|
|
|
|
.WhereIf(!string.IsNullOrEmpty(request.OrderId), (aso, osku, oc) => aso.OrderId == request.OrderId); |
|
|
|
|
|
} |
|
|
|
|
|
select = select.Where((aso, osku, oc) => aso.ShopId == request.ShopId) |
|
|
|
|
|
.OrderByDescending((aso, osku, oc) => aso.ApplyTime) |
|
|
|
|
|
.Count(out var total) |
|
|
|
|
|
.Page(request.PageIndex, request.PageSize); |
|
|
|
|
|
|
|
|
|
|
|
var list = select.ToList((aso, osku, oc) => new AfterSaleOrderResponse |
|
|
|
|
|
{ |
|
|
|
|
|
Id = aso.Id, |
|
|
|
|
|
ApplyTime = aso.ApplyTime, |
|
|
ApplyTime = aso.ApplyTime, |
|
|
ConsumableAmount = aso.ConsumableAmount, |
|
|
ConsumableAmount = aso.ConsumableAmount, |
|
|
CreateTime = aso.CreateTime, |
|
|
CreateTime = aso.CreateTime, |
|
@ -65,12 +48,103 @@ namespace BBWY.Server.Business |
|
|
ItemTotal = osku.ItemTotal.Value, |
|
|
ItemTotal = osku.ItemTotal.Value, |
|
|
Price = osku.Price.Value, |
|
|
Price = osku.Price.Value, |
|
|
AfterTotalCost = aso.AfterTotalCost |
|
|
AfterTotalCost = aso.AfterTotalCost |
|
|
}); |
|
|
}; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public AfterSaleOrderListResponse GetAfterSaleOrderList(SearchAfterSaleOrderRequest request) |
|
|
|
|
|
{ |
|
|
|
|
|
var select = fsql.Select<AfterSaleOrder, OrderSku, OrderConsignee>().InnerJoin((aso, osku, oc) => aso.OrderId == osku.OrderId && aso.SkuId == osku.SkuId) |
|
|
|
|
|
.InnerJoin((aso, osku, oc) => aso.OrderId == oc.OrderId); |
|
|
|
|
|
if (!string.IsNullOrEmpty(request.ServiceId)) |
|
|
|
|
|
{ |
|
|
|
|
|
select = select.Where((aso, osku, o) => aso.ServiceId == request.ServiceId); |
|
|
|
|
|
} |
|
|
|
|
|
else |
|
|
|
|
|
{ |
|
|
|
|
|
select = select.WhereIf(request.StartDate != null, (aso, osku, oc) => aso.ApplyTime >= request.StartDate) |
|
|
|
|
|
.WhereIf(request.EndDate != null, (aso, osku, oc) => aso.ApplyTime <= request.EndDate) |
|
|
|
|
|
.WhereIf(!string.IsNullOrEmpty(request.Spu), (aso, osku, oc) => aso.ProductId == request.Spu) |
|
|
|
|
|
.WhereIf(!string.IsNullOrEmpty(request.Sku), (aso, osku, oc) => aso.SkuId == request.Sku) |
|
|
|
|
|
.WhereIf(!string.IsNullOrEmpty(request.OrderId), (aso, osku, oc) => aso.OrderId == request.OrderId); |
|
|
|
|
|
} |
|
|
|
|
|
select = select.Where((aso, osku, oc) => aso.ShopId == request.ShopId) |
|
|
|
|
|
.OrderByDescending((aso, osku, oc) => aso.ApplyTime) |
|
|
|
|
|
.Count(out var total) |
|
|
|
|
|
.Page(request.PageIndex, request.PageSize); |
|
|
|
|
|
|
|
|
|
|
|
var list = select.ToList(GetExpressionField()); |
|
|
return new AfterSaleOrderListResponse() |
|
|
return new AfterSaleOrderListResponse() |
|
|
{ |
|
|
{ |
|
|
Count = total, |
|
|
Count = total, |
|
|
Items = list |
|
|
Items = list |
|
|
}; |
|
|
}; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public AfterSaleOrderResponse GetAfterSaleOrderById(long afterSaleOrderId) |
|
|
|
|
|
{ |
|
|
|
|
|
var response = fsql.Select<AfterSaleOrder, OrderSku, OrderConsignee>().InnerJoin((aso, osku, oc) => aso.OrderId == osku.OrderId && aso.SkuId == osku.SkuId) |
|
|
|
|
|
.InnerJoin((aso, osku, oc) => aso.OrderId == oc.OrderId) |
|
|
|
|
|
.Where((aso, osku, oc) => aso.Id == afterSaleOrderId) |
|
|
|
|
|
.ToOne(GetExpressionField()); |
|
|
|
|
|
return response; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public void EditAfterSaleOrder(EditAfterSaleOrderRequest editAfterSaleOrderRequest) |
|
|
|
|
|
{ |
|
|
|
|
|
var afterSaleOrderList = fsql.Select<AfterSaleOrder>().Where(aso => aso.OrderId == editAfterSaleOrderRequest.OrderId).ToList(); |
|
|
|
|
|
var dbAfterSaleOrder = afterSaleOrderList.FirstOrDefault(aso => aso.Id == editAfterSaleOrderRequest.Id); |
|
|
|
|
|
var dbOrder = fsql.Select<Order>(editAfterSaleOrderRequest.OrderId).ToOne(); |
|
|
|
|
|
|
|
|
|
|
|
#region 更新当前服务单属性
|
|
|
|
|
|
dbAfterSaleOrder.ServiceResult = editAfterSaleOrderRequest.ServiceResult; |
|
|
|
|
|
dbAfterSaleOrder.ProductResult = editAfterSaleOrderRequest.ProductResult; |
|
|
|
|
|
dbAfterSaleOrder.ProductHealth = editAfterSaleOrderRequest.ProductHealth; |
|
|
|
|
|
|
|
|
|
|
|
dbAfterSaleOrder.ReissueAfterSaleAmount = editAfterSaleOrderRequest.ReissueAfterSaleAmount; |
|
|
|
|
|
dbAfterSaleOrder.ConsumableAmount = 0M; |
|
|
|
|
|
dbAfterSaleOrder.DeliveryExpressFreight = 0M; |
|
|
|
|
|
dbAfterSaleOrder.FirstFreight = 0M; |
|
|
|
|
|
dbAfterSaleOrder.InStorageAmount = 0M; |
|
|
|
|
|
dbAfterSaleOrder.OutStorageAmount = 0M; |
|
|
|
|
|
dbAfterSaleOrder.RefundInStorageAmount = 0M; |
|
|
|
|
|
dbAfterSaleOrder.ReissueFreight = 0M; |
|
|
|
|
|
dbAfterSaleOrder.ReissueProductAmount = 0M; |
|
|
|
|
|
dbAfterSaleOrder.AfterTotalCost = 0M; |
|
|
|
|
|
|
|
|
|
|
|
if (dbAfterSaleOrder.ServiceResult == Model.Enums.ServiceResult.维修 || |
|
|
|
|
|
dbAfterSaleOrder.ServiceResult == Model.Enums.ServiceResult.商品补发 || |
|
|
|
|
|
dbAfterSaleOrder.ServiceResult == Model.Enums.ServiceResult.线下换新) |
|
|
|
|
|
{ |
|
|
|
|
|
if (dbAfterSaleOrder.ServiceResult == Model.Enums.ServiceResult.商品补发) |
|
|
|
|
|
dbAfterSaleOrder.ProductHealth = Model.Enums.ProductHealth.客户无退货; |
|
|
|
|
|
|
|
|
|
|
|
dbAfterSaleOrder.ReissueProductAmount = editAfterSaleOrderRequest.ReissueProductAmount; |
|
|
|
|
|
dbAfterSaleOrder.ReissueFreight = editAfterSaleOrderRequest.ReissueFreight; |
|
|
|
|
|
} |
|
|
|
|
|
else if (dbAfterSaleOrder.ServiceResult == Model.Enums.ServiceResult.退货) |
|
|
|
|
|
{ |
|
|
|
|
|
if (dbAfterSaleOrder.ProductResult == Model.Enums.ProductResult.退回云仓 || |
|
|
|
|
|
dbAfterSaleOrder.ProductResult == Model.Enums.ProductResult.退回京仓) |
|
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (dbAfterSaleOrder.ProductHealth == Model.Enums.ProductHealth.可二次销售) |
|
|
|
|
|
{ |
|
|
|
|
|
//原sku采购成本
|
|
|
|
|
|
} |
|
|
|
|
|
else if (dbAfterSaleOrder.ProductHealth == Model.Enums.ProductHealth.残次品_无法二次销售 || |
|
|
|
|
|
dbAfterSaleOrder.ProductHealth == Model.Enums.ProductHealth.客户无退货 || |
|
|
|
|
|
dbAfterSaleOrder.ProductHealth == Model.Enums.ProductHealth.破损) |
|
|
|
|
|
{ |
|
|
|
|
|
dbAfterSaleOrder.RefundPurchaseAmount = 0M; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|