Browse Source

1.批量修复采购商数据

2.订单列表返回值新增采购商
yijia
shanji 2 years ago
parent
commit
1c63268657
  1. 5
      BBWYB.Client/APIServices/PurchaseProductAPIService.cs
  2. 8
      BBWYB.Server.API/Controllers/DataRepairController.cs
  3. 74
      BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs
  4. 11
      BBWYB.Server.Business/Order/OrderBusiness.cs
  5. 11
      BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs
  6. 63
      BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs
  7. 2
      BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs
  8. 2
      BBWYB.Server.Model/Db/PurchaseScheme/Purchaser.cs
  9. 5
      BBWYB.Server.Model/Dto/Response/Order/OrderPurchaseInfoResponse.cs

5
BBWYB.Client/APIServices/PurchaseProductAPIService.cs

@ -20,13 +20,8 @@ namespace BBWYB.Client.APIServices
private string oneBoundKey = "t5060712539"; private string oneBoundKey = "t5060712539";
private string oneBoundSecret = "20211103"; private string oneBoundSecret = "20211103";
//private string qtAppId = "BBWY2023022001";
//private string qtAppSecret = "908e131365d5448ca651ba20ed7ddefe";
private TimeSpan purchaseProductCacheTimeSpan; private TimeSpan purchaseProductCacheTimeSpan;
//private TimeSpan _1688SessionIdTimeSpan;
//private ConcurrentDictionary<string, (Purchaser purchaser, IList<PurchaseSchemeProductSku> purchaseSchemeProductSkus)> productChaches;
private IDictionary<string, string> _1688ProductDetailRequestHeader; private IDictionary<string, string> _1688ProductDetailRequestHeader;

8
BBWYB.Server.API/Controllers/DataRepairController.cs

@ -25,5 +25,13 @@ namespace BBWYB.Server.API.Controllers
dataRepairBusiness.SubscribeKD100(waybillNo, targetCompanyCode); dataRepairBusiness.SubscribeKD100(waybillNo, targetCompanyCode);
} }
/// <summary>
/// 修复采购商信息
/// </summary>
[HttpPost]
public void SupplementPurchaserInfo()
{
dataRepairBusiness.SupplementPurchaserInfo();
}
} }
} }

74
BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs

@ -1,8 +1,10 @@
using BBWYB.Common.Log; using BBWYB.Common.Log;
using BBWYB.Common.Models; using BBWYB.Common.Models;
using BBWYB.Server.Model;
using BBWYB.Server.Model.Db; using BBWYB.Server.Model.Db;
using BBWYB.Server.Model.Dto; using BBWYB.Server.Model.Dto;
using FreeSql; using FreeSql;
using System.Net.Http.Headers;
using Yitter.IdGenerator; using Yitter.IdGenerator;
namespace BBWYB.Server.Business namespace BBWYB.Server.Business
@ -10,9 +12,11 @@ namespace BBWYB.Server.Business
public class DataRepairBusiness : BaseBusiness, IDenpendency public class DataRepairBusiness : BaseBusiness, IDenpendency
{ {
private KuaiDi100Manager kuaiDi100Manager; 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.kuaiDi100Manager = kuaiDi100Manager;
this.purchaseSchemeBusiness = purchaseSchemeBusiness;
} }
@ -20,5 +24,73 @@ namespace BBWYB.Server.Business
{ {
kuaiDi100Manager.SubscribeKuaiDi100(waybillNo, targetCompanyCode, "http://bbwyb.qiyue666.com/api/purchaseorder/kuaidi100publish"); 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();
});
}
}
} }
} }

11
BBWYB.Server.Business/Order/OrderBusiness.cs

