Browse Source

供应商聚合

liangku_skuoptimazation
shanji 1 year ago
parent
commit
4c609ca022
  1. 25
      BBWYB.Server.API/Controllers/AggregationPurchaserController.cs
  2. 209
      BBWYB.Server.Business/Aggregion/AggregionPurchaserBusiness.cs
  3. 4
      BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs
  4. 166
      BBWYB.Server.Business/Purchaser/PurchaserBusiness.cs
  5. 2
      BBWYB.Server.Business/TaskSchedulerManager.cs
  6. 54
      BBWYB.Server.Model/Db/Purchaser/Purchaser.cs
  7. 24
      BBWYB.Server.Model/Dto/Request/Purchaser/QueryPurchaserRequest.cs
  8. 18
      BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs
  9. 37
      BBWYB.Server.Model/Dto/Response/Purchaser/PurchaserResponse.cs

25
BBWYB.Server.API/Controllers/AggregationPurchaserController.cs

@ -0,0 +1,25 @@
using BBWYB.Server.Business;
using Microsoft.AspNetCore.Mvc;
namespace BBWYB.Server.API.Controllers
{
public class AggregationPurchaserController : BaseApiController
{
private AggregionPurchaserBusiness aggregionPurchaserBusiness;
public AggregationPurchaserController(IHttpContextAccessor httpContextAccessor, AggregionPurchaserBusiness aggregionPurchaserBusiness) : base(httpContextAccessor)
{
this.aggregionPurchaserBusiness = aggregionPurchaserBusiness;
}
/// <summary>
/// 采购商聚合
/// </summary>
[HttpPost]
public void AutoAggregion()
{
aggregionPurchaserBusiness.AutoAggregion();
}
}
}

209
BBWYB.Server.Business/Aggregion/AggregionPurchaserBusiness.cs

