From ba0c98253ccc3ffe4464c0ef094de55b19a9a4b1 Mon Sep 17 00:00:00 2001 From: zpc Date: Mon, 2 Dec 2024 15:16:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=AE=9A=E6=97=B6=E5=99=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/PayController.cs | 3 +- .../Code/CloudGaming.Code/Mall/OrderBLL.cs | 2 +- .../Monitor/GameMonitorProcessor.cs | 82 ++++++++++++ .../Monitor/OrderMonitorProcessor.cs | 75 +++++++++++ .../Monitor/UserMonitorProcessor.cs | 121 +++++++----------- .../CloudGaming.Code/Payment/OrderExtend.cs | 3 +- .../CloudGaming.Code/Payment/PaymentExtend.cs | 3 +- .../PlayGame/PlayGameUserInfo.cs | 2 + .../Db/Db_Ext/CloudGamingCBTContext.cs | 4 +- .../Db/Db_Ext/T_Statistics_Order.cs | 2 +- .../Db/Db_Ext/T_User_LoginDay_Log.cs | 2 +- .../Db_Phone/CloudGamingPhoneContext.cs | 5 +- .../Db_Phone/T_Game_PlayGameLog.cs | 7 + .../Db_User/CloudGamingUserContext.cs | 6 + .../DbSqlServer/Db_User/T_User_IntentOrder.cs | 5 + .../DbSqlServer/Db_User/T_User_Order.cs | 5 + .../DbSqlServer/efcore-gen.md | 2 +- 17 files changed, 242 insertions(+), 87 deletions(-) create mode 100644 src/CloudGaming/Code/CloudGaming.Code/Monitor/GameMonitorProcessor.cs create mode 100644 src/CloudGaming/Code/CloudGaming.Code/Monitor/OrderMonitorProcessor.cs diff --git a/src/CloudGaming/Api/CloudGaming.PayApi/Controllers/PayController.cs b/src/CloudGaming/Api/CloudGaming.PayApi/Controllers/PayController.cs index c5351a5..0249c6e 100644 --- a/src/CloudGaming/Api/CloudGaming.PayApi/Controllers/PayController.cs +++ b/src/CloudGaming/Api/CloudGaming.PayApi/Controllers/PayController.cs @@ -91,6 +91,7 @@ namespace CloudGaming.PayApi.Controllers return "success"; } DAO dao = new DAO(serviceProvider, appConfig); + //查询意向订单 var intentOrder = await dao.DaoUser.Context.T_User_IntentOrder.FirstOrDefaultAsync(it => it.OrderId == orderId); if (intentOrder == null) { @@ -126,7 +127,7 @@ namespace CloudGaming.PayApi.Controllers T_User_OrderItems orderItems = new T_User_OrderItems(); orderItems.PayUrl = context.Request.Path; //orderItems. - await product.OrderRewardsNoWorkAsync(user, pay, orderId, intentOrder.Price, intentOrder.CreatedAt, dao, orderItems); + await product.OrderRewardsNoWorkAsync(user, pay, orderId, intentOrder.Price, intentOrder.Channel ?? "", intentOrder.CreatedAt, dao, orderItems); //intentOrder = await dao.daoDbMiaoYu.context.T_User_IntentOrder.FirstOrDefaultAsync(it => it.OrderId == orderId); intentOrder.Status = (int)OrderState.已完成; await dao.DaoUser.Context.SaveChangesAsync(); diff --git a/src/CloudGaming/Code/CloudGaming.Code/Mall/OrderBLL.cs b/src/CloudGaming/Code/CloudGaming.Code/Mall/OrderBLL.cs index ea2f949..911de5e 100644 --- a/src/CloudGaming/Code/CloudGaming.Code/Mall/OrderBLL.cs +++ b/src/CloudGaming/Code/CloudGaming.Code/Mall/OrderBLL.cs @@ -71,7 +71,7 @@ public class OrderBLL : CloudGamingBase price = (decimal)0.01; } (var orderId, var order, var payNotifyUrl) = await payment.CreateOrder(product.Id, product.ProductName, price, product, ip); - var t = product.ToIntentOrder(paymentMethod, orderId); + var t = product.ToIntentOrder(paymentMethod, orderId, AppRequestInfo.Channel); t.UserId = _UserId; if (payNotifyUrl != null && payNotifyUrl.Length > 200) { diff --git a/src/CloudGaming/Code/CloudGaming.Code/Monitor/GameMonitorProcessor.cs b/src/CloudGaming/Code/CloudGaming.Code/Monitor/GameMonitorProcessor.cs new file mode 100644 index 0000000..0269da9 --- /dev/null +++ b/src/CloudGaming/Code/CloudGaming.Code/Monitor/GameMonitorProcessor.cs @@ -0,0 +1,82 @@ +using CloudGaming.DtoModel.Other; + +using HuanMeng.DotNetCore.QuartzExtend; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CloudGaming.Code.Monitor +{ + /// + /// 游戏控制器 + /// + [QuartzTrigger("GameMonitorProcessor", "* 05 4 * * ?")] + public class GameMonitorProcessor : AppJobBase + { + public GameMonitorProcessor(IServiceScopeFactory scopeFactory) : base(scopeFactory) + { + } + + public override async Task AppConfigProcessLoop(AppConfig appConfig, AppMonitorInfo appMonitorInfo, IServiceProvider serviceProvider, CloudGamingBase cloudGamingBase) + { + var dao = cloudGamingBase.Dao; + var now = DateTime.Now.AddDays(-1); + int day = int.Parse(now.ToString("yyyyMMdd")); + var nowDay = DateOnly.FromDateTime(now); + var gamePlay = dao.DaoPhone.Context.T_Game_PlayGameLog.Where(it => it.CreateDay == day).AsQueryable(); + //启动游戏次数 + var gamePlayCount = await gamePlay.GroupBy(log => log.Channel).ToDictionaryAsync(it => it.Key ?? "", it => it.Count()); + //启动游戏人数 + var gamePlayLog = await gamePlay.GroupBy(log => log.Channel).Select(group => new + { + Channel = group.Key, + UserCount = group.Select(log => log.UserId).Distinct().Count() + }).ToDictionaryAsync(it => it.Channel ?? "", it => it.UserCount); + // 游玩时间 + var gamePlaySeconds = await gamePlay.GroupBy(log => log.Channel).Select(group => new + { + Channel = group.Key, + PlayGameTotalSeconds = group.Sum(it => it.PlayGameTotalSeconds) + }).ToDictionaryAsync(it => it.Channel ?? "", it => it.PlayGameTotalSeconds); + + // 获取当前统计数据 + var userStatistics = await dao.DaoExt.Context.T_Statistics_Game + .Where(it => it.LoginDay == day) + .ToDictionaryAsync(it => it.Channel ?? ""); + // 更新或创建统计记录 + void UpdateStatistics(string channel, int playGameCount, int playGameTimeCount, int startGameCount) + { + if (!userStatistics.TryGetValue(channel, out var statisticsUser)) + { + statisticsUser = new T_Statistics_Game() + { + PlayGameCount = 0, + Channel = channel, + CreatedAt = DateTime.Now, + PlayGameTimeCount = 0, + StartGameCount = 0, + LoginDate = nowDay, + LoginDay = day, + UpdatedAt = DateTime.Now, + }; + dao.DaoExt.Context.T_Statistics_Game.Add(statisticsUser); + userStatistics.Add(channel, statisticsUser); + } + statisticsUser.PlayGameCount = playGameCount; + statisticsUser.PlayGameTimeCount = playGameTimeCount > 0 ? playGameTimeCount / 60 / 60 : playGameTimeCount; + statisticsUser.StartGameCount = startGameCount; + statisticsUser.UpdatedAt = DateTime.Now; + } + + foreach (var item in gamePlayCount) + { + UpdateStatistics(item.Key, item.Value, gamePlaySeconds.GetValueOrDefault(item.Key, 0), gamePlayLog.GetValueOrDefault(item.Key, 0)); + } + + await dao.DaoExt.Context.SaveChangesAsync(); + } + } +} diff --git a/src/CloudGaming/Code/CloudGaming.Code/Monitor/OrderMonitorProcessor.cs b/src/CloudGaming/Code/CloudGaming.Code/Monitor/OrderMonitorProcessor.cs new file mode 100644 index 0000000..7b748b0 --- /dev/null +++ b/src/CloudGaming/Code/CloudGaming.Code/Monitor/OrderMonitorProcessor.cs @@ -0,0 +1,75 @@ +using CloudGaming.DtoModel.Other; + +using HuanMeng.DotNetCore.QuartzExtend; + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace CloudGaming.Code.Monitor +{ + /// + /// 订单数据统计 + /// + [QuartzTrigger("UserMonitorProcessor", "* 25 4 * * ?")] + //[QuartzTrigger("OrderMonitorProcessor", "0 0/1 * * * ?")] + public class OrderMonitorProcessor : AppJobBase + { + public OrderMonitorProcessor(IServiceScopeFactory scopeFactory) : base(scopeFactory) + { + } + + public override async Task AppConfigProcessLoop(AppConfig appConfig, AppMonitorInfo appMonitorInfo, IServiceProvider serviceProvider, CloudGamingBase cloudGamingBase) + { + var dao = cloudGamingBase.Dao; + var now = DateTime.Now.AddDays(-1); + int day = int.Parse(now.ToString("yyyyMMdd")); + var nowDay = DateOnly.FromDateTime(now); + //意向订单次数 + var intendedOrder = await dao.DaoUser.Context.T_User_IntentOrder.Where(it => it.CreatedDay == day).GroupBy(it => it.Channel).ToDictionaryAsync(it => it.Key ?? "", it => it.Count()); + + //支付订单次数 + var paidOrders = await dao.DaoUser.Context.T_User_Order.Where(it => it.PaymentDay == nowDay).GroupBy(it => it.Channel).ToDictionaryAsync(it => it.Key ?? "", it => it.Count()); + + //支付金额 + var paidOrdersPrice = await dao.DaoUser.Context.T_User_Order.Where(it => it.PaymentDay == nowDay).GroupBy(it => it.Channel).ToDictionaryAsync(it => it.Key ?? "", it => it.Sum(it => it.TotalPrice)); + //数据源 + var orderStatistics = await dao.DaoExt.Context.T_Statistics_Order + .Where(it => it.LoginDay == day) + .ToDictionaryAsync(it => it.Channel ?? ""); + + // 更新或创建统计记录 + void UpdateStatistics(string channel, int intendedOrderCount, int paidOrders, decimal rechargeAmount) + { + if (!orderStatistics.TryGetValue(channel, out var statisticsUser)) + { + statisticsUser = new T_Statistics_Order() + { + RechargeAmount = 0, + Channel = channel, + CreatedAt = DateTime.Now, + IntendedOrderCount = 0, + PaidOrders = 0, + LoginDate = nowDay, + LoginDay = day, + UpdatedAt = DateTime.Now, + }; + dao.DaoExt.Context.T_Statistics_Order.Add(statisticsUser); + orderStatistics.Add(channel, statisticsUser); + } + statisticsUser.RechargeAmount = rechargeAmount; + statisticsUser.IntendedOrderCount = intendedOrderCount; + statisticsUser.PaidOrders = paidOrders; + statisticsUser.UpdatedAt = DateTime.Now; + } + foreach (var item in intendedOrder) + { + UpdateStatistics(item.Key, item.Value, paidOrders.GetValueOrDefault(item.Key, 0), paidOrdersPrice.GetValueOrDefault(item.Key, 0)); + } + + await dao.DaoExt.Context.SaveChangesAsync(); + } + } +} diff --git a/src/CloudGaming/Code/CloudGaming.Code/Monitor/UserMonitorProcessor.cs b/src/CloudGaming/Code/CloudGaming.Code/Monitor/UserMonitorProcessor.cs index 291511b..a1989f2 100644 --- a/src/CloudGaming/Code/CloudGaming.Code/Monitor/UserMonitorProcessor.cs +++ b/src/CloudGaming/Code/CloudGaming.Code/Monitor/UserMonitorProcessor.cs @@ -12,7 +12,7 @@ using System.Threading.Tasks; namespace CloudGaming.Code.Monitor; /// -/// 用户定时类 +/// 用户定时类 /// [QuartzTrigger("UserMonitorProcessor", "* 15 4 * * ?")] public class UserMonitorProcessor : AppJobBase @@ -28,92 +28,57 @@ public class UserMonitorProcessor : AppJobBase int day = int.Parse(now.ToString("yyyyMMdd")); var nowDay = DateOnly.FromDateTime(now); - //今日登录人数 - var todayLoggedInUsers = await cloudGamingBase.Dao.DaoExt.Context.T_User_LoginDay_Log.Where(it => it.CreateTimeDay == day) + // 获取所有用户数据 + var userLoginData = cloudGamingBase.Dao.DaoExt.Context.T_User_LoginDay_Log + .Where(it => it.CreateTimeDay == day).AsQueryable(); + //登录数据 + var todayLoggedInUsers = await userLoginData.GroupBy(it => it.Channel ?? "") + .ToDictionaryAsync(g => g.Key, g => g.Count()); + //注册数据 + var todayRegisteredUsers = await userLoginData.Where(it => it.IsNew) .GroupBy(it => it.Channel ?? "") - .ToDictionaryAsync(it => it.Key, it => it.Count()); - //今日注册人数 - var todayRegisteredUsers = await cloudGamingBase.Dao.DaoExt.Context.T_User_LoginDay_Log.Where(it => it.CreateTimeDay == day && it.IsNew) + .ToDictionaryAsync(g => g.Key, g => g.Count()); + //活跃数据 + var todayActionUsers = await userLoginData.Where(it => it.LogInDay > 1) .GroupBy(it => it.Channel ?? "") - .ToDictionaryAsync(it => it.Key, it => it.Count()); - //今日活跃人数 - var todayActionUsers = await cloudGamingBase.Dao.DaoExt.Context.T_User_LoginDay_Log.Where(it => it.CreateTimeDay == day && it.LogInDay > 1) - .GroupBy(it => it.Channel ?? "") - .ToDictionaryAsync(it => it.Key, it => it.Count()); - //数据库中的数据 - var userStatistics = await dao.DaoExt.Context.T_Statistics_User.Where(it => it.LoginDay == day).ToDictionaryAsync(it => it.Channel ?? "");//.ToListAsync(); - //登录 - if (todayLoggedInUsers != null) + .ToDictionaryAsync(g => g.Key, g => g.Count()); + + // 获取当前统计数据 + var userStatistics = await dao.DaoExt.Context.T_Statistics_User + .Where(it => it.LoginDay == day) + .ToDictionaryAsync(it => it.Channel ?? ""); + + // 更新或创建统计记录 + void UpdateStatistics(string channel, int loginCount, int registrCount, int activeCount) { - foreach (var item in todayLoggedInUsers) + if (!userStatistics.TryGetValue(channel, out var statisticsUser)) { - if (!userStatistics.TryGetValue(item.Key, out var statisticsUser)) + statisticsUser = new T_Statistics_User() { - statisticsUser = new T_Statistics_User() - { - ActiveCount = 0, - Channel = item.Key, - CreatedAt = DateTime.Now, - LoginCount = 0, - RegistrCount = 0, - LoginDate = nowDay, - LoginDay = day, - UpdatedAt = DateTime.Now, - }; - await dao.DaoExt.Context.T_Statistics_User.AddAsync(statisticsUser); - userStatistics.Add(item.Key, statisticsUser); - } - statisticsUser.LoginDay = item.Value; + ActiveCount = 0, + Channel = channel, + CreatedAt = DateTime.Now, + LoginCount = 0, + RegistrCount = 0, + LoginDate = nowDay, + LoginDay = day, + UpdatedAt = DateTime.Now, + }; + dao.DaoExt.Context.T_Statistics_User.Add(statisticsUser); + userStatistics.Add(channel, statisticsUser); } + statisticsUser.LoginCount = loginCount; + statisticsUser.RegistrCount = registrCount; + statisticsUser.ActiveCount = activeCount; + statisticsUser.UpdatedAt = DateTime.Now; } - //注册 - if (todayRegisteredUsers != null) + + foreach (var item in todayLoggedInUsers) { - foreach (var item in todayRegisteredUsers) - { - if (!userStatistics.TryGetValue(item.Key, out var statisticsUser)) - { - statisticsUser = new T_Statistics_User() - { - ActiveCount = 0, - Channel = item.Key, - CreatedAt = DateTime.Now, - LoginCount = 0, - RegistrCount = 0, - LoginDate = nowDay, - LoginDay = day, - UpdatedAt = DateTime.Now, - }; - await dao.DaoExt.Context.T_Statistics_User.AddAsync(statisticsUser); - userStatistics.Add(item.Key, statisticsUser); - } - statisticsUser.RegistrCount = item.Value; - } - } - //活跃 - if (todayActionUsers != null) - { - foreach (var item in todayActionUsers) - { - if (!userStatistics.TryGetValue(item.Key, out var statisticsUser)) - { - statisticsUser = new T_Statistics_User() - { - ActiveCount = 0, - Channel = item.Key, - CreatedAt = DateTime.Now, - LoginCount = 0, - RegistrCount = 0, - LoginDate = nowDay, - LoginDay = day, - UpdatedAt = DateTime.Now, - }; - await dao.DaoExt.Context.T_Statistics_User.AddAsync(statisticsUser); - userStatistics.Add(item.Key, statisticsUser); - } - statisticsUser.ActiveCount = item.Value; - } + UpdateStatistics(item.Key, item.Value, todayRegisteredUsers.GetValueOrDefault(item.Key, 0), todayActionUsers.GetValueOrDefault(item.Key, 0)); } + await dao.DaoExt.Context.SaveChangesAsync(); } + } diff --git a/src/CloudGaming/Code/CloudGaming.Code/Payment/OrderExtend.cs b/src/CloudGaming/Code/CloudGaming.Code/Payment/OrderExtend.cs index fa6f545..9a48dba 100644 --- a/src/CloudGaming/Code/CloudGaming.Code/Payment/OrderExtend.cs +++ b/src/CloudGaming/Code/CloudGaming.Code/Payment/OrderExtend.cs @@ -29,7 +29,7 @@ public static class OrderExtend /// /// /// - public static async Task OrderRewardsNoWorkAsync(this T_Products product, T_User user, string pay, string orderId, decimal price, DateTime intentDate, DAO dao, T_User_OrderItems orderItems = null) + public static async Task OrderRewardsNoWorkAsync(this T_Products product, T_User user, string pay, string orderId, decimal price,string channel, DateTime intentDate, DAO dao, T_User_OrderItems orderItems = null) { var userId = user.Id; var chargeMoneyCount = dao.DaoUser.Context.T_User_Order.Count(it => it.UserId == userId && it.ProductId == product.ProductId); @@ -68,6 +68,7 @@ public static class OrderExtend TotalPrice = price, UpdatedAt = DateTime.Now, UserId = userId, + Channel= channel }; if (orderItems == null) { diff --git a/src/CloudGaming/Code/CloudGaming.Code/Payment/PaymentExtend.cs b/src/CloudGaming/Code/CloudGaming.Code/Payment/PaymentExtend.cs index 7602343..88f766d 100644 --- a/src/CloudGaming/Code/CloudGaming.Code/Payment/PaymentExtend.cs +++ b/src/CloudGaming/Code/CloudGaming.Code/Payment/PaymentExtend.cs @@ -164,7 +164,7 @@ public static class PaymentExtend /// /// /// - public static T_User_IntentOrder ToIntentOrder(this ProductCache productCache, string payment, string orderId) + public static T_User_IntentOrder ToIntentOrder(this ProductCache productCache, string payment, string orderId, string channel) { T_User_IntentOrder t_User_IntentOrder = new T_User_IntentOrder() { @@ -178,6 +178,7 @@ public static class PaymentExtend Status = (int)OrderState.已下单, UpdatedAt = DateTime.Now, OrderId = orderId, + Channel = channel }; return t_User_IntentOrder; } diff --git a/src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/PlayGameUserInfo.cs b/src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/PlayGameUserInfo.cs index 7aa01d0..1a555f7 100644 --- a/src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/PlayGameUserInfo.cs +++ b/src/CloudGaming/Model/CloudGaming.DtoModel/PlayGame/PlayGameUserInfo.cs @@ -195,6 +195,8 @@ public class PlayGameUserInfo DiamondListId = DiamondListId, GameStatus = (int)GameStatus, GameUserOperationJson = GameUserOperation == null ? "" : JsonConvert.SerializeObject(GameUserOperation, settings), + Channel = Channel, + CreateDay = int.Parse(CreateDateTime.ToString("yyyyMMdd")) }; return log; } diff --git a/src/CloudGaming/Model/CloudGaming.GameModel/Db/Db_Ext/CloudGamingCBTContext.cs b/src/CloudGaming/Model/CloudGaming.GameModel/Db/Db_Ext/CloudGamingCBTContext.cs index 40aedb5..4b3251c 100644 --- a/src/CloudGaming/Model/CloudGaming.GameModel/Db/Db_Ext/CloudGamingCBTContext.cs +++ b/src/CloudGaming/Model/CloudGaming.GameModel/Db/Db_Ext/CloudGamingCBTContext.cs @@ -239,7 +239,9 @@ public partial class CloudGamingCBTContext : DbContext entity.Property(e => e.LoginDate).HasComment("日期"); entity.Property(e => e.LoginDay).HasComment("天"); entity.Property(e => e.PaidOrders).HasComment("支付订单次数"); - entity.Property(e => e.RechargeAmount).HasComment("支付订单金额"); + entity.Property(e => e.RechargeAmount) + .HasComment("支付订单金额") + .HasColumnType("decimal(18, 0)"); entity.Property(e => e.UpdatedAt) .HasComment("修改时间") .HasColumnType("datetime"); diff --git a/src/CloudGaming/Model/CloudGaming.GameModel/Db/Db_Ext/T_Statistics_Order.cs b/src/CloudGaming/Model/CloudGaming.GameModel/Db/Db_Ext/T_Statistics_Order.cs index e3adf0a..b13e0c3 100644 --- a/src/CloudGaming/Model/CloudGaming.GameModel/Db/Db_Ext/T_Statistics_Order.cs +++ b/src/CloudGaming/Model/CloudGaming.GameModel/Db/Db_Ext/T_Statistics_Order.cs @@ -34,7 +34,7 @@ public partial class T_Statistics_Order /// /// 支付订单金额 /// - public virtual int RechargeAmount { get; set; } + public virtual decimal RechargeAmount { get; set; } /// /// 渠道号 diff --git a/src/CloudGaming/Model/CloudGaming.GameModel/Db/Db_Ext/T_User_LoginDay_Log.cs b/src/CloudGaming/Model/CloudGaming.GameModel/Db/Db_Ext/T_User_LoginDay_Log.cs index 07fea84..6bc9a82 100644 --- a/src/CloudGaming/Model/CloudGaming.GameModel/Db/Db_Ext/T_User_LoginDay_Log.cs +++ b/src/CloudGaming/Model/CloudGaming.GameModel/Db/Db_Ext/T_User_LoginDay_Log.cs @@ -1,4 +1,4 @@ -using System; +using System; namespace CloudGaming.GameModel.Db.Db_Ext; diff --git a/src/CloudGaming/Model/CloudGaming.Model/DbSqlServer/Db_Phone/CloudGamingPhoneContext.cs b/src/CloudGaming/Model/CloudGaming.Model/DbSqlServer/Db_Phone/CloudGamingPhoneContext.cs index 1f03c24..b6d01f7 100644 --- a/src/CloudGaming/Model/CloudGaming.Model/DbSqlServer/Db_Phone/CloudGamingPhoneContext.cs +++ b/src/CloudGaming/Model/CloudGaming.Model/DbSqlServer/Db_Phone/CloudGamingPhoneContext.cs @@ -209,7 +209,7 @@ public partial class CloudGamingPhoneContext : MultiTenantDbContext//DbContext public virtual DbSet T_Videos { get; set; } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) - { // => optionsBuilder.UseSqlServer("Server=192.168.195.6;Database=CloudGamingPhone;User Id=sa;Password=Dbt@com@123;TrustServerCertificate=true;"); + { // => optionsBuilder.UseSqlServer("Server=192.168.195.8;Database=CloudGamingPhone;User Id=sa;Password=Dbt@com@123;TrustServerCertificate=true;"); } protected override void OnModelCreating(ModelBuilder modelBuilder) @@ -683,6 +683,9 @@ public partial class CloudGamingPhoneContext : MultiTenantDbContext//DbContext entity.ToTable(tb => tb.HasComment("用户玩游戏日志表")); entity.Property(e => e.Id).HasComment("主键"); + entity.Property(e => e.Channel) + .HasMaxLength(10) + .HasComment("渠道号"); entity.Property(e => e.Cpu) .HasMaxLength(50) .HasComment("用户cpu"); diff --git a/src/CloudGaming/Model/CloudGaming.Model/DbSqlServer/Db_Phone/T_Game_PlayGameLog.cs b/src/CloudGaming/Model/CloudGaming.Model/DbSqlServer/Db_Phone/T_Game_PlayGameLog.cs index e5d3cc6..636a6f1 100644 --- a/src/CloudGaming/Model/CloudGaming.Model/DbSqlServer/Db_Phone/T_Game_PlayGameLog.cs +++ b/src/CloudGaming/Model/CloudGaming.Model/DbSqlServer/Db_Phone/T_Game_PlayGameLog.cs @@ -148,4 +148,11 @@ public partial class T_Game_PlayGameLog: MultiTenantEntity /// 用户操作内容 /// public virtual string? GameUserOperationJson { get; set; } + + /// + /// 渠道号 + /// + public virtual string? Channel { get; set; } + + public virtual int CreateDay { get; set; } } diff --git a/src/CloudGaming/Model/CloudGaming.Model/DbSqlServer/Db_User/CloudGamingUserContext.cs b/src/CloudGaming/Model/CloudGaming.Model/DbSqlServer/Db_User/CloudGamingUserContext.cs index adcd151..479a84a 100644 --- a/src/CloudGaming/Model/CloudGaming.Model/DbSqlServer/Db_User/CloudGamingUserContext.cs +++ b/src/CloudGaming/Model/CloudGaming.Model/DbSqlServer/Db_User/CloudGamingUserContext.cs @@ -319,6 +319,9 @@ public partial class CloudGamingUserContext : MultiTenantDbContext//DbContext entity.ToTable(tb => tb.HasComment("意向订单表")); entity.Property(e => e.Id).HasComment("主键"); + entity.Property(e => e.Channel) + .HasMaxLength(10) + .HasComment("渠道号"); entity.Property(e => e.CreatedAt) .HasComment("创建时间") .HasColumnType("datetime"); @@ -430,6 +433,9 @@ public partial class CloudGamingUserContext : MultiTenantDbContext//DbContext entity.ToTable(tb => tb.HasComment("订单完成表")); + entity.Property(e => e.Channel) + .HasMaxLength(10) + .HasComment("渠道"); entity.Property(e => e.CreatedAt) .HasComment("创建时间") .HasColumnType("datetime"); diff --git a/src/CloudGaming/Model/CloudGaming.Model/DbSqlServer/Db_User/T_User_IntentOrder.cs b/src/CloudGaming/Model/CloudGaming.Model/DbSqlServer/Db_User/T_User_IntentOrder.cs index 19a5328..b29ae61 100644 --- a/src/CloudGaming/Model/CloudGaming.Model/DbSqlServer/Db_User/T_User_IntentOrder.cs +++ b/src/CloudGaming/Model/CloudGaming.Model/DbSqlServer/Db_User/T_User_IntentOrder.cs @@ -73,4 +73,9 @@ public partial class T_User_IntentOrder: MultiTenantEntity /// 创建天 /// public virtual int CreatedDay { get; set; } + + /// + /// 渠道号 + /// + public virtual string? Channel { get; set; } } diff --git a/src/CloudGaming/Model/CloudGaming.Model/DbSqlServer/Db_User/T_User_Order.cs b/src/CloudGaming/Model/CloudGaming.Model/DbSqlServer/Db_User/T_User_Order.cs index daace75..20daade 100644 --- a/src/CloudGaming/Model/CloudGaming.Model/DbSqlServer/Db_User/T_User_Order.cs +++ b/src/CloudGaming/Model/CloudGaming.Model/DbSqlServer/Db_User/T_User_Order.cs @@ -70,4 +70,9 @@ public partial class T_User_Order: MultiTenantEntity /// 订单创建天 /// public virtual DateOnly PaymentDay { get; set; } + + /// + /// 渠道 + /// + public virtual string? Channel { get; set; } } diff --git a/src/CloudGaming/Model/CloudGaming.Model/DbSqlServer/efcore-gen.md b/src/CloudGaming/Model/CloudGaming.Model/DbSqlServer/efcore-gen.md index ee465f0..b705fd4 100644 --- a/src/CloudGaming/Model/CloudGaming.Model/DbSqlServer/efcore-gen.md +++ b/src/CloudGaming/Model/CloudGaming.Model/DbSqlServer/efcore-gen.md @@ -7,6 +7,6 @@ dotnet ef dbcontext scaffold "Server=192.168.195.8;Database=CloudGamingUser;User --CloudGamingPhone dotnet ef dbcontext scaffold "Server=192.168.1.17;Database=CloudGamingPhone;User Id=sa;Password=Dbt@com@123;TrustServerCertificate=true;" Microsoft.EntityFrameworkCore.SqlServer -o DbSqlServer/Db_Phone/ --use-database-names --no-pluralize --force -dotnet ef dbcontext scaffold "Server=192.168.195.6;Database=CloudGamingPhone;User Id=sa;Password=Dbt@com@123;TrustServerCertificate=true;" Microsoft.EntityFrameworkCore.SqlServer -o DbSqlServer/Db_Phone/ --use-database-names --no-pluralize --force +dotnet ef dbcontext scaffold "Server=192.168.195.8;Database=CloudGamingPhone;User Id=sa;Password=Dbt@com@123;TrustServerCertificate=true;" Microsoft.EntityFrameworkCore.SqlServer -o DbSqlServer/Db_Phone/ --use-database-names --no-pluralize --force ``` \ No newline at end of file