/// <summary> /// 获取用户Cookie信息 /// </summary> /// <param name="isService">是否客服</param> /// <returns></returns> public static EyouSoft.Model.OnLineServer.OlServerUserInfo GetOlCookieInfo(bool isService) { EyouSoft.Model.OnLineServer.OlServerUserInfo info = new EyouSoft.Model.OnLineServer.OlServerUserInfo(); HttpCookie cookie = null; if (isService) { cookie = HttpContext.Current.Request.Cookies[EyouSoft.CacheTag.OlServer.OLSSERVICECOOKIENAME]; } else { cookie = HttpContext.Current.Request.Cookies[EyouSoft.CacheTag.OlServer.OLSGUESTCOOKIENAME]; } if (cookie != null) { info = (EyouSoft.Model.OnLineServer.OlServerUserInfo)Newtonsoft.Json.JsonConvert.DeserializeObject(HttpUtility.UrlDecode(cookie.Value), typeof(EyouSoft.Model.OnLineServer.OlServerUserInfo)); } else { info = null; } return(info); }
/// <summary> /// 插入用户信息,返回当前公司游客总数 /// </summary> /// <param name="info">用户信息</param> public virtual int InserUserInfo(EyouSoft.Model.OnLineServer.OlServerUserInfo info) { if (info == null) { return(0); } info.OId = Guid.NewGuid().ToString(); string sql = "insert into OL_ServerUsers (Id,UserId,UserName,OlName,IsService,LoginTime,AcceptId,AcceptName,IsOnline,CompanyId)" + " values (@Id,@UserId,@UserName,@OlName,@IsService,@LoginTime,@AcceptId,@AcceptName,@IsOnline,@CompanyId);" + " select count(*) from OL_ServerUsers where IsService = '0'"; DbCommand cmd = this._db.GetSqlStringCommand(sql); this._db.AddInParameter(cmd, "Id", DbType.AnsiStringFixedLength, info.OId); this._db.AddInParameter(cmd, "UserId", DbType.AnsiStringFixedLength, info.UserId); this._db.AddInParameter(cmd, "UserName", DbType.String, info.UserName); this._db.AddInParameter(cmd, "OlName", DbType.String, info.OlName); this._db.AddInParameter(cmd, "IsService", DbType.String, info.IsService ? "1":"0"); this._db.AddInParameter(cmd, "LoginTime", DbType.DateTime, info.LoginTime); this._db.AddInParameter(cmd, "AcceptId", DbType.AnsiStringFixedLength, info.AcceptId); this._db.AddInParameter(cmd, "AcceptName", DbType.String, info.AcceptName); this._db.AddInParameter(cmd, "IsOnline", DbType.String, info.IsOnline ? "1":"0"); this._db.AddInParameter(cmd, "CompanyId", DbType.AnsiStringFixedLength, info.CompanyId); //this._db.AddInParameter(cmd, "LastSendMessageTime", DbType.DateTime, info.LastSendMessageTime); object obj = DbHelper.GetSingle(cmd, this._db); if (obj == null) { return(0); } else { return(Convert.ToInt32(obj)); } }
/// <summary> /// 获取默认的客服信息(服务人数最少的客服为默认的客服) 返回null时没有在线客服 /// </summary> /// <param name="CompanyId">公司Id</param> /// <returns></returns> public virtual EyouSoft.Model.OnLineServer.OlServerUserInfo GetDefaultServiceInfo(string CompanyId) { EyouSoft.Model.OnLineServer.OlServerUserInfo model = null; System.Text.StringBuilder sbQuery = new StringBuilder(); sbQuery.Append(" SELECT TOP 1 A.Id,A.UserId,A.UserName,A.OlName,A.IsService,A.LoginTime,A.AcceptId,A.AcceptName,A.IsOnline,A.CompanyId,A.LastSendMessageTime FROM OL_ServerUsers "); sbQuery.Append(" AS A INNER JOIN( "); sbQuery.Append(" SELECT Id,"); sbQuery.Append(" (SELECT COUNT(*) AS UserCount FROM OL_ServerUsers AS D WHERE IsService='0' AND IsOnline='1' AND D.AcceptId=C.Id GROUP BY D.AcceptId ) AS UserCount "); sbQuery.Append(" FROM OL_ServerUsers AS C "); sbQuery.Append(" WHERE C.IsService='1' AND C.Isonline='1' and C.CompanyId = @CompanyId )AS B "); sbQuery.Append(" ON A.Id=B.Id "); sbQuery.Append(" ORDER BY B.UserCount,A.Id "); DbCommand cmd = this._db.GetSqlStringCommand(sbQuery.ToString()); this._db.AddInParameter(cmd, "CompanyId", DbType.AnsiStringFixedLength, CompanyId); using (IDataReader rdr = DbHelper.ExecuteReader(cmd, this._db)) { if (rdr.Read()) { #region 基本信息 model = new EyouSoft.Model.OnLineServer.OlServerUserInfo(); model.CompanyId = rdr.GetString(rdr.GetOrdinal("CompanyId")); model.OId = rdr.GetString(rdr.GetOrdinal("Id")); model.UserId = rdr.IsDBNull(rdr.GetOrdinal("UserId")) ? "" : rdr.GetString(rdr.GetOrdinal("UserId")); model.UserName = rdr.IsDBNull(rdr.GetOrdinal("UserName")) ? "" : rdr.GetString(rdr.GetOrdinal("UserName")); model.OlName = rdr.IsDBNull(rdr.GetOrdinal("OlName")) ? "" : rdr.GetString(rdr.GetOrdinal("OlName")); if (!rdr.IsDBNull(rdr.GetOrdinal("IsService"))) { if (rdr.GetString(rdr.GetOrdinal("IsService")) == "1" || rdr.GetString(rdr.GetOrdinal("IsService")).ToLower() == "true") { model.IsService = true; } else { model.IsService = false; } } model.LoginTime = rdr.GetDateTime(rdr.GetOrdinal("LoginTime")); model.AcceptId = rdr.IsDBNull(rdr.GetOrdinal("AcceptId")) ? "" : rdr.GetString(rdr.GetOrdinal("AcceptId")); model.AcceptName = rdr.IsDBNull(rdr.GetOrdinal("AcceptName")) ? "" : rdr.GetString(rdr.GetOrdinal("AcceptName")); model.IsOnline = rdr.GetString(rdr.GetOrdinal("IsOnline")) == "1" ? true :false; if (!rdr.IsDBNull(rdr.GetOrdinal("LastSendMessageTime"))) { model.LastSendMessageTime = rdr.GetDateTime(rdr.GetOrdinal("LastSendMessageTime")); } #endregion } } return(model); }
/// <summary> /// 获取所有客服信息(不区分是否在线) /// </summary> /// <param name="OlId">在线Id</param> /// <returns></returns> public virtual IList <EyouSoft.Model.OnLineServer.OlServerUserInfo> GetServicesInfo(string OlId) { IList <EyouSoft.Model.OnLineServer.OlServerUserInfo> lsService = new List <EyouSoft.Model.OnLineServer.OlServerUserInfo>(); EyouSoft.Model.OnLineServer.OlServerUserInfo model = null; string sql = "select Id,UserId,UserName,OlName,IsService,LoginTime,AcceptId,AcceptName,IsOnline,CompanyId,LastSendMessageTime from OL_ServerUsers where IsService = '1' and CompanyId = (select olsu.CompanyId from OL_ServerUsers as olsu where Id = @Id) "; DbCommand cmd = this._db.GetSqlStringCommand(sql); this._db.AddInParameter(cmd, "Id", DbType.AnsiStringFixedLength, OlId); using (IDataReader rdr = DbHelper.ExecuteReader(cmd, this._db)) { while (rdr.Read()) { #region 基本信息 model = new EyouSoft.Model.OnLineServer.OlServerUserInfo(); model.CompanyId = rdr.GetString(rdr.GetOrdinal("CompanyId")); model.OId = rdr.GetString(rdr.GetOrdinal("Id")); model.UserId = rdr.IsDBNull(rdr.GetOrdinal("UserId")) ? "" : rdr.GetString(rdr.GetOrdinal("UserId")); model.UserName = rdr.IsDBNull(rdr.GetOrdinal("UserName")) ? "" : rdr.GetString(rdr.GetOrdinal("UserName")); model.OlName = rdr.IsDBNull(rdr.GetOrdinal("OlName")) ? "" : rdr.GetString(rdr.GetOrdinal("OlName")); if (!rdr.IsDBNull(rdr.GetOrdinal("IsService"))) { if (rdr.GetString(rdr.GetOrdinal("IsService")) == "1" || rdr.GetString(rdr.GetOrdinal("IsService")).ToLower() == "true") { model.IsService = true; } else { model.IsService = false; } } model.LoginTime = rdr.GetDateTime(rdr.GetOrdinal("LoginTime")); model.AcceptId = rdr.IsDBNull(rdr.GetOrdinal("AcceptId")) ? "" : rdr.GetString(rdr.GetOrdinal("AcceptId")); model.AcceptName = rdr.IsDBNull(rdr.GetOrdinal("AcceptName")) ? "" : rdr.GetString(rdr.GetOrdinal("AcceptName")); model.IsOnline = rdr.GetString(rdr.GetOrdinal("IsOnline")) == "1" ? true : false; model.LastSendMessageTime = rdr.IsDBNull(rdr.GetOrdinal("LastSendMessageTime")) ? DateTime.Now : rdr.GetDateTime(rdr.GetOrdinal("LastSendMessageTime")); #endregion lsService.Add(model); } } #region 取出当前用户自己的信息 model = GetUserInfoByOlId(OlId); if (model != null) { lsService.Add(model); } #endregion return(lsService); }
protected void Page_Load(object sender, EventArgs e) { //清理过了指定停留时间的在线用户的在线状态为不在线(不含客服人员) OlServerUtility.ClearUserOut(); EyouSoft.Model.OnLineServer.OlServerUserInfo olInfo = null; EyouSoft.Model.OnLineServer.OlServerUserInfo olCookieInfo = OlServerUtility.GetOlCookieInfo(this.IsService); EyouSoft.Model.OnLineServer.OlServerConfig configInfo = null; EyouSoft.BLL.OnLineServer.OLServer bll = new EyouSoft.BLL.OnLineServer.OLServer(); olInfo = bll.ServiceLogin(base.SiteUserInfo, true, base.SiteUserInfo.CompanyID); bll = null; //获取在线客服配置信息 configInfo = OlServerUtility.GetOlServerConfig(); string olserverinfo = "var olserverinfos={{uInfo:{0},configInfo:{1},mInfo:{2},lastTime:\"{3}\",CompanyName:\"{4}\"}};"; string userInfoJsonString = JsonConvert.SerializeObject(olInfo); string configInfoJsonString = JsonConvert.SerializeObject(configInfo); EyouSoft.Model.OnLineServer.OlServerMessageInfo MessageInfo = new EyouSoft.Model.OnLineServer.OlServerMessageInfo(); MessageInfo.AcceptId = string.Empty; MessageInfo.AcceptName = string.Empty; MessageInfo.Message = string.Empty; MessageInfo.MessageId = string.Empty; MessageInfo.SendId = string.Empty; MessageInfo.SendName = string.Empty; MessageInfo.SendTime = DateTime.Now; string messageInfoJsonString = JsonConvert.SerializeObject(MessageInfo); //设置cookie this.SetOlCookieInfo(this.IsService, userInfoJsonString); this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "DEFAULTINFOS", string.Format(olserverinfo, userInfoJsonString, configInfoJsonString, messageInfoJsonString, DateTime.Now.ToString(), SiteUserInfo.CompanyName), true); #region 设置企业名称 lbCompanyName1.Text = SiteUserInfo.CompanyName; lbCompanyName.Text = SiteUserInfo.CompanyName; EyouSoft.Model.CompanyStructure.CompanyAttachInfo ImgModel = EyouSoft.BLL.CompanyStructure.CompanyAttachInfo.CreateInstance().GetModel(SiteUserInfo.CompanyID); if (ImgModel != null && ImgModel.CompanyLogo != null && !string.IsNullOrEmpty(ImgModel.CompanyLogo.ImagePath)) { CompanyLogPath = Domain.FileSystem + ImgModel.CompanyLogo.ImagePath; } #endregion }
public void ProcessRequest(HttpContext context) { string saveFileName = HttpUtility.UrlEncode(fileName); context.Response.Clear(); context.Response.Buffer = true; context.Response.Charset = "utf-8"; context.Response.AppendHeader("Content-Disposition", string.Format("attachment;filename={0}", saveFileName)); context.Response.ContentEncoding = System.Text.Encoding.GetEncoding("utf-8"); context.Response.ContentType = "text/plain"; System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.Append("消息记录\r\n\r\n"); sb.Append("=================================================\r\n"); sb.AppendFormat("消息保存时间:{0}\r\n", DateTime.Now); sb.Append("=================================================\r\n\r\n"); string olId = Utils.InputText(context.Request.QueryString["olid"]); bool isService = Utils.GetInt(context.Request.QueryString["service"], 0) == 2009 ? true : false; EyouSoft.Model.OnLineServer.OlServerUserInfo info = OlServerUtility.GetOlCookieInfo(isService); if (info != null && info.OId == olId) { EyouSoft.BLL.OnLineServer.OLServer bll = new EyouSoft.BLL.OnLineServer.OLServer(); IList <EyouSoft.Model.OnLineServer.OlServerMessageInfo> items = bll.GetMessages(olId, null); bll = null; foreach (EyouSoft.Model.OnLineServer.OlServerMessageInfo item in items) { if (item.SendId == olId) { sb.AppendFormat("{0} {1} 对 {2} 说:\r\n{3}\r\n\r\n", item.SendTime, "我", item.AcceptName, item.Message); } else { sb.AppendFormat("{0} {1} 对 {2} 说:\r\n{3}\r\n\r\n", item.SendTime, item.SendName, "我", item.Message); } } items = null; } context.Response.Write(sb.ToString()); context.Response.End(); }
/// <summary> /// 未登录游客进入在线客服 /// </summary> /// <param name="olCookieInfo">进入在线客服的cookie信息</param> /// <param name="CompanyId">公司Id</param> /// <returns></returns> public EyouSoft.Model.OnLineServer.OlServerUserInfo GuestLogin(EyouSoft.Model.OnLineServer.OlServerUserInfo olCookieInfo, string CompanyId) { //默认客户信息 Model.OnLineServer.OlServerUserInfo guestOlInfo = new Model.OnLineServer.OlServerUserInfo() { OId = string.Empty, OlName = string.Empty, UserId = string.Empty, UserName = string.Empty, AcceptId = string.Empty, AcceptName = string.Empty, CompanyId = CompanyId, IsOnline = true, IsService = false, LoginTime = DateTime.Now, LastSendMessageTime = DateTime.Now }; if (olCookieInfo == null) //cookie信息等于null { //写入在线客户信息 guestOlInfo = InsertGuestInfo(null, CompanyId); } else //cookie信息不等于null { //取客户信息 guestOlInfo = dal.GetUserInfoByOlId(olCookieInfo.OId); if (guestOlInfo != null && guestOlInfo.IsOnline) //在线 { guestOlInfo.CompanyId = CompanyId; //更新在线客户信息 dal.UpdateUserInfo(guestOlInfo); } else { //写入在线客户信息 guestOlInfo = InsertGuestInfo(null, CompanyId); } } return(guestOlInfo); }
/// <summary> /// 根据指定的用户编号获取在线用户信息 /// </summary> /// <param name="userId">用户编号</param> /// <param name="isService">是否客服</param> /// <returns></returns> public virtual EyouSoft.Model.OnLineServer.OlServerUserInfo GetUserInfoByUserId(string userId, bool isService) { EyouSoft.Model.OnLineServer.OlServerUserInfo model = null; string sql = "select Id,UserId,UserName,OlName,IsService,LoginTime,AcceptId,AcceptName,IsOnline,CompanyId,LastSendMessageTime from OL_ServerUsers where UserId = @UserId and IsService = @IsService"; DbCommand cmd = this._db.GetSqlStringCommand(sql); this._db.AddInParameter(cmd, "UserId", DbType.AnsiStringFixedLength, userId); this._db.AddInParameter(cmd, "IsService", DbType.AnsiStringFixedLength, isService ? "1" : "0"); using (IDataReader rdr = DbHelper.ExecuteReader(cmd, this._db)) { if (rdr.Read()) { #region 基本信息 model = new EyouSoft.Model.OnLineServer.OlServerUserInfo(); model.CompanyId = rdr.GetString(rdr.GetOrdinal("CompanyId")); model.OId = rdr.GetString(rdr.GetOrdinal("Id")); model.UserId = rdr.IsDBNull(rdr.GetOrdinal("UserId")) ? "" : rdr.GetString(rdr.GetOrdinal("UserId")); model.UserName = rdr.IsDBNull(rdr.GetOrdinal("UserName")) ? "" : rdr.GetString(rdr.GetOrdinal("UserName")); model.OlName = rdr.IsDBNull(rdr.GetOrdinal("OlName")) ? "" : rdr.GetString(rdr.GetOrdinal("OlName")); if (!rdr.IsDBNull(rdr.GetOrdinal("IsService"))) { if (rdr.GetString(rdr.GetOrdinal("IsService")) == "1" || rdr.GetString(rdr.GetOrdinal("IsService")).ToLower() == "true") { model.IsService = true; } else { model.IsService = false; } } model.LoginTime = rdr.GetDateTime(rdr.GetOrdinal("LoginTime")); model.AcceptId = rdr.IsDBNull(rdr.GetOrdinal("AcceptId")) ? "" : rdr.GetString(rdr.GetOrdinal("AcceptId")); model.AcceptName = rdr.IsDBNull(rdr.GetOrdinal("AcceptName")) ? "" : rdr.GetString(rdr.GetOrdinal("AcceptName")); model.IsOnline = rdr.GetString(rdr.GetOrdinal("IsOnline")) == "1" ? true : false; model.LastSendMessageTime = rdr.IsDBNull(rdr.GetOrdinal("LastSendMessageTime")) ? DateTime.Now : rdr.GetDateTime(rdr.GetOrdinal("LastSendMessageTime")); #endregion } } return(model); }
/// <summary> /// 更新用户信息 /// </summary> /// <param name="info">用户信息</param> /// <returns></returns> public virtual bool UpdateUserInfo(EyouSoft.Model.OnLineServer.OlServerUserInfo info) { string sql = "update OL_ServerUsers set UserId = @UserId,UserName = @UserName,OlName = @OlName,IsService = @IsService," + " LoginTime = @LoginTime,AcceptId = @AcceptId,AcceptName = @AcceptName,IsOnline = @IsOnline,CompanyId = @CompanyId " + " where Id = @Id"; DbCommand cmd = this._db.GetSqlStringCommand(sql); this._db.AddInParameter(cmd, "Id", DbType.AnsiStringFixedLength, info.OId); this._db.AddInParameter(cmd, "UserId", DbType.AnsiStringFixedLength, info.UserId); this._db.AddInParameter(cmd, "UserName", DbType.String, info.UserName); this._db.AddInParameter(cmd, "OlName", DbType.String, info.OlName); this._db.AddInParameter(cmd, "IsService", DbType.String, info.IsService ? "1":"0"); this._db.AddInParameter(cmd, "LoginTime", DbType.DateTime, info.LoginTime); this._db.AddInParameter(cmd, "AcceptId", DbType.AnsiStringFixedLength, info.AcceptId); this._db.AddInParameter(cmd, "AcceptName", DbType.String, info.AcceptName); this._db.AddInParameter(cmd, "IsOnline", DbType.String, info.IsOnline ? "1":"0"); this._db.AddInParameter(cmd, "CompanyId", DbType.AnsiStringFixedLength, info.CompanyId); //this._db.AddInParameter(cmd, "LastSendMessageTime", DbType.DateTime, info.LastSendMessageTime); return(DbHelper.ExecuteSql(cmd, this._db) > 0 ? true : false); }
protected void Page_Load(object sender, EventArgs e) { SetCompanyId(); //清理过了指定停留时间的在线用户的在线状态为不在线(不含客服人员) OlServerUtility.ClearUserOut(); EyouSoft.Model.OnLineServer.OlServerUserInfo olInfo = null; EyouSoft.Model.OnLineServer.OlServerUserInfo olCookieInfo = OlServerUtility.GetOlCookieInfo(this.IsService); EyouSoft.Model.OnLineServer.OlServerConfig configInfo = null; EyouSoft.BLL.OnLineServer.OLServer bll = new EyouSoft.BLL.OnLineServer.OLServer(); UserInfo userInfo = null; bool isLogin = EyouSoft.Security.Membership.UserProvider.IsUserLogin(out userInfo); if (!isLogin) { olInfo = bll.GuestLogin(olCookieInfo, _companyid); } else { olInfo = bll.ServiceLogin(userInfo, this.IsService, _companyid); } bll = null; //获取在线客服配置信息 configInfo = OlServerUtility.GetOlServerConfig(); string olserverinfo = "var olserverinfos={{uInfo:{0},configInfo:{1},mInfo:{2},lastTime:\"{3}\",CompanyName:\"{4}\"}};"; string userInfoJsonString = JsonConvert.SerializeObject(olInfo); string configInfoJsonString = JsonConvert.SerializeObject(configInfo); EyouSoft.Model.OnLineServer.OlServerMessageInfo MessageInfo = new EyouSoft.Model.OnLineServer.OlServerMessageInfo(); MessageInfo.AcceptId = string.Empty; MessageInfo.AcceptName = string.Empty; MessageInfo.Message = string.Empty; MessageInfo.MessageId = string.Empty; MessageInfo.SendId = string.Empty; MessageInfo.SendName = string.Empty; MessageInfo.SendTime = DateTime.Now; string messageInfoJsonString = JsonConvert.SerializeObject(MessageInfo); //设置cookie this.SetOlCookieInfo(this.IsService, userInfoJsonString); this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "DEFAULTINFOS", string.Format(olserverinfo, userInfoJsonString, configInfoJsonString, messageInfoJsonString, DateTime.Now.ToString(), _companyinfo.CompanyName), true); #region 设置企业名称 lbCompanyName1.Text = _companyinfo.CompanyName; lbCompanyName.Text = _companyinfo.CompanyName; ltrCompanyName.Text = _companyinfo.CompanyName; EyouSoft.Model.CompanyStructure.CompanyAttachInfo ImgModel = EyouSoft.BLL.CompanyStructure.CompanyAttachInfo.CreateInstance().GetModel(_companyid); if (ImgModel != null && ImgModel.CompanyLogo != null && !string.IsNullOrEmpty(ImgModel.CompanyLogo.ImagePath)) { CompanyLogPath = Domain.FileSystem + ImgModel.CompanyLogo.ImagePath; } ImgModel = null; if (_companyinfo != null) { StringBuilder strCompanyInfo = new StringBuilder(); if (!string.IsNullOrEmpty(_companyinfo.CompanyBrand)) { strCompanyInfo.AppendFormat("<strong>品牌名称:</strong>{0}<br />", _companyinfo.CompanyBrand); } if (_companyinfo.ContactInfo != null && !string.IsNullOrEmpty(_companyinfo.ContactInfo.ContactName)) { strCompanyInfo.AppendFormat("联系人:{0}<br />", _companyinfo.ContactInfo.ContactName); } if (_companyinfo.ContactInfo != null && !string.IsNullOrEmpty(_companyinfo.ContactInfo.Mobile)) { strCompanyInfo.AppendFormat("手机:{0}<br />", _companyinfo.ContactInfo.Mobile); } if (_companyinfo.ContactInfo != null && !string.IsNullOrEmpty(_companyinfo.ContactInfo.Tel)) { strCompanyInfo.AppendFormat("电话:{0}<br />", _companyinfo.ContactInfo.Tel); } if (_companyinfo.ContactInfo != null && !string.IsNullOrEmpty(_companyinfo.ContactInfo.Fax)) { strCompanyInfo.AppendFormat("传真:{0}<br />", _companyinfo.ContactInfo.Fax); } if (!string.IsNullOrEmpty(_companyinfo.CompanyAddress)) { strCompanyInfo.AppendFormat("地址:{0}", _companyinfo.CompanyAddress); } if (strCompanyInfo.Length > 0) { strCompanyInfo.Insert(0, "<li>"); strCompanyInfo.Append("</li>"); } ltrCompanyInfo.Text = strCompanyInfo.ToString(); } #endregion }