@ -0,0 +1,209 @@
using BBWYB.Common.Log;
using BBWYB.Common.Models;
using BBWYB.Server.Model;
using BBWYB.Server.Model.Db;
using FreeSql;
using Yitter.IdGenerator;
namespace BBWYB.Server.Business
{
public class AggregionPurchaserBusiness : BaseBusiness, IDenpendency
{
private TaskSchedulerManager taskSchedulerManager;
public AggregionPurchaserBusiness(IFreeSql fsql, NLogManager nLogManager, IIdGenerator idGenerator, TaskSchedulerManager taskSchedulerManager) : base(fsql, nLogManager, idGenerator)
{
this.taskSchedulerManager = taskSchedulerManager;
}
public void AutoAggregion()
{
var startTime = DateTime.Now.Date.AddDays(-90);
//查询最近有采购的采购商列表
var purchaserIdList = fsql.Select<OrderPurchaseInfo, Order>()
.InnerJoin((opi, o) => opi.OrderId == o.Id)
.Where((opi, o) => opi.IsEnabled == true &&
o.OrderState != Enums.OrderState. &&
o.StartTime >= startTime &&
!string.IsNullOrEmpty(opi.PurchaserId))
.Distinct()
.ToList((opi, o) => opi.PurchaserId);
Task.Factory.StartNew(() => AggregionByGroup(purchaserIdList), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.AggregationPurchaserTaskScheduler);
}
private void AggregionByGroup(IList<string> purchaserIdList)
{
var tempPurchaserIdList = new List<string>();
for (var i = 0; i < purchaserIdList.Count(); i++)
{
tempPurchaserIdList.Add(purchaserIdList[i]);
if (i != 0 && i % 30 == 0)
{
Console.WriteLine($"聚合{i + 1}/{purchaserIdList.Count()}");
Aggregion(tempPurchaserIdList);
tempPurchaserIdList.Clear();
}
}
if (tempPurchaserIdList.Count() > 0)
{
Console.WriteLine($"最后聚合");
Aggregion(tempPurchaserIdList);
tempPurchaserIdList.Clear();
}
}
private void Aggregion(IList<string> purchaserIdList)
{
Thread.Sleep(2000);
List<IUpdate<Purchaser>> updatePurchaserList = new List<IUpdate<Purchaser>>();
#region 查询SPU绑定数/SKU绑定数
var bindList = fsql.Select<PurchaseSchemeProduct, PurchaseScheme>()
.InnerJoin((psp, psc) => psp.SkuPurchaseSchemeId == psc.Id)
.Where((psp, psc) => purchaserIdList.Contains(psp.PurchaserId))
.GroupBy((psp, psc) => new { psp.PurchaserId, psp.ProductId, psp.SkuId })
.ToList(g => new
{
g.Key.PurchaserId,
g.Key.ProductId,
g.Key.SkuId
});
#endregion
#region 查询SPU采购数/SKU采购数
var purchasedList = fsql.Select<ProductSku, OrderPurchaseRelationInfo, OrderPurchaseInfo, Order>()
.InnerJoin((ps, ori, opi, o) => ps.Id == ori.BelongSkuId)
.InnerJoin((ps, ori, opi, o) => ori.PurchaseOrderId == opi.PurchaseOrderId &&
ori.OrderId == opi.OrderId)
.InnerJoin((ps, ori, opi, o) => opi.OrderId == o.Id)
.Where((ps, ori, opi, o) => o.OrderState != Enums.OrderState. &&
opi.IsEnabled == true &&
purchaserIdList.Contains(opi.PurchaserId))
.GroupBy((ps, ori, opi, o) => new { opi.PurchaserId, ps.Id, ps.ProductId })
.ToList(g => new
{
g.Key.PurchaserId,
g.Key.ProductId,
SkuId = g.Key.Id
});
#endregion
#region 查询订单数/最近采购时间
var poList = fsql.Select<OrderPurchaseInfo, Order>()
.InnerJoin((opi, o) => opi.OrderId == o.Id)
.Where((opi, o) => opi.IsEnabled == true &&
o.OrderState != Enums.OrderState. &&
purchaserIdList.Contains(opi.PurchaserId))
.GroupBy((opi, o) => opi.PurchaserId)
.ToList(g => new
{
PurchaserId = g.Key,
Count = g.Count(),
MaxPurchaseTime = g.Max(g.Value.Item1.CreateTime)
});
#endregion
#region 查询最近90天采购数量
var recent90d = DateTime.Now.Date.AddDays(-90);
var recent90dPurchasedCountList = fsql.Select<OrderPurchaseInfo, Order>()
.InnerJoin((opi, o) => opi.OrderId == o.Id)
.Where((opi, o) => o.OrderState != Enums.OrderState. &&
opi.IsEnabled == true &&
opi.CreateTime >= recent90d &&
purchaserIdList.Contains(opi.PurchaserId))
.GroupBy((opi, o) => opi.PurchaserId)
.ToList(g => new
{
PurchaserId = g.Key,
Count = g.Count(),
});
#endregion
#region 查询采购金额
var purchasedAmountList = fsql.Select<OrderCostDetail, Order, OrderPurchaseInfo>()
.InnerJoin((ocd, o, opi) => ocd.OrderId == o.Id)
.InnerJoin((ocd, o, opi) => o.Id == opi.OrderId)
.Where((ocd, o, opi) => o.OrderState != Enums.OrderState. &&
ocd.IsEnabled == true &&
opi.IsEnabled == true &&
purchaserIdList.Contains(opi.PurchaserId))
.GroupBy((ocd, o, opi) => opi.PurchaserId)
.ToList(g => new
{
PurchaserId = g.Key,
PurchasedAmount = g.Sum(g.Value.Item1.SkuAmount + g.Value.Item1.PurchaseFreight)
});
#endregion
#region 查询最近90天采购金额
var recent90dPurchasedAmountList = fsql.Select<OrderCostDetail, Order, OrderPurchaseInfo>()
.InnerJoin((ocd, o, opi) => ocd.OrderId == o.Id)
.InnerJoin((ocd, o, opi) => o.Id == opi.OrderId)
.Where((ocd, o, opi) => o.OrderState != Enums.OrderState. &&
ocd.IsEnabled == true &&
opi.IsEnabled == true &&
opi.CreateTime >= recent90d &&
purchaserIdList.Contains(opi.PurchaserId))
.GroupBy((ocd, o, opi) => opi.PurchaserId)
.ToList(g => new
{
PurchaserId = g.Key,
PurchasedAmount = g.Sum(g.Value.Item1.SkuAmount + g.Value.Item1.PurchaseFreight)
});
#endregion
foreach (var purchaserId in purchaserIdList)
{
#region SPU绑定数/SKU绑定数
var currentBindList = bindList.Where(x => x.PurchaserId == purchaserId).ToList();
var bindingSpuCount = currentBindList.Select(x => x.ProductId).Distinct().Count();
var bindingSkuCount = currentBindList.Select(x => x.SkuId).Count();
#endregion
#region SPU采购数/SKU采购数
var currentPurchasedList = purchasedList.Where(x => x.PurchaserId == purchaserId).ToList();
var purchasedSpuCount = currentPurchasedList.Select(x => x.ProductId).Distinct().Count();
var purchasedSkuCount = currentPurchasedList.Select(x => x.SkuId).Count();
#endregion
#region 订单数/最近采购时间
var purchasedCountAndTime = poList.FirstOrDefault(x => x.PurchaserId == purchaserId);
var purchasedCount = purchasedCountAndTime?.Count ?? 0;
var lastPurchaseTime = purchasedCountAndTime?.MaxPurchaseTime;
#endregion
#region 采购金额
var purchasedAmount = purchasedAmountList.FirstOrDefault(x => x.PurchaserId == purchaserId)?.PurchasedAmount ?? 0;
#endregion
#region 最近90天采购金额
var recent90dPurchasedAmount = recent90dPurchasedAmountList.FirstOrDefault(x => x.PurchaserId == purchaserId)?.PurchasedAmount ?? 0;
#endregion
#region 最近90天采购数量
var recent90dPurchasedCount = recent90dPurchasedCountList.FirstOrDefault(x => x.PurchaserId == purchaserId)?.Count ?? 0;
#endregion
var update = fsql.Update<Purchaser>(purchaserId)
.Set(p => p.BindingSpuCount, bindingSpuCount)
.Set(p => p.BindingSkuCount, bindingSkuCount)
.Set(p => p.PurchasedSpuCount, purchasedSpuCount)
.Set(p => p.PurchasedSkuCount, purchasedSkuCount)
.Set(p => p.PurchasedCount, purchasedCount)
.Set(p => p.PurchasedAmount, purchasedAmount)
.Set(p => p.Recent90dPurchasedAmount, recent90dPurchasedAmount)
.Set(p => p.Recent90dPurchasedCount, recent90dPurchasedCount);
updatePurchaserList.Add(update);
}
fsql.Transaction(() =>
{
foreach (var update in updatePurchaserList)
update.ExecuteAffrows();
});
}
}
}

