diff --git a/BBWY.Client/Views/MainWindow.xaml b/BBWY.Client/Views/MainWindow.xaml index 8d778748..811f48cd 100644 --- a/BBWY.Client/Views/MainWindow.xaml +++ b/BBWY.Client/Views/MainWindow.xaml @@ -26,7 +26,7 @@ - + diff --git a/BBWY.Server.Business/SiNan/GOIWarningBusiness.cs b/BBWY.Server.Business/SiNan/GOIWarningBusiness.cs index 51617fad..c9d7d0bb 100644 --- a/BBWY.Server.Business/SiNan/GOIWarningBusiness.cs +++ b/BBWY.Server.Business/SiNan/GOIWarningBusiness.cs @@ -33,7 +33,7 @@ namespace BBWY.Server.Business.SiNan public void StartCheckGOI() { - var shopList = venderBusiness.GetShopList(platform: Enums.Platform.京东, filterSiNan: true); + var shopList = venderBusiness.GetShopList(shopId: 11514921, platform: Enums.Platform.京东, filterSiNan: true); foreach (var shop in shopList) { Task.Factory.StartNew(() => CheckGOI(shop), CancellationToken.None, TaskCreationOptions.LongRunning, taskSchedulerManager.GOIWarningTaskScheduler); @@ -77,15 +77,14 @@ namespace BBWY.Server.Business.SiNan var growupCost = 0; //成长加速期花费阈值 var growupLevel1Cost = 0; //成长加速期第一阶段成本 - var growupLevel2Cost = 0; //成长加速期第二阶段成本 + var growupLevel2MinCost = 0; //成长加速期第二阶段最低成本 + var growupLevel2MaxCost = 0M; //成长加速期第二阶段最大成本 var growupLevel2MinGOI = 0M; //成长加速器第二阶段最低GOI var growupLevel2MaxGOI = 0M; //成长加速器第二阶段最大GOI - var growupLevel3Cost = 0; //成长加速期第三阶段成本 + var growupLevel3MinCost = 0; //成长加速期第三阶段最小成本 + var growupLevel3MaxCost = 0M; //成长加速期第三阶段最大成本 var growupLevel3MinGOI = 0M; //成长加速器第三阶段最低GOI var growupLevel3MaxGOI = 0M; //成长加速器第三阶段最大GOI - var growupLevel4Cost = 0; //成长加速期第四阶段成本 - var growupLevel4MinGOI = 0M; //成长加速器第四阶段最低GOI - var growupLevel4MaxGOI = 0M; //成长加速器第四阶段最大GOI var matureCost = 0; //成熟期花费阈值 var mature7dCost = 0; //成熟期7天花费阈值 @@ -102,15 +101,14 @@ namespace BBWY.Server.Business.SiNan { growupCost = 300; growupLevel1Cost = 100; - growupLevel2Cost = 100; + growupLevel2MinCost = 100; + growupLevel2MaxCost = 199.9M; growupLevel2MinGOI = 0.5M; growupLevel2MaxGOI = 1.1M; - growupLevel3Cost = 200; + growupLevel3MinCost = 200; + growupLevel3MaxCost = 299.9M; growupLevel3MinGOI = 0.7M; growupLevel3MaxGOI = 1.1M; - growupLevel4Cost = 300; - growupLevel4MinGOI = 0.9M; - growupLevel4MaxGOI = 1.1M; matureCost = 300; mature7dCost = 150; @@ -126,15 +124,14 @@ namespace BBWY.Server.Business.SiNan { growupCost = 600; growupLevel1Cost = 200; - growupLevel2Cost = 200; + growupLevel2MinCost = 200; + growupLevel2MaxCost = 399.9M; growupLevel2MinGOI = 0.5M; growupLevel2MaxGOI = 1.1M; - growupLevel3Cost = 400; + growupLevel3MinCost = 400; + growupLevel3MaxCost = 599.9M; growupLevel3MinGOI = 0.7M; growupLevel3MaxGOI = 1.1M; - growupLevel4Cost = 600; - growupLevel4MinGOI = 0.9M; - growupLevel4MaxGOI = 1.1M; matureCost = 600; mature7dCost = 300; @@ -150,15 +147,14 @@ namespace BBWY.Server.Business.SiNan { growupCost = 1000; growupLevel1Cost = 300; - growupLevel2Cost = 300; + growupLevel2MinCost = 300; + growupLevel2MaxCost = 699.9M; growupLevel2MinGOI = 0.5M; growupLevel2MaxGOI = 1.1M; - growupLevel3Cost = 700; + growupLevel3MinCost = 700; + growupLevel3MaxCost = 999.9M; growupLevel3MinGOI = 0.7M; growupLevel3MaxGOI = 1.1M; - growupLevel4Cost = 999; - growupLevel4MinGOI = 0.9M; - growupLevel4MaxGOI = 1.1M; matureCost = 1000; mature7dCost = 500; @@ -182,8 +178,10 @@ namespace BBWY.Server.Business.SiNan EndDate = yesterday }); - foreach (var adGroupGOI in adGroupGOIList) + //foreach (var adGroupGOI in adGroupGOIList) + for (var i = 0; i < adGroupGOIList.Count(); i++) { + var adGroupGOI = adGroupGOIList[i]; var adGroup = yesterdayJDpopularizeadskuList.FirstOrDefault(s => s.AdGroupId == adGroupGOI.LevelId); if (adGroup == null) continue; @@ -203,20 +201,20 @@ namespace BBWY.Server.Business.SiNan //不建议调整 isWarning = false; } - else if (adGroupGOI.TotalCost >= growupLevel4Cost) + else if (adGroupGOI.TotalCost >= growupLevel2MinCost && adGroupGOI.TotalCost <= growupLevel2MaxCost) { - if (adGroupGOI.CustomDaysGOI.GOI < growupLevel4MinGOI) + if (adGroupGOI.CustomDaysGOI.GOI < growupLevel2MinGOI) { isWarning = true; - dingdingWarningContent = $"{adGroup.CampaignName}-{adGroup.AdGroupName} 处于{siNanCycleType},近7天GOI低于{growupLevel4MinGOI},请及时优化!"; + dingdingWarningContent = $"{adGroup.CampaignName}-{adGroup.AdGroupName} 处于{siNanCycleType},近7天GOI低于{growupLevel2MinGOI},请及时优化!"; } - else if (adGroupGOI.CustomDaysGOI.GOI > growupLevel4MaxGOI) + else if (adGroupGOI.CustomDaysGOI.GOI < growupLevel2MaxGOI) { isWarning = true; - dingdingWarningContent = $"{adGroup.CampaignName}-{adGroup.AdGroupName} 处于{siNanCycleType},近7天GOI低于{growupLevel4MaxGOI},舍不得孩子套不住狼,请及时优化!"; + dingdingWarningContent = $"{adGroup.CampaignName}-{adGroup.AdGroupName} 处于{siNanCycleType},近7天GOI低于{growupLevel2MaxGOI},舍不得孩子套不住狼,请及时优化!"; } } - else if (adGroupGOI.TotalCost >= growupLevel3Cost) + else if (adGroupGOI.TotalCost >= growupLevel3MinCost && adGroupGOI.TotalCost <= growupLevel3MaxCost) { if (adGroupGOI.CustomDaysGOI.GOI < growupLevel3MinGOI) { @@ -229,21 +227,8 @@ namespace BBWY.Server.Business.SiNan dingdingWarningContent = $"{adGroup.CampaignName}-{adGroup.AdGroupName} 处于{siNanCycleType},近7天GOI低于{growupLevel3MaxGOI},舍不得孩子套不住狼,请及时优化!"; } } - else if (adGroupGOI.TotalCost >= growupLevel2Cost) - { - if (adGroupGOI.CustomDaysGOI.GOI < growupLevel2MinGOI) - { - isWarning = true; - dingdingWarningContent = $"{adGroup.CampaignName}-{adGroup.AdGroupName} 处于{siNanCycleType},近7天GOI低于{growupLevel2MinGOI},请及时优化!"; - } - else if (adGroupGOI.CustomDaysGOI.GOI < growupLevel2MaxGOI) - { - isWarning = true; - dingdingWarningContent = $"{adGroup.CampaignName}-{adGroup.AdGroupName} 处于{siNanCycleType},近7天GOI低于{growupLevel2MaxGOI},舍不得孩子套不住狼,请及时优化!"; - } - } } - else if (adGroupGOI.TotalCost > matureCost && adGroupGOI.CustomDaysGOI.Cost > mature7dCost) + else if (adGroupGOI.TotalCost >= matureCost && adGroupGOI.CustomDaysGOI.Cost >= mature7dCost) { siNanCycleType = Enums.SiNanCycleType.成熟利润期; if (adGroupGOI.CustomDaysGOI.GOI < matureLevel1MinGOI) @@ -257,7 +242,7 @@ namespace BBWY.Server.Business.SiNan dingdingWarningContent = $"{adGroup.CampaignName}-{adGroup.AdGroupName} 处于{siNanCycleType},近7天GOI低于{matureLevel1MaxGOI},舍不得孩子套不住狼,请及时优化!"; } } - else if (adGroupGOI.TotalCost > stableCost && adGroupGOI.CustomDaysGOI.Cost < stable7dCost) + else if (adGroupGOI.TotalCost >= stableCost && adGroupGOI.CustomDaysGOI.Cost < stable7dCost) { siNanCycleType = Enums.SiNanCycleType.稳定日销期; if (adGroupGOI.CustomDaysGOI.GOI < stableLevel1MinGOI) @@ -286,8 +271,7 @@ namespace BBWY.Server.Business.SiNan dingdingContentBuilder.Append("快车业务线-单元维度\n"); isAddBusinessTypeTitle = true; } - - dingdingContentBuilder.Append($"{dingdingWarningContent}\n"); + dingdingContentBuilder.Append($"{dingdingWarningContent}{(i == adGroupGOIList.Count() - 1 ? "\r" : string.Empty)}\n"); } } #endregion @@ -304,8 +288,9 @@ namespace BBWY.Server.Business.SiNan EndDate = yesterday }); - foreach (var adGOI in adGOIList) + for (var i = 0; i < adGOIList.Count(); i++) { + var adGOI = adGOIList[i]; var ad = yesterdayJDpopularizeadskuList.FirstOrDefault(s => s.AdId == adGOI.LevelId); if (ad == null) continue; @@ -325,20 +310,20 @@ namespace BBWY.Server.Business.SiNan //不建议调整 isWarning = false; } - else if (adGOI.TotalCost >= growupLevel4Cost) + else if (adGOI.TotalCost >= growupLevel2MinCost && adGOI.TotalCost <= growupLevel2MaxCost) { - if (adGOI.CustomDaysGOI.GOI < growupLevel4MinGOI) + if (adGOI.CustomDaysGOI.GOI < growupLevel2MinGOI) { isWarning = true; - dingdingWarningContent = $"{ad.CampaignName}-{ad.AdGroupName}-{ad.AdName} 处于{siNanCycleType},近7天GOI低于{growupLevel4MinGOI},请及时优化!"; + dingdingWarningContent = $"{ad.CampaignName}-{ad.AdGroupName}-{ad.AdName} 处于{siNanCycleType},近7天GOI低于{growupLevel2MinGOI},请及时优化!"; } - else if (adGOI.CustomDaysGOI.GOI > growupLevel4MaxGOI) + else if (adGOI.CustomDaysGOI.GOI < growupLevel2MaxGOI) { isWarning = true; - dingdingWarningContent = $"{ad.CampaignName}-{ad.AdGroupName}-{ad.AdName} 处于{siNanCycleType},近7天GOI低于{growupLevel4MaxGOI},舍不得孩子套不住狼,请及时优化!"; + dingdingWarningContent = $"{ad.CampaignName}-{ad.AdGroupName}-{ad.AdName} 处于{siNanCycleType},近7天GOI低于{growupLevel2MaxGOI},舍不得孩子套不住狼,请及时优化!"; } } - else if (adGOI.TotalCost >= growupLevel3Cost) + else if (adGOI.TotalCost >= growupLevel3MinCost && adGOI.TotalCost <= growupLevel3MaxCost) { if (adGOI.CustomDaysGOI.GOI < growupLevel3MinGOI) { @@ -351,21 +336,8 @@ namespace BBWY.Server.Business.SiNan dingdingWarningContent = $"{ad.CampaignName}-{ad.AdGroupName}-{ad.AdName} 处于{siNanCycleType},近7天GOI低于{growupLevel3MaxGOI},舍不得孩子套不住狼,请及时优化!"; } } - else if (adGOI.TotalCost >= growupLevel2Cost) - { - if (adGOI.CustomDaysGOI.GOI < growupLevel2MinGOI) - { - isWarning = true; - dingdingWarningContent = $"{ad.CampaignName}-{ad.AdGroupName}-{ad.AdName} 处于{siNanCycleType},近7天GOI低于{growupLevel2MinGOI},请及时优化!"; - } - else if (adGOI.CustomDaysGOI.GOI < growupLevel2MaxGOI) - { - isWarning = true; - dingdingWarningContent = $"{ad.CampaignName}-{ad.AdGroupName}-{ad.AdName} 处于{siNanCycleType},近7天GOI低于{growupLevel2MaxGOI},舍不得孩子套不住狼,请及时优化!"; - } - } } - else if (adGOI.TotalCost > matureCost && adGOI.CustomDaysGOI.Cost > mature7dCost) + else if (adGOI.TotalCost >= matureCost && adGOI.CustomDaysGOI.Cost >= mature7dCost) { siNanCycleType = Enums.SiNanCycleType.成熟利润期; if (adGOI.CustomDaysGOI.GOI < matureLevel1MinGOI) @@ -379,7 +351,7 @@ namespace BBWY.Server.Business.SiNan dingdingWarningContent = $"{ad.CampaignName}-{ad.AdGroupName}-{ad.AdName} 处于{siNanCycleType},近7天GOI低于{matureLevel1MaxGOI},舍不得孩子套不住狼,请及时优化!"; } } - else if (adGOI.TotalCost > stableCost && adGOI.CustomDaysGOI.Cost < stable7dCost) + else if (adGOI.TotalCost >= stableCost && adGOI.CustomDaysGOI.Cost < stable7dCost) { siNanCycleType = Enums.SiNanCycleType.稳定日销期; if (adGOI.CustomDaysGOI.GOI < stableLevel1MinGOI) @@ -410,7 +382,7 @@ namespace BBWY.Server.Business.SiNan isAddBusinessTypeTitle = true; } - dingdingContentBuilder.Append($"{dingdingWarningContent}\n"); + dingdingContentBuilder.Append($"{dingdingWarningContent}{(i == adGOIList.Count() - 1 ? "\r" : string.Empty)}\n"); } } #endregion @@ -427,8 +399,9 @@ namespace BBWY.Server.Business.SiNan EndDate = yesterday }); - foreach (var skuGOI in skuGOIList) + for (var i = 0; i < skuGOIList.Count(); i++) { + var skuGOI = skuGOIList[i]; var sku = yesterdayJDpopularizeadskuList.FirstOrDefault(s => s.Sku == skuGOI.LevelId); if (sku == null) continue; @@ -448,20 +421,20 @@ namespace BBWY.Server.Business.SiNan //不建议调整 isWarning = false; } - else if (skuGOI.TotalCost >= growupLevel4Cost) + else if (skuGOI.TotalCost >= growupLevel2MinCost && skuGOI.TotalCost <= growupLevel2MaxCost) { - if (skuGOI.CustomDaysGOI.GOI < growupLevel4MinGOI) + if (skuGOI.CustomDaysGOI.GOI < growupLevel2MinGOI) { isWarning = true; - dingdingWarningContent = $"{sku.CampaignName}-{sku.Sku} 处于{siNanCycleType},近7天GOI低于{growupLevel4MinGOI},请及时优化!"; + dingdingWarningContent = $"{sku.CampaignName}-{sku.Sku} 处于{siNanCycleType},近7天GOI低于{growupLevel2MinGOI},请及时优化!"; } - else if (skuGOI.CustomDaysGOI.GOI > growupLevel4MaxGOI) + else if (skuGOI.CustomDaysGOI.GOI < growupLevel2MaxGOI) { isWarning = true; - dingdingWarningContent = $"{sku.CampaignName}-{sku.Sku} 处于{siNanCycleType},近7天GOI低于{growupLevel4MaxGOI},舍不得孩子套不住狼,请及时优化!"; + dingdingWarningContent = $"{sku.CampaignName}-{sku.Sku} 处于{siNanCycleType},近7天GOI低于{growupLevel2MaxGOI},舍不得孩子套不住狼,请及时优化!"; } } - else if (skuGOI.TotalCost >= growupLevel3Cost) + else if (skuGOI.TotalCost >= growupLevel3MinCost && skuGOI.TotalCost <= growupLevel3MaxCost) { if (skuGOI.CustomDaysGOI.GOI < growupLevel3MinGOI) { @@ -474,21 +447,9 @@ namespace BBWY.Server.Business.SiNan dingdingWarningContent = $"{sku.CampaignName}-{sku.Sku} 处于{siNanCycleType},近7天GOI低于{growupLevel3MaxGOI},舍不得孩子套不住狼,请及时优化!"; } } - else if (skuGOI.TotalCost >= growupLevel2Cost) - { - if (skuGOI.CustomDaysGOI.GOI < growupLevel2MinGOI) - { - isWarning = true; - dingdingWarningContent = $"{sku.CampaignName}-{sku.Sku} 处于{siNanCycleType},近7天GOI低于{growupLevel2MinGOI},请及时优化!"; - } - else if (skuGOI.CustomDaysGOI.GOI < growupLevel2MaxGOI) - { - isWarning = true; - dingdingWarningContent = $"{sku.CampaignName}-{sku.Sku} 处于{siNanCycleType},近7天GOI低于{growupLevel2MaxGOI},舍不得孩子套不住狼,请及时优化!"; - } - } + } - else if (skuGOI.TotalCost > matureCost && skuGOI.CustomDaysGOI.Cost > mature7dCost) + else if (skuGOI.TotalCost >= matureCost && skuGOI.CustomDaysGOI.Cost >= mature7dCost) { siNanCycleType = Enums.SiNanCycleType.成熟利润期; if (skuGOI.CustomDaysGOI.GOI < matureLevel1MinGOI) @@ -502,7 +463,7 @@ namespace BBWY.Server.Business.SiNan dingdingWarningContent = $"{sku.CampaignName}-{sku.Sku} 处于{siNanCycleType},近7天GOI低于{matureLevel1MaxGOI},舍不得孩子套不住狼,请及时优化!"; } } - else if (skuGOI.TotalCost > stableCost && skuGOI.CustomDaysGOI.Cost < stable7dCost) + else if (skuGOI.TotalCost >= stableCost && skuGOI.CustomDaysGOI.Cost < stable7dCost) { siNanCycleType = Enums.SiNanCycleType.稳定日销期; if (skuGOI.CustomDaysGOI.GOI < stableLevel1MinGOI) @@ -533,7 +494,7 @@ namespace BBWY.Server.Business.SiNan isAddBusinessTypeTitle = true; } - dingdingContentBuilder.Append($"{dingdingWarningContent}\n"); + dingdingContentBuilder.Append($"{dingdingWarningContent}{(i == skuGOIList.Count() - 1 ? "\r" : string.Empty)}\n"); } } #endregion