任务描述
需求描述
需求背景:日销表统计逻辑和v2不一致,以及时常存在数据同步延迟的问题。导致自动fba审核页面的销量与listingv2页面的销量不一致。
需求内容:

【亚马逊自动fba审核管理】页面的销量数据源切换至从listingv2同步,在已有的同步服务中增加销量相关字段。
验收标准
数据准确,销量同步无延迟。
需求背景:日销表统计逻辑和v2不一致,以及时常存在数据同步延迟的问题。导致自动fba审核页面的销量与listingv2页面的销量不一致。
需求内容:

【亚马逊自动fba审核管理】页面的销量数据源切换至从listingv2同步,在已有的同步服务中增加销量相关字段。
| 所属迭代 | 智能中心-智能备货迭代 |
|---|---|
| 所属模块 | 智能中心-需求池 战略独立项目 智能备货 |
| 相关需求 | 智能备货:自动fba审核销量数据源切换为listingv2 |
| 指派给 | Closed 于 2025-05-17 09:38:31 |
| 任务类型 | 后端 |
| 任务标签 | 初始 |
| 开发组 | |
| 任务状态 | 已关闭 |
| 进度 | 100% |
| 优先级 | P2 |
| 关键词 | |
| 抄送给 |
| 由谁创建 | 罗友军 于 2025-03-17 17:25:24 |
|---|---|
| 由谁完成 | 钟国泽 于 2025-03-21 16:49:22 |
| 由谁取消 | 暂无 |
| 由谁关闭 | 李亚婷 于 2025-05-17 09:38:31 |
| 关闭原因 | 已完成 |
| 最后编辑 | 李亚婷 于 2025-05-17 09:38:31 |
| 团队 | 最初预计 | 总计消耗 | 预计剩余 |
|---|
| 最初预计 | 8工时 |
|---|---|
| 总计消耗 | 8工时 |
| 预计剩余 | 0工时 |
| 预计开始 | 2025-03-17 |
| 实际开始 | 2025-03-21 |
| 截止日期 | 2025-03-21 |
/// <summary>
/// 自动fba审核销量数据源切换为listingv2
/// </summary>
/// <param name="cancellation"></param>
/// <returns></returns>
public async Task SyncSaleNumListingV2(int Type, CancellationToken cancellation)
{
int customerId = (int)EnumMaster.Customer.CustomerId;
int pageSize = 100;
var typeName = $"SyncSaleNumListingV2_{nameof(SyncSaleNumListingV2)}";
var maxValue = _hotColdDictionaryService.GetDictionaryValue<string>(typeName);
while (!cancellation.IsCancellationRequested)
{
//获取数据
var checkStatus = new List<int>() { (int)EnumAmazon.AutoFbaCheckStatus.未审核, (int)EnumAmazon.AutoFbaCheckStatus.暂不处理 };
var where = new Expressionable<RB_Amazon_AutoFba_Check>();
where.And(p => p.CustomerID == customerId);
where.And(p => p.IsDelete == false);
if (Type == 1)
{
where.And(p => checkStatus.Contains(p.CheckStatus));
}
else
{
where.And(p => !checkStatus.Contains(p.CheckStatus));
}
// 生成表达式
var whereExpression = where.ToExpression();
var list = await _amazon_AutoFba_Check_Repository.GetQueryable(whereExpression).With(SqlWith.NoLock).Where(p => p.Id > maxValue.ToLong()).OrderBy(p => p.Id).ToPageListAsync(1, pageSize);
//数据为空重置同步记录,跳出循环
if (!list.Any())
{
_hotColdDictionaryService.Save(new HotColdDictionary()
{
TypeName = typeName,
Value = string.Empty,
UpdateTime = DateTime.Now
});
break;
}
//获取下次查询的最大id
maxValue = list.Max(p => p.Id).ToString();
//获取listingV2的明细
var listingV2Result = GetListingResult(list);
//循环获取销量数据
List<RB_Amazon_AutoFba_Check> AutoFbaCheckList = new List<RB_Amazon_AutoFba_Check>();
foreach (var item in list)
{
var currentListingV2Result = listingV2Result.FirstOrDefault(o => o.SourceId == item.OrderSourceID && o.MSKU == item.OrderSourceSKU);
if (currentListingV2Result == null)
{
_logger.LogInformation($"来源渠道:{item.OrderSourceID},渠道sku:{item.OrderSourceSKU},获取不到listingV2数据");
continue;
}
if (currentListingV2Result.Sale is { SaleDay7: null, SaleDay14: null, SaleDay30: null, SaleDay90: null })
{
_logger.LogInformation($"来源渠道:{item.OrderSourceID},渠道sku:{item.OrderSourceSKU},销量数据为空");
continue;
}
item.SaleNumWeek1 = currentListingV2Result.Sale.SaleDay7 ?? 0;
item.SaleNumWeek2 = currentListingV2Result.Sale.SaleDay14 ?? 0;
item.SaleNumDay30 = currentListingV2Result.Sale.SaleDay30 ?? 0;
item.SaleNumDay90 = currentListingV2Result.Sale.SaleDay90 ?? 0;
AutoFbaCheckList.Add(item);
}
//更新数据
if (AutoFbaCheckList.Count > 0)
{
await _amazon_AutoFba_Check_Repository.UpdateAsync(AutoFbaCheckList, a => new { a.Id }, a => new
{
a.SaleNumWeek1,
a.SaleNumWeek2,
a.SaleNumDay30,
a.SaleNumDay90,
});
}
//获取下次查询的最大id
_hotColdDictionaryService.Save(new HotColdDictionary()
{
TypeName = typeName,
Value = maxValue,
UpdateTime = DateTime.Now
});
}
}
2 取消原来同步得代码