From ef8b1f12337de948d4f8f572240d39d7b676afd1 Mon Sep 17 00:00:00 2001 From: shanj <18996038927@163.com> Date: Tue, 2 Apr 2024 15:09:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E4=BA=A7=E5=93=81=E5=90=8C?= =?UTF-8?q?=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Sync/ProductSyncBusiness.cs | 132 ++++++++++-------- .../QuanTan_Supplier_SearchSpuRequest.cs | 5 + SDKAdapter/AdapterEnums.cs | 8 ++ .../Client/Impl/OP_QuanTanClient.cs | 3 +- .../Request/Product/OP_QueryProductRequest.cs | 5 + 5 files changed, 97 insertions(+), 56 deletions(-) diff --git a/BBWYB.Server.Business/Sync/ProductSyncBusiness.cs b/BBWYB.Server.Business/Sync/ProductSyncBusiness.cs index c466336..266a664 100644 --- a/BBWYB.Server.Business/Sync/ProductSyncBusiness.cs +++ b/BBWYB.Server.Business/Sync/ProductSyncBusiness.cs @@ -312,28 +312,49 @@ namespace BBWYB.Server.Business.Sync List> updateProductSkuList = new List>(); #region 查询变化的spu - var spuRequest = new OP_QueryProductRequest() { - PageSize = 50, - PageIndex = 1, - AppKey = shop.AppKey, - AppSecret = shop.AppSecret, - AppToken = shop.AppToken, - Platform = SDKAdapter.AdapterEnums.PlatformType.拳探, - UpdateStartTime = DateTime.Now.AddHours(-1), - UpdateEndTime = DateTime.Now - }; - while (true) - { - var response = productBusiness.GetProductList(spuRequest); - if (response == null || response.Items == null || response.Items.Count == 0) - break; + #region 上架的spu + var spuRequest = new OP_QueryProductRequest() + { + PageSize = 50, + PageIndex = 1, + AppKey = shop.AppKey, + AppSecret = shop.AppSecret, + AppToken = shop.AppToken, + Platform = SDKAdapter.AdapterEnums.PlatformType.拳探, + UpdateStartTime = DateTime.Now.AddHours(-1), + UpdateEndTime = DateTime.Now + }; + while (true) + { + var response = productBusiness.GetProductList(spuRequest); + if (response == null || response.Items == null || response.Items.Count == 0) + break; - opProductList.AddRange(response.Items); - if (response.Items.Count < 50) - break; + opProductList.AddRange(response.Items); + if (response.Items.Count < spuRequest.PageSize) + break; + + spuRequest.PageIndex++; + } + #endregion - spuRequest.PageIndex++; + #region 下架的spu + spuRequest.PageIndex = 1; + spuRequest.ProductState = SDKAdapter.AdapterEnums.ProuctState.下架; + while (true) + { + var response = productBusiness.GetProductList(spuRequest); + if (response == null || response.Items == null || response.Items.Count == 0) + break; + + opProductList.AddRange(response.Items); + if (response.Items.Count < spuRequest.PageSize) + break; + + spuRequest.PageIndex++; + } + #endregion } #endregion @@ -379,39 +400,31 @@ namespace BBWYB.Server.Business.Sync updateProductList.Add(update); } } + #endregion #endregion - #region 查询变化的sku + #region 对比sku - var skuRequest = new OP_QueryProductSkuRequest() - { - AppKey = shop.AppKey, - AppSecret = shop.AppSecret, - AppToken = shop.AppToken, - Platform = SDKAdapter.AdapterEnums.PlatformType.拳探, - //Spu = product.Id, - PageSize = 50, - PageIndex = 1, - UpdateStartTime = DateTime.Now.AddHours(-1), - UpdateEndTime = DateTime.Now - }; - while (true) + foreach (var product in opProductList) { + var skuRequest = new OP_QueryProductSkuRequest() + { + AppKey = shop.AppKey, + AppSecret = shop.AppSecret, + AppToken = shop.AppToken, + Platform = SDKAdapter.AdapterEnums.PlatformType.拳探, + Spu = product.Id, + PageSize = 50, + PageIndex = 1, + }; + var response = productBusiness.GetProductSkuList(skuRequest); if (response == null || response.Items == null || response.Items.Count == 0) - break; - + continue; opProductSkuList.AddRange(response.Items); - if (response.Items.Count < 50) - break; - - skuRequest.PageIndex++; } - #endregion - - #region 对比sku var skuIdList = opProductSkuList.Select(x => x.Id); dbProductSkuList = fsql.Select(skuIdList).ToList(); @@ -430,7 +443,7 @@ namespace BBWYB.Server.Business.Sync SkuName = ps.Title, State = ps.State, SyncTime = DateTime.Now, - UpdateTime = ps.UpdateTime, + UpdateTime = DateTime.Now, UpperTime = ps.CreateTime, CategoryId = ps.CategoryId, CategoryName = ps.CategoryName @@ -440,27 +453,36 @@ namespace BBWYB.Server.Business.Sync #region 找出状态变化的SKU var stateChangeProductSkuList = opProductSkuList.Where(ps => dbProductSkuList.Any(dps => dps.Id == ps.Id && - (dps.State != ps.State || - dps.SkuName != ps.Title || - dps.Price != ps.Price || - dps.Logo != ps.Logo || - dps.CategoryId != ps.CategoryId))).ToList(); + (dps.State != ps.State || + dps.SkuName != ps.Title || + dps.Price != ps.Price || + dps.Logo != ps.Logo || + dps.CategoryId != ps.CategoryId))).ToList(); if (stateChangeProductSkuList.Count() > 0) { foreach (var productSku in stateChangeProductSkuList) { - var update = fsql.Update(productSku.Id).Set(ps => ps.State, productSku.State) - .Set(ps => ps.SkuName, productSku.Title) - .Set(ps => ps.Price, productSku.Price) - .Set(ps => ps.Logo, productSku.Logo) - .Set(ps => ps.CategoryId, productSku.CategoryId) - .Set(ps => ps.CategoryName, productSku.CategoryName) - .Set(ps => ps.UpdateTime, productSku.UpdateTime); + var update = fsql.Update(productSku.Id).Set(p => p.State, productSku.State) + .Set(p => p.SkuName, productSku.Title) + .Set(p => p.Price, productSku.Price) + .Set(p => p.Logo, productSku.Logo) + .Set(p => p.CategoryId, productSku.CategoryId) + .Set(p => p.CategoryName, productSku.CategoryName); updateProductSkuList.Add(update); } } #endregion + #region 找出接口查不出的SKU + var goneProductSkuList = dbProductSkuList.Where(dps => !opProductSkuList.Any(ps => ps.Id == dps.Id)).ToList(); + if (goneProductSkuList.Count() > 0) + { + var goneProductSkuIdList = goneProductSkuList.Select(ps => ps.Id).ToList(); + var update = fsql.Update().Set(ps => ps.State, 0).Where(ps => goneProductSkuIdList.Contains(ps.Id)); + updateProductSkuList.Add(update); + } + #endregion + #endregion #region 数据库操作 diff --git a/QuanTan.SDK/Models/Supplier/Request/Product/QuanTan_Supplier_SearchSpuRequest.cs b/QuanTan.SDK/Models/Supplier/Request/Product/QuanTan_Supplier_SearchSpuRequest.cs index d95d6fe..8e4739c 100644 --- a/QuanTan.SDK/Models/Supplier/Request/Product/QuanTan_Supplier_SearchSpuRequest.cs +++ b/QuanTan.SDK/Models/Supplier/Request/Product/QuanTan_Supplier_SearchSpuRequest.cs @@ -13,5 +13,10 @@ public DateTime? updateStart { get; set; } public DateTime? updateEnd { get; set; } + + /// + /// 上架状态 1上架 0下架 + /// + public string isShow { get; set; } = "1"; } } diff --git a/SDKAdapter/AdapterEnums.cs b/SDKAdapter/AdapterEnums.cs index 83d34cf..7976650 100644 --- a/SDKAdapter/AdapterEnums.cs +++ b/SDKAdapter/AdapterEnums.cs @@ -39,5 +39,13 @@ 批发 = 0, 代发 = 1 } + + /// + /// 商品状态 + /// + public enum ProuctState + { + 上架 = 1, 下架 = 0 + } } } diff --git a/SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs b/SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs index f8e7a9e..8e51489 100644 --- a/SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs +++ b/SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs @@ -33,7 +33,8 @@ namespace SDKAdapter.OperationPlatform.Client productId = request.Spu, storeId = request.AppToken, updateStart = request.UpdateStartTime, - updateEnd = request.UpdateEndTime + updateEnd = request.UpdateEndTime, + isShow = request.ProductState == AdapterEnums.ProuctState.下架 ? "0" : "1" }, request.AppKey, request.AppSecret); if (qtResponse.Status != 200) diff --git a/SDKAdapter/OperationPlatform/Models/Request/Product/OP_QueryProductRequest.cs b/SDKAdapter/OperationPlatform/Models/Request/Product/OP_QueryProductRequest.cs index fc3a288..e179135 100644 --- a/SDKAdapter/OperationPlatform/Models/Request/Product/OP_QueryProductRequest.cs +++ b/SDKAdapter/OperationPlatform/Models/Request/Product/OP_QueryProductRequest.cs @@ -33,5 +33,10 @@ /// 最后修改结束时间 /// public DateTime? UpdateEndTime { get; set; } + + /// + /// 上架状态 + /// + public AdapterEnums.ProuctState? ProductState { get; set; } } }