Browse Source

更新产品同步

master
shanji 1 year ago
parent
commit
ef8b1f1233
  1. 70
      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

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

@ -312,6 +312,8 @@ 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
{
#region 上架的spu
var spuRequest = new OP_QueryProductRequest() var spuRequest = new OP_QueryProductRequest()
{ {
PageSize = 50, PageSize = 50,
@ -330,13 +332,32 @@ namespace BBWYB.Server.Business.Sync
break; break;
opProductList.AddRange(response.Items); opProductList.AddRange(response.Items);
if (response.Items.Count < 50) if (response.Items.Count < spuRequest.PageSize)
break; break;
spuRequest.PageIndex++; spuRequest.PageIndex++;
} }
#endregion #endregion
#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
#region 对比spu #region 对比spu
var spuIdList = opProductList.Select(x => x.Id); var spuIdList = opProductList.Select(x => x.Id);
@ -379,39 +400,31 @@ namespace BBWYB.Server.Business.Sync
updateProductList.Add(update); updateProductList.Add(update);
} }
} }
#endregion #endregion
#endregion #endregion
#region 查询变化的sku #region 对比sku
foreach (var product in opProductList)
{
var skuRequest = new OP_QueryProductSkuRequest() var skuRequest = new OP_QueryProductSkuRequest()
{ {
AppKey = shop.AppKey, AppKey = shop.AppKey,
AppSecret = shop.AppSecret, AppSecret = shop.AppSecret,
AppToken = shop.AppToken, AppToken = shop.AppToken,
Platform = SDKAdapter.AdapterEnums.PlatformType., Platform = SDKAdapter.AdapterEnums.PlatformType.,
//Spu = product.Id, Spu = product.Id,
PageSize = 50, PageSize = 50,
PageIndex = 1, PageIndex = 1,
UpdateStartTime = DateTime.Now.AddHours(-1),
UpdateEndTime = DateTime.Now
}; };
while (true)
{
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
@ -449,18 +462,27 @@ namespace BBWYB.Server.Business.Sync
{ {
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