|
@ -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(() => |
|
|