@ -265,6 +265,7 @@ namespace BBWYB.Server.Business
#region 处理采购信息 #region 处理采购信息
var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(op => orderIdList.Contains(op.OrderId) && op.IsEnabled == true).ToList<OrderPurchaseInfoResponse>(); var orderPurchaseInfoList = fsql.Select<OrderPurchaseInfo>().Where(op => orderIdList.Contains(op.OrderId) && op.IsEnabled == true).ToList<OrderPurchaseInfoResponse>();
var purchaserIdList = orderPurchaseInfoList.Select(opi => opi.PurchaserId).Distinct().ToList();
var orderPurchaseSkuInfoList = fsql.Select<OrderPurchaseSkuInfo>().Where(o => orderIdList.Contains(o.OrderId)).ToList<OrderPurchaseSkuInfoResponse>(); var orderPurchaseSkuInfoList = fsql.Select<OrderPurchaseSkuInfo>().Where(o => orderIdList.Contains(o.OrderId)).ToList<OrderPurchaseSkuInfoResponse>();
foreach (var order in orderList) foreach (var order in orderList)
{ {
@ -277,6 +278,14 @@ namespace BBWYB.Server.Business
} }
#endregion #endregion
#region 处理采购单商家信息
var purchaserList = fsql.Select<Purchaser>(purchaserIdList).ToList();
foreach (var purchaseOrder in orderPurchaseInfoList)
{
purchaseOrder.Purchaser = purchaserList.FirstOrDefault(p => p.Id == purchaseOrder.PurchaserId);
}
#endregion
#region 处理SKU #region 处理SKU
var orderSkuList = fsql.Select<OrderSku>().Where(osku => orderIdList.Contains(osku.OrderId)).ToList<OrderSkuResponse>(); var orderSkuList = fsql.Select<OrderSku>().Where(osku => orderIdList.Contains(osku.OrderId)).ToList<OrderSkuResponse>();
foreach (var order in orderList) foreach (var order in orderList)
@ -561,7 +570,7 @@ namespace BBWYB.Server.Business
.Set(osku => osku.InPackAmount, orderSku.PackAmount)); .Set(osku => osku.InPackAmount, orderSku.PackAmount));
var ocdList = orderCostDetailList.Where(ocd => ocd.SkuId == orderSku.SkuId).ToList(); 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) foreach (var orderCostDetail in ocdList)
{ {

11
BBWYB.Server.Business/PurchaseOrder/PurchaseOrderBusiness.cs

@ -739,10 +739,13 @@ namespace BBWYB.Server.Business
purchaserId = purchaserId.Replace("b2b-", string.Empty); purchaserId = purchaserId.Replace("b2b-", string.Empty);
var purchaserId2 = purchaserId.Substring(0, purchaserId.Length - 5); var purchaserId2 = purchaserId.Substring(0, purchaserId.Length - 5);
var purchaserIds = new List<string>() { purchaserId, purchaserId2 }; var purchaserIds = new List<string>() { purchaserId, purchaserId2 };
var dbPurchaser = fsql.Select<Purchaser>().Where(p => p.Platform == Enums.Platform. && purchaserIds.Contains(p.Id)).ToOne(); var dbPurchaser = fsql.Select<Purchaser>().Where(p => p.Platform == Enums.Platform. && (purchaserIds.Contains(p.Id) ||
purchaserIds.Contains(p.Id2))).ToOne();
if (dbPurchaser == null) if (dbPurchaser == null)
throw new BusinessException($"采购单{purchaseOrder.PurchaseOrderId}缺少有效采购商"); throw new BusinessException($"采购单{purchaseOrder.PurchaseOrderId}缺少有效采购商");
purchaserId = dbPurchaser.Id; purchaserId = dbPurchaser.Id;
if (string.IsNullOrEmpty(purchaseOrder.PurchaserId))
purchaseOrder.PurchaserId = purchaserId;
#endregion #endregion
#region 匹配采购方案 #region 匹配采购方案
@ -914,8 +917,10 @@ namespace BBWYB.Server.Business
dbPurchaserOrder.PurchaseAccountName = purchaseOrder.PurchaseAccountName; dbPurchaserOrder.PurchaseAccountName = purchaseOrder.PurchaseAccountName;
//dbPurchaserOrder.BelongSkuIds = string.Join(",", purchaseOrder.AssocationOrderCostDetailList.Select(x => x.SkuId)); //dbPurchaserOrder.BelongSkuIds = string.Join(",", purchaseOrder.AssocationOrderCostDetailList.Select(x => x.SkuId));
dbPurchaserOrder.PurchasePlatform = purchaseOrder.PurchasePlatform; dbPurchaserOrder.PurchasePlatform = purchaseOrder.PurchasePlatform;
dbPurchaserOrder.PurchaserId = purchaseOrder.PurchaserId; if (!string.IsNullOrEmpty(purchaseOrder.PurchaserId) && purchaseOrder.PurchaserId != dbPurchaserOrder.PurchaserId)
dbPurchaserOrder.PurchaserName = purchaseOrder.PurchaserName; dbPurchaserOrder.PurchaserId = purchaseOrder.PurchaserId;
if (!string.IsNullOrEmpty(purchaseOrder.PurchaserName) && purchaseOrder.PurchaserName != dbPurchaserOrder.PurchaserName)
dbPurchaserOrder.PurchaserName = purchaseOrder.PurchaserName;
updateOrderPurchaseInfoList.Add(fsql.Update<OrderPurchaseInfo>().SetSource(dbPurchaserOrder)); updateOrderPurchaseInfoList.Add(fsql.Update<OrderPurchaseInfo>().SetSource(dbPurchaserOrder));
foreach (var assOrderCostDetail in purchaseOrder.AssocationOrderCostDetailList) foreach (var assOrderCostDetail in purchaseOrder.AssocationOrderCostDetailList)

63
BBWYB.Server.Business/PurchaseScheme/PurchaseProductAPIService.cs

@ -27,6 +27,10 @@ namespace BBWYB.Server.Business
private IDictionary<string, string> _1688ProductDetailRequestHeader; private IDictionary<string, string> _1688ProductDetailRequestHeader;
private List<int> _1688ColorPropertyFieldIdList;
private List<string> locationIdList;
private List<string> priceIdList;
public PurchaseProductAPIService(RestApiService restApiService, IMemoryCache memoryCache) public PurchaseProductAPIService(RestApiService restApiService, IMemoryCache memoryCache)
{ {
this.memoryCache = 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"} { "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); purchaseProductCacheTimeSpan = TimeSpan.FromDays(1);
_1688ColorPropertyFieldIdList = new List<int>() { 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<string>() { "1081181309101", "16347413030323", "13772573013156" };
//var firstPrice = jobject["data"]["1081181309582"] != null ?
// jobject["data"]["1081181309582"]["data"]["priceModel"]["currentPrices"][0].Value<decimal>("price") :
// jobject["data"]["16347413030316"]["data"]["priceModel"]["currentPrices"][0].Value<decimal>("price");
priceIdList = new List<string>() { "1081181309582", "1081181309582", "16347413030316", "13772573013151" };
} }
public PurchaseSkuBasicInfoResponse GetProductInfo(PurchaseSkuBasicInfoRequest request) public PurchaseSkuBasicInfoResponse GetProductInfo(PurchaseSkuBasicInfoRequest request)
@ -193,32 +207,43 @@ namespace BBWYB.Server.Business
var jsonStr = match.Groups[2].Value; var jsonStr = match.Groups[2].Value;
var jobject = JObject.Parse(jsonStr); 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() var purchaser = new Purchaser()
{ {
Id = jobject["globalData"]["tempModel"]["sellerUserId"].ToString(), Id = jobject["globalData"]["tempModel"]["sellerUserId"].ToString(),
Id2 = jobject["globalData"]["tempModel"]["sellerLoginId"]?.ToString(), Id2 = jobject["globalData"]["tempModel"]["sellerLoginId"]?.ToString(),
Name = jobject["globalData"]["tempModel"]["companyName"].ToString(), Name = jobject["globalData"]["tempModel"]["companyName"].ToString(),
Location = jobject["data"]["1081181309101"] != null ? Location = location,
jobject["data"]["1081181309101"]["data"]["location"].ToString() :
jobject["data"]["16347413030323"]["data"]["location"].ToString(),
Platform = Enums.Platform. Platform = Enums.Platform.
}; };
var fidJToken = jobject["globalData"]["skuModel"]["skuProps"].FirstOrDefault(j => _1688ColorPropertyFieldIdList.Contains(j.Value<int>("fid")));
var colorsProperty = jobject["globalData"]["skuModel"]["skuProps"].FirstOrDefault(j => j.Value<int>("fid") == 3216 || if (fidJToken == null)
j.Value<int>("fid") == 1627207 || fidJToken = jobject["globalData"]["skuModel"]["skuProps"].FirstOrDefault(j => j.Value<string>("prop").Contains("颜色"));
j.Value<int>("fid") == 1234 || if (fidJToken == null && jobject["globalData"]["skuModel"]["skuProps"].Children().Count() == 1)
j.Value<int>("fid") == 3151)["value"] fidJToken = jobject["globalData"]["skuModel"]["skuProps"].FirstOrDefault();
.Children() var colorsProperty = fidJToken["value"].Children()
.Select(j => new .Select(j => new
{ {
name = j.Value<string>("name"), name = j.Value<string>("name"),
imageUrl = j.Value<string>("imageUrl") imageUrl = j.Value<string>("imageUrl")
}).ToList(); }).ToList();
var firstPrice = 0.0M;
var firstPrice = jobject["data"]["1081181309582"] != null ? for (var i = 0; i < priceIdList.Count(); i++)
jobject["data"]["1081181309582"]["data"]["priceModel"]["currentPrices"][0].Value<decimal>("price") : {
jobject["data"]["16347413030316"]["data"]["priceModel"]["currentPrices"][0].Value<decimal>("price"); if (jobject["data"][priceIdList[i]] != null)
{
firstPrice = jobject["data"][priceIdList[i]]["data"]["priceModel"]["currentPrices"][0].Value<decimal>("price");
break;
}
}
var list = new List<PurchaseSkuItemBasicInfoResponse>(); var list = new List<PurchaseSkuItemBasicInfoResponse>();

2
BBWYB.Server.Model/Db/PurchaseScheme/PurchaseScheme.cs

@ -1,8 +1,6 @@
using BBWYB.Server.Model.Db; using BBWYB.Server.Model.Db;
using FreeSql.DataAnnotations; using FreeSql.DataAnnotations;
using System;
using System.Collections.Generic;
namespace BBWYB.Server.Model namespace BBWYB.Server.Model
{ {

2
BBWYB.Server.Model/Db/PurchaseScheme/Purchaser.cs

@ -19,7 +19,7 @@ namespace BBWYB.Server.Model.Db
/// <summary> /// <summary>
/// 采购商Id2 (1688 SellerLoginId) /// 采购商Id2 (1688 SellerLoginId)
/// </summary> /// </summary>
[Column(StringLength = 20)] [Column(StringLength = 50)]
public string Id2 { get; set; } public string Id2 { get; set; }
/// <summary> /// <summary>

5
BBWYB.Server.Model/Dto/Response/Order/OrderPurchaseInfoResponse.cs

@ -13,5 +13,10 @@ namespace BBWYB.Server.Model.Dto
/// 快递单列表 /// 快递单列表
/// </summary> /// </summary>
public IList<PurchaseExpressOrderResponse> PurchaseExpressOrderList { get; set; } public IList<PurchaseExpressOrderResponse> PurchaseExpressOrderList { get; set; }
/// <summary>
/// 采购商家
/// </summary>
public Purchaser Purchaser { get; set; }
} }
} }

Loading…
Cancel
Save