Browse Source

同步hycats

liangku_skuoptimazation
shanji 1 year ago
parent
commit
6930eda29a
  1. 6
      BBWYB.Server.API/Controllers/DataRepairController.cs
  2. 102
      BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs
  3. 124
      BBWYB.Server.Business/Sync/OrderSyncBusiness.cs
  4. 3
      BBWYB.Server.Model/Db/Product/Skuoptimizationtask.cs
  5. 4
      BBWYB.Server.Model/Db/TimeLimitTask/TimeLimitTask.cs

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

@ -122,6 +122,12 @@ namespace BBWYB.Server.API.Controllers
dataRepairBusiness.RepairPurchaserLocation();
}
[HttpPost]
public void SyncHyCats()
{
dataRepairBusiness.SyncHyCats();
}
[HttpPost]
public void ExportQTSpuAndJDSku()
{

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

@ -7,6 +7,7 @@ using BBWYB.Server.Model.Db;
using BBWYB.Server.Model.Db.HY;
using BBWYB.Server.Model.Dto;
using FreeSql;
using Newtonsoft.Json.Linq;
using SDKAdapter;
using SDKAdapter.OperationPlatform.Client;
using SDKAdapter.OperationPlatform.Models;
@ -1250,6 +1251,107 @@ namespace BBWYB.Server.Business
return location;
}
private IDictionary<string, (string Id, string parentId, string name, int lev)?> categoryCache = new Dictionary<string, (string Id, string parentId, string name, int lev)?>();
public (string Id, string parentId, string name, int lev)? GetCategoryById(string categoryId)
{
if (categoryCache.ContainsKey(categoryId))
return categoryCache[categoryId];
var httpResult = restApiService.SendRequest("http://yunding.qiyue666.com", "api/platformsdk/GetCategoryInfoById", new
{
AppKey = "120EA9EC65AB017567D78CC1139EEEA5",
AppSecret = "8a42bc2301e8439b896e99f5475e0a9b",
AppToken = "523ad68443184436965ca4304daff409tizy",
Platform = Enums.Platform.,
CategoryId = categoryId
}, null, HttpMethod.Post);
if (httpResult.StatusCode == System.Net.HttpStatusCode.OK)
{
var jtoken = JToken.Parse(httpResult.Content);
string fid = null;
if (jtoken["Data"].Value<string>("fid") != "0")
fid = jtoken["Data"].Value<string>("fid");
(string Id, string parentId, string name, int lev)? c = (jtoken["Data"].Value<string>("id"),
fid,
jtoken["Data"].Value<string>("name"),
jtoken["Data"].Value<int>("lev"));
if (!categoryCache.ContainsKey(c.Value.Id))
categoryCache.TryAdd(c.Value.Id, c);
return c;
}
return null;
}
public void SyncHyCats()
{
var l3CategoryIdList = freeSqlMultiDBManager.BBWYCfsql.Select<Model.Db.BBWY.ProductSku>().Where(s => s.CategoryId != null).Distinct().ToList(s => s.CategoryId);
var hycatsList = freeSqlMultiDBManager.HYfsql.Select<Model.Db.HY.HyCats>().ToList();
List<Model.Db.HY.HyCats> insertHyCatsList = new List<Model.Db.HY.HyCats>();
var count = l3CategoryIdList.Count();
var index = 1;
foreach (var l3CategoryId in l3CategoryIdList)
{
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine($"{index}/{count} {l3CategoryId}");
Console.ResetColor();
index++;
var l3Info = GetCategoryById(l3CategoryId.Value.ToString());
if (l3Info != null)
{
if (!hycatsList.Any(x => x.Id == l3Info.Value.Id) && !insertHyCatsList.Any(x => x.Id == l3Info.Value.Id))
{
insertHyCatsList.Add(new HyCats()
{
Id = l3Info.Value.Id,
IsLeaf = 1,
Level = 3,
Name = l3Info.Value.name,
ParentId = l3Info.Value.parentId
});
}
var l2Info = GetCategoryById(l3Info.Value.parentId);
if (l2Info != null)
{
if (!hycatsList.Any(x => x.Id == l2Info.Value.Id) && !insertHyCatsList.Any(x => x.Id == l2Info.Value.Id))
{
insertHyCatsList.Add(new HyCats()
{
Id = l2Info.Value.Id,
IsLeaf = 0,
Level = 2,
Name = l2Info.Value.name,
ParentId = l2Info.Value.parentId
});
}
var l1Info = GetCategoryById(l2Info.Value.parentId);
if (l1Info != null)
{
if (!hycatsList.Any(x => x.Id == l1Info.Value.Id) && !insertHyCatsList.Any(x => x.Id == l1Info.Value.Id))
{
insertHyCatsList.Add(new HyCats()
{
Id = l1Info.Value.Id,
IsLeaf = 0,
Level = 1,
Name = l1Info.Value.name,
ParentId = l1Info.Value.parentId
});
}
}
}
}
}
if (insertHyCatsList.Count() > 0)
freeSqlMultiDBManager.HYfsql.Insert(insertHyCatsList).ExecuteAffrows();
}
public void ExportQTSpuAndJDSku()
{
var qtlist = fsql.Select<OrderSku>()

124
BBWYB.Server.Business/Sync/OrderSyncBusiness.cs

@ -401,83 +401,74 @@ namespace BBWYB.Server.Business.Sync
!dbSkuOptimizationTaskList.Any(t => t.SkuId == waitCheckOrderSku.SkuId) &&
!insertSkuOptimizationTaskList.Any(t => t.SkuId == waitCheckOrderSku.SkuId))
{
#region 解析来源店铺数据
JArray belongSkus = null;
string sourceShopName = string.Empty;
if (!string.IsNullOrEmpty(waitCheckOrder.Extended))
{
try
{
var jobject = JObject.Parse(waitCheckOrder.Extended);
//dbOrder.SourceSku = jobject.Value<string>("SourceSku");
sourceShopName = jobject.Value<string>("SourceShopName");
if (jobject.ContainsKey("BelongSkus"))
belongSkus = jobject["BelongSkus"] as JArray;
}
catch (Exception ex)
{
}
}
#endregion
#region 创建待优化任务
var skuOptimizationTask = new SkuOptimizationTask()
{
Id = idGenerator.NewLong(),
PreItemCount = 0,
PrePurchasedAmount = 0,
IsOptimizationCompleted = false,
CreateTime = DateTime.Now,
SafeWarningRemainingDay = 0,
UsePrePurchasedPrice = 0,
TriggerOptimizationReason = Enums.TriggerOptimizationReason.,
SkuId = waitCheckOrderSku.SkuId,
ShopId = shopId,
ProductId = waitCheckOrderSku.ProductId,
BelongShopName = sourceShopName,
CompletionTime = null,
JDSkuId = belongSkus?.FirstOrDefault(j => j.Value<string>("SkuId") == waitCheckOrderSku.SkuId)?.Value<string>("BelongSkuId") ?? string.Empty
};
insertSkuOptimizationTaskList.Add(skuOptimizationTask);
#endregion
#region 创建待优化限时任务
//判断sku是否首次采购
var isFirst = !dbSkuTotalSaleInfoList.Any(s => s.SkuId == waitCheckOrderSku.SkuId);
insertTimeLimitTaskList.Add(new TimeLimitTask()
{
Id = idGenerator.NewLong(),
CreateTme = DateTime.Now,
//ExpirationTime = DateTime.Now.AddDays(isFirst ? 2 : 1),
ExpirationTime = timeLimitRules.CalculateExpirationTime(Enums.TimeLimitTaskType., DateTime.Now.AddDays(isFirst ? 1 : 0)),
//OrderId = o.OrderId,
//OrderSn = o.OrderSn,
ShopId = shopId,
SkuId = waitCheckOrderSku.SkuId,
TaskType = Enums.TimeLimitTaskType.,
TaskId = skuOptimizationTask.Id,
Remark = "首次采购限时任务"
});
#endregion
}
}
}
}
//var optimizationSpuSaleList = dbSpuTotalSaleInfoList.Union(insertSpuTotalSaleInfoList).Where(s =>
//{
// return GetOptimizationReason(s) != null;
//});
//if (optimizationSpuSaleList.Count() > 0)
//{
// foreach (var spuSale in optimizationSpuSaleList)
// {
// var orderList = waitToCheckSkuSaleOrderList.Where(o => o.OrderSkuList.Any(osku => osku.ProductId == spuSale.ProductId)).ToList();
// foreach (var o in orderList)
// {
// foreach (var osku in o.OrderSkuList)
// {
// if (osku.ProductId != spuSale.ProductId)
// continue;
// var triggerOptimizationReason = GetOptimizationReason(spuSale);
// #region 更新sku优化标记
// var oskuId = long.Parse(osku.Id);
// var insertOrderSku = insertOrderSkuList.FirstOrDefault(s => s.Id == oskuId);
// if (insertOrderSku != null)
// {
// insertOrderSku.IsNeedOptimization = 1;
// insertOrderSku.TriggerOptimizationReason = triggerOptimizationReason;
// }
// else
// {
// //updateOrderSkuIdList_OptimizationFlag.Add(oskuId);
// if (!updateOSkuOptimizationFlagByReasonGroups.TryGetValue(triggerOptimizationReason.Value, out var updateOSkuOptimizationFlagByReasonList))
// {
// updateOSkuOptimizationFlagByReasonList = new List<long>();
// updateOSkuOptimizationFlagByReasonGroups.Add(triggerOptimizationReason.Value, updateOSkuOptimizationFlagByReasonList);
// }
// updateOSkuOptimizationFlagByReasonList.Add(oskuId);
// }
// #endregion
// #region 创建待议价任务
// if (!dbOptimizationLimitTaskList.Any(t => t.OrderId == o.OrderId && t.SkuId == osku.SkuId))
// {
// //判断sku是否首次采购
// var isFirst = !dbSkuTotalSaleInfoList.Any(s => s.SkuId == osku.SkuId);
// insertTimeLimitTaskList.Add(new TimeLimitTask()
// {
// Id = idGenerator.NewLong(),
// CreateTme = DateTime.Now,
// //ExpirationTime = DateTime.Now.AddDays(isFirst ? 2 : 1),
// ExpirationTime = timeLimitRules.CalculateExpirationTime(Enums.TimeLimitTaskType.待议价任务, DateTime.Now.AddDays(isFirst ? 1 : 0)),
// OrderId = o.OrderId,
// OrderSn = o.OrderSn,
// ShopId = shopId,
// SkuId = osku.SkuId,
// TaskType = Enums.TimeLimitTaskType.待议价任务
// });
// }
// #endregion
// }
// }
// }
//}
}
}
#endregion
@ -500,6 +491,9 @@ namespace BBWYB.Server.Business.Sync
if (insertTimeLimitTaskList.Count() > 0)
fsql.Insert(insertTimeLimitTaskList).ExecuteAffrows();
if (insertSkuOptimizationTaskList.Count() > 0)
fsql.Insert(insertSkuOptimizationTaskList).ExecuteAffrows();
if (updateOrderList.Count() > 0)
foreach (var update in updateOrderList)
update.ExecuteAffrows();

3
BBWYB.Server.Model/Db/Product/Skuoptimizationtask.cs

@ -47,9 +47,6 @@ namespace BBWYB.Server.Model.Db
[Column(DbType = "bigint")]
public long? ShopId { get; set; }
[Column(DbType = "bigint")]
public long? BelongShopId { get; set; }
/// <summary>
/// 来源店铺名
/// </summary>

4
BBWYB.Server.Model/Db/TimeLimitTask/TimeLimitTask.cs

@ -79,6 +79,10 @@ namespace BBWYB.Server.Model.Db
[Column(StringLength = 500)]
public string Remark { get; set; }
/// <summary>
/// 任务Id(待优化任务有效)
/// </summary>
public long TaskId { get; set; }
}
}

Loading…
Cancel
Save