From 1c63268657938a1ca096f5e9d734c6d2e140cb4b Mon Sep 17 00:00:00 2001 From: shanji <18996038927@163.com> Date: Wed, 26 Jul 2023 16:41:48 +0800 Subject: [PATCH] =?UTF-8?q?1.=E6=89=B9=E9=87=8F=E4=BF=AE=E5=A4=8D=E9=87=87?= =?UTF-8?q?=E8=B4=AD=E5=95=86=E6=95=B0=E6=8D=AE=202.=E8=AE=A2=E5=8D=95?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E8=BF=94=E5=9B=9E=E5=80=BC=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E5=95=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../APIServices/PurchaseProductAPIService.cs | 5 -- .../Controllers/DataRepairController.cs | 8 ++ .../DataRepair/DataRepairBusiness.cs | 74 ++++++++++++++++++- BBWYB.Server.Business/Order/OrderBusiness.cs | 11 ++- .../PurchaseOrder/PurchaseOrderBusiness.cs | 11 ++- .../PurchaseProductAPIService.cs | 63 +++++++++++----- .../Db/PurchaseScheme/PurchaseScheme.cs | 2 - .../Db/PurchaseScheme/Purchaser.cs | 2 +- .../Order/OrderPurchaseInfoResponse.cs | 5 ++ 9 files changed, 149 insertions(+), 32 deletions(-) diff --git a/BBWYB.Client/APIServices/PurchaseProductAPIService.cs b/BBWYB.Client/APIServices/PurchaseProductAPIService.cs index b5f42d4..4ad8e49 100644 --- a/BBWYB.Client/APIServices/PurchaseProductAPIService.cs +++ b/BBWYB.Client/APIServices/PurchaseProductAPIService.cs @@ -20,13 +20,8 @@ namespace BBWYB.Client.APIServices private string oneBoundKey = "t5060712539"; private string oneBoundSecret = "20211103"; - //private string qtAppId = "BBWY2023022001"; - //private string qtAppSecret = "908e131365d5448ca651ba20ed7ddefe"; private TimeSpan purchaseProductCacheTimeSpan; - //private TimeSpan _1688SessionIdTimeSpan; - - //private ConcurrentDictionary purchaseSchemeProductSkus)> productChaches; private IDictionary _1688ProductDetailRequestHeader; diff --git a/BBWYB.Server.API/Controllers/DataRepairController.cs b/BBWYB.Server.API/Controllers/DataRepairController.cs index e01a121..da563c3 100644 --- a/BBWYB.Server.API/Controllers/DataRepairController.cs +++ b/BBWYB.Server.API/Controllers/DataRepairController.cs @@ -25,5 +25,13 @@ namespace BBWYB.Server.API.Controllers dataRepairBusiness.SubscribeKD100(waybillNo, targetCompanyCode); } + /// + /// 修复采购商信息 + /// + [HttpPost] + public void SupplementPurchaserInfo() + { + dataRepairBusiness.SupplementPurchaserInfo(); + } } } diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs index 7c953d0..93f4187 100644 --- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs +++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs @@ -1,8 +1,10 @@ using BBWYB.Common.Log; using BBWYB.Common.Models; +using BBWYB.Server.Model; using BBWYB.Server.Model.Db; using BBWYB.Server.Model.Dto; using FreeSql; +using System.Net.Http.Headers; using Yitter.IdGenerator; namespace BBWYB.Server.Business @@ -10,9 +12,11 @@ namespace BBWYB.Server.Business public class DataRepairBusiness : BaseBusiness, IDenpendency { private KuaiDi100Manager kuaiDi100Manager; - public DataRepairBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, KuaiDi100Manager kuaiDi100Manager) : base(fsql, nLogManager, idGenerator) + private PurchaseSchemeBusiness purchaseSchemeBusiness; + public DataRepairBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, KuaiDi100Manager kuaiDi100Manager, PurchaseSchemeBusiness purchaseSchemeBusiness) : base(fsql, nLogManager, idGenerator) { this.kuaiDi100Manager = kuaiDi100Manager; + this.purchaseSchemeBusiness = purchaseSchemeBusiness; } @@ -20,5 +24,73 @@ namespace BBWYB.Server.Business { kuaiDi100Manager.SubscribeKuaiDi100(waybillNo, targetCompanyCode, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish"); } + + public void SupplementPurchaserInfo() + { + var purlList = fsql.Select() + .InnerJoin((psp, ps, p) => psp.SkuPurchaseSchemeId == ps.Id) + .InnerJoin((psp, ps, p) => ps.PurchaserId == p.Id) + .Where((psp, ps, p) => ps.PurchasePlatform == Enums.Platform.阿里巴巴 && string.IsNullOrEmpty(p.Id2)) + .ToList((psp, ps, p) => new + { + //psp.PurchaseUrl, + psp.PurchaseProductId, + p.Id + }); + var groups = purlList.GroupBy(p => p.Id); + Console.WriteLine(groups.Count()); + IList> updatePurchaserList = new List>(); + int i = 1; + foreach (var group in groups) + { + var purchaseId = group.Key; + var productId = group.Max(p => p.PurchaseProductId); + Thread.Sleep(1000); + Console.WriteLine(); + Console.ForegroundColor = ConsoleColor.Red; + Console.WriteLine($"index {i}"); + Console.ResetColor(); + Console.WriteLine(); + var response = purchaseSchemeBusiness.GetPurchaseSkuBasicInfo(new PurchaseSkuBasicInfoRequest() + { + FirstApiMode = Enums.PurchaseProductAPIMode.Spider, + Platform = Enums.Platform.阿里巴巴, + PriceMode = Enums.PurchaseOrderMode.批发, + PurchaseProductId = productId + }); + if (!string.IsNullOrEmpty(response?.Purchaser?.Id2)) + { + if (response.Purchaser.Id2.Length > 20) + Console.WriteLine(response.Purchaser.Id2); + var update = fsql.Update(purchaseId).Set(p => p.Id2, response.Purchaser.Id2); + updatePurchaserList.Add(update); + } + i++; + + if (updatePurchaserList.Count >= 10) + { + fsql.Transaction(() => + { + foreach (var update in updatePurchaserList) + update.ExecuteAffrows(); + }); + updatePurchaserList.Clear(); + Console.WriteLine(); + Console.ForegroundColor = ConsoleColor.Red; + Console.WriteLine("更新数据库更新"); + Console.ResetColor(); + Console.WriteLine(); + } + } + + if (updatePurchaserList.Count() > 0) + { + fsql.Transaction(() => + { + foreach (var update in updatePurchaserList) + update.ExecuteAffrows(); + }); + } + } } } diff --git a/BBWYB.Server.Business/Order/OrderBusiness.cs b/BBWYB.Server.Business/Order/OrderBusiness.cs index 45e944e..84b9acb 100644 --- a/BBWYB.Server.Business/Order/OrderBusiness.cs +++ b/BBWYB.Server.Business/Order/OrderBusiness.cs @@ -265,6 +265,7 @@ namespace BBWYB.Server.Business #region 处理采购信息 var orderPurchaseInfoList = fsql.Select().Where(op => orderIdList.Contains(op.OrderId) && op.IsEnabled == true).ToList(); + var purchaserIdList = orderPurchaseInfoList.Select(opi => opi.PurchaserId).Distinct().ToList(); var orderPurchaseSkuInfoList = fsql.Select().Where(o => orderIdList.Contains(o.OrderId)).ToList(); foreach (var order in orderList) { @@ -277,6 +278,14 @@ namespace BBWYB.Server.Business } #endregion + #region 处理采购单商家信息 + var purchaserList = fsql.Select(purchaserIdList).ToList(); + foreach (var purchaseOrder in orderPurchaseInfoList) + { + purchaseOrder.Purchaser = purchaserList.FirstOrDefault(p => p.Id == purchaseOrder.PurchaserId); + } + #endregion + #region 处理SKU var orderSkuList = fsql.Select().Where(osku => orderIdList.Contains(osku.OrderId)).ToList(); foreach (var order in orderList) @@ -561,7 +570,7 @@ namespace BBWYB.Server.Business .Set(osku => osku.InPackAmount, orderSku.PackAmount)); var ocdList = orderCostDetailList.Where(ocd => ocd.SkuId == orderSku.SkuId).ToList(); - if (ocdList != null && ocdList.Count()>0) + if (ocdList != null && ocdList.Count() > 0) { foreach (var orderCostDetail in ocdList) { diff --git a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs index 5b3aaf9..7289b69 100644 --- a/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs +++ b/BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs @@ -739,10 +739,13 @@ namespace BBWYB.Server.Business purchaserId = purchaserId.Replace("b2b-", string.Empty); var purchaserId2 = purchaserId.Substring(0, purchaserId.Length - 5); var purchaserIds = new List() { purchaserId, purchaserId2 }; - var dbPurchaser = fsql.Select().Where(p => p.Platform == Enums.Platform.阿里巴巴 && purchaserIds.Contains(p.Id)).ToOne(); + var dbPurchaser = fsql.Select().Where(p => p.Platform == Enums.Platform.阿里巴巴 && (purchaserIds.Contains(p.Id) || + purchaserIds.Contains(p.Id2))).ToOne(); if (dbPurchaser == null) throw new BusinessException($"采购单{purchaseOrder.PurchaseOrderId}缺少有效采购商"); purchaserId = dbPurchaser.Id; + if (string.IsNullOrEmpty(purchaseOrder.PurchaserId)) + purchaseOrder.PurchaserId = purchaserId; #endregion #region 匹配采购方案 @@ -914,8 +917,10 @@ namespace BBWYB.Server.Business dbPurchaserOrder.PurchaseAccountName = purchaseOrder.PurchaseAccountName; //dbPurchaserOrder.BelongSkuIds = string.Join(",", purchaseOrder.AssocationOrderCostDetailList.Select(x => x.SkuId)); dbPurchaserOrder.PurchasePlatform = purchaseOrder.PurchasePlatform; - dbPurchaserOrder.PurchaserId = purchaseOrder.PurchaserId; - dbPurchaserOrder.PurchaserName = purchaseOrder.PurchaserName; + if (!string.IsNullOrEmpty(purchaseOrder.PurchaserId) && purchaseOrder.PurchaserId != dbPurchaserOrder.PurchaserId) + dbPurchaserOrder.PurchaserId = purchaseOrder.PurchaserId; + if (!string.IsNullOrEmpty(purchaseOrder.PurchaserName) && purchaseOrder.PurchaserName != dbPurchaserOrder.PurchaserName) + dbPurchaserOrder.PurchaserName = purchaseOrder.PurchaserName; updateOrderPurchaseInfoList.Add(fsql.Update().SetSource(dbPurchaserOrder)); foreach (var assOrderCostDetail in purchaseOrder.AssocationOrderCostDetailList) diff --git a/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs b/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs index 0995f7f..2a76e38 100644 --- a/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs +++ b/BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs @@ -27,6 +27,10 @@ namespace BBWYB.Server.Business private IDictionary _1688ProductDetailRequestHeader; + private List _1688ColorPropertyFieldIdList; + private List locationIdList; + private List priceIdList; + public PurchaseProductAPIService(RestApiService restApiService, IMemoryCache memoryCache) { this.memoryCache = memoryCache; @@ -40,6 +44,16 @@ namespace BBWYB.Server.Business { "Accept-Language","zh-CN,zh;q=0.9,en;q=0.8,en-GB;q=0.7,en-US;q=0.6"} }; purchaseProductCacheTimeSpan = TimeSpan.FromDays(1); + _1688ColorPropertyFieldIdList = new List() { 3216, 1627207, 1234, 3151, 7853, 446, 374, 404, 100019516, 3114, 2068 }; + //jobject["data"]["1081181309101"] != null ? + // jobject["data"]["1081181309101"]["data"]["location"].ToString() : + // jobject["data"]["16347413030323"]["data"]["location"].ToString(), + locationIdList = new List() { "1081181309101", "16347413030323", "13772573013156" }; + + //var firstPrice = jobject["data"]["1081181309582"] != null ? + // jobject["data"]["1081181309582"]["data"]["priceModel"]["currentPrices"][0].Value("price") : + // jobject["data"]["16347413030316"]["data"]["priceModel"]["currentPrices"][0].Value("price"); + priceIdList = new List() { "1081181309582", "1081181309582", "16347413030316", "13772573013151" }; } public PurchaseSkuBasicInfoResponse GetProductInfo(PurchaseSkuBasicInfoRequest request) @@ -193,32 +207,43 @@ namespace BBWYB.Server.Business var jsonStr = match.Groups[2].Value; var jobject = JObject.Parse(jsonStr); - //16347413030323 + var location = ""; + for (var i = 0; i < locationIdList.Count(); i++) + { + if (jobject["data"][locationIdList[i]] != null) + { + location = jobject["data"][locationIdList[i]]["data"]["location"].ToString(); + break; + } + } var purchaser = new Purchaser() { Id = jobject["globalData"]["tempModel"]["sellerUserId"].ToString(), Id2 = jobject["globalData"]["tempModel"]["sellerLoginId"]?.ToString(), Name = jobject["globalData"]["tempModel"]["companyName"].ToString(), - Location = jobject["data"]["1081181309101"] != null ? - jobject["data"]["1081181309101"]["data"]["location"].ToString() : - jobject["data"]["16347413030323"]["data"]["location"].ToString(), + Location = location, Platform = Enums.Platform.阿里巴巴 }; - - var colorsProperty = jobject["globalData"]["skuModel"]["skuProps"].FirstOrDefault(j => j.Value("fid") == 3216 || - j.Value("fid") == 1627207 || - j.Value("fid") == 1234 || - j.Value("fid") == 3151)["value"] - .Children() - .Select(j => new - { - name = j.Value("name"), - imageUrl = j.Value("imageUrl") - }).ToList(); - - var firstPrice = jobject["data"]["1081181309582"] != null ? - jobject["data"]["1081181309582"]["data"]["priceModel"]["currentPrices"][0].Value("price") : - jobject["data"]["16347413030316"]["data"]["priceModel"]["currentPrices"][0].Value("price"); + var fidJToken = jobject["globalData"]["skuModel"]["skuProps"].FirstOrDefault(j => _1688ColorPropertyFieldIdList.Contains(j.Value("fid"))); + if (fidJToken == null) + fidJToken = jobject["globalData"]["skuModel"]["skuProps"].FirstOrDefault(j => j.Value("prop").Contains("颜色")); + if (fidJToken == null && jobject["globalData"]["skuModel"]["skuProps"].Children().Count() == 1) + fidJToken = jobject["globalData"]["skuModel"]["skuProps"].FirstOrDefault(); + var colorsProperty = fidJToken["value"].Children() + .Select(j => new + { + name = j.Value("name"), + imageUrl = j.Value("imageUrl") + }).ToList(); + var firstPrice = 0.0M; + for (var i = 0; i < priceIdList.Count(); i++) + { + if (jobject["data"][priceIdList[i]] != null) + { + firstPrice = jobject["data"][priceIdList[i]]["data"]["priceModel"]["currentPrices"][0].Value("price"); + break; + } + } var list = new List(); diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs b/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs index 3b1ae95..be1d49c 100644 --- a/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs +++ b/BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs @@ -1,8 +1,6 @@ using BBWYB.Server.Model.Db; using FreeSql.DataAnnotations; -using System; -using System.Collections.Generic; namespace BBWYB.Server.Model { diff --git a/BBWYB.Server.Model/Db/PurchaseScheme/Purchaser.cs b/BBWYB.Server.Model/Db/PurchaseScheme/Purchaser.cs index d04021f..d8e6d38 100644 --- a/BBWYB.Server.Model/Db/PurchaseScheme/Purchaser.cs +++ b/BBWYB.Server.Model/Db/PurchaseScheme/Purchaser.cs @@ -19,7 +19,7 @@ namespace BBWYB.Server.Model.Db /// /// 采购商Id2 (1688 SellerLoginId) /// - [Column(StringLength = 20)] + [Column(StringLength = 50)] public string Id2 { get; set; } /// diff --git a/BBWYB.Server.Model/Dto/Response/Order/OrderPurchaseInfoResponse.cs b/BBWYB.Server.Model/Dto/Response/Order/OrderPurchaseInfoResponse.cs index 61c2004..06c4120 100644 --- a/BBWYB.Server.Model/Dto/Response/Order/OrderPurchaseInfoResponse.cs +++ b/BBWYB.Server.Model/Dto/Response/Order/OrderPurchaseInfoResponse.cs @@ -13,5 +13,10 @@ namespace BBWYB.Server.Model.Dto /// 快递单列表 /// public IList PurchaseExpressOrderList { get; set; } + + /// + /// 采购商家 + /// + public Purchaser Purchaser { get; set; } } }