4
BBWYB.Server.Business/PurchaseScheme/PurchaseSchemeBusiness.cs

@ -826,8 +826,8 @@ namespace BBWYB.Server.Business
schemeProduct.PurchaserLocation = purchaser.Location;
schemeProduct.PurchaserMemberId = purchaser.MemberId;
schemeProduct.PurchaserName = purchaser.Name;
schemeProduct.PurchaserPurchasedCount = purchaser.PurchasedCount;
schemeProduct.PurchaserPurchasedSkuCount = purchaser.PurchasedSkuCount;
//schemeProduct.PurchaserPurchasedCount = purchaser.PurchasedCount;
//schemeProduct.PurchaserPurchasedSkuCount = purchaser.PurchasedSkuCount;
schemeProduct.PurchasePlatform = purchaser.Platform;
schemeProduct.PurchaserTag = purchaser.Tag;
}

166
BBWYB.Server.Business/Purchaser/PurchaserBusiness.cs

@ -86,139 +86,41 @@ namespace BBWYB.Server.Business
request.RecentDayCondition.PurchasedCount != null &&
request.RecentDayCondition.PurchasedCount != 0)
{
var childSelect = fsql.Select<OrderPurchaseInfo, Order>()
.InnerJoin((opi, o) => opi.OrderId == o.Id)
.WhereIf(request.ShopId != null && request.ShopId > 0, (opi, o) => opi.ShopId == request.ShopId)
.Where((opi, o) => opi.IsEnabled == true &&
o.OrderState != Enums.OrderState. &&
opi.CreateTime >= recentStartDay)
.GroupBy((opi, o) => opi.PurchaserId)
.HavingIf(request.RecentDayCondition.PurchasedCountComparisonOperator == Enums.ComparisonOperator., g => g.Count() == request.RecentDayCondition.PurchasedCount)
.HavingIf(request.RecentDayCondition.PurchasedCountComparisonOperator == Enums.ComparisonOperator., g => g.Count() <= request.RecentDayCondition.PurchasedCount)
.HavingIf(request.RecentDayCondition.PurchasedCountComparisonOperator == Enums.ComparisonOperator., g => g.Count() >= request.RecentDayCondition.PurchasedCount)
.HavingIf(request.RecentDayCondition.PurchasedCountComparisonOperator == Enums.ComparisonOperator., g => g.Count() >= request.RecentDayCondition.PurchasedCount && g.Count() <= request.RecentDayCondition.PurchasedCount2)
.WithTempQuery(g => new { g.Value.Item1.PurchaserId, Count = g.Count() }).As("pcc");
select = select.Where(p => childSelect.Where(pcc => pcc.PurchaserId == p.Id).Any());
select = select.WhereIf(request.RecentDayCondition.PurchasedCountComparisonOperator == Enums.ComparisonOperator.,
p => p.Recent90dPurchasedCount == request.RecentDayCondition.PurchasedCount)
.WhereIf(request.RecentDayCondition.PurchasedCountComparisonOperator == Enums.ComparisonOperator.,
p => p.Recent90dPurchasedCount <= request.RecentDayCondition.PurchasedCount)
.WhereIf(request.RecentDayCondition.PurchasedCountComparisonOperator == Enums.ComparisonOperator.,
p => p.Recent90dPurchasedCount >= request.RecentDayCondition.PurchasedCount)
.WhereIf(request.RecentDayCondition.PurchasedCountComparisonOperator == Enums.ComparisonOperator.,
p => p.Recent90dPurchasedCount >= request.RecentDayCondition.PurchasedCount &&
p.Recent90dPurchasedCount <= request.RecentDayCondition.PurchasedCount2);
}
if (request.RecentDayCondition.PurchasedAmountComparisonOperator != null &&
request.RecentDayCondition.PurchasedAmountComparisonOperator != 0 &&
request.RecentDayCondition.PurchasedAmount != null &&
request.RecentDayCondition.PurchasedAmount != 0)
{
var childSelect = fsql.Select<OrderCostDetail, Order, OrderPurchaseRelationInfo, OrderPurchaseInfo>()
.InnerJoin((ocd, o, ori, opi) => ocd.OrderId == o.Id)
.InnerJoin((ocd, o, ori, opi) => ocd.OrderId == ori.OrderId && ocd.SkuId == ori.BelongSkuId)
.InnerJoin((ocd, o, ori, opi) => ori.OrderId == opi.OrderId)
.WhereIf(request.ShopId != null && request.ShopId > 0, (ocd, o, ori, opi) => o.ShopId == request.ShopId)
.Where((ocd, o, ori, opi) => o.OrderState != Enums.OrderState. &&
ocd.IsEnabled == true &&
opi.IsEnabled == true &&
opi.CreateTime >= recentStartDay)
.GroupBy((ocd, o, ori, opi) => opi.PurchaserId)
.HavingIf(request.RecentDayCondition.PurchasedAmountComparisonOperator == Enums.ComparisonOperator., g => g.Sum(g.Value.Item1.SkuAmount + g.Value.Item1.PurchaseFreight) == request.RecentDayCondition.PurchasedAmount)
.HavingIf(request.RecentDayCondition.PurchasedAmountComparisonOperator == Enums.ComparisonOperator., g => g.Sum(g.Value.Item1.SkuAmount + g.Value.Item1.PurchaseFreight) <= request.RecentDayCondition.PurchasedAmount)
.HavingIf(request.RecentDayCondition.PurchasedAmountComparisonOperator == Enums.ComparisonOperator., g => g.Sum(g.Value.Item1.SkuAmount + g.Value.Item1.PurchaseFreight) >= request.RecentDayCondition.PurchasedAmount)
.HavingIf(request.RecentDayCondition.PurchasedAmountComparisonOperator == Enums.ComparisonOperator., g => g.Sum(g.Value.Item1.SkuAmount + g.Value.Item1.PurchaseFreight) >= request.RecentDayCondition.PurchasedAmount && g.Sum(g.Value.Item1.SkuAmount + g.Value.Item1.PurchaseFreight) <= request.RecentDayCondition.PurchasedAmount2)
.WithTempQuery(g => new { g.Value.Item4.PurchaserId, PurchasedAmount = g.Sum(g.Value.Item1.SkuAmount + g.Value.Item1.PurchaseFreight) }).As("pca");
select = select.Where(p => childSelect.Where(pca => pca.PurchaserId == p.Id).Any());
select = select.WhereIf(request.RecentDayCondition.PurchasedCountComparisonOperator == Enums.ComparisonOperator.,
p => p.Recent90dPurchasedAmount == request.RecentDayCondition.PurchasedAmount)
.WhereIf(request.RecentDayCondition.PurchasedCountComparisonOperator == Enums.ComparisonOperator.,
p => p.Recent90dPurchasedAmount <= request.RecentDayCondition.PurchasedAmount)
.WhereIf(request.RecentDayCondition.PurchasedCountComparisonOperator == Enums.ComparisonOperator.,
p => p.Recent90dPurchasedAmount >= request.RecentDayCondition.PurchasedAmount)
.WhereIf(request.RecentDayCondition.PurchasedCountComparisonOperator == Enums.ComparisonOperator.,
p => p.Recent90dPurchasedAmount >= request.RecentDayCondition.PurchasedAmount &&
p.Recent90dPurchasedAmount <= request.RecentDayCondition.PurchasedAmount2);
}
}
var pageSelect = select.Page(request.PageIndex, request.PageSize);
var sql = pageSelect.ToSql();
var purchaserList = select.Page(request.PageIndex, request.PageSize)
.Count(out var count)
.ToList<PurchaserResponse>();
select = select.Page(request.PageIndex, request.PageSize)
.OrderByPropertyNameIf(!string.IsNullOrEmpty(request.SortColumn), request.SortColumn, request.SortType == 0);
//var sql = pageSelect.ToSql();
var purchaserList = select.Count(out var count).ToList<PurchaserResponse>();
if (purchaserList.Count() > 0)
{
var purchaserIdList = purchaserList.Select(p => p.Id).ToList();
#region 查询SPU绑定数/SKU绑定数
var bindList = fsql.Select<PurchaseSchemeProduct, PurchaseScheme>()
.InnerJoin((psp, psc) => psp.SkuPurchaseSchemeId == psc.Id)
.WhereIf(request.ShopId != null && request.ShopId > 0, (psp, psc) => psc.ShopId == request.ShopId)
.Where((psp, psc) => purchaserIdList.Contains(psp.PurchaserId))
.GroupBy((psp, psc) => new { psp.PurchaserId, psp.ProductId, psp.SkuId })
.ToList(g => new
{
g.Key.PurchaserId,
g.Key.ProductId,
g.Key.SkuId
});
#endregion
#region 查询SPU采购数/SKU采购数
var purchasedList = fsql.Select<ProductSku, OrderPurchaseRelationInfo, OrderPurchaseInfo, Order>()
.InnerJoin((ps, ori, opi, o) => ps.Id == ori.BelongSkuId)
.InnerJoin((ps, ori, opi, o) => ori.PurchaseOrderId == opi.PurchaseOrderId &&
ori.OrderId == opi.OrderId)
.InnerJoin((ps, ori, opi, o) => opi.OrderId == o.Id)
.WhereIf(request.ShopId != null && request.ShopId > 0, (ps, ori, opi, o) => o.ShopId == request.ShopId)
.Where((ps, ori, opi, o) => o.OrderState != Enums.OrderState. &&
opi.IsEnabled == true &&
purchaserIdList.Contains(opi.PurchaserId))
.GroupBy((ps, ori, opi, o) => new { opi.PurchaserId, ps.Id, ps.ProductId })
.ToList(g => new
{
g.Key.PurchaserId,
g.Key.ProductId,
SkuId = g.Key.Id
});
#endregion
#region 查询订单数
var poList = fsql.Select<OrderPurchaseInfo, Order>()
.InnerJoin((opi, o) => opi.OrderId == o.Id)
.WhereIf(request.ShopId != null && request.ShopId > 0, (opi, o) => opi.ShopId == request.ShopId)
.Where((opi, o) => opi.IsEnabled == true &&
o.OrderState != Enums.OrderState. &&
purchaserIdList.Contains(opi.PurchaserId))
.GroupBy((opi, o) => opi.PurchaserId)
.ToList(g => new
{
PurchaserId = g.Key,
Count = g.Count()
});
#endregion
#region 查询采购金额
var purchaseAmountList = fsql.Select<OrderCostDetail, Order, OrderPurchaseRelationInfo, OrderPurchaseInfo>()
.InnerJoin((ocd, o, ori, opi) => ocd.OrderId == o.Id)
.InnerJoin((ocd, o, ori, opi) => ocd.OrderId == ori.OrderId && ocd.SkuId == ori.BelongSkuId)
.InnerJoin((ocd, o, ori, opi) => ori.OrderId == opi.OrderId)
.WhereIf(request.ShopId != null && request.ShopId > 0, (ocd, o, ori, opi) => o.ShopId == request.ShopId)
.Where((ocd, o, ori, opi) => o.OrderState != Enums.OrderState. &&
ocd.IsEnabled == true &&
opi.IsEnabled == true &&
purchaserIdList.Contains(opi.PurchaserId))
.GroupBy((ocd, o, ori, opi) => opi.PurchaserId)
.ToList(g => new
{
PurchaserId = g.Key,
PurchaseAmount = g.Sum(g.Value.Item1.SkuAmount + g.Value.Item1.PurchaseFreight)
});
#endregion
#region 查询最近采购时间
var recentPurchaseTimeList = fsql.Select<OrderPurchaseInfo, Order>()
.InnerJoin((opi1, o) => opi1.OrderId == o.Id)
.WhereIf(request.ShopId != null && request.ShopId > 0, (opi1, o) => o.ShopId == request.ShopId)
.Where((opi1, o) => o.OrderState != Enums.OrderState. &&
purchaserIdList.Contains(opi1.PurchaserId) &&
opi1.IsEnabled == true)
.GroupBy((opi1, o) => opi1.PurchaserId)
.WithTempQuery(g => new { MaxId = g.Max(g.Value.Item1.Id) })
.From<OrderPurchaseInfo>()
.InnerJoin((opi1, opi2) => opi1.MaxId == opi2.Id)
.ToList((opi1, opi2) => new
{
opi2.PurchaserId,
opi2.CreateTime
});
#endregion
#region 查询标签/主营类目
var purchaserExtendInfoList = fsql.Select<PurchaserExtendedInfo, Purchaser_ExtendedInfo_Relation>()
.InnerJoin((pei, per) => pei.Id == per.ExtendedInfoId)
@ -268,30 +170,6 @@ namespace BBWYB.Server.Business
foreach (var purchaser in purchaserList)
{
#region SPU绑定数/SKU绑定数
var currentBindList = bindList.Where(x => x.PurchaserId == purchaser.Id).ToList();
purchaser.BindingSpuCount = currentBindList.Select(x => x.ProductId).Distinct().Count();
purchaser.BindingSkuCount = currentBindList.Select(x => x.SkuId).Count();
#endregion
#region SPU采购数/SKU采购数
var currentPurchasedList = purchasedList.Where(x => x.PurchaserId == purchaser.Id).ToList();
purchaser.PurchasedSpuCount = currentPurchasedList.Select(x => x.ProductId).Distinct().Count();
purchaser.PurchasedSkuCount = currentPurchasedList.Select(x => x.SkuId).Count();
#endregion
#region 订单数
purchaser.PurchasedCount = poList.FirstOrDefault(x => x.PurchaserId == purchaser.Id)?.Count ?? 0;
#endregion
#region 采购金额
purchaser.PurchaseAmount = purchaseAmountList.FirstOrDefault(x => x.PurchaserId == purchaser.Id)?.PurchaseAmount ?? 0;
#endregion
#region 最近采购时间
purchaser.LastPurchaseTime = recentPurchaseTimeList.FirstOrDefault(x => x.PurchaserId == purchaser.Id)?.CreateTime;
#endregion
#region 主营类目/标签
var currentExtendInfoList = purchaserExtendInfoList.Where(x => x.PurchaserId == purchaser.Id).ToList();
purchaser.CategoryList = currentExtendInfoList.Where(x => x.Type == Enums.PurchaserBasicInfoType.)

2
BBWYB.Server.Business/TaskSchedulerManager.cs

@ -9,12 +9,14 @@ namespace BBWYB.Server.Business
public LimitedConcurrencyLevelTaskScheduler PurchaseOrderCallbackTaskScheduler { get; private set; }
public LimitedConcurrencyLevelTaskScheduler AggregationPurchaserTaskScheduler { get; private set; }
public TaskSchedulerManager()
{
SyncOrderTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10);
PurchaseOrderCallbackTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10);
SyncProductTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(10);
AggregationPurchaserTaskScheduler = new LimitedConcurrencyLevelTaskScheduler(1);
}
}
}

