/// <summary> /// 获取在线用户列表 /// </summary> /// <param name="userInfo">用户</param> /// <returns>数据表</returns> public DataTable GetOnLineState(UserInfo userInfo) { var parameter = ParameterUtil.CreateWithLog(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessRDIWriteDbWithLock(userInfo, parameter, locker, (dbProvider, getOnLine) => { var manager = new PiUserLogOnManager(dbProvider); // 设置为在线状态 manager.OnLine(userInfo.Id); if (MessageService.LastCheckOnLineState == DateTime.MinValue) { getOnLine = true; } else { TimeSpan timeSpan = DateTime.Now - MessageService.LastCheckOnLineState; if ((timeSpan.Minutes * 60 + timeSpan.Seconds) >= SystemInfo.OnLineCheck) { getOnLine = true; } } if (OnLineStateDT == null || getOnLine) { // 检查用户在线状态(服务器专用) manager.CheckOnLine(); // 获取在线状态列表 OnLineStateDT = manager.GetOnLineStateDT(); OnLineStateDT.TableName = PiUserTable.TableName; MessageService.LastCheckOnLineState = DateTime.Now; } return(getOnLine); }); return(OnLineStateDT); }
/// <summary> /// 用户在线 /// </summary> /// <param name="userInfo">用户</param> /// <param name="onLineState">用户在线状态</param> public void OnLine(UserInfo userInfo, int onLineState = 1) { var parameter = ParameterUtil.CreateWithLog(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessRDIWriteDbWithLock(userInfo, parameter, locker, dbProvider => { var manager = new PiUserLogOnManager(dbProvider, userInfo); manager.OnLine(userInfo.Id, onLineState); }); }
/// <summary> /// 检查在线状态 /// </summary> /// <param name="userInfo">用户</param> /// <param name="onLineState">用户在线状态</param> /// <returns>离线人数</returns> public int CheckOnLine(UserInfo userInfo, int onLineState) { int returnValue = 0; var parameter = ParameterUtil.CreateWithLog(userInfo, MethodBase.GetCurrentMethod()); ServiceUtil.ProcessRDIReadDb(userInfo, parameter, dbProvider => { var manager = new PiUserLogOnManager(dbProvider); // 设置为在线状态 manager.OnLine(userInfo.Id, onLineState); returnValue = manager.CheckOnLine(); }); return(returnValue); }
/// <summary> /// 获取消息状态 /// </summary> /// <param name="userInfo">用户</param> /// <param name="onLineState">用户在线状态</param> /// <param name="lastChekDate">最后检查日期</param> /// <returns>消息状态数组</returns> public string[] MessageChek(UserInfo userInfo, int onLineState, string lastChekDate) { string[] returnValue = null; var parameter = ParameterUtil.CreateWithMessage(userInfo, MethodBase.GetCurrentMethod(), this.serviceName, RDIFrameworkMessage.MessageService_MessageChek); ServiceUtil.ProcessRDIReadDb(userInfo, parameter, dbProvider => { // 设置为在线状态 var manager = new PiUserLogOnManager(dbProvider, userInfo); manager.OnLine(userInfo.Id, onLineState); // 读取信息状态 var messageManager = new CiMessageManager(dbProvider, userInfo); returnValue = messageManager.MessageChek(); }); return(returnValue); }