#region using System; using System.Data; using CSFrameworkV5.Common; using CSFrameworkV5.Core; using CSFrameworkV5.Core.CodeGenerator; using CSFrameworkV5.Interfaces; using CSFrameworkV5.Models; ///*************************************************************************/ ///* ///* 文件名 :SystemLog.cs ///* 程序说明 : 系统日志业务逻辑 ///* 原创作者 :www.csframework.com ///* ///* Copyright 2006-2021 C/S框架网 www.csframework.com ///* ///**************************************************************************/ #endregion namespace CSFrameworkV5.DataAccess { /// /// 修改历史记录的数据层 /// [DefaultORM_UpdateMode(typeof(sys_LogFields), true)] public class dalEditLogHistory : dalBaseDataDict, IBridge_EditLogHistory { /// /// 构造器 /// /// 当前登录用户 public dalEditLogHistory(Loginer loginer) : base(loginer) { _KeyName = sys_LogFields.__KeyName; //主键字段 _TableName = sys_LogFields.__TableName; //表名 _ModelType = typeof(sys_LogFields); //指定ORM模型 _UpdateSummaryKeyMode = UpdateKeyMode.None; } /// /// 获取跟踪的字段 /// /// 表名 public DataTable GetLogFieldDef(string tableName) { var sql = $"SELECT * FROM sys_LogFields WHERE TableName={_Database.ParamSymboName}TableName AND FlagLog={_Database.ParamSymboName}FlagLog;"; var cmd = _Database.CreateCommand(sql); cmd.AddParam("TableName", tableName); cmd.AddParam("FlagLog", "Y"); return _Database.GetTable(cmd.Command, sys_LogFields.__TableName); } /// /// 获取指定表需要跟踪的字段列表 /// /// 数据表 /// public string[] GetTracedFields(string tableName) { var tracedFields = GetLogFieldDef(tableName); var fields = new string[tracedFields.Rows.Count]; for (var i = 0; i <= tracedFields.Rows.Count - 1; i++) fields[i] = tracedFields.Rows[i]["FieldName"].ToStringEx(); return fields; } [Obsolete] public bool SaveFieldDef(DataTable data) { var ds = new DataSet(); ds.Tables.Add(data); return Update(ds); } public bool SaveLog(DataSet dsLogData) { return base.Update(dsLogData); } /// /// 搜索系统日志数据 /// /// 用户 /// 数据表名 /// 日志日期:由 /// 日志日期:至 /// public DataSet SearchLog(string logUser, string tableName, string keyValue, DateTime dateFrom, DateTime dateTo) { var cmd = _Database.CreateSqlProc("sp_sys_SearchLog"); cmd.AddParam("LogUser", DbType.String, logUser); cmd.AddParam("TableName", DbType.String, tableName); cmd.AddParam("KeyValue", DbType.String, keyValue); cmd.AddParam("LogDateFrom", DbType.String, ConvertEx.ToCharYYYYMMDD(dateFrom)); cmd.AddParam("LogDateTo", DbType.String, ConvertEx.ToCharYYYYMMDD(dateTo)); var ds = _Database.GetDataSet(cmd.Command); ds.Tables[0].TableName = sys_Log.__TableName; ds.Tables[1].TableName = sys_LogDtl.__TableName; return ds; } /// /// 根据表名获取该表的SQL命令生成器 /// /// 表名 /// protected override IGenerateSqlCommand CreateSqlGenerator( DataTable table) { Type ORM = null; if (table.TableName == sys_LogFields.__TableName) ORM = typeof(sys_LogFields); if (table.TableName == sys_Log.__TableName) ORM = typeof(sys_Log); if (table.TableName == sys_LogDtl.__TableName) ORM = typeof(sys_LogDtl); if (ORM == null) throw new Exception(table.TableName + "表没有ORM模型!"); return new GenerateSqlCmdByTableFields(ORM, table, GeneratorFactory); } } }