using BBWY.Common.Extensions; using BBWY.Common.Models; using BBWY.Server.Model.Db; using BBWY.Server.Model.Dto; using BBWY.Server.Model.Dto.Response.PurchaseOrderV2; using System.Collections.Generic; using System.Linq; using Yitter.IdGenerator; namespace BBWY.Server.Business { public class BatchPurchaseBusiness : BaseBusiness, IDenpendency { private ProductBusiness productBusiness; public BatchPurchaseBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, ProductBusiness productBusiness) : base(fsql, nLogManager, idGenerator) { this.productBusiness = productBusiness; } /// /// 获取包含对应平台采购方案的sku列表 /// /// /// /// public IList GetProductSkuAndSchemeList(SearchProductSkuAndSchemeRequest request) { if (string.IsNullOrEmpty(request.Spu) || string.IsNullOrEmpty(request.Sku)) throw new BusinessException("至少具备一个Sku或Spu条件"); var productSkuList = productBusiness.GetProductSkuList(new SearchProductSkuRequest() { AppKey = request.AppKey, AppSecret = request.AppSecret, AppToken = request.AppToken, Platform = request.Platform, Sku = request.Sku, Spu = request.Spu }); if (productSkuList == null || productSkuList.Count() == 0) return null; var skuIdList = productSkuList.Select(s => s.Id).ToList(); var schemeList = fsql.Select().InnerJoin((ps, p) => ps.PurchaserId == p.Id) .Where((ps, p) => ps.ShopId == request.ShopId) .Where((ps, p) => ps.PurchasePlatform == request.PurchasePlatform) .Where((ps, p) => skuIdList.Contains(ps.SkuId)) .ToList((ps, p) => new { PurchaseSchemeId = ps.Id, ps.PurchaserId, PurchaseName = p.Name, ps.PurchasePlatform, ps.SkuId }); var pruductSkuSchemeList = productSkuList.Map>(); foreach (var ps in pruductSkuSchemeList) { var scheme = schemeList.FirstOrDefault(s => s.SkuId == ps.Id); if (scheme == null) continue; ps.PurchaseSchemeId = scheme.PurchaseSchemeId; ps.PurchaserId = scheme.PurchaserId; ps.PurchaseName = scheme.PurchaseName; ps.PurchasePlatform = scheme.PurchasePlatform; } return pruductSkuSchemeList; } } }