54
BBWYB.Server.Model/Db/Purchaser/Purchaser.cs

@ -54,6 +54,60 @@ namespace BBWYB.Server.Model.Db
/// </summary>
[Column(StringLength = 20)]
public string Tag { get; set; }
/// <summary>
/// 绑定SPU数
/// </summary>
[Column(DbType = "bigint")]
public long? BindingSpuCount { get; set; } = 0;
/// <summary>
/// 采购SPU数
/// </summary>
[Column(DbType = "bigint")]
public long? PurchasedSpuCount { get; set; } = 0;
/// <summary>
/// 绑定SKU数
/// </summary>
[Column(DbType = "bigint")]
public long? BindingSkuCount { get; set; } = 0;
/// <summary>
/// 采购SKU数
/// </summary>
[Column(DbType = "bigint")]
public long? PurchasedSkuCount { get; set; } = 0;
/// <summary>
/// 采购次数/采购订单数
/// </summary>
[Column(DbType = "bigint")]
public long? PurchasedCount { get; set; } = 0;
/// <summary>
/// 采购金额
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? PurchasedAmount { get; set; } = 0.00M;
/// <summary>
/// 上次采购时间
/// </summary>
[Column(DbType = "datetime")]
public DateTime? LastPurchaseTime { get; set; }
/// <summary>
/// 最近90天采购金额
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? Recent90dPurchasedAmount { get; set; } = 0.00M;
/// <summary>
/// 最近90天采购次数
/// </summary>
[Column(DbType = "decimal(18,2)")]
public decimal? Recent90dPurchasedCount { get; set; } = 0.00M;
}
}

