/// <summary> /// 输出用户操作日志 /// </summary> /// <param name="LogType">日志的类型</param> public void WriteLog(OThinker.H3.Tracking.UserLogType LogType) { OThinker.H3.Tracking.UserLog log = new OThinker.H3.Tracking.UserLog( LogType, this.User.UserID, this.SchemaCode, this.BizObjectID, this.InstanceId, this.WorkItemID, this.WorkItem == null ? null : this.WorkItem.DisplayName, null, SheetUtility.GetClientIP(this.Request), SheetUtility.GetClientPlatform(this.Request), SheetUtility.GetClientBrowser(this.Request)); this.Engine.UserLogWriter.Write(log); }
/// <summary> /// 增加当前在线用户数 /// </summary> /// <param name="User"></param> /// <param name="Request"></param> /// <param name="PortalType"></param> public static void OnUserLogin(UserValidator User, HttpRequest Request, Site.PortalType PortalType = Site.PortalType.Portal) { lock (_OnlineUserIdAliasTable) { OThinker.H3.Tracking.UserLog log = new Tracking.UserLog( Tracking.UserLogType.Login, User.UserID, null, null, null, null, null, null, SheetUtility.GetClientIP(Request), SheetUtility.GetClientPlatform(Request), SheetUtility.GetClientBrowser(Request)); if (_OnlineUserIdAliasTable.ContainsKey(User.UserID.ToLower())) { //_OnlineUserIdAliasTable.Remove(User.UserID); //_OnlineUserIdLoginTimeTable.Remove(User.UserID); return; } _OnlineUserIdAliasTable.Add(User.UserID, User.UserCode); _OnlineUserIdLoginTimeTable.Add(User.UserID, DateTime.Now); log.UserCode = User.UserCode; log.SiteType = PortalType; if (OThinker.H3.Controllers.AppConfig.ConnectionMode == OThinker.H3.ConnectionStringParser.ConnectionMode.Mono) { // 私有云模式批量写入 if (!_UserLogTable.ContainsKey(User.UserID.ToLower())) { _UserLogTable.Add(User.UserID.ToLower(), log); } } else { // 公有云模式登录即写入 User.Engine.UserLogWriter.Write(log); } } }
/// <summary> /// 用户登出事件 /// </summary> /// <param name="User"></param> /// <param name="Request"></param> public static void OnUserLogout(UserValidator User, HttpRequest Request) { if (User == null) { return; } // 减少当前用户数 //lock (_UserLogTable) lock (_OnlineUserIdAliasTable) { //if (!_UserLogTable.ContainsKey(User.UserID.ToLower())) //{ // return; //} if (!_OnlineUserIdAliasTable.ContainsKey(User.UserID.ToLower())) { return; } _OnlineUserIdAliasTable.Remove(User.UserID); _OnlineUserIdLoginTimeTable.Remove(User.UserID); OThinker.H3.Tracking.UserLog log = new Tracking.UserLog( Tracking.UserLogType.Logout, User.UserID, null, null, null, null, null, null, SheetUtility.GetClientIP(Request), SheetUtility.GetClientPlatform(Request), SheetUtility.GetClientBrowser(Request)); if (!_UserLogTable.ContainsKey(User.UserID.ToLower())) { _UserLogTable.Add(User.UserID.ToLower(), log); } } }
/// <summary> /// 从服务器读取数据 /// </summary> private void GetDataFromServer() { if (!_GetDataFromServer) { _GetDataFromServer = true; string strWorkItemId = OThinker.Data.Convertor.SqlInjectionPrev(this.Request.QueryString[Param_WorkItemID]); string strInstanceId = OThinker.Data.Convertor.SqlInjectionPrev(this.Request.QueryString[Param_InstanceId]); string strWorkflowCode = OThinker.Data.Convertor.SqlInjectionPrev(this.Request.QueryString[Param_WorkflowCode]); string strSchemaCode = OThinker.Data.Convertor.SqlInjectionPrev(this.Request.QueryString[Param_SchemaCode]); int workflowVersion = WorkflowTemplate.PublishedWorkflowTemplate.NullWorkflowVersion; int.TryParse(this.Request.QueryString[Param_WorkflowVersion], out workflowVersion); string strSheetCode = OThinker.Data.Convertor.SqlInjectionPrev(this.Request.QueryString[OThinker.H3.Controllers.SheetEnviroment.Param_SheetCode] + string.Empty); if (!string.IsNullOrEmpty(strWorkItemId) || !string.IsNullOrEmpty(strInstanceId) || (this.IsOriginateMode && !string.IsNullOrEmpty(strWorkflowCode))) { // 流程模式 this._SheetDataType = SheetDataType.Workflow; } else if (!string.IsNullOrEmpty(strSchemaCode)) { // 开发平台模式 this._SheetDataType = SheetDataType.BizObject; } if (this.SheetDataType == SheetDataType.Workflow) { this.Engine.Interactor.GetDataForWorkflow( (InteractiveType)this.SheetMode, strWorkflowCode, workflowVersion, strInstanceId, strWorkItemId, strSheetCode, this.User.UserID, SheetUtility.GetClientIP(this.Request), SheetUtility.GetClientPlatform(this.Request), SheetUtility.GetClientBrowser(this.Request), out this._Authorized, out this._InstanceContext, out this._WorkItem, out this._CirculateItem, out this._Workflow, out this._Schema, out this._ActivityCode, out this._Sheet, out this._PostUnits, out this._SheetDisplayName, out this._LockValidation, out this._Message); } else { this.Engine.Interactor.GetDataForBizObject( strSchemaCode, strSheetCode, out this._Schema, out this._Sheet); } } }