Browse Source

1.新增销量统计

2.新增待议价任务
3.新增订单优化标记
yijia
shanji 2 years ago
parent
commit
a13e1b3d9b
  1. 96
      BBWYB.Server.Business/Sync/OrderSyncBusiness.cs
  2. 2
      BBWYB.Server.Model/Db/Product/Skutotalsaleinfo.cs
  3. 4
      BBWYB.Server.Model/Db/Product/SpuTotalSaleInfo.cs
  4. 4
      BBWYB.Server.Model/Enums.cs

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

@ -17,12 +17,18 @@ namespace BBWYB.Server.Business.Sync
private OP_PlatformClientFactory opPlatformClientFactory; private OP_PlatformClientFactory opPlatformClientFactory;
private VenderBusiness venderBusiness; private VenderBusiness venderBusiness;
private TaskSchedulerManager taskSchedulerManager; private TaskSchedulerManager taskSchedulerManager;
private List<Enums.TimeLimitTaskType> timeLimitTaskTypes;
public OrderSyncBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, OP_PlatformClientFactory opPlatformClientFactory, VenderBusiness venderBusiness, TaskSchedulerManager taskSchedulerManager) : base(fsql, nLogManager, idGenerator) public OrderSyncBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, OP_PlatformClientFactory opPlatformClientFactory, VenderBusiness venderBusiness, TaskSchedulerManager taskSchedulerManager) : base(fsql, nLogManager, idGenerator)
{ {
this.opPlatformClientFactory = opPlatformClientFactory; this.opPlatformClientFactory = opPlatformClientFactory;
this.venderBusiness = venderBusiness; this.venderBusiness = venderBusiness;
this.taskSchedulerManager = taskSchedulerManager; this.taskSchedulerManager = taskSchedulerManager;
timeLimitTaskTypes = new List<Enums.TimeLimitTaskType>()
{
Enums.TimeLimitTaskType.,
Enums.TimeLimitTaskType.
};
} }
public void AutoOrderSync() public void AutoOrderSync()
@ -94,13 +100,20 @@ namespace BBWYB.Server.Business.Sync
var payedQTOrderIdList = qtOrderList.Items.Where(qto => qto.IsPay).Select(qto => qto.OrderId).ToList(); var payedQTOrderIdList = qtOrderList.Items.Where(qto => qto.IsPay).Select(qto => qto.OrderId).ToList();
var payedQTSpuIdList = qtOrderList.Items.Where(qto => qto.IsPay).SelectMany(qto => qto.OrderSkuList).Select(qtos => qtos.ProductId).Distinct().ToList(); var payedQTSpuIdList = qtOrderList.Items.Where(qto => qto.IsPay).SelectMany(qto => qto.OrderSkuList).Select(qtos => qtos.ProductId).Distinct().ToList();
var payedQTSkuIdList = qtOrderList.Items.Where(qto => qto.IsPay).SelectMany(qto => qto.OrderSkuList).Select(qtos => qtos.SkuId).Distinct().ToList();
//限时任务列表 //限时任务列表
var dbPurchaseTimeLimitTaskList = fsql.Select<TimeLimitTask>().Where(t => t.TaskType == Enums.TimeLimitTaskType. && var dbTimeLimitTaskList = fsql.Select<TimeLimitTask>().Where(t => timeLimitTaskTypes.Contains(t.TaskType.Value) &&
payedQTOrderIdList.Contains(t.OrderId)).ToList(); payedQTOrderIdList.Contains(t.OrderId)).ToList();
//限时采购任务列表
var dbPurchaseTimeLimitTaskList = dbTimeLimitTaskList.Where(t => t.TaskType == Enums.TimeLimitTaskType.).ToList();
//限时议价任务列表
var dbOptimizationLimitTaskList = dbTimeLimitTaskList.Where(t => t.TaskType == Enums.TimeLimitTaskType.).ToList();
//现有sku销量 //现有sku销量
var dbSkuTotalSaleInfoList = fsql.Select<SkuTotalSaleInfo>().Where(s => s.ShopId == shopId && s.IsEnabled == true && payedQTSpuIdList.Contains(s.ProductId)) var dbSkuTotalSaleInfoList = fsql.Select<SkuTotalSaleInfo>().Where(s => s.ShopId == shopId && s.IsEnabled == true && payedQTSkuIdList.Contains(s.SkuId))
.ToList(); .ToList();
//现有spu销量 //现有spu销量
@ -205,7 +218,9 @@ namespace BBWYB.Server.Business.Sync
ProductId = qtOrderSku.ProductId, ProductId = qtOrderSku.ProductId,
BelongSkuId = belongSkus?.FirstOrDefault(j => j.Value<string>("SkuId") == qtOrderSku.SkuId)?.Value<string>("BelongSkuId") ?? string.Empty, BelongSkuId = belongSkus?.FirstOrDefault(j => j.Value<string>("SkuId") == qtOrderSku.SkuId)?.Value<string>("BelongSkuId") ?? string.Empty,
InPackAmount = qtOrderSku.PackAmount, InPackAmount = qtOrderSku.PackAmount,
BuyerPayFreight = qtOrderSku.FreightAmount BuyerPayFreight = qtOrderSku.FreightAmount,
IsNeedOptimization = 0,
IsOptimizationCompleted = 0
}); });
} }
//收货人 //收货人
@ -341,7 +356,60 @@ namespace BBWYB.Server.Business.Sync
#endregion #endregion
#region 检查待议价任务 #region 检查待议价任务
{
if (waitToCheckSkuSaleOrderList.Count() > 0)
{
var optimizationSpuSaleList = dbSpuTotalSaleInfoList.Union(insertSpuTotalSaleInfoList).Where(s =>
{
if (s.LastOptimizationItemCount == 0 && s.ItemCount >= 20)
return true;
if (s.LastOptimizationItemCount != 0 && s.ItemCount * 1.0 / s.LastOptimizationItemCount >= 2)
return true;
return false;
});
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;
#region 更新sku优化标记
var oskuId = long.Parse(osku.Id);
var insertOrderSku = insertOrderSkuList.FirstOrDefault(s => s.Id == oskuId);
if (insertOrderSku != null)
insertOrderSku.IsNeedOptimization = 1;
else
updateOrderSkuIdList_OptimizationFlag.Add(oskuId);
#endregion
#region 创建待议价任务
if (!dbOptimizationLimitTaskList.Any(t => t.OrderId == o.OrderId && t.SkuId == osku.SkuId))
{
insertTimeLimitTaskList.Add(new TimeLimitTask()
{
Id = idGenerator.NewLong(),
CreateTme = DateTime.Now,
ExpirationTime = DateTime.Now.AddDays(1),
OrderId = o.OrderId,
OrderSn = o.OrderSn,
ShopId = shopId,
SkuId = osku.SkuId,
TaskType = Enums.TimeLimitTaskType.
});
}
#endregion
}
}
}
}
}
}
#endregion #endregion
#region 检查限时采购任务 #region 检查限时采购任务
@ -369,6 +437,28 @@ namespace BBWYB.Server.Business.Sync
if (deleteTimeLimitTaskOrderIdList.Count() > 0) if (deleteTimeLimitTaskOrderIdList.Count() > 0)
fsql.Delete<TimeLimitTask>().Where(t => deleteTimeLimitTaskOrderIdList.Contains(t.OrderId)).ExecuteAffrows(); fsql.Delete<TimeLimitTask>().Where(t => deleteTimeLimitTaskOrderIdList.Contains(t.OrderId)).ExecuteAffrows();
if (insertSkuTotalSaleInfoList.Count() > 0)
fsql.Insert(insertSkuTotalSaleInfoList).ExecuteAffrows();
if (updateSkuTotalSaleInfoList.Count() > 0)
{
foreach (var item in updateSkuTotalSaleInfoList)
fsql.Update<SkuTotalSaleInfo>(item.SkuId).Set(s => s.ItemCount, item.ItemCount)
.Set(s => s.UpdateTime, DateTime.Now)
.ExecuteAffrows();
}
if (insertSpuTotalSaleInfoList.Count() > 0)
fsql.Insert(insertSpuTotalSaleInfoList).ExecuteAffrows();
if (updateSpuTotalSaleInfoList.Count() > 0)
{
foreach (var item in updateSpuTotalSaleInfoList)
fsql.Update<SpuTotalSaleInfo>(item.ProductId).Set(s => s.ItemCount, item.ItemCount)
.Set(s => s.UpdateTime, DateTime.Now)
.ExecuteAffrows();
}
if (updateOrderSkuIdList_OptimizationFlag.Count() > 0)
fsql.Update<OrderSku>(updateOrderSkuIdList_OptimizationFlag).Set(osku => osku.IsNeedOptimization, 1).ExecuteAffrows();
}); });
} }