24
BBWYB.Server.Model/Dto/Request/Purchaser/QueryPurchaserRequest.cs

@ -43,13 +43,31 @@ namespace BBWYB.Server.Model.Dto
/// </summary>
[Required]
public int PageSize { get; set; }
/// <summary>
/// 排序字段
/// <para>取值范围</para>
/// <para>BindingSpuCount 绑定SPU数</para>
/// <para>PurchasedSpuCount 采购SPU数</para>
/// <para>BindingSkuCount 绑定SKU数</para>
/// <para>PurchasedSkuCount 采购SKU数</para>
/// <para>PurchasedCount 采购次数/订单数</para>
/// <para>PurchasedAmount 采购金额</para>
/// <para>LastPurchaseTime 最近采购时间</para>
/// </summary>
public string SortColumn { get; set; }
/// <summary>
/// 排序类型 0升序 1降序
/// </summary>
public int SortType { get; set; }
}
public class QueryPurchaserConditionByDayRequest
{
/// <summary>
/// 最近天数
/// </summary>
///// <summary>
///// 最近天数 暂时只有支持90
///// </summary>
public int? RecentDay { get; set; }
public Enums.ComparisonOperator? PurchasedCountComparisonOperator { get; set; }

18
BBWYB.Server.Model/Dto/Response/PurchaseScheme/PurchaseSchemeProductResponse.cs

@ -15,15 +15,15 @@ namespace BBWYB.Server.Model.Dto
public string PurchaserMemberId { get; set; }
/// <summary>
/// 采购商的采购次数
/// </summary>
public int? PurchaserPurchasedCount { get; set; }
/// <summary>
/// 采购商的采购SKU数
/// </summary>
public int? PurchaserPurchasedSkuCount { get; set; }
///// <summary>
///// 采购商的采购次数
///// </summary>
//public long? PurchaserPurchasedCount { get; set; }
///// <summary>
///// 采购商的采购SKU数
///// </summary>
//public long? PurchaserPurchasedSkuCount { get; set; }
/// <summary>
/// 采购商标签

37
BBWYB.Server.Model/Dto/Response/Purchaser/PurchaserResponse.cs

@ -14,45 +14,16 @@ namespace BBWYB.Server.Model.Dto
/// </summary>
public IList<PurchaserExtendedInfoResponse> TagList { get; set; }
/// <summary>
/// 绑定SPU数
/// </summary>
public int? BindingSpuCount { get; set; }
/// <summary>
/// 采购SPU数
/// </summary>
public int? PurchasedSpuCount { get; set; }
/// <summary>
/// 绑定SKU数
/// </summary>
public int? BindingSkuCount { get; set; }
/// <summary>
/// 采购SKU数
/// </summary>
public int? PurchasedSkuCount { get; set; } = 0;
/// <summary>
/// 采购次数/采购订单数
/// </summary>
public int? PurchasedCount { get; set; } = 0;
/// <summary>
/// 采购金额
/// </summary>
public decimal? PurchaseAmount { get; set; }
/// <summary>
/// 上次采购时间
/// 最近30天具有采购行为的店铺SKU
/// </summary>
public DateTime? LastPurchaseTime { get; set; }
public IList<RecentPurchasedSkuResponse> Recent30dProductSku { get; set; }
/// <summary>
/// 最近30天具有采购行为的店铺SKU
/// 采购金额容错字段
/// </summary>
public IList<RecentPurchasedSkuResponse> Recent30dProductSku { get; set; }
public decimal? PurchaseAmount { get { return PurchasedAmount; } }
public PurchaserResponse()
{

Loading…
Cancel
Save