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 { public class DataRepairBusiness : BaseBusiness, IDenpendency { private KuaiDi100Manager kuaiDi100Manager; 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; } public void SubscribeKD100(string waybillNo, string targetCompanyCode) { 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(); }); } } public void SupplementOrderSkuCost() { var orderSkuCostList = fsql.Select().InnerJoin((ocd, o) => ocd.OrderId == o.Id) .Where((ocd, o) => ocd.IsEnabled == true && o.IsPurchased == true && o.OrderState != Enums.OrderState.已取消 && !fsql.Select().As("osc").Where(osc => osc.OrderId == o.Id).Any()) .GroupBy((ocd, o) => new { ocd.OrderId, ocd.SkuId }) .ToList(g => new { OrderId = g.Key.OrderId, SkuId = g.Key.SkuId, SkuAmount = g.Sum(g.Value.Item1.SkuAmount), PurchaseFreight = g.Sum(g.Value.Item1.PurchaseFreight) }); var orderIds = orderSkuCostList.Select(x => x.OrderId).Distinct().ToList(); var orderSkuList = fsql.Select().Where(osku => orderIds.Contains(osku.OrderId)).ToList(); var insertOrderSkuCostList = new List(); foreach (var osc in orderSkuCostList) { var osku = orderSkuList.FirstOrDefault(osku => osku.SkuId == osc.SkuId && osku.OrderId == osc.OrderId); var insert = new OrderSkuCost() { Id = idGenerator.NewLong(), CreateTime = DateTime.Now, DeliveryExpressFreight = 0M, OrderId = osc.OrderId, SkuId = osc.SkuId, OutPackAmount = 0M, PurchaseFreight = osc.PurchaseFreight, SkuAmount = osc.SkuAmount, TotalCost = osc.PurchaseFreight + osc.SkuAmount, Profit = ((osku.Price * osku.ItemTotal) ?? 0M) + osku.BuyerPayFreight - osc.PurchaseFreight - osc.SkuAmount }; insertOrderSkuCostList.Add(insert); } fsql.Transaction(() => { fsql.Insert(insertOrderSkuCostList).ExecuteAffrows(); }); } } }