Browse Source

白搞

pjzs_starttask_update
shanji 2 years ago
parent
commit
66fc7f5a3d
  1. 6
      BBWY.Server.API/Controllers/TestController.cs
  2. 154
      BBWY.Server.Business/TestBusiness.cs
  3. 4
      BBWY.Server.Business/Vender/VenderBusiness.cs
  4. 426
      BBWY.Server.Model/Db/JDXX/Newskus.cs
  5. 86
      BBWY.Test/Program.cs

6
BBWY.Server.API/Controllers/TestController.cs

@ -48,5 +48,11 @@ namespace BBWY.Server.API.Controllers
{
testBusiness.RepairDFOrder();
}
[HttpPost]
public void Test_20231221()
{
testBusiness.Test_20231221();
}
}
}

154
BBWY.Server.Business/TestBusiness.cs

@ -1,21 +1,21 @@
using BBWY.Common.Http;
using BBWY.Common.Models;
using BBWY.Server.Business.Extensions;
using BBWY.Server.Model;
using BBWY.Server.Model.Db;
using BBWY.Server.Model.Db.Mds;
using BBWY.Server.Model.Dto;
using FreeSql;
using Microsoft.Extensions.Options;
using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Threading;
using BBWY.Server.Business.Extensions;
using Newtonsoft.Json;
using System.Net.Http;
using System.Reflection;
using System.Threading;
using System.Threading.Tasks;
using Org.BouncyCastle.Crypto.Signers;
namespace BBWY.Server.Business
{
@ -408,6 +408,152 @@ namespace BBWY.Server.Business
Thread.Sleep(1000);
}
}
public void Test_20231221()
{
var invalidOrderStateList = new List<Enums.OrderState?>() { Enums.OrderState., Enums.OrderState. };
var shopList = venderBusiness.GetShopList(10224131, Enums.Platform.);
var objList = new List<(string id, string shopName, DateTime sjtime, decimal? lastOrderAmount, decimal fto20SearchUv, decimal fto50SearchUv, decimal fto100SearchUv, decimal fto200SearchUv, decimal fto30SearchUv, decimal fto500SearchUv)>();
var result = new List<string>() { "店铺名,SPU,上架时间,最后一单成交价,推荐访客首次到达20时的搜索访客,推荐访客首次到达50时的搜索访客,推荐访客首次到达100时的搜索访客,推荐访客首次到达200时的搜索访客,推荐访客首次到达300时的搜索访客,推荐访客首次到达50时的搜索访客" };
foreach (var shop in shopList)
{
Console.WriteLine(shop.ShopName);
var shopId = long.Parse(shop.ShopId);
var productList = fsql.Select<Product>().Where(p => p.ShopId == shopId).ToList();
var productIdList = productList.Select(p => p.Id).ToList();
var skuList = fsql.Select<OrderSku, Order>()
.InnerJoin((osku, o) => osku.OrderId == o.Id)
.Where((osku, o) => o.ShopId == shopId &&
!invalidOrderStateList.Contains(o.OrderState) &&
o.IsGift == false &&
o.StorageType != Enums.StorageType.SD &&
osku.Price > 0)
.GroupBy((osku, o) => osku.ProductId)
.WithTempQuery(g => new { MaxId = g.Max(g.Value.Item1.Id), ProductId = g.Key })
.From<OrderSku>()
.InnerJoin((osku, osku1) => osku1.Id == osku.MaxId)
.ToList((osku, osku1) => new { osku1.ProductId, osku1.OrderId });
var orderIdList = skuList.Select(s => s.OrderId).Distinct().ToList();
var orderList = fsql.Select<Order>(orderIdList).ToList(o => new Order() { Id = o.Id, ShopId = o.ShopId, OrderTotalPrice = o.OrderTotalPrice });
#region 20
var _20list = freeSqlMultiDBManager.JDXXfsql.Select<JDXX.Model.Db.Newskus>()
.Where(s => productIdList.Contains(s.Spu))
.GroupBy(s => new { s.Spu, s.CreateTime })
.Having(g => g.Sum(g.Value.StarUv) >= 50)
.OrderBy(g => g.Value.CreateTime)
.ToList(g => new
{
spu = g.Key,
g.Value.CreateTime,
sumSearchUv = g.Sum(g.Value.SearchUv),
sumStarUv = g.Sum(g.Value.StarUv)
});
#endregion
#region 50
var _50list = freeSqlMultiDBManager.JDXXfsql.Select<JDXX.Model.Db.Newskus>()
.Where(s => productIdList.Contains(s.Spu))
.GroupBy(s => new { s.Spu, s.CreateTime })
.Having(g => g.Sum(g.Value.StarUv) >= 50)
.OrderBy(g => g.Value.CreateTime)
.ToList(g => new
{
spu = g.Key,
g.Value.CreateTime,
sumSearchUv = g.Sum(g.Value.SearchUv),
sumStarUv = g.Sum(g.Value.StarUv)
});
#endregion
#region 100
var _100list = freeSqlMultiDBManager.JDXXfsql.Select<JDXX.Model.Db.Newskus>()
.Where(s => productIdList.Contains(s.Spu))
.GroupBy(s => new { s.Spu, s.CreateTime })
.Having(g => g.Sum(g.Value.StarUv) >= 100)
.OrderBy(g => g.Value.CreateTime)
.ToList(g => new
{
spu = g.Key,
g.Value.CreateTime,
sumSearchUv = g.Sum(g.Value.SearchUv),
sumStarUv = g.Sum(g.Value.StarUv)
});
#endregion
#region 200
var _200list = freeSqlMultiDBManager.JDXXfsql.Select<JDXX.Model.Db.Newskus>()
.Where(s => productIdList.Contains(s.Spu))
.GroupBy(s => new { s.Spu, s.CreateTime })
.Having(g => g.Sum(g.Value.StarUv) >= 200)
.OrderBy(g => g.Value.CreateTime)
.ToList(g => new
{
spu = g.Key,
g.Value.CreateTime,
sumSearchUv = g.Sum(g.Value.SearchUv),
sumStarUv = g.Sum(g.Value.StarUv)
});
#endregion
#region 300
var _300list = freeSqlMultiDBManager.JDXXfsql.Select<JDXX.Model.Db.Newskus>()
.Where(s => productIdList.Contains(s.Spu))
.GroupBy(s => new { s.Spu, s.CreateTime })
.Having(g => g.Sum(g.Value.StarUv) >= 300)
.OrderBy(g => g.Value.CreateTime)
.ToList(g => new
{
spu = g.Key,
g.Value.CreateTime,
sumSearchUv = g.Sum(g.Value.SearchUv),
sumStarUv = g.Sum(g.Value.StarUv)
});
#endregion
#region 500
var _500list = freeSqlMultiDBManager.JDXXfsql.Select<JDXX.Model.Db.Newskus>()
.Where(s => productIdList.Contains(s.Spu))
.GroupBy(s => new { s.Spu, s.CreateTime })
.Having(g => g.Sum(g.Value.StarUv) >= 500)
.OrderBy(g => g.Value.CreateTime)
.ToList(g => new
{
spu = g.Key,
g.Value.CreateTime,
sumSearchUv = g.Sum(g.Value.SearchUv),
sumStarUv = g.Sum(g.Value.StarUv)
});
#endregion
foreach (var product in productList)
{
var orderTotalPrice = orderList.FirstOrDefault(o => o.Id == (skuList.FirstOrDefault(s => s.ProductId == product.Id)?.OrderId))?.OrderTotalPrice ?? 0M;
var shopName = shop.ShopName;
var sjtime = product.CreateTime;
var fto20SearchUv = _20list.FirstOrDefault(s => s.spu.Spu == product.Id)?.sumSearchUv ?? 0M;
var fto50SearchUv = _50list.FirstOrDefault(s => s.spu.Spu == product.Id)?.sumSearchUv ?? 0M;
var fto100SearchUv = _100list.FirstOrDefault(s => s.spu.Spu == product.Id)?.sumSearchUv ?? 0M;
var fto200SearchUv = _200list.FirstOrDefault(s => s.spu.Spu == product.Id)?.sumSearchUv ?? 0M;
var fto300SearchUv = _300list.FirstOrDefault(s => s.spu.Spu == product.Id)?.sumSearchUv ?? 0M;
var fto500SearchUv = _500list.FirstOrDefault(s => s.spu.Spu == product.Id)?.sumSearchUv ?? 0M;
result.Add($"{shopName},{product.Id},{sjtime},{orderTotalPrice},{fto20SearchUv},{fto50SearchUv},{fto100SearchUv},{fto200SearchUv},{fto300SearchUv},{fto500SearchUv}");
}
}
System.IO.File.WriteAllLines(Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "result.csv"), result, System.Text.Encoding.UTF8);
Console.WriteLine("结束");
}
}
public class JPCount

