diff --git a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs index 13470ce..0e4b68f 100644 --- a/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs +++ b/BBWYB.Server.API/Controllers/PurchaseSchemeController.cs @@ -44,6 +44,7 @@ namespace BBWYB.Server.API.Controllers [HttpPost] public IList GetPurchaseSchemeList([FromBody] QuerySchemeRequest querySchemeRequest) { + querySchemeRequest.IncludePurchaserStatisticsInfo = 1; return purchaseSchemeBusiness.GetPurchaseSchemeList(querySchemeRequest); } diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 47f8727..9a0ba76 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -600,10 +600,10 @@ namespace BBWYB.Server.Business SkuId = x })); } - var update = fsql.Update(purchaserId) - .Set(p => p.PurchasedCount + 1) - .SetIf(newSkuRelationCount > 0, p => p.PurchasedSkuCount + newSkuRelationCount); - updatePurchaserList.Add(update); + //var update = fsql.Update(purchaserId) + // .Set(p => p.PurchasedCount + 1) + // .SetIf(newSkuRelationCount > 0, p => p.PurchasedSkuCount + newSkuRelationCount); + //updatePurchaserList.Add(update); } } @@ -777,11 +777,11 @@ namespace BBWYB.Server.Business foreach (var update in updateOrderSkuCostList) update.ExecuteAffrows(); } - if (updatePurchaserList.Count() > 0) - { - foreach (var update in updatePurchaserList) - update.ExecuteAffrows(); - } + //if (updatePurchaserList.Count() > 0) + //{ + // foreach (var update in updatePurchaserList) + // update.ExecuteAffrows(); + //} }); //#region 更新采购方案最新价格 diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs index 5283752..64699c6 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs @@ -678,27 +678,30 @@ namespace BBWYB.Server.Business var skuIdList = purchaseSchemeList.Select(ps => ps.SkuId).Distinct().ToList(); var recentDate = DateTime.Now.Date.AddDays(-30); - var purchaseSchemeProductList = fsql.Select() - .InnerJoin((psp, p) => psp.PurchaserId == p.Id) - .Where((psp, p) => purchaseSchemeIdList.Contains(psp.SkuPurchaseSchemeId)) - .ToList((psp, p) => new PurchaseSchemeProductResponse - { - CreateTime = psp.CreateTime, - Id = psp.Id, - ProductId = psp.ProductId, - PurchaseProductId = psp.PurchaseProductId, - PurchaseUrl = psp.PurchaseUrl, - SkuId = psp.SkuId, - SkuPurchaseSchemeId = psp.SkuPurchaseSchemeId, - PurchaserId = p.Id, - PurchaserId2 = p.Id2, - PurchaserLocation = p.Location, - PurchaserName = p.Name, - PurchasePlatform = p.Platform, - PurchaserMemberId = p.MemberId, - PurchaserPurchasedCount = p.PurchasedCount, - PurchaserPurchasedSkuCount = p.PurchasedSkuCount, - }); + //var purchaseSchemeProductList = fsql.Select() + // .InnerJoin((psp, p) => psp.PurchaserId == p.Id) + // .Where((psp, p) => purchaseSchemeIdList.Contains(psp.SkuPurchaseSchemeId)) + // .ToList((psp, p) => new PurchaseSchemeProductResponse + // { + // CreateTime = psp.CreateTime, + // Id = psp.Id, + // ProductId = psp.ProductId, + // PurchaseProductId = psp.PurchaseProductId, + // PurchaseUrl = psp.PurchaseUrl, + // SkuId = psp.SkuId, + // SkuPurchaseSchemeId = psp.SkuPurchaseSchemeId, + // PurchaserId = p.Id, + // PurchaserId2 = p.Id2, + // PurchaserLocation = p.Location, + // PurchaserName = p.Name, + // PurchasePlatform = p.Platform, + // PurchaserMemberId = p.MemberId + // //PurchaserPurchasedCount = p.PurchasedCount, + // //PurchaserPurchasedSkuCount = p.PurchasedSkuCount, + // }); + var purchaseSchemeProductList = fsql.Select() + .Where(psp => purchaseSchemeIdList.Contains(psp.SkuPurchaseSchemeId)) + .ToList(); var purchaseSchemeProductSkuList = fsql.Select().Where(p => purchaseSchemeIdList.Contains(p.SkuPurchaseSchemeId)) .ToList().Map>(); @@ -758,6 +761,48 @@ namespace BBWYB.Server.Business } } + List purchaserIdList = purchaseSchemeProductList.Select(x => x.PurchaserId).Distinct().ToList(); + var dbPurchaserList = fsql.Select(purchaserIdList).ToList(); + if (request.IncludePurchaserStatisticsInfo == 1) + { + #region 查询SKU采购数 + var purchasedSkuList = fsql.Select() + .InnerJoin((spr, ps) => spr.SkuId == ps.Id) + .Where((spr, ps) => ps.ShopId == request.ShopId && purchaserIdList.Contains(spr.PurchaserId)) + .GroupBy((spr, ps) => new { spr.PurchaserId, spr.SkuId }) + .ToList(g => new + { + g.Key.PurchaserId, + g.Key.SkuId + }); + + #endregion + + #region 查询订单数 + var poList = fsql.Select() + .InnerJoin((opi, o) => opi.OrderId == o.Id) + .Where((opi, o) => opi.ShopId == request.ShopId && + opi.IsEnabled == true && + o.OrderState != Enums.OrderState.已取消 && + purchaserIdList.Contains(opi.PurchaserId)) + .GroupBy((opi, o) => opi.PurchaserId) + .ToList(g => new + { + PurchaserId = g.Key, + Count = g.Count() + }); + + #endregion + + foreach (var purchaser in dbPurchaserList) + { + purchaser.PurchasedSkuCount = purchasedSkuList.Where(x => x.PurchaserId == purchaser.Id) + .Select(x => x.SkuId) + .Distinct() + .Count(); + purchaser.PurchasedCount = poList.FirstOrDefault(x => x.PurchaserId == purchaser.Id)?.Count ?? 0; + } + } foreach (var scheme in purchaseSchemeList) { @@ -771,6 +816,18 @@ namespace BBWYB.Server.Business psk.PurchaseProductId == schemeProduct.PurchaseProductId); if (schemeProductSkuList.Count() > 0) schemeProduct.PurchaseSchemeProductSkuList.AddRange(schemeProductSkuList); + + var purchaser = dbPurchaserList.FirstOrDefault(p => p.Id == schemeProduct.PurchaserId); + if (purchaser != null) + { + schemeProduct.PurchaserId = purchaser.Id; + schemeProduct.PurchaserId2 = purchaser.Id2; + schemeProduct.PurchaserLocation = purchaser.Location; + schemeProduct.PurchaserMemberId = purchaser.MemberId; + schemeProduct.PurchaserName = purchaser.Name; + schemeProduct.PurchaserPurchasedCount = purchaser.PurchasedCount; + schemeProduct.PurchaserPurchasedSkuCount = purchaser.PurchasedSkuCount; + } } } @@ -779,17 +836,9 @@ namespace BBWYB.Server.Business { if (!scheme.PurchaserList.Any(p => p.Id == schemeProduct.PurchaserId)) { - scheme.PurchaserList.Add(new Purchaser() - { - Id = schemeProduct.PurchaserId, - Id2 = schemeProduct.PurchaserId2, - Location = schemeProduct.PurchaserLocation, - Name = schemeProduct.PurchaserName, - Platform = schemeProduct.PurchasePlatform, - MemberId = schemeProduct.PurchaserMemberId, - PurchasedCount = schemeProduct.PurchaserPurchasedCount, - PurchasedSkuCount = schemeProduct.PurchaserPurchasedSkuCount - }); + var purchaser = dbPurchaserList.FirstOrDefault(p => p.Id == schemeProduct.PurchaserId); + if (purchaser != null) + scheme.PurchaserList.Add(purchaser); } } #endregion diff --git a/BBWYB.Server.Business/Purchaser/PurchaserBusiness.cs b/BBWYB.Server.Business/Purchaser/PurchaserBusiness.cs index d8392a9..96bd32a 100644 --- a/BBWYB.Server.Business/Purchaser/PurchaserBusiness.cs +++ b/BBWYB.Server.Business/Purchaser/PurchaserBusiness.cs @@ -160,18 +160,15 @@ namespace BBWYB.Server.Business #endregion #region 订单数 - var currentOpiList = poList.Where(x => x.PurchaserId == purchaser.Id).ToList(); - purchaser.PurchaseOrderCount = currentOpiList.FirstOrDefault(x => x.PurchaserId == purchaser.Id)?.Count ?? 0; + purchaser.PurchasedCount = poList.FirstOrDefault(x => x.PurchaserId == purchaser.Id)?.Count ?? 0; #endregion #region 采购金额 - var currentOpiAmountList = purchaseAmountList.Where(x => x.PurchaserId == purchaser.Id).ToList(); - purchaser.PurchaseAmount = currentOpiAmountList.FirstOrDefault(x => x.PurchaserId == purchaser.Id)?.PurchaseAmount ?? 0; + purchaser.PurchaseAmount = purchaseAmountList.FirstOrDefault(x => x.PurchaserId == purchaser.Id)?.PurchaseAmount ?? 0; #endregion #region 最近采购时间 - var currentRecentPurchaseTimeList = recentPurchaseTimeList.Where(x => x.PurchaserId == purchaser.Id).ToList(); - purchaser.LastPurchaseTime = currentRecentPurchaseTimeList.FirstOrDefault(x => x.PurchaserId == purchaser.Id)?.CreateTime; + purchaser.LastPurchaseTime = recentPurchaseTimeList.FirstOrDefault(x => x.PurchaserId == purchaser.Id)?.CreateTime; #endregion #region 主营类目/标签 diff --git a/BBWYB.Server.Model/Db/Purchaser/Purchaser.cs b/BBWYB.Server.Model/Db/Purchaser/Purchaser.cs index cbaf0a3..1024c17 100644 --- a/BBWYB.Server.Model/Db/Purchaser/Purchaser.cs +++ b/BBWYB.Server.Model/Db/Purchaser/Purchaser.cs @@ -49,17 +49,7 @@ namespace BBWYB.Server.Model.Db [Column(MapType = typeof(int?))] public Enums.Platform? Platform { get; set; } - /// - /// 采购次数 - /// - [Column(DbType = "int")] - public int? PurchasedCount { get; set; } = 0; - /// - /// 采购过的Sku数 - /// - [Column(DbType = "int")] - public int? PurchasedSkuCount { get; set; } = 0; } diff --git a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs index 94e748f..8e3047b 100644 --- a/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs +++ b/BBWYB.Server.Model/Dto/Request/PurchaseScheme/QuerySchemeRequest.cs @@ -52,5 +52,10 @@ namespace BBWYB.Server.Model.Dto /// public int? IncludeSkuStatisticsInfo { get; set; } + /// + /// 是否包含采购商统计信息 (采购次数/采购SKU数) + /// + public int? IncludePurchaserStatisticsInfo { get; set; }; + } } diff --git a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs index d7dc078..719a598 100644 --- a/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeResponse.cs @@ -34,12 +34,12 @@ namespace BBWYB.Server.Model.Dto public new List PurchaseSchemeProductList { get; set; } - public List PurchaserList { get; set; } + public List PurchaserList { get; set; } public PurchaseSchemeResponse() { PurchaseSchemeProductList = new List(); - PurchaserList = new List(); + PurchaserList = new List(); } } } diff --git a/BBWYB.Server.Model/Dto/Response/Purchaser/PurchaserResponse.cs b/BBWYB.Server.Model/Dto/Response/Purchaser/PurchaserResponse.cs index 6d3f3d9..9dd1a24 100644 --- a/BBWYB.Server.Model/Dto/Response/Purchaser/PurchaserResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Purchaser/PurchaserResponse.cs @@ -17,27 +17,27 @@ namespace BBWYB.Server.Model.Dto /// /// 绑定SPU数 /// - public long? BindingSpuCount { get; set; } + public int? BindingSpuCount { get; set; } /// /// 采购SPU数 /// - public long? PurchasedSpuCount { get; set; } + public int? PurchasedSpuCount { get; set; } /// /// 绑定SKU数 /// - public long? BindingSkuCount { get; set; } + public int? BindingSkuCount { get; set; } /// /// 采购SKU数 /// - public long? PurchasedSkuCount { get; set; } + public int? PurchasedSkuCount { get; set; } = 0; /// - /// 采购订单数 + /// 采购次数/采购订单数 /// - public long? PurchaseOrderCount { get; set; } + public int? PurchasedCount { get; set; } = 0; /// /// 采购金额