From 6f3f7e02f72ec4540f732eabcc1bfe7958a5d9d6 Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Mon, 1 Jan 2024 17:07:15 +0800 Subject: [PATCH] 1 --- .../Sync/OrderSyncBusiness.cs | 4 +- .../Sync/ProductSyncBusiness.cs | 142 ------------------ 2 files changed, 2 insertions(+), 144 deletions(-) diff --git a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs index 249480e1..04c536a9 100644 --- a/BBWY.Server.Business/Sync/OrderSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/OrderSyncBusiness.cs @@ -396,8 +396,8 @@ namespace BBWY.Server.Business #region 订单sku金额明细 var skuJArray = jtoken["skuList"] as JArray; - if (skuJArray != null && skuJArray.Count() > 0) - { + if (skuJArray != null && skuJArray.Count() > 0) + { foreach (var oskuJtoken in skuJArray) { var skuDiscountInfoList = oskuJtoken["skuDiscountInfoList"] as JArray; diff --git a/BBWY.Server.Business/Sync/ProductSyncBusiness.cs b/BBWY.Server.Business/Sync/ProductSyncBusiness.cs index a3dc48c3..d6e51b58 100644 --- a/BBWY.Server.Business/Sync/ProductSyncBusiness.cs +++ b/BBWY.Server.Business/Sync/ProductSyncBusiness.cs @@ -44,148 +44,6 @@ namespace BBWY.Server.Business.Sync this.categoryCache = new ConcurrentDictionary(); } - 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 = ""; - try - { - var shopId = long.Parse(shop.ShopId); - List insertProductList = new List(); - List> updateProductList = new List>(); - - List inserSkuList = new List(); - List> updateProductSkuList = new List>(); - - var productIds = productList.Items.Select(p => p.Id); - var dbProducts = fsql.Select().Where(p => p.ShopId == shopId && productIds.Contains(p.Id)).ToList(); - var dbProductSkus = fsql.Select().Where(s => s.ShopId == shopId && productIds.Contains(s.ProductId)).ToList(); - - foreach (var product in productList.Items) - { - Thread.Sleep(200); - currentProductId = product.Id; - - #region 检查sku - var skuList = productBusiness.GetProductSkuList(new SearchProductSkuRequest() - { - AppKey = shop.AppKey, - AppSecret = shop.AppSecret, - AppToken = shop.AppToken, - Platform = shop.PlatformId, - Spu = product.Id, - IsContainSource = true - }); - if (skuList == null || skuList.Count() == 0) - continue; - - //排查已删除的sku - var currentDbSkus = dbProductSkus.Where(dbsku => dbsku.ProductId == product.Id).ToList(); - var deletedSkuList = currentDbSkus.Where(dbsku => skuList.Count(s => s.Id == dbsku.Id) == 0).ToList(); - if (deletedSkuList.Count() > 0) - { - foreach (var deletedSku in deletedSkuList) - { - var update = fsql.Update(deletedSku.Id).Set(s => s.State, 4); - updateProductSkuList.Add(update); - } - } - - foreach (var sku in skuList) - { - var categoryId = sku.Source.Value("categoryId"); - var dbSku = dbProductSkus.FirstOrDefault(s => s.Id == sku.Id); - if (dbSku == null) - { - inserSkuList.Add(new ProductSku() - { - Id = sku.Id, - CreateTime = sku.CreateTime ?? DateTime.Now, - Logo = sku.Logo, - Platform = shop.PlatformId, - Price = sku.Price, - ProductId = sku.ProductId, - ShopId = shopId, - Title = sku.Title, - State = sku.State, - CategoryId = categoryId - }); - } - else if (dbSku.State != sku.State || dbSku.Price != sku.Price || dbSku.CategoryId != categoryId) - { - var update = fsql.Update(dbSku.Id) - .Set(s => s.State, sku.State) - .Set(s => s.Price, sku.Price) - .Set(s => s.CategoryId, categoryId); - 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(() => - { - fsql.Insert(insertProductList).ExecuteAffrows(); - fsql.Insert(inserSkuList).ExecuteAffrows(); - if (updateProductList.Count > 0) - foreach (var update in updateProductList) - update.ExecuteAffrows(); - if (updateProductSkuList.Count > 0) - foreach (var update in updateProductSkuList) - update.ExecuteAffrows(); - - }); - } - catch (Exception ex) - { - throw new Exception(currentProductId, ex); - } - } - private void SyncProduct(ShopResponse shop, bool IsSyncAllProduct = false) { try