4
BBWY.Server.Business/Vender/VenderBusiness.cs

@ -293,14 +293,14 @@ namespace BBWY.Server.Business
return departmentList;
}
public IList<ShopResponse> GetShopList(long? shopId = null, Enums.Platform? platform = null, bool filterTurnoverDays = false, bool filterSiNan = false)
public IList<ShopResponse> GetShopList(long? shopId = null, Enums.Platform? platform = null, bool filterTurnoverDays = false, bool filterSiNan = false, bool? isEnabled = true)
{
return freeSqlMultiDBManager.MDSfsql.Select<Shops>().Where(s => !string.IsNullOrEmpty(s.ShopId))
.WhereIf(shopId != null, s => s.ShopId == shopId.ToString())
.WhereIf(platform != null, s => s.PlatformId == (int)platform)
.WhereIf(filterTurnoverDays, s => s.SkuSafeTurnoverDays != 0)
.WhereIf(filterSiNan, s => !string.IsNullOrEmpty(s.SiNanDingDingWebHook))
.Where(s => s.IsEnabled == true)
.WhereIf(isEnabled != null, s => s.IsEnabled == isEnabled)
.ToList<ShopResponse>();
}

426
BBWY.Server.Model/Db/JDXX/Newskus.cs

@ -0,0 +1,426 @@
using FreeSql.DataAnnotations;
using System;
namespace JDXX.Model.Db
{
[Table(Name = "newskus", DisableSyncStructure = true)]
public partial class Newskus
{
/// <summary>
/// Id
/// </summary>
[Column(StringLength = 50, IsPrimary = true, IsNullable = false)]
public string Id { get; set; }
/// <summary>
/// 加购物车数量
/// </summary>
[Column(DbType = "int")]
public int? AddCardCount { get; set; }
/// <summary>
/// 加购人数
/// </summary>
[Column(DbType = "int")]
public int? AddCardMember { get; set; }
/// <summary>
/// 加购率
/// </summary>
[Column(DbType = "decimal(11,2)")]
public decimal? AddCardRate { get; set; }
/// <summary>
/// 点击次数
/// </summary>
[Column(DbType = "int")]
public int? ClickCount { get; set; }
/// <summary>
/// 点击率
/// </summary>
[Column(DbType = "decimal(11,2)")]
public decimal? ClickRate { get; set; }
/// <summary>
/// 栏目订单
/// </summary>
[Column(DbType = "int")]
public int? ColumnOrder { get; set; }
/// <summary>
/// 转化率
/// </summary>
[Column(DbType = "decimal(11,2)")]
public decimal? ConversionRate { get; set; }
/// <summary>
/// 收费流量
/// </summary>
[Column(DbType = "int")]
public int? CostUv { get; set; }
/// <summary>
/// 创建时间
/// </summary>
[Column(DbType = "datetime")]
public DateTime CreateTime { get; set; }
/// <summary>
/// 盈亏小节
/// </summary>
[Column(DbType = "decimal(19,4)")]
public decimal? EarningsPrice { get; set; }
/// <summary>
/// 曝光量
/// </summary>
[Column(DbType = "int")]
public int? Exposure { get; set; }
/// <summary>
/// 快车点击率
/// </summary>
[Column(DbType = "decimal(11,2)")]
public decimal? ExposureClickRate { get; set; }
/// <summary>
/// 快车点击
/// </summary>
[Column(DbType = "int")]
public int? ExpressClick { get; set; }
/// <summary>
/// 快车花费
/// </summary>
[Column(DbType = "decimal(19,4)")]
public decimal? ExpressCost { get; set; }
/// <summary>
/// 快车展现
/// </summary>
public decimal? ExpressExposure { get; set; }
/// <summary>
/// 快车订单
/// </summary>
[Column(DbType = "int")]
public int? ExpressOrder { get; set; }
/// <summary>
/// 快车成交额
/// </summary>
[Column(DbType = "decimal(19,4)")]
public decimal? ExpressPayPrice { get; set; }
/// <summary>
/// 快车人均点击
/// </summary>
[Column(DbType = "decimal(11,4)")]
public decimal? ExpressPeopleClick { get; set; }
/// <summary>
/// 快车访客
/// </summary>
[Column(DbType = "int")]
public int? ExpressUv { get; set; }
/// <summary>
/// 免费订单
/// </summary>
[Column(DbType = "int")]
public int? FreeOrder { get; set; }
/// <summary>
/// 免费成交额
/// </summary>
[Column(DbType = "decimal(19,4)")]
public decimal? FreePayPrice { get; set; }
/// <summary>
/// 免费流量
/// </summary>
[Column(DbType = "int")]
public int? FreeUv { get; set; }
/// <summary>
/// 首页访客
/// </summary>
[Column(DbType = "int")]
public int? IndexUv { get; set; }
/// <summary>
/// 是否收藏
/// </summary>
[Column(DbType = "tinyint")]
public sbyte? IsStar { get; set; }
/// <summary>
/// 新品交易榜单
/// </summary>
[Column(DbType = "int")]
public int? NewSaleTopIndex { get; set; }
/// <summary>
/// 新品人气榜单
/// </summary>
[Column(DbType = "int")]
public int? NewUvTopIndex { get; set; }
/// <summary>
/// 一级类目
/// </summary>
[Column(StringLength = 50)]
public string OneCatId { get; set; }
/// <summary>
/// 其他订单
/// </summary>
[Column(DbType = "int")]
public int? OtherOrder { get; set; }
/// <summary>
/// 其他成交额
/// </summary>
[Column(DbType = "decimal(19,4)")]
public decimal? OtherPrice { get; set; }
/// <summary>
/// 其他访客
/// </summary>
[Column(DbType = "int")]
public int? OtherUv { get; set; }
/// <summary>
/// 流量路径
/// </summary>
[Column(StringLength = -2)]
public string PathList { get; set; }
/// <summary>
/// 下单商品件数
/// </summary>
[Column(DbType = "int")]
public int? PayItemCount { get; set; }
/// <summary>
/// 下单客户数
/// </summary>
[Column(DbType = "int")]
public int? PayMember { get; set; }
/// <summary>
/// 下单数
/// </summary>
[Column(DbType = "int")]
public int? PayOrder { get; set; }
/// <summary>
/// 下单金额
/// </summary>
[Column(DbType = "decimal(19,4)")]
public decimal? PayPrice { get; set; }
/// <summary>
/// 下单转化率
/// </summary>
[Column(DbType = "decimal(11,2)")]
public decimal? PayRate { get; set; }
/// <summary>
/// 毛利
/// </summary>
[Column(DbType = "decimal(19,4)")]
public decimal? Profits { get; set; }
/// <summary>
/// 流量
/// </summary>
[Column(DbType = "int")]
public int? Pv { get; set; }
/// <summary>
/// 真实转化率
/// </summary>
[Column(DbType = "decimal(11,2)")]
public decimal? RealConversionRate { get; set; }
/// <summary>
/// 真实成交额
/// </summary>
[Column(DbType = "decimal(19,4)")]
public decimal? RealPrice { get; set; }
/// <summary>
/// 成交客户数
/// </summary>
[Column(DbType = "int")]
public int? SaleMember { get; set; }
/// <summary>
/// 成交金额
/// </summary>
[Column(DbType = "decimal(19,4)")]
public decimal? SalePrice { get; set; }
/// <summary>
/// 成交转化率
/// </summary>
[Column(DbType = "decimal(11,2)")]
public decimal? SaleRate { get; set; }
/// <summary>
/// 成交件数
/// </summary>
[Column(DbType = "int")]
public int? Sales { get; set; }
/// <summary>
/// 交易榜单排名
/// </summary>
[Column(DbType = "int")]
public int? SaleTopIndex { get; set; }
/// <summary>
/// 风向标
/// </summary>
[Column(DbType = "decimal(11,2)")]
public decimal? ScoreRank { get; set; }
/// <summary>
/// 刷单花费
/// </summary>
[Column(DbType = "decimal(19,4)")]
public decimal? SdCost { get; set; }
/// <summary>
/// 刷单单量
/// </summary>
[Column(DbType = "int")]
public int? SdOrder { get; set; }
/// <summary>
/// 刷单成交额
/// </summary>
[Column(DbType = "decimal(19,4)")]
public decimal? SdPrice { get; set; }
/// <summary>
/// 搜索访客
/// </summary>
[Column(DbType = "int")]
public int? SearchUv { get; set; }
/// <summary>
/// 二级类目
/// </summary>
[Column(StringLength = 50)]
public string SecondCatId { get; set; }
/// <summary>
/// 自主订单
/// </summary>
[Column(DbType = "int")]
public int? SelfOrder { get; set; }
/// <summary>
/// 店铺ID
/// </summary>
[Column(StringLength = 50)]
public string ShopId { get; set; }
/// <summary>
/// 海投点击
/// </summary>
[Column(DbType = "int")]
public int? ShotgunClick { get; set; }
/// <summary>
/// 海投点击率
/// </summary>
[Column(DbType = "decimal(11,2)")]
public decimal? ShotgunClickRate { get; set; }
/// <summary>
/// 海投花费
/// </summary>
[Column(DbType = "decimal(19,4)")]
public decimal? ShotgunCost { get; set; }
/// <summary>
/// 海投展现
/// </summary>
[Column(DbType = "decimal(11,2)")]
public decimal? ShotgunExposure { get; set; }
/// <summary>
/// 海投订单
/// </summary>
[Column(DbType = "int")]
public int? ShotgunOrder { get; set; }
/// <summary>
/// 海投成交额
/// </summary>
[Column(DbType = "decimal(19,4)")]
public decimal? ShotgunPayPrice { get; set; }
/// <summary>
/// 海投人均点击
/// </summary>
[Column(DbType = "decimal(11,4)")]
public decimal? ShotgunPeopleClick { get; set; }
/// <summary>
/// 海投访客
/// </summary>
[Column(DbType = "int")]
public int? ShotgunUv { get; set; }
/// <summary>
/// sku
/// </summary>
[Column(StringLength = 50)]
public string Sku { get; set; }
/// <summary>
/// Spu
/// </summary>
[Column(StringLength = 50)]
public string Spu { get; set; }
/// <summary>
/// 推荐访客
/// </summary>
[Column(DbType = "int")]
public int? StarUv { get; set; }
/// <summary>
/// 三级类目
/// </summary>
[Column(StringLength = 50)]
public string ThirdCatId { get; set; }
/// <summary>
/// 总花费
/// </summary>
[Column(DbType = "decimal(19,4)")]
public decimal? TotalCost { get; set; }
/// <summary>
/// 访客
/// </summary>
[Column(DbType = "int")]
public int? Uv { get; set; }
/// <summary>
/// 人气榜单排名
/// </summary>
[Column(DbType = "int")]
public int? UvTopIndex { get; set; }
}
}

