步步为盈
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

151 lines
7.3 KiB

using BBWY.Common.Models;
using BBWY.Server.Model.Db;
using BBWY.Server.Model.Dto;
using System;
using System.Linq;
using System.Linq.Expressions;
using Yitter.IdGenerator;
namespace BBWY.Server.Business
{
public class AfterSaleOrderBusiness : BaseBusiness, IDenpendency
{
public AfterSaleOrderBusiness(IFreeSql fsql, NLog.ILogger logger, IIdGenerator idGenerator) : base(fsql, logger, idGenerator)
{
}
private Expression<Func<AfterSaleOrder, OrderSku, OrderConsignee, AfterSaleOrderResponse>> GetExpressionField()
{
return (aso, osku, oc) => new AfterSaleOrderResponse(aso.Id)
{
ApplyTime = aso.ApplyTime,
ConsumableAmount = aso.ConsumableAmount,
CreateTime = aso.CreateTime,
DeliveryExpressFreight = aso.DeliveryExpressFreight,
FirstFreight = aso.FirstFreight,
InStorageAmount = aso.InStorageAmount,
Logo = osku.Logo,
OrderId = aso.OrderId,
OutStorageAmount = aso.OutStorageAmount,
ProductHealth = aso.ProductHealth,
ProductId = aso.ProductId,
ProductResult = aso.ProductResult,
RefundAmount = aso.RefundAmount,
RefundInStorageAmount = aso.RefundInStorageAmount,
RefundPurchaseAmount = aso.RefundPurchaseAmount,
RefundTime = aso.RefundTime,
ReissueAfterSaleAmount = aso.ReissueAfterSaleAmount,
3 years ago
ReissueFreight = aso.ReissueFreight,
ReissueProductAmount = aso.ReissueProductAmount,
ServiceId = aso.ServiceId,
ServiceResult = aso.ServiceResult,
ShopId = aso.ShopId,
SkuId = aso.SkuId,
Title = osku.Title,
ContactName = oc.ContactName,
Mobile = oc.Mobile,
ItemTotal = osku.ItemTotal.Value,
Price = osku.Price.Value,
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()
{
Count = total,
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
}
}
}