Browse Source

更新产品同步

master
shanji 1 year ago
parent
commit
ef8b1f1233
  1. 132
      BBWYB.Server.Business/Sync/ProductSyncBusiness.cs
  2. 5
      QuanTan.SDK/Models/Supplier/Request/Product/QuanTan_Supplier_SearchSpuRequest.cs
  3. 8
      SDKAdapter/AdapterEnums.cs
  4. 3
      SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs
  5. 5
      SDKAdapter/OperationPlatform/Models/Request/Product/OP_QueryProductRequest.cs

132
BBWYB.Server.Business/Sync/ProductSyncBusiness.cs

@ -312,28 +312,49 @@ namespace BBWYB.Server.Business.Sync
List<IUpdate<ProductSku>> updateProductSkuList = new List<IUpdate<ProductSku>>(); List<IUpdate<ProductSku>> updateProductSkuList = new List<IUpdate<ProductSku>>();
#region 查询变化的spu #region 查询变化的spu
var spuRequest = new OP_QueryProductRequest()
{ {
PageSize = 50, #region 上架的spu
PageIndex = 1, var spuRequest = new OP_QueryProductRequest()
AppKey = shop.AppKey, {
AppSecret = shop.AppSecret, PageSize = 50,
AppToken = shop.AppToken, PageIndex = 1,
Platform = SDKAdapter.AdapterEnums.PlatformType., AppKey = shop.AppKey,
UpdateStartTime = DateTime.Now.AddHours(-1), AppSecret = shop.AppSecret,
UpdateEndTime = DateTime.Now AppToken = shop.AppToken,
}; Platform = SDKAdapter.AdapterEnums.PlatformType.,
while (true) UpdateStartTime = DateTime.Now.AddHours(-1),
{ UpdateEndTime = DateTime.Now
var response = productBusiness.GetProductList(spuRequest); };
if (response == null || response.Items == null || response.Items.Count == 0) while (true)
break; {
var response = productBusiness.GetProductList(spuRequest);
if (response == null || response.Items == null || response.Items.Count == 0)
break;
opProductList.AddRange(response.Items); opProductList.AddRange(response.Items);
if (response.Items.Count < 50) if (response.Items.Count < spuRequest.PageSize)
break; break;
spuRequest.PageIndex++;
}
#endregion
spuRequest.PageIndex++; #region 下架的spu
spuRequest.PageIndex = 1;
spuRequest.ProductState = SDKAdapter.AdapterEnums.ProuctState.;
while (true)
{
var response = productBusiness.GetProductList(spuRequest);
if (response == null || response.Items == null || response.Items.Count == 0)
break;
opProductList.AddRange(response.Items);
if (response.Items.Count < spuRequest.PageSize)
break;
spuRequest.PageIndex++;
}
#endregion
} }
#endregion #endregion
@ -379,39 +400,31 @@ namespace BBWYB.Server.Business.Sync
updateProductList.Add(update); updateProductList.Add(update);
} }
} }
#endregion #endregion
#endregion #endregion
#region 查询变化的sku #region 对比sku
var skuRequest = new OP_QueryProductSkuRequest() foreach (var product in opProductList)
{
AppKey = shop.AppKey,
AppSecret = shop.AppSecret,
AppToken = shop.AppToken,
Platform = SDKAdapter.AdapterEnums.PlatformType.,
//Spu = product.Id,
PageSize = 50,
PageIndex = 1,
UpdateStartTime = DateTime.Now.AddHours(-1),
UpdateEndTime = DateTime.Now
};
while (true)
{ {
var skuRequest = new OP_QueryProductSkuRequest()
{
AppKey = shop.AppKey,
AppSecret = shop.AppSecret,
AppToken = shop.AppToken,
Platform = SDKAdapter.AdapterEnums.PlatformType.,
Spu = product.Id,
PageSize = 50,
PageIndex = 1,
};
var response = productBusiness.GetProductSkuList(skuRequest); var response = productBusiness.GetProductSkuList(skuRequest);
if (response == null || response.Items == null || response.Items.Count == 0) if (response == null || response.Items == null || response.Items.Count == 0)
break; continue;
opProductSkuList.AddRange(response.Items); opProductSkuList.AddRange(response.Items);
if (response.Items.Count < 50)
break;
skuRequest.PageIndex++;
} }
#endregion
#region 对比sku
var skuIdList = opProductSkuList.Select(x => x.Id); var skuIdList = opProductSkuList.Select(x => x.Id);
dbProductSkuList = fsql.Select<ProductSku>(skuIdList).ToList(); dbProductSkuList = fsql.Select<ProductSku>(skuIdList).ToList();
@ -430,7 +443,7 @@ namespace BBWYB.Server.Business.Sync
SkuName = ps.Title, SkuName = ps.Title,
State = ps.State, State = ps.State,
SyncTime = DateTime.Now, SyncTime = DateTime.Now,
UpdateTime = ps.UpdateTime, UpdateTime = DateTime.Now,
UpperTime = ps.CreateTime, UpperTime = ps.CreateTime,
CategoryId = ps.CategoryId, CategoryId = ps.CategoryId,
CategoryName = ps.CategoryName CategoryName = ps.CategoryName
@ -440,27 +453,36 @@ namespace BBWYB.Server.Business.Sync
#region 找出状态变化的SKU #region 找出状态变化的SKU
var stateChangeProductSkuList = opProductSkuList.Where(ps => dbProductSkuList.Any(dps => dps.Id == ps.Id && var stateChangeProductSkuList = opProductSkuList.Where(ps => dbProductSkuList.Any(dps => dps.Id == ps.Id &&
(dps.State != ps.State || (dps.State != ps.State ||
dps.SkuName != ps.Title || dps.SkuName != ps.Title ||
dps.Price != ps.Price || dps.Price != ps.Price ||
dps.Logo != ps.Logo || dps.Logo != ps.Logo ||
dps.CategoryId != ps.CategoryId))).ToList(); dps.CategoryId != ps.CategoryId))).ToList();
if (stateChangeProductSkuList.Count() > 0) if (stateChangeProductSkuList.Count() > 0)
{ {
foreach (var productSku in stateChangeProductSkuList) foreach (var productSku in stateChangeProductSkuList)
{ {
var update = fsql.Update<ProductSku>(productSku.Id).Set(ps => ps.State, productSku.State) var update = fsql.Update<ProductSku>(productSku.Id).Set(p => p.State, productSku.State)
.Set(ps => ps.SkuName, productSku.Title) .Set(p => p.SkuName, productSku.Title)
.Set(ps => ps.Price, productSku.Price) .Set(p => p.Price, productSku.Price)
.Set(ps => ps.Logo, productSku.Logo) .Set(p => p.Logo, productSku.Logo)
.Set(ps => ps.CategoryId, productSku.CategoryId) .Set(p => p.CategoryId, productSku.CategoryId)
.Set(ps => ps.CategoryName, productSku.CategoryName) .Set(p => p.CategoryName, productSku.CategoryName);
.Set(ps => ps.UpdateTime, productSku.UpdateTime);
updateProductSkuList.Add(update); updateProductSkuList.Add(update);
} }
} }
#endregion #endregion
#region 找出接口查不出的SKU
var goneProductSkuList = dbProductSkuList.Where(dps => !opProductSkuList.Any(ps => ps.Id == dps.Id)).ToList();
if (goneProductSkuList.Count() > 0)
{
var goneProductSkuIdList = goneProductSkuList.Select(ps => ps.Id).ToList();
var update = fsql.Update<ProductSku>().Set(ps => ps.State, 0).Where(ps => goneProductSkuIdList.Contains(ps.Id));
updateProductSkuList.Add(update);
}
#endregion
#endregion #endregion
#region 数据库操作 #region 数据库操作

