diff --git a/BBWYB.Server.Business/Product/ProductBusiness.cs b/BBWYB.Server.Business/Product/ProductBusiness.cs index f925b39..35954b7 100644 --- a/BBWYB.Server.Business/Product/ProductBusiness.cs +++ b/BBWYB.Server.Business/Product/ProductBusiness.cs @@ -2,6 +2,7 @@ using BBWYB.Common.Models; using BBWYB.Server.Model; using BBWYB.Server.Model.Dto; +using Microsoft.Extensions.DependencyInjection; using SDKAdapter.OperationPlatform.Client; using SDKAdapter.OperationPlatform.Models; using Yitter.IdGenerator; @@ -11,10 +12,13 @@ namespace BBWYB.Server.Business public class ProductBusiness : BaseBusiness, IDenpendency { private OP_PlatformClientFactory opPlatformClientFactory; + private Lazy purchaseSchemeBusinessLazy; + private PurchaseSchemeBusiness purchaseSchemeBusiness => purchaseSchemeBusinessLazy.Value; - public ProductBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, OP_PlatformClientFactory opPlatformClientFactory) : base(fsql, nLogManager, idGenerator) + public ProductBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, OP_PlatformClientFactory opPlatformClientFactory, IServiceProvider serviceProvider) : base(fsql, nLogManager, idGenerator) { this.opPlatformClientFactory = opPlatformClientFactory; + this.purchaseSchemeBusinessLazy = new Lazy(() => serviceProvider.GetService()); } public OP_ProductListResponse GetProductList(OP_QueryProductRequest request) @@ -62,6 +66,7 @@ namespace BBWYB.Server.Business Spu = request.Spu }); + var skuIdList = new List(); if (spuResponse.Items.Count() > 0) { foreach (var op_product in spuResponse.Items) @@ -89,11 +94,31 @@ namespace BBWYB.Server.Business }); if (skuResponse.Count > 0) { - bproduct.SkuList = skuResponse.Items; + bproduct.SkuList = skuResponse.Items.Select(x => new BProductSkuResponse() + { + CreateTime = x.CreateTime, + Id = x.Id, + Logo = x.Logo, + Price = x.Price, + ProductId = x.ProductId, + State = x.State, + Title = x.Title + }).ToList(); + skuIdList.AddRange(skuResponse.Items.Select(s => s.Id)); } } } + var schemeCountRes = purchaseSchemeBusiness.GetPurchaseSchemeCountList(new QuerySchemeCountRequest() + { + SkuIdList = skuIdList + }); + foreach (var bproduct in list) + { + foreach (var bsku in bproduct.SkuList) + bsku.SchemeCount = schemeCountRes.FirstOrDefault(ps => ps.SkuId == bsku.Id)?.SchemeCount ?? 0; + } + return new BProductListResponse() { Count = spuResponse.Count, diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 9477a0c..7acb9a7 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -324,8 +324,7 @@ namespace BBWYB.Server.Business public IList GetPurchaseSchemeCountList(QuerySchemeCountRequest request) { - var list = fsql.Select().Where(ps => ps.ShopId == request.ShopId && - request.SkuIdList.Contains(ps.SkuId)) + var list = fsql.Select().Where(ps => request.SkuIdList.Contains(ps.SkuId)) .GroupBy(ps => ps.SkuId) .ToList(g => new PurchaseSchemeCountResponse() { diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeCountRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeCountRequest.cs index 063f392..abcd89c 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeCountRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeCountRequest.cs @@ -2,7 +2,6 @@ { public class QuerySchemeCountRequest { - public long? ShopId { get; set; } public IList SkuIdList { get; set; } } } diff --git a/BBWYB.Server.Model/Dto/Response/Product/BProductResponse.cs b/BBWYB.Server.Model/Dto/Response/Product/BProductResponse.cs index 08342b4..c970007 100644 --- a/BBWYB.Server.Model/Dto/Response/Product/BProductResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Product/BProductResponse.cs @@ -4,7 +4,7 @@ namespace BBWYB.Server.Model.Dto { public class BProductResponse : OP_ProductResponse { - public IList SkuList { get; set; } + public IList SkuList { get; set; } } public class BProductListResponse diff --git a/BBWYB.Server.Model/Dto/Response/Product/BProductSkuResponse.cs b/BBWYB.Server.Model/Dto/Response/Product/BProductSkuResponse.cs new file mode 100644 index 0000000..756e817 --- /dev/null +++ b/BBWYB.Server.Model/Dto/Response/Product/BProductSkuResponse.cs @@ -0,0 +1,9 @@ +using SDKAdapter.OperationPlatform.Models; + +namespace BBWYB.Server.Model.Dto +{ + public class BProductSkuResponse: OP_ProductSkuResponse + { + public int SchemeCount { get; set; } + } +}