|
|
|
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<PurchaseSchemeProduct, PurchaseScheme, Purchaser>()
|
|
|
|
.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<IUpdate<Purchaser>> updatePurchaserList = new List<IUpdate<Purchaser>>();
|
|
|
|
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<Purchaser>(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<OrderCostDetail, Order>().InnerJoin((ocd, o) => ocd.OrderId == o.Id)
|
|
|
|
.Where((ocd, o) => ocd.IsEnabled == true &&
|
|
|
|
o.IsPurchased == true &&
|
|
|
|
o.OrderState != Enums.OrderState.已取消 &&
|
|
|
|
!fsql.Select<OrderSkuCost>().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<OrderSku>().Where(osku => orderIds.Contains(osku.OrderId)).ToList();
|
|
|
|
|
|
|
|
var insertOrderSkuCostList = new List<OrderSkuCost>();
|
|
|
|
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) - osc.PurchaseFreight - osc.SkuAmount
|
|
|
|
};
|
|
|
|
insertOrderSkuCostList.Add(insert);
|
|
|
|
}
|
|
|
|
fsql.Transaction(() =>
|
|
|
|
{
|
|
|
|
fsql.Insert(insertOrderSkuCostList).ExecuteAffrows();
|
|
|
|
});
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|