Browse Source

product同步mainsku

qianyi
shanji 3 years ago
parent
commit
daebf8e5bf
  1. 66
      BBWY.Server.Business/Sync/ProductSyncBusiness.cs
  2. 6
      BBWY.Server.Model/Db/Product/Product.cs

66
BBWY.Server.Business/Sync/ProductSyncBusiness.cs

@ -37,6 +37,23 @@ namespace BBWY.Server.Business.Sync
this.productBusiness = productBusiness; this.productBusiness = productBusiness;
} }
private string GetMainSkuId(IList<ProductSkuResponse> skuList)
{
var maxPrice = skuList.Max(s => s.Price);
var sku = skuList.FirstOrDefault(s => s.Price == maxPrice && s.State == 1);
return sku?.Id ?? string.Empty;
}
private bool CheckMainSkuState(IList<ProductSkuResponse> skuList, string mainSkuId)
{
if (string.IsNullOrEmpty(mainSkuId))
return false;
var mainSku = skuList.FirstOrDefault(s => s.Id == mainSkuId);
if (mainSku == null || mainSku.State != 1)
return false;
return true;
}
private void SyncProduct(ShopResponse shop, ProductListResponse productList) private void SyncProduct(ShopResponse shop, ProductListResponse productList)
{ {
var currentProductId = ""; var currentProductId = "";
@ -56,26 +73,8 @@ namespace BBWY.Server.Business.Sync
foreach (var product in productList.Items) foreach (var product in productList.Items)
{ {
currentProductId = product.Id; currentProductId = product.Id;
var dbProduct = dbProducts.FirstOrDefault(dbp => dbp.Id == product.Id);
if (dbProduct == null)
{
insertProductList.Add(new Product()
{
Id = product.Id,
CreateTime = product.CreateTime ?? DateTime.Now,
Platform = shop.PlatformId,
ProductItemNum = product.ProductItemNum,
ShopId = shopId,
Title = product.Title,
State = product.State
});
}
else if (dbProduct.State != product.State)
{
var update = fsql.Update<Product>(product.Id).Set(p => p.State, product.State);
updateProductList.Add(update);
}
#region 检查sku
var skuList = productBusiness.GetProductSkuList(new SearchProductSkuRequest() var skuList = productBusiness.GetProductSkuList(new SearchProductSkuRequest()
{ {
AppKey = shop.AppKey, AppKey = shop.AppKey,
@ -110,6 +109,35 @@ namespace BBWY.Server.Business.Sync
updateProductSkuList.Add(update); updateProductSkuList.Add(update);
} }
} }
#endregion
#region 检查产品
var dbProduct = dbProducts.FirstOrDefault(dbp => dbp.Id == product.Id);
if (dbProduct == null)
{
insertProductList.Add(new Product()
{
Id = product.Id,
CreateTime = product.CreateTime ?? DateTime.Now,
Platform = shop.PlatformId,
ProductItemNum = product.ProductItemNum,
ShopId = shopId,
Title = product.Title,
State = product.State,
MainSkuId = GetMainSkuId(skuList)
});
}
else if (dbProduct.State != product.State || !CheckMainSkuState(skuList, dbProduct.MainSkuId))
{
string newMainSkuId = string.Empty;
if (!CheckMainSkuState(skuList, dbProduct.MainSkuId))
newMainSkuId = GetMainSkuId(skuList);
var update = fsql.Update<Product>(product.Id).SetIf(dbProduct.State != product.State, p => p.State, product.State)
.SetIf(!string.IsNullOrEmpty(newMainSkuId), p => p.MainSkuId, newMainSkuId);
updateProductList.Add(update);
}
#endregion
} }
fsql.Transaction(() => fsql.Transaction(() =>

6
BBWY.Server.Model/Db/Product/Product.cs

@ -34,6 +34,12 @@ namespace BBWY.Server.Model.Db
public string Title { get; set; } public string Title { get; set; }
/// <summary>
/// 主SkuId
/// </summary>
[Column(StringLength = 50)]
public string MainSkuId { get; set; }
/// <summary> /// <summary>
/// 京东商品状态【-1:删除 1:从未上架 2:自主下架 4:系统下架 8:上架 513:从未上架待审 514:自主下架待审 516:系统下架待审 520:上架待审核 1028:系统下架审核失败】 /// 京东商品状态【-1:删除 1:从未上架 2:自主下架 4:系统下架 8:上架 513:从未上架待审 514:自主下架待审 516:系统下架待审 520:上架待审核 1028:系统下架审核失败】
/// </summary> /// </summary>

Loading…
Cancel
Save