Esempio n. 1
0
        /// <summary>
        /// 异步写日志 主要用于后台程序记录 1添加 2编辑 3修改 4常规日志
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="tableName">日志表名 方法内会自动统一转小写</param>
        /// <param name="logContent">日志内容</param>
        /// <param name="kIDValue">主键字段对应的值 如 KID 的值</param>
        /// <param name="reqParams">请求的对象 仅用于日志展示</param>
        /// <param name="opertionUser">操作用户</param>
        /// <param name="operLogType">枚举操作类型</param>
        /// <param name="keyFields">主键字段名 默认KID</param>
        public static void WriteDbLog <T>(string tableName, string logContent, object kIDValue, T reqParams, OpertionUser opertionUser, OperLogType operLogType = OperLogType.常规日志, string keyFields = "KID")
        {
            ThreadPool.QueueUserWorkItem(state =>
            {
                if (IsWriteOpertionLog)
                {
                    #region 得到原始数据 日志表前一条记录

                    var oldlog = GetObjectLastState(tableName, kIDValue, keyFields);

                    var newlog = "";

                    using (CommonRepository db = new CommonRepository(tableName, keyFields))
                    {
                        var dr = db.GetRow($"{keyFields}='{kIDValue.ToString()}'");
                        newlog = dr.Table.ToJsonString();
                    }

                    #endregion

                    var dic = new Dictionary <string, object>();
                    dic.Add(nameof(Fd_sys_operationlog.TableName), tableName.ToLower().Trim());
                    dic.Add(nameof(Fd_sys_operationlog.TablePriKeyField), keyFields);
                    dic.Add(nameof(Fd_sys_operationlog.TablePriKeyValue), kIDValue);
                    dic.Add(nameof(Fd_sys_operationlog.CreateTime), DateTime.Now.ToStr());
                    dic.Add(nameof(Fd_sys_operationlog.LogContent), logContent);
                    dic.Add(nameof(Fd_sys_operationlog.CreateUserId), opertionUser.IsNull() ? "1" : opertionUser.UserId);
                    dic.Add(nameof(Fd_sys_operationlog.CreateUserName), opertionUser.IsNull() ? "系统用户" : opertionUser.UserName);
                    dic.Add(nameof(Fd_sys_operationlog.IpAddr), (opertionUser.IsNull() ? IPHelper.GetClientIP() : opertionUser.UserClientIp));
                    dic.Add(nameof(Fd_sys_operationlog.OperType), operLogType.GetHashCode());
                    dic.Add(nameof(Fd_sys_operationlog.ReqData), reqParams.IsNull() ? "" : reqParams.ToJsonString());
                    dic.Add(nameof(Fd_sys_operationlog.ResOldData), oldlog);
                    dic.Add(nameof(Fd_sys_operationlog.ResResult), newlog);

                    Add(dic);
                }
            }, null);
        }
Esempio n. 2
0
        /// <summary>
        /// 异步写日志 主要用于后台程序记录 1添加 2编辑 3修改 4常规日志
        /// </summary>
        /// <param name="tableName">日志表名 方法内会自动统一转小写</param>
        /// <param name="logContent">日志内容</param>
        /// <param name="kIDValue">主键字段对应的值 如 KID 的值</param>
        /// <param name="reqParams">请求的字典数据,仅用于日志展示</param>
        /// <param name="operLogType">操作类型</param>
        /// <param name="keyFields">主键字段名 默认KID</param>
        public static void WriteDbLog(string tableName, string logContent, object kIDValue, Dictionary <string, object> reqParams, OperLogType operLogType = OperLogType.常规日志, OpertionUser opertionUser = null, string keyFields = "KID")
        {
            ThreadPool.QueueUserWorkItem(state =>
            {
                if (IsWriteOpertionLog)
                {
                    #region 得到原始数据 日志表前一条记录

                    var oldlog = GetObjectLastState(tableName, kIDValue, keyFields);

                    var newlog = "";

                    using (CommonRepository db = new CommonRepository(tableName, keyFields))
                    {
                        var dr = db.GetRow($"{keyFields}='{kIDValue.ToString()}'");
                        newlog = dr.Table.ToDictionary().ToJsonString();
                    }

                    #endregion

                    #region 处理修改者信息
                    object updateUserId = "1", updateUserName = "******", clientIpAddr = IPHelper.GetClientIP();
                    if (opertionUser != null)
                    {
                        updateUserId   = opertionUser?.UserId;
                        updateUserName = opertionUser?.UserName;
                        clientIpAddr   = opertionUser?.UserClientIp;
                    }
                    else
                    {
                        if (reqParams != null)
                        {
                            if (reqParams.ContainsKey("UpdateUserId"))
                            {
                                updateUserId = reqParams["UpdateUserId"];
                            }

                            if (reqParams.ContainsKey("UpdateUserName"))
                            {
                                updateUserName = reqParams["UpdateUserName"];
                            }

                            if (reqParams.ContainsKey("ClientIpAddr"))
                            {
                                clientIpAddr = reqParams["ClientIpAddr"];
                            }
                        }
                    }
                    #endregion

                    var dic = new Dictionary <string, object>();
                    dic.Add(nameof(Fd_sys_operationlog.TableName), tableName.ToLower().Trim());
                    dic.Add(nameof(Fd_sys_operationlog.TablePriKeyField), keyFields);
                    dic.Add(nameof(Fd_sys_operationlog.TablePriKeyValue), kIDValue);
                    dic.Add(nameof(Fd_sys_operationlog.CreateTime), DateTime.Now.ToStr());
                    dic.Add(nameof(Fd_sys_operationlog.LogContent), logContent);
                    dic.Add(nameof(Fd_sys_operationlog.CreateUserId), updateUserId);
                    dic.Add(nameof(Fd_sys_operationlog.CreateUserName), updateUserName);
                    dic.Add(nameof(Fd_sys_operationlog.IpAddr), clientIpAddr);
                    dic.Add(nameof(Fd_sys_operationlog.OperType), operLogType.GetHashCode());
                    dic.Add(nameof(Fd_sys_operationlog.ReqData), reqParams.IsNull() ? "" : reqParams.ToJsonString());
                    dic.Add(nameof(Fd_sys_operationlog.ResOldData), oldlog);
                    dic.Add(nameof(Fd_sys_operationlog.ResResult), newlog);

                    Add(dic);
                }
            }, null);
        }