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.
186 lines
13 KiB
186 lines
13 KiB
using BBWY.Common.Models;
|
|
using BBWY.Server.Model.Db;
|
|
using BBWY.Server.Model.Dto;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using Yitter.IdGenerator;
|
|
|
|
namespace BBWY.Server.Business
|
|
{
|
|
public class ServiceOrderBusiness : BaseBusiness, IDenpendency
|
|
{
|
|
public ServiceOrderBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator) : base(fsql, nLogManager, idGenerator)
|
|
{
|
|
|
|
}
|
|
|
|
public ServiceOrderResponse GetList(ClientQueryServiceOrderRequest request)
|
|
{
|
|
if (request.EndDate != null)
|
|
request.EndDate = request.EndDate.Value.Date.AddDays(1).AddSeconds(-1);
|
|
var list = fsql.Select<ServiceOrder, Order, OrderSku>()
|
|
.InnerJoin((s, o, osku) => s.OrderId == o.Id)
|
|
.InnerJoin((s, o, osku) => s.OrderId == osku.OrderId && s.SkuId == osku.SkuId)
|
|
.Where((s, o, osku) => s.ShopId == request.ShopId)
|
|
.WhereIf(!string.IsNullOrEmpty(request.Sku), (s, o, osku) => s.SkuId == request.Sku)
|
|
.WhereIf(!string.IsNullOrEmpty(request.Spu), (s, o, osku) => s.ProductId == request.Spu)
|
|
.WhereIf(!string.IsNullOrEmpty(request.OrderId), (s, o, osku) => s.OrderId == request.OrderId)
|
|
.WhereIf(!string.IsNullOrEmpty(request.ServiceId), (s, o, osku) => s.ServiceId == request.ServiceId)
|
|
.WhereIf(request.ServiceOrderState != null, (s, o, osku) => s.Status == request.ServiceOrderState)
|
|
.WhereIf(request.ServiceOrderState == null, (s, o, osku) => s.Status != Model.Enums.ServiceOrderState.已取消)
|
|
.WhereIf(request.ReturnDirection != null, (s, o, osku) => s.ReturnDirection == request.ReturnDirection)
|
|
.WhereIf(request.StartDate != null, (s, o, osku) => s.ApplyTime >= request.StartDate)
|
|
.WhereIf(request.EndDate != null, (s, o, osku) => s.ApplyTime <= request.EndDate)
|
|
.OrderByDescending((s, o, osku) => s.ApplyTime)
|
|
.Count(out var total)
|
|
.Page(request.PageIndex, request.PageSize)
|
|
.ToList((s, o, osku) => new ServiceOrderItemResponse
|
|
{
|
|
Id = s.Id,
|
|
ApplyTime = s.ApplyTime,
|
|
CreateTime = s.CreateTime,
|
|
ExpressName = s.ExpressName,
|
|
WayBillNo = s.WayBillNo,
|
|
ImageName = s.ImageName,
|
|
OrderId = s.OrderId,
|
|
SkuId = s.SkuId,
|
|
ProductId = s.ProductId,
|
|
ProductAppearance = s.ProductAppearance,
|
|
ProductFunction = s.ProductFunction,
|
|
ProductHealth = s.ProductHealth,
|
|
ProductPackage = s.ProductPackage,
|
|
ServiceResult = s.ServiceResult,
|
|
TransportDetails = s.TransportDetails,
|
|
WareHouseGrounpRemark = s.WareHouseGrounpRemark,
|
|
Status = s.Status,
|
|
ServiceId = s.ServiceId,
|
|
ShopId = s.ShopId,
|
|
RenewalOrderId = s.RenewalOrderId,
|
|
ReturnCheckRemark = s.ReturnCheckRemark,
|
|
AfterTotalCost = s.AfterTotalCost,
|
|
ConsumableAmount = s.ConsumableAmount,
|
|
DeliveryExpressFreight = s.DeliveryExpressFreight,
|
|
FirstFreight = s.FirstFreight,
|
|
InStorageAmount = s.InStorageAmount,
|
|
OutStorageAmount = s.OutStorageAmount,
|
|
PurchaseOrderPKId = s.PurchaseOrderPKId,
|
|
RefundAlipayOrderNo = s.RefundAlipayOrderNo,
|
|
RefundAmount = s.RefundAmount,
|
|
RefundInStorageAmount = s.RefundInStorageAmount,
|
|
RefundPurchaseAmount = s.RefundPurchaseAmount,
|
|
ReissueAfterSaleAmount = s.ReissueAfterSaleAmount,
|
|
StorageAmount = s.StorageAmount,
|
|
SDRefundFreight = s.SDRefundFreight,
|
|
RenewalType = s.RenewalType,
|
|
RenewalPurchasePlatform = s.RenewalPurchasePlatform,
|
|
RenewalPurchaseOrderId = s.RenewalPurchaseOrderId,
|
|
ReissueProductAmount = s.ReissueProductAmount,
|
|
ReissueFreight = s.ReissueFreight,
|
|
RefundTime = s.RefundTime,
|
|
RefundMerchantOrderNo = s.RefundMerchantOrderNo,
|
|
|
|
Title = osku.Title,
|
|
ItemTotal = osku.ItemTotal.Value,
|
|
Logo = osku.Logo,
|
|
Price = osku.Price.Value,
|
|
SkuItemCount = osku.ItemTotal.Value,
|
|
ReturnDirection = s.ReturnDirection,
|
|
ServiceOrderRemark = s.ServiceOrderRemark,
|
|
StatusUpdateTime = s.StatusUpdateTime,
|
|
PurchaseOrderId = s.PurchaseOrderId,
|
|
PurchasePlatform = s.PurchasePlatform,
|
|
|
|
StorageType = o.StorageType
|
|
});
|
|
return new ServiceOrderResponse()
|
|
{
|
|
Count = total,
|
|
Items = list
|
|
};
|
|
}
|
|
|
|
public void EditServiceOrder(EditQueryServiceOrderRequest request)
|
|
{
|
|
var dbso = fsql.Select<ServiceOrder>(request.ServicePId).ToOne();
|
|
if (dbso == null)
|
|
throw new BusinessException("服务端不存在");
|
|
|
|
dbso.ServiceResult = request.ServiceResult;
|
|
dbso.ReturnDirection = request.ReturnDirection;
|
|
dbso.RenewalOrderId = request.RenewalOrderId;
|
|
dbso.ReturnCheckRemark = request.ReturnCheckRemark;
|
|
dbso.RenewalType = request.RenewalType;
|
|
dbso.RenewalPurchaseOrderId = request.RenewalPurchaseOrderId;
|
|
dbso.RenewalPurchasePlatform = request.RenewalPurchasePlatform;
|
|
|
|
dbso.ReissueAfterSaleAmount = request.ReissueAfterSaleAmount;
|
|
dbso.ConsumableAmount = 0M;
|
|
dbso.DeliveryExpressFreight = 0M;
|
|
dbso.FirstFreight = 0M;
|
|
dbso.InStorageAmount = 0M;
|
|
dbso.OutStorageAmount = 0M;
|
|
dbso.RefundInStorageAmount = 0M;
|
|
dbso.ReissueFreight = 0M;
|
|
dbso.ReissueProductAmount = 0M;
|
|
dbso.StorageAmount = 0M;
|
|
dbso.AfterTotalCost = 0M;
|
|
dbso.SDRefundFreight = 0M;
|
|
|
|
if (request.ServiceResult == Model.Enums.ServiceResult.退货 ||
|
|
request.ServiceResult == Model.Enums.ServiceResult.原返 ||
|
|
request.ServiceResult == Model.Enums.ServiceResult.线下换新 ||
|
|
request.ServiceResult == Model.Enums.ServiceResult.仅退款)
|
|
{
|
|
//if(request.ReturnDirection == Model.Enums.ReturnDirection.退货仓)
|
|
dbso.ReissueAfterSaleAmount = request.ReissueAfterSaleAmount;
|
|
}
|
|
else if (request.ServiceResult == Model.Enums.ServiceResult.换新)
|
|
{
|
|
var dbOrderCostDetail = fsql.Select<OrderCostDetail>().Where(ocd => ocd.OrderId == request.OrderId &&
|
|
ocd.SkuId == dbso.SkuId &&
|
|
ocd.IsEnabled == true).ToOne();
|
|
if (dbOrderCostDetail != null)
|
|
{
|
|
var dbPurchaseOrder = dbOrderCostDetail != null ? fsql.Select<PurchaseOrder>(dbOrderCostDetail.PurchaseOrderPKId).ToOne() : null;
|
|
dbso.ConsumableAmount = dbOrderCostDetail.ConsumableAmount;
|
|
dbso.DeliveryExpressFreight = dbOrderCostDetail.DeliveryExpressFreight;
|
|
dbso.FirstFreight = dbOrderCostDetail.FirstFreight;
|
|
dbso.ReissueProductAmount = dbOrderCostDetail.SkuAmount;
|
|
dbso.ReissueFreight = dbOrderCostDetail.PurchaseFreight;
|
|
dbso.StorageAmount = dbOrderCostDetail.StorageAmount;
|
|
dbso.InStorageAmount = dbOrderCostDetail.InStorageAmount;
|
|
dbso.OutStorageAmount = dbOrderCostDetail.OutStorageAmount;
|
|
}
|
|
}
|
|
else if (request.ServiceResult == Model.Enums.ServiceResult.商品补发)
|
|
{
|
|
dbso.ReissueAfterSaleAmount = request.ReissueAfterSaleAmount;
|
|
dbso.ReissueProductAmount = request.ReissueProductAmount;
|
|
dbso.ReissueFreight = request.ReissueFreight;
|
|
}
|
|
else if (request.ServiceResult == Model.Enums.ServiceResult.SD退货)
|
|
{
|
|
dbso.ReissueAfterSaleAmount = 0M;
|
|
dbso.SDRefundFreight = request.SDRefundFreight;
|
|
}
|
|
dbso.AfterTotalCost = dbso.ReissueAfterSaleAmount +
|
|
dbso.ReissueFreight.Value +
|
|
dbso.ReissueProductAmount.Value +
|
|
dbso.ConsumableAmount.Value +
|
|
dbso.DeliveryExpressFreight.Value +
|
|
dbso.FirstFreight.Value +
|
|
dbso.InStorageAmount.Value +
|
|
dbso.OutStorageAmount.Value +
|
|
dbso.RefundInStorageAmount.Value + //退货入仓操作费 没有计算
|
|
dbso.StorageAmount +
|
|
dbso.SDRefundFreight;
|
|
|
|
|
|
fsql.Transaction(() =>
|
|
{
|
|
fsql.Update<ServiceOrder>().SetSource(dbso).ExecuteAffrows();
|
|
});
|
|
}
|
|
}
|
|
}
|
|
|