using BBWYB.Server.Model; using BBWYB.Server.Model.Db; using BBWYB.Server.Model.Dto; namespace BBWYB.Server.Business.Extensions { public static class PurchaseExpressOrderExtension { /// <summary> /// 计算快递单归属 /// </summary> /// <param name="purchaseExpressOrder">必须是经过与快递单关系表进行联合查询的结果 (ExpressOrderRelationInfo-PurchaseExpressOrder)</param> /// <param name="intoStoreType"></param> /// <param name="orderPurchaseInfoList"></param> /// <param name="orderPurchaseRelationInfoList"></param> /// <param name="orderPurchaseSkuInfoList"></param> public static void CalculationBelongOrderSku(this PurchaseExpressOrderResponse purchaseExpressOrder, Enums.IntoStoreType? intoStoreType, IList<OrderPurchaseInfoResponse> orderPurchaseInfoList, IList<OrderPurchaseRelationInfo> orderPurchaseRelationInfoList, IList<OrderPurchaseSkuInfoResponse> orderPurchaseSkuInfoList) { var purchaseOrder = orderPurchaseInfoList.FirstOrDefault(po => po.PurchaseOrderId == purchaseExpressOrder.PurchaseOrderId); if (purchaseOrder == null) return; if (purchaseOrder.PurchasePlatform == Enums.Platform.阿里巴巴 && intoStoreType != Enums.IntoStoreType.厂商代发入仓) { var purchaseSkuIds = orderPurchaseSkuInfoList.Where(posku => posku.WaybillNo == purchaseExpressOrder.WaybillNo && posku.PurchaseOrderId == purchaseOrder.PurchaseOrderId) .Select(posku => posku.PurchaseSkuId).ToList(); var orderSkuIds = orderPurchaseRelationInfoList.Where(ori => ori.PurchaseOrderId == purchaseOrder.PurchaseOrderId && purchaseSkuIds.Contains(ori.PurchaseSkuId)) .Select(ori => ori.BelongSkuId) .Distinct() .ToList(); purchaseExpressOrder.BelongSkuIds = string.Join(",", orderSkuIds); } else { purchaseExpressOrder.BelongSkuIds = purchaseOrder.BelongSkuIds; } } } }