From daebf8e5bfc6dcc8ddf9a42cae3da6041460e2c7 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Sat, 24 Sep 2022 21:23:19 +0800 Subject: [PATCH] =?UTF-8?q?product=E5=90=8C=E6=AD=A5mainsku?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sync/ProductSyncBusiness.cs | 66 +++++++++++++------ BBWY.Server.Model/Db/Product/Product.cs | 6 ++ 2 files changed, 53 insertions(+), 19 deletions(-) diff --git a/BBWY.Server.Business/Sync/ProductSyncBusiness.cs b/BBWY.Server.Business/Sync/ProductSyncBusiness.cs index f8c3ad11..fa4bfa5e 100644 --- a/BBWY.Server.Business/Sync/ProductSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/ProductSyncBusiness.cs @@ -37,6 +37,23 @@ namespace BBWY.Server.Business.Sync this.productBusiness = productBusiness; } + private string GetMainSkuId(IList skuList) + { + var maxPrice = skuList.Max(s => s.Price); + var sku = skuList.FirstOrDefault(s => s.Price == maxPrice && s.State == 1); + return sku?.Id ?? string.Empty; + } + + private bool CheckMainSkuState(IList skuList, string mainSkuId) + { + if (string.IsNullOrEmpty(mainSkuId)) + return false; + var mainSku = skuList.FirstOrDefault(s => s.Id == mainSkuId); + if (mainSku == null || mainSku.State != 1) + return false; + return true; + } + private void SyncProduct(ShopResponse shop, ProductListResponse productList) { var currentProductId = ""; @@ -56,26 +73,8 @@ namespace BBWY.Server.Business.Sync foreach (var product in productList.Items) { currentProductId = product.Id; - var dbProduct = dbProducts.FirstOrDefault(dbp => dbp.Id == product.Id); - if (dbProduct == null) - { - insertProductList.Add(new Product() - { - Id = product.Id, - CreateTime = product.CreateTime ?? DateTime.Now, - Platform = shop.PlatformId, - ProductItemNum = product.ProductItemNum, - ShopId = shopId, - Title = product.Title, - State = product.State - }); - } - else if (dbProduct.State != product.State) - { - var update = fsql.Update(product.Id).Set(p => p.State, product.State); - updateProductList.Add(update); - } + #region 检查sku var skuList = productBusiness.GetProductSkuList(new SearchProductSkuRequest() { AppKey = shop.AppKey, @@ -110,6 +109,35 @@ namespace BBWY.Server.Business.Sync updateProductSkuList.Add(update); } } + #endregion + + #region 检查产品 + var dbProduct = dbProducts.FirstOrDefault(dbp => dbp.Id == product.Id); + if (dbProduct == null) + { + insertProductList.Add(new Product() + { + Id = product.Id, + CreateTime = product.CreateTime ?? DateTime.Now, + Platform = shop.PlatformId, + ProductItemNum = product.ProductItemNum, + ShopId = shopId, + Title = product.Title, + State = product.State, + MainSkuId = GetMainSkuId(skuList) + }); + } + else if (dbProduct.State != product.State || !CheckMainSkuState(skuList, dbProduct.MainSkuId)) + { + string newMainSkuId = string.Empty; + if (!CheckMainSkuState(skuList, dbProduct.MainSkuId)) + newMainSkuId = GetMainSkuId(skuList); + + var update = fsql.Update(product.Id).SetIf(dbProduct.State != product.State, p => p.State, product.State) + .SetIf(!string.IsNullOrEmpty(newMainSkuId), p => p.MainSkuId, newMainSkuId); + updateProductList.Add(update); + } + #endregion } fsql.Transaction(() => diff --git a/BBWY.Server.Model/Db/Product/Product.cs b/BBWY.Server.Model/Db/Product/Product.cs index 5229fbf3..e92d858a 100644 --- a/BBWY.Server.Model/Db/Product/Product.cs +++ b/BBWY.Server.Model/Db/Product/Product.cs @@ -34,6 +34,12 @@ namespace BBWY.Server.Model.Db public string Title { get; set; } + /// + /// 主SkuId + /// + [Column(StringLength = 50)] + public string MainSkuId { get; set; } + /// /// 京东商品状态【-1:删除 1:从未上架 2:自主下架 4:系统下架 8:上架 513:从未上架待审 514:自主下架待审 516:系统下架待审 520:上架待审核 1028:系统下架审核失败】 ///