From 17e4c7e3e7b3ef60d9da6de3b2a39a14a53c38a0 Mon Sep 17 00:00:00 2001 From: z8018 <1282578289@qq.com> Date: 星期三, 12 三月 2025 14:11:33 +0800 Subject: [PATCH] 1 --- WIDESEAWCS_Server/WIDESEAWCS_Core/AOP/SqlSugarAop.cs | 53 +++++++++++++++++++++++++++++++++-------------------- 1 files changed, 33 insertions(+), 20 deletions(-) diff --git a/WIDESEAWCS_Server/WIDESEAWCS_Core/AOP/SqlSugarAop.cs b/WIDESEAWCS_Server/WIDESEAWCS_Core/AOP/SqlSugarAop.cs index 5fde8d1..47bf712 100644 --- a/WIDESEAWCS_Server/WIDESEAWCS_Core/AOP/SqlSugarAop.cs +++ b/WIDESEAWCS_Server/WIDESEAWCS_Core/AOP/SqlSugarAop.cs @@ -5,10 +5,13 @@ using System.Reflection; using System.Text; using System.Threading.Tasks; +using WIDESEAWCS_Core.Attributes; using WIDESEAWCS_Core.Const; +using WIDESEAWCS_Core.DB; using WIDESEAWCS_Core.DB.Models; using WIDESEAWCS_Core.Helper; using WIDESEAWCS_Core.HttpContextUser; +using WIDESEAWCS_Core.Seed; using WIDESEAWCS_Core.Tenants; namespace WIDESEAWCS_Core.AOP @@ -26,9 +29,33 @@ { baseEntity.CreateDate = DateTime.Now; } + + PropertyInfo propertyInfo = entityInfo.EntityColumnInfo.PropertyInfo; + SequenceAttribute? sequenceAttirbute = propertyInfo.GetCustomAttribute<SequenceAttribute>(); + if (sequenceAttirbute != null) + { + if (propertyInfo.GetValue(entityInfo.EntityValue)?.ObjToInt() <= 0) + { + SqlSugarClient sugarClient = new SqlSugarClient(new ConnectionConfig + { + ConfigId = MainDb.CurrentDbConnId, + ConnectionString = DBContext.GetMainConnectionDb().Connection, + IsAutoCloseConnection = true, + DbType = DBContext.DbType, + }); + int count = sugarClient.Ado.GetScalar($"SELECT COUNT(*) FROM sys.sequences WHERE name = '{sequenceAttirbute.SequenceName}'").ObjToInt(); + if (count == 0) + { + string sql = $"CREATE SEQUENCE {sequenceAttirbute.SequenceName} AS [int] START WITH {sequenceAttirbute.StartWith} INCREMENT BY {sequenceAttirbute.Increment} MINVALUE {sequenceAttirbute.SeqMinValue} MAXVALUE {sequenceAttirbute.SeqMaxValue} {(sequenceAttirbute.IsCycle ? "CYCLE" : "")} CACHE"; + sugarClient.Ado.ExecuteCommand(sql); + } + int seq = sugarClient.Ado.GetScalar($"SELECT NEXT VALUE FOR {sequenceAttirbute.SequenceName}").ObjToInt(); + propertyInfo.SetValue(entityInfo.EntityValue, seq, null); + } + } } - if (entityInfo.OperationType == DataFilterType.UpdateByObject) + else if (entityInfo.OperationType == DataFilterType.UpdateByObject) { baseEntity.ModifyDate = DateTime.Now; } @@ -72,29 +99,15 @@ break; } } - } - } - private static string GetWholeSql(SugarParameter[] paramArr, string sql) - { - foreach (var param in paramArr) + if (entityInfo.EntityValue is IBaseHistoryEntity baseHistoryEntity) { - sql = sql.Replace(param.ParameterName, $@"'{param.Value.ObjToString()}'"); + if (entityInfo.OperationType == DataFilterType.InsertByObject && entityInfo.PropertyName == nameof(IBaseHistoryEntity.InsertTime)) + { + baseHistoryEntity.InsertTime = DateTime.Now; + } } - - return sql; - } - - private static string GetParas(SugarParameter[] pars) - { - string key = "銆怱QL鍙傛暟銆戯細"; - foreach (var param in pars) - { - key += $"{param.ParameterName}:{param.Value}\n"; - } - - return key; } } } -- Gitblit v1.9.3