2
BBWYB.Server.Model/Db/Product/Skutotalsaleinfo.cs

@ -29,7 +29,7 @@ namespace BBWYB.Server.Model.Db
/// 销量,销售件数 /// 销量,销售件数
/// </summary> /// </summary>
[Column(DbType = "bigint")] [Column(DbType = "bigint")]
public long? ItemCount { get; set; } public long? ItemCount { get; set; } = 0;
/// <summary> /// <summary>
/// Spu /// Spu

4
BBWYB.Server.Model/Db/Product/SpuTotalSaleInfo.cs

@ -29,13 +29,13 @@ namespace BBWYB.Server.Model.Db
/// 销量,销售件数 /// 销量,销售件数
/// </summary> /// </summary>
[Column(DbType = "bigint")] [Column(DbType = "bigint")]
public long? ItemCount { get; set; } public long? ItemCount { get; set; } = 0;
/// <summary> /// <summary>
/// 上次优化时的销量 /// 上次优化时的销量
/// </summary> /// </summary>
[Column(DbType = "bigint")] [Column(DbType = "bigint")]
public long? LastOptimizationItemCount { get; set; } public long? LastOptimizationItemCount { get; set; } = 0;
/// <summary> /// <summary>
/// 上次优化时间 /// 上次优化时间

4
BBWYB.Server.Model/Enums.cs

@ -308,11 +308,11 @@
} }
/// <summary> /// <summary>
/// 限时任务类型 采购任务 = 0, 合格证拟定任务 = 10, 合格证补充任务 = 11, 待核算任务 = 20 /// 限时任务类型 采购任务 = 0, 合格证拟定任务 = 10, 合格证补充任务 = 11, 待核算任务 = 20, 待议价任务 = 30
/// </summary> /// </summary>
public enum TimeLimitTaskType public enum TimeLimitTaskType
{ {
= 0, = 10, = 11, = 20 = 0, = 10, = 11, = 20, = 30
} }
/// <summary> /// <summary>

Loading…
Cancel
Save