5
QuanTan.SDK/Models/Supplier/Request/Product/QuanTan_Supplier_SearchSpuRequest.cs

@ -13,5 +13,10 @@
public DateTime? updateStart { get; set; } public DateTime? updateStart { get; set; }
public DateTime? updateEnd { get; set; } public DateTime? updateEnd { get; set; }
/// <summary>
/// 上架状态 1上架 0下架
/// </summary>
public string isShow { get; set; } = "1";
} }
} }

8
SDKAdapter/AdapterEnums.cs

@ -39,5 +39,13 @@
= 0, = 0,
= 1 = 1
} }
/// <summary>
/// 商品状态
/// </summary>
public enum ProuctState
{
= 1, = 0
}
} }
} }

3
SDKAdapter/OperationPlatform/Client/Impl/OP_QuanTanClient.cs

@ -33,7 +33,8 @@ namespace SDKAdapter.OperationPlatform.Client
productId = request.Spu, productId = request.Spu,
storeId = request.AppToken, storeId = request.AppToken,
updateStart = request.UpdateStartTime, updateStart = request.UpdateStartTime,
updateEnd = request.UpdateEndTime updateEnd = request.UpdateEndTime,
isShow = request.ProductState == AdapterEnums.ProuctState. ? "0" : "1"
}, request.AppKey, request.AppSecret); }, request.AppKey, request.AppSecret);
if (qtResponse.Status != 200) if (qtResponse.Status != 200)

5
SDKAdapter/OperationPlatform/Models/Request/Product/OP_QueryProductRequest.cs

@ -33,5 +33,10 @@
/// 最后修改结束时间 /// 最后修改结束时间
/// </summary> /// </summary>
public DateTime? UpdateEndTime { get; set; } public DateTime? UpdateEndTime { get; set; }
/// <summary>
/// 上架状态
/// </summary>
public AdapterEnums.ProuctState? ProductState { get; set; }
} }
} }

Loading…
Cancel
Save