86
BBWY.Test/Program.cs

@ -68,49 +68,51 @@ namespace BBWY.Test
//var token = "50a4c0f5c55848b5a8a715709e8d6fe0jntb"; //卿卿玩具专营店
var fsql = new FreeSql.FreeSqlBuilder().UseConnectionString(FreeSql.DataType.MySql, "data source=rm-bp1508okrh23710yfao.mysql.rds.aliyuncs.com;port=3306;user id=qyroot;password=kaicn1132+-;initial catalog=bbwy_test;charset=utf8;sslmode=none;").Build();
var sercvice = new ServiceCollection();
sercvice.AddHttpClient();
var servicePriovder = sercvice.BuildServiceProvider();
var restApiService = new Common.Http.RestApiService(servicePriovder.GetRequiredService<IHttpClientFactory>());
//var sercvice = new ServiceCollection();
//sercvice.AddHttpClient();
//var servicePriovder = sercvice.BuildServiceProvider();
//var restApiService = new Common.Http.RestApiService(servicePriovder.GetRequiredService<IHttpClientFactory>());
//var files = System.IO.Directory.GetFiles(@"C:\Users\pengcong001\Desktop\bbwylog");
//var startTime = DateTime.Parse("2023-10-16");
//var endTime = DateTime.Parse("2023-11-22");
//foreach (var file in files)
//{
// var fileName = file.Substring(file.LastIndexOf("\\") + 1);
// Console.WriteLine(file);
// var lines = System.IO.File.ReadAllLines(file);
// var priceModifyMsgList = lines.Where(l => !string.IsNullOrEmpty(l) && l.Contains("ORDER_BUYER_VIEW_ORDER_PRICE_MODIFY")).ToList();
// var orderIndex = 0;
// foreach (var priceModifyMsg in priceModifyMsgList)
// {
// orderIndex++;
// var poId = JObject.Parse(priceModifyMsg)["data"]["orderId"].ToString();
// var orderDropshipping = fsql.Select<OrderDropShipping>().Where(o => o.PurchaseOrderId == poId).ToOne();
// if (orderDropshipping == null)
// continue;
// var orderId = orderDropshipping.OrderId;
// var shopId = orderDropshipping.ShopId;
// var result = restApiService.SendRequest("http://bbwytest.qiyue666.com/", "api/test/RepairSkuDetailAndSkuGriooProfit", new
// {
// StartTime = startTime,
// EndTime = endTime,
// ShopId = shopId,
// OrderId = orderId,
// OrderIdList = new List<string>()
// }, null, HttpMethod.Post);
// Console.WriteLine($"{DateTime.Now} {fileName} {orderIndex}/{priceModifyMsgList.Count()} HttpResult{result.StatusCode}");
// Thread.Sleep(2000);
// }
// try
// {
// System.IO.File.Delete(file);
// }
// catch { }
//}
var files = System.IO.Directory.GetFiles(@"C:\Users\pengcong001\Desktop\bbwylog");
var startTime = DateTime.Parse("2023-10-16");
var endTime = DateTime.Parse("2023-11-22");
foreach (var file in files)
{
var fileName = file.Substring(file.LastIndexOf("\\") + 1);
Console.WriteLine(file);
var lines = System.IO.File.ReadAllLines(file);
var priceModifyMsgList = lines.Where(l => !string.IsNullOrEmpty(l) && l.Contains("ORDER_BUYER_VIEW_ORDER_PRICE_MODIFY")).ToList();
var orderIndex = 0;
foreach (var priceModifyMsg in priceModifyMsgList)
{
orderIndex++;
var poId = JObject.Parse(priceModifyMsg)["data"]["orderId"].ToString();
var orderDropshipping = fsql.Select<OrderDropShipping>().Where(o => o.PurchaseOrderId == poId).ToOne();
if (orderDropshipping == null)
continue;
var orderId = orderDropshipping.OrderId;
var shopId = orderDropshipping.ShopId;
var result = restApiService.SendRequest("http://bbwytest.qiyue666.com/", "api/test/RepairSkuDetailAndSkuGriooProfit", new
{
StartTime = startTime,
EndTime = endTime,
ShopId = shopId,
OrderId = orderId,
OrderIdList = new List<string>()
}, null, HttpMethod.Post);
Console.WriteLine($"{DateTime.Now} {fileName} {orderIndex}/{priceModifyMsgList.Count()} HttpResult{result.StatusCode}");
Thread.Sleep(2000);
}
try
{
System.IO.File.Delete(file);
}
catch { }
}

Loading…
Cancel
Save