diff --git a/BBWYB.Server.API/Controllers/DataRepairController.cs b/BBWYB.Server.API/Controllers/DataRepairController.cs index cbf964c..2d1562b 100644 --- a/BBWYB.Server.API/Controllers/DataRepairController.cs +++ b/BBWYB.Server.API/Controllers/DataRepairController.cs @@ -121,5 +121,11 @@ namespace BBWYB.Server.API.Controllers { dataRepairBusiness.RepairPurchaserLocation(); } + + [HttpPost] + public void ExportQTSpuAndJDSku() + { + dataRepairBusiness.ExportQTSpuAndJDSku(); + } } } diff --git a/BBWYB.Server.API/Program.cs b/BBWYB.Server.API/Program.cs index 4174b6a..545ed68 100644 --- a/BBWYB.Server.API/Program.cs +++ b/BBWYB.Server.API/Program.cs @@ -34,11 +34,14 @@ var fsql2 = new FreeSql.FreeSqlBuilder().UseConnectionString(FreeSql.DataType.My var fsql_bbwyc = new FreeSql.FreeSqlBuilder().UseConnectionString(FreeSql.DataType.MySql, configuration.GetConnectionString("BBWYCDB")).Build(); +var fsql_hy = new FreeSql.FreeSqlBuilder().UseConnectionString(FreeSql.DataType.MySql, configuration.GetConnectionString("HYDB")).Build(); + services.AddSingleton(new FreeSqlMultiDBManager() { BBWYBfsql = fsql, MDSfsql = fsql2, BBWYCfsql = fsql_bbwyc, + HYfsql = fsql_hy }); services.AddSingleton(); diff --git a/BBWYB.Server.API/appsettings.json b/BBWYB.Server.API/appsettings.json index d071f85..355fa76 100644 --- a/BBWYB.Server.API/appsettings.json +++ b/BBWYB.Server.API/appsettings.json @@ -11,7 +11,8 @@ //"DB": "data source=rm-bp1508okrh23710yfao.mysql.rds.aliyuncs.com;port=3306;user id=qyroot;password=kaicn1132+-;initial catalog=bbwy;charset=utf8;sslmode=none;" "DB": "data source=rm-bp1508okrh23710yfao.mysql.rds.aliyuncs.com;port=3306;user id=qyroot;password=kaicn1132+-;initial catalog=bbwyb;charset=utf8;sslmode=none;", "BBWYCDB": "data source=rm-bp1508okrh23710yfao.mysql.rds.aliyuncs.com;port=3306;user id=qyroot;password=kaicn1132+-;initial catalog=bbwy_test;charset=utf8;sslmode=none;", - "MDSDB": "data source=rm-bp1508okrh23710yfao.mysql.rds.aliyuncs.com;port=3306;user id=qyroot;password=kaicn1132+-;initial catalog=mds;charset=utf8;sslmode=none;" + "MDSDB": "data source=rm-bp1508okrh23710yfao.mysql.rds.aliyuncs.com;port=3306;user id=qyroot;password=kaicn1132+-;initial catalog=mds;charset=utf8;sslmode=none;", + "HYDB": "data source=rm-bp1508okrh23710yfao.mysql.rds.aliyuncs.com;port=3306;user id=qyroot;password=kaicn1132+-;initial catalog=jdhy;charset=utf8;sslmode=none;" }, "AllowedSwagger": true, "Secret": "D96BFA5B-F2AF-45BC-9342-5A55C3F9BBB0", diff --git a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs index 12ffe46..e409944 100644 --- a/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs +++ b/BBWYB.Server.Business/DataRepair/DataRepairBusiness.cs @@ -4,6 +4,7 @@ using BBWYB.Common.Log; using BBWYB.Common.Models; using BBWYB.Server.Model; using BBWYB.Server.Model.Db; +using BBWYB.Server.Model.Db.HY; using BBWYB.Server.Model.Dto; using FreeSql; using SDKAdapter; @@ -12,6 +13,7 @@ using SDKAdapter.OperationPlatform.Models; using SDKAdapter.PurchasePlatform.Client; using SDKAdapter.PurchasePlatform.Models; using System.Data; +using System.Reflection; using System.Text.RegularExpressions; using Yitter.IdGenerator; @@ -1247,6 +1249,45 @@ namespace BBWYB.Server.Business //Console.WriteLine(location); return location; } + + public void ExportQTSpuAndJDSku() + { + var qtlist = fsql.Select() + .Where(s1 => !string.IsNullOrEmpty(s1.BelongSkuId)) + .GroupBy(s1 => s1.ProductId) + .WithTempQuery(g => new { MaxId = g.Max(g.Value.Id) }) + .From() + .InnerJoin((s1, s2) => s1.MaxId == s2.Id) + .ToList((s1, s2) => new { s2.ProductId, s2.BelongSkuId, s2.CreateTime }); + + var jdSkuIdList = qtlist.Select(x => x.BelongSkuId).Distinct().ToList(); + var jdSkuList = freeSqlMultiDBManager.BBWYCfsql.Select(jdSkuIdList).ToList(); + var hycatsList = freeSqlMultiDBManager.HYfsql.Select().ToList(); + + var result = new List(); + foreach (var qt in qtlist) + { + HyCats l1category = null; + HyCats l2category = null; + HyCats l3category = null; + var ps = jdSkuList.FirstOrDefault(x => x.Id == qt.BelongSkuId); + + if (ps != null && ps.CategoryId != null) + { + l3category = hycatsList.FirstOrDefault(x => x.Id == ps.CategoryId.ToString()); + if (l3category != null && !string.IsNullOrEmpty(l3category.ParentId)) + { + l2category = hycatsList.FirstOrDefault(x => x.Id == l3category.ParentId); + if (l2category != null && !string.IsNullOrEmpty(l2category.ParentId)) + l1category = hycatsList.FirstOrDefault(x => x.Id == l2category.ParentId); + } + } + result.Add($"{qt.ProductId},{qt.BelongSkuId},{l1category?.Id},{l1category?.Name},{l2category?.Id},{l2category?.Name},{l3category?.Id},{l3category?.Name}"); + } + result.Insert(0, "拳探spu,京东sku,京东1级类目Id,京东1级类目名称,京东2级类目Id,京东2级类目名称,京东3级类目Id,京东3级类目名称"); + var path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "ExportQTSpuAndJDSku.csv"); + System.IO.File.WriteAllLines(path, result, System.Text.Encoding.UTF8); + } } } diff --git a/BBWYB.Server.Business/FreeSqlMultiDBManager.cs b/BBWYB.Server.Business/FreeSqlMultiDBManager.cs index a9f54b6..12a7b7a 100644 --- a/BBWYB.Server.Business/FreeSqlMultiDBManager.cs +++ b/BBWYB.Server.Business/FreeSqlMultiDBManager.cs @@ -6,5 +6,7 @@ public IFreeSql MDSfsql { get; set; } public IFreeSql BBWYCfsql { get; set; } + + public IFreeSql HYfsql { get; set; } } } diff --git a/BBWYB.Server.Model/Db/HY/HY重新生成.bat b/BBWYB.Server.Model/Db/HY/HY重新生成.bat new file mode 100644 index 0000000..b3cb0be --- /dev/null +++ b/BBWYB.Server.Model/Db/HY/HY重新生成.bat @@ -0,0 +1,2 @@ + +FreeSql.Generator -Razor 1 -NameOptions 1,0,0,0 -NameSpace BBWYB.Server.Model.Db -DB "MySql,data source=rm-bp1508okrh23710yfao.mysql.rds.aliyuncs.com;port=3306;user id=qyroot;password=kaicn1132+-;initial catalog=jdhy;charset=utf8;sslmode=none;" -FileName "{name}.cs" diff --git a/BBWYB.Server.Model/Db/HY/Hycats.cs b/BBWYB.Server.Model/Db/HY/Hycats.cs new file mode 100644 index 0000000..50d88ef --- /dev/null +++ b/BBWYB.Server.Model/Db/HY/Hycats.cs @@ -0,0 +1,47 @@ +using FreeSql.DatabaseModel; +using System; +using System.Collections; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; +using System.Threading.Tasks; +using Newtonsoft.Json; +using FreeSql.DataAnnotations; + +namespace BBWYB.Server.Model.Db.HY +{ + + [Table(Name = "hycats", DisableSyncStructure = true)] + public partial class HyCats + { + + [Column(StringLength = 50, IsPrimary = true, IsNullable = false)] + public string Id { get; set; } + + /// + /// 是否最子级 + /// + [Column(DbType = "tinyint")] + public sbyte IsLeaf { get; set; } + + /// + /// 级别 + /// + [Column(DbType = "int")] + public int Level { get; set; } + + /// + /// 名称 + /// + [Column(IsNullable = false)] + public string Name { get; set; } + + /// + /// 父级ID + /// + [Column(StringLength = 50)] + public string ParentId { get; set; } + + } + +} diff --git a/BBWYB.Server.Model/Db/HY/__razor.cshtml.txt b/BBWYB.Server.Model/Db/HY/__razor.cshtml.txt new file mode 100644 index 0000000..8997b3b --- /dev/null +++ b/BBWYB.Server.Model/Db/HY/__razor.cshtml.txt @@ -0,0 +1,67 @@ +using FreeSql.DatabaseModel;@{ +var gen = Model as RazorModel; + +Func GetAttributeString = attr => { + if (string.IsNullOrEmpty(attr)) return ""; + return string.Concat(", ", attr.Trim('[', ']')); +}; +Func GetDefaultValue = defval => { + if (string.IsNullOrEmpty(defval)) return ""; + return " = " + defval + ";"; +}; +}@{ +switch (gen.fsql.Ado.DataType) { + case FreeSql.DataType.PostgreSQL: +@:using System; +@:using System.Collections; +@:using System.Collections.Generic; +@:using System.Linq; +@:using System.Reflection; +@:using System.Threading.Tasks; +@:using Newtonsoft.Json; +@:using FreeSql.DataAnnotations; +@:using System.Net; +@:using Newtonsoft.Json.Linq; +@:using System.Net.NetworkInformation; +@:using NpgsqlTypes; +@:using Npgsql.LegacyPostgis; + break; + case FreeSql.DataType.SqlServer: + case FreeSql.DataType.MySql: + default: +@:using System; +@:using System.Collections; +@:using System.Collections.Generic; +@:using System.Linq; +@:using System.Reflection; +@:using System.Threading.Tasks; +@:using Newtonsoft.Json; +@:using FreeSql.DataAnnotations; + break; +} +} + +namespace @gen.NameSpace { + +@if (string.IsNullOrEmpty(gen.table.Comment) == false) { + @:/// + @:/// @gen.table.Comment.Replace("\r\n", "\n").Replace("\n", "\r\n /// ") + @:/// +} + [JsonObject(MemberSerialization.OptIn)@GetAttributeString(gen.GetTableAttribute())] + public partial class @gen.GetCsName(gen.FullTableName) { + + @foreach (var col in gen.columns) { + + if (string.IsNullOrEmpty(col.Comment) == false) { + @:/// + @:/// @col.Comment.Replace("\r\n", "\n").Replace("\n", "\r\n /// ") + @:/// + } + @:@("[JsonProperty" + GetAttributeString(gen.GetColumnAttribute(col, true)) + "]") + @:public @gen.GetCsType(col) @gen.GetCsName(col.Name) { get; set; }@GetDefaultValue(gen.GetColumnDefaultValue(col, false)) +@: + } + } +@gen.GetMySqlEnumSetDefine() +} \ No newline at end of file diff --git a/BBWYB.Server.Model/Db/HY/__重新生成.bat b/BBWYB.Server.Model/Db/HY/__重新生成.bat new file mode 100644 index 0000000..23f751f --- /dev/null +++ b/BBWYB.Server.Model/Db/HY/__重新生成.bat @@ -0,0 +1,2 @@ + +FreeSql.Generator -Razor "__razor.cshtml.txt" -NameOptions 1,0,0,0 -NameSpace BBWYB.Server.Model.Db -DB "MySql,data source=rm-bp1508okrh23710yfao.mysql.rds.aliyuncs.com;port=3306;user id=qyroot;password=kaicn1132+-;initial catalog=jdhy;charset=utf8;sslmode=none;" -FileName "{name}.cs"