/// <summary> /// 用户下线 /// </summary> /// <param name="evnt"></param> public void Handle(UserOfflineEvent evnt) { Log.Instance.Info(string.Format("【事件{2}】用户下线[开始]\r\n:用户:{0},站点:{1}", evnt.UserID, evnt.WebID, evnt.ID)); IUserOnlineRepository useronlineRepository = ServiceLocator.Instance.GetService <IUserOnlineRepository>(); UserOnline entity = useronlineRepository.Get(Specification <UserOnline> .Eval(uo => uo.user.ID == evnt.UserID).And(Specification <UserOnline> .Eval(uo => uo.web.ID == evnt.WebID))); if (entity == null) { Log.Instance.Error(string.Format("【事件{0}】异常描述:用户没有在线状态,但是用户离线", evnt.ID)); } else { entity.IsOnline = false; entity.OnlineTime = DateTime.Now; useronlineRepository.Update(entity); Log.Instance.Info(string.Format("【事件{0}】更新用户在线状态为False", evnt.ID)); } try { useronlineRepository.Context.Commit(); } catch (Exception ex) { Log.Instance.Error(string.Format("【事件{0}】", evnt.ID), ex); } Log.Instance.Info(string.Format("【事件{2}】用户下线[结束]\r\n:用户:{0},站点:{1}", evnt.UserID, evnt.WebID, evnt.ID)); }
/// <summary>创建在线</summary> /// <param name="sessionid"></param> /// <returns></returns> protected virtual IOnline CreateOnline(String sessionid) { var ns = Session as NetSession; var sid = ns.Remote.EndPoint + ""; var olt = UserOnline.GetOrAdd(sid); olt.ExternalUri = ns.Remote + ""; if (Current is User user) { //olt.DeviceId = user.ID; //olt.ProductId = user.ProductId; olt.Name = user.Name; olt.Version = user.Version; //olt.CompileTime = user.CompileTime; //olt.Memory = user.Memory; //olt.MACs = user.MACs; //olt.COMs = user.COMs; olt.CreateIP = ns.Remote.Address + ""; } olt.SaveAsync(); return(olt); }
/// <summary> /// 更新用户的权限 /// </summary> /// <param name="evnt"></param> public void Handle(UserUpdatePermissionEvent evnt) { Log.Instance.Info(string.Format("【事件{2}】更新用户站点权限[开始]\r\n用户:{0},站点:{1}", evnt.UserID, evnt.WebID, evnt.ID)); IUserOnlineRepository useronlineRepository = ServiceLocator.Instance.GetService <IUserOnlineRepository>(); UserOnline entity = useronlineRepository.Get(Specification <UserOnline> .Eval(uo => uo.user.ID == evnt.UserID).And(Specification <UserOnline> .Eval(uo => uo.web.ID == evnt.WebID)).And(Specification <UserOnline> .Eval(uo => uo.IsOnline == true))); if (entity == null) { //当前用户未在此站点在线 Log.Instance.Info(string.Format("【事件{0}】当前用户未在此站点在线,更新失败", evnt.ID)); return; } var channel = ChannelManager.Instance.Get(evnt.WebID); if (channel == null) { //当前用户在此站点信息管道丢失 Log.Instance.Info(string.Format("【事件{0}】当前用户在此站点信息管道丢失,更新失败", evnt.ID)); return; } IPluginService pluginServiceImpl = ServiceLocator.Instance.GetService <IPluginService>(); channel.SavePermission(pluginServiceImpl.GetPermissionByUserID(evnt.UserID, evnt.WebID), evnt.UserID); Log.Instance.Info(string.Format("【事件{2}】更新用户站点权限[结束]\r\n用户:{0},站点:{1}", evnt.UserID, evnt.WebID, evnt.ID)); }
void CheckExpire(Object state) { var timeout = Setting.Current.SessionTimeout; //if (Svr != null) Svr.ClearExpire(timeout); DeviceOnline.ClearExpire(timeout); UserOnline.ClearExpire(timeout); }
void OnPost(Object sender, EventArgs e) { if (!WebOnline && !WebBehavior && !WebStatistics) { return; } var ctx = HttpContext.Current; if (ctx == null) { return; } var req = ctx.Request; if (req == null) { return; } var user = ctx.User?.Identity as IManageUser ?? ManageProvider.User as IManageUser; var sid = ctx.Session?.SessionID; var ip = WebHelper.UserHost; var page = GetPage(req); var title = GetTitle(ctx, req); var msg = GetMessage(ctx, req, title); TaskEx.Run(() => { try { // 统计网页状态 if (WebOnline && !sid.IsNullOrEmpty()) { UserOnline.SetWebStatus(sid, page, msg, user, ip); } // 记录用户访问的Url if (WebBehavior) { SaveBehavior(user, ip, page, msg); } // 每个页面的访问统计 if (WebStatistics) { SaveStatistics(ctx, user, ip, page, title); } } catch (Exception ex) { XTrace.WriteException(ex); } }); }
public ActionResult Edit(Product products) {//add UserOnline.online(); StaticUserObj.Add(new UserStatistics { UserId = Guid.Parse(User.Identity.GetUserId()), URL = string.Format(Url.Content("~/Sklad/Index")), Message = "Изменен товар " + products.Name + " с ценой " + " и количеством " + products.Count, DateOfCompletion = DateTime.Now }); return(RedirectToAction("Index")); }
/// <summary>创建在线</summary> /// <param name="sessionid"></param> /// <returns></returns> protected override IOnline CreateOnline(Int32 sessionid) { var ns = Session as NetSession; var olt = UserOnline.FindBySessionID(sessionid) ?? new UserOnline(); olt.Version = Version; olt.ExternalUri = ns.Remote + ""; return(olt); }
public ActionResult Index() { NotificationObj.TaskSrok(Guid.Parse(User.Identity.GetUserId()), string.Format(Url.Content("~/Task/Calendar"))); UserOnline.online(); using (var db = new ApplicationDbContext()) { ViewBag.UserList = db.Users.ToList(); } return(View(obj.ViewsListObj())); }
private void Publish(UserOnline msg) { foreach (var subscriber in Subscribers) { // tell all everyone else this userMsg is userMsg if (!subscriber.Equals(msg.User)) { subscriber.Tell(new UserOnline(msg.User)); } } }
public ActionResult Delete(int id) { UserOnline.online(); try { return(View(NotificationObj.ViewsObj(id))); } catch (Exception) { return(HttpNotFound()); } }
public ActionResult Add(string user, string name, string Messege, DateTime DateStart, DateTime DateEnd) { UserOnline.online(); obj.Add(new TasksManager() { UserId = Guid.Parse(user), Name = name, Text = Messege, DateStart = DateStart, DateEnd = DateEnd, Status = false }); NotificationObj.Add(new Notification { AspNetUserId = Guid.Parse(User.Identity.GetUserId()), Url = string.Format(Url.Content("~/Task/Calendar")), Status = false, Message = "Вам назначено новое задание!" }); return(RedirectToAction("Index")); }
public ActionResult DeleteFinish(int id) { FinishedProducts = new EFRepository <FinishedProducts>(new ApplicationDbContext()); UserOnline.online(); try { return(View(FinishedProducts.FindById(id))); } catch (Exception) { return(HttpNotFound()); } }
public ActionResult DeleteConfirmed(int id) {//add UserOnline.online(); try { } catch (Exception) { return(HttpNotFound()); } return(RedirectToAction("Index")); }
public void Online() { UserOnline packet = new UserOnline(); packet.TargetID = this.ID; foreach (var pair in Relationship.Where(q => Relation.Get(q.Value).RelationType == Relation.Type.Friend)) { if (ChatUserManager.IsOnline(pair.Key)) { ChatUserManager.LoadUser(pair.Key).Send(packet); } } }
public ActionResult Edit(int?id) { var db = new ApplicationDbContext(); var products = db.Products; UserOnline.online(); try { return(View()); } catch (Exception) { return(HttpNotFound()); } }
static void Test7() { //new UserOnline() //{ // Name = "Test", //}.Save(); var list = UserOnline.FindAll("select * from UserOnline"); var count = UserOnline.FindCount("select * from UserOnline"); Console.WriteLine(list.Count + " " + count); var dataset = UserOnline.Meta.Session.Query("select * from UserOnline"); //var n = UserX.Meta.Count; //Console.WriteLine(n); }
public async Task <JsonResult> Add(Product product) { this.product = new EFRepository <Product>(new ApplicationDbContext()); UserOnline.online(); await sklad.AddProduct(product); var user = Guid.Parse(User.Identity.GetUserId()); NotificationObj.Add(new Notification { AspNetUserId = user, Status = false, Url = string.Format(Url.Content("~/Sklad/Index")), Message = "Добавлен товар на склад " + product.Name }); StaticUserObj.Add(new UserStatistics { UserId = Guid.Parse(User.Identity.GetUserId()), URL = string.Format(Url.Content("~/Sklad/Index")), Message = "Добавлен товар " + product.Name + " с ценой " + " и количеством " + product.Count, DateOfCompletion = DateTime.Now }); return(Json(product, JsonRequestBehavior.AllowGet)); }
internal ResponseJson RefreshTime(User u) { ResponseJson resJson; resJson = new ResponseJson(ResponseStatus.Error, now); try { UserOnline uo; uo = olsEni.UserOnlines.SingleOrDefault(m => m.U_Id == u.U_Id); if (uo == null) { uo = new UserOnline { U_Id = u.U_Id, UO_Name = u.U_Name, UO_IdCardNumber = u.U_IdCardNumber, UO_RefreshTime = now }; olsEni.Entry(uo).State = EntityState.Added; } else { uo.UO_RefreshTime = now; } if (0 == olsEni.SaveChanges()) { resJson.message = ResponseMessage.SaveChangesError; return(resJson); } resJson.status = ResponseStatus.Success; return(resJson); } catch (Exception ex) { resJson.message = ex.Message; resJson.detail = StaticHelper.GetExceptionMessageAndRecord(ex); return(resJson); } }
public ActionResult Index(bool?logOn, bool?logOff, string chatMessage) { if (!User.Identity.IsAuthenticated) { return(Redirect("~/Home")); } UserOnline.online(); var db = new ApplicationDbContext(); var online = from onl in UserOnline.chatModel.Users.ToList() where onl.Name != User.Identity.Name select onl; ViewBag.online = online.ToList(); ViewBag.newUsers = db.Users.ToList(); try { if (!Request.IsAjaxRequest()) { return(View(UserOnline.chatModel)); } else if (logOn != null && (bool)logOn) { return(PartialView("Index", UserOnline.chatModel)); } else if (logOff != null && (bool)logOff) { return(PartialView("Index", UserOnline.chatModel)); } else { return(PartialView("History", UserOnline.chatModel)); } } catch (Exception ex) { Response.StatusCode = 500; return(Content(ex.Message)); } }
protected override void OnActionExecuting(ActionExecutingContext filterContext) { UserOnline = UserOnline.GetUserData(System.Web.HttpContext.Current.Request); var RouteData = System.Web.HttpContext.Current.Request.RequestContext.RouteData; string action = RouteData.GetRequiredString("action").ToLower(); string controller = RouteData.GetRequiredString("controller").ToLower(); string area = (RouteData.DataTokens["area"] != null) ? RouteData.DataTokens["area"].ToString().ToLower() : string.Empty; bool IsAuthenticated = (!string.IsNullOrEmpty(UserOnline.Username) && User != null && User.Identity != null && User.Identity.IsAuthenticated) ? true : false; bool IsLoginPage = (controller.Equals("Main", StringComparison.OrdinalIgnoreCase) && action.Equals("Login", StringComparison.OrdinalIgnoreCase)) ? true : false; bool IsAdmin = (UserOnline.Role != null) ? UserOnline.Role.Equals(Shared.RoleName.Admintstrator, StringComparison.OrdinalIgnoreCase) : false; if (!IsAuthenticated && !IsLoginPage) // Redirect to login page { System.Web.Security.FormsAuthentication.SignOut(); filterContext.Result = RedirectToAction("Login", "Main"); } else if (IsAuthenticated && IsLoginPage) // Redirect to default page if User = IsAuthenticated { if (IsAdmin) { filterContext.Result = RedirectToAction("Coupon", "Report", new { area = "Admin" }); } else { filterContext.Result = RedirectToAction("List", "Customer"); } } else { if (area.Equals("Admin", StringComparison.OrdinalIgnoreCase) && !IsAdmin) { filterContext.Result = RedirectToAction("List", "Customer", new { area = "" }); } else { base.OnActionExecuting(filterContext); } } }
public static MvcHtmlString RenderNavigationBar(this HtmlHelper html) { var urlHelper = new UrlHelper(html.ViewContext.RequestContext); var user = UserOnline.GetUserDataFromCookie(System.Web.HttpContext.Current.Request); StringBuilder sb = new StringBuilder(); sb.Append("<ul class=\"nav navbar-top-links navbar-right\">"); sb.Append("<li class=\"dropdown\">"); sb.Append("<a class=\"dropdown-toggle\" data-toggle=\"dropdown\" href=\"#\">"); sb.Append("<i class=\"icon-user\"></i> " + user.Username + ", " + user.FullName + "<span class=\"text-required\"> " + ConfigurationManager.AppSettings["ApplicationTitle"].ToString() + "</span> <i class=\"fa fa-caret-down\"></i>"); sb.Append("</a>"); sb.Append("<ul class=\"dropdown-menu dropdown-user\">"); sb.Append("<li><a href=\"" + urlHelper.Action("LogOut", "Main", new { area = string.Empty }) + "\"><i class=\"icon-power\"></i> Logout</a></li>"); sb.Append("</ul>"); sb.Append("</li>"); sb.Append("</ul>"); return(new MvcHtmlString(sb.ToString())); }
/// <summary> /// 用户上线 /// </summary> /// <param name="evnt"></param> public void Handle(UserOnlineEvent evnt) { Log.Instance.Info(string.Format("【事件{2}】用户在线[开始]\r\n:用户:{0},站点:{1}", evnt.UserID, evnt.WebID, evnt.ID)); IUserOnlineRepository useronlineRepository = ServiceLocator.Instance.GetService <IUserOnlineRepository>(); UserOnline entity = useronlineRepository.Get(Specification <UserOnline> .Eval(uo => uo.user.ID == evnt.UserID).And(Specification <UserOnline> .Eval(uo => uo.web.ID == evnt.WebID))); if (entity == null) { //当前用户未在此站点在线 useronlineRepository.Add(new UserOnline() { CreateDate = DateTime.Now, Creator = null, IsOnline = true, EditDate = DateTime.Now, OnlineTime = DateTime.Now, Status = Status.Active, user = ServiceLocator.Instance.GetService <IUserRepository>().Get(Specification <User> .Eval(u => u.ID == evnt.UserID)), web = ServiceLocator.Instance.GetService <IWebRepository>().Get(Specification <Web> .Eval(u => u.ID == evnt.WebID)) }); Log.Instance.Info(string.Format("【事件{0}】当前用户第一次在此站点登录,添加在线记录", evnt.ID)); } else { entity.IsOnline = true; entity.OnlineTime = DateTime.Now; useronlineRepository.Update(entity); Log.Instance.Info(string.Format("【事件{0}】更新用户在线状态为True", evnt.ID)); } try { useronlineRepository.Context.Commit(); } catch (Exception ex) { Log.Instance.Error(string.Format("【事件{0}】", evnt.ID), ex); } Log.Instance.Info(string.Format("【事件{2}】用户在线[结束]\r\n:用户:{0},站点:{1}", evnt.UserID, evnt.WebID, evnt.ID)); }
public ActionResult Index() { NotificationObj.TaskNot(Url.Content("~/Task/Index")); NotificationObj.TaskSrok(Guid.Parse(User.Identity.GetUserId()), string.Format(Url.Content("~/Task/Calendar"))); UserOnline.online(); var db = new ApplicationDbContext(); var newProducts = from newprod in db.Products.ToList() //where (DateTime.Now - newprod.Date <= new TimeSpan(7, 0, 0, 0)) select newprod; var events = db.Events.ToList(); var user = Guid.Parse(User.Identity.GetUserId()); ViewBag.newProducts = newProducts.Count(); ViewBag.totalSum = string.Format("{0:N0}", 4); ViewBag.events = events; return(View()); }
/// <summary>输出运行时间</summary> void OnPost(Object sender, EventArgs e) { try { //var set = Setting.Current; // 统计网页状态 if (WebOnline) { UserOnline.SetWebStatus(); } // 记录用户访问的Url if (WebBehavior) { SaveBehavior(); } } catch (Exception ex) { XTrace.WriteException(ex); } }
static void Test5() { var set = XCode.Setting.Current; set.Debug = true; set.ShowSQL = true; Console.WriteLine("1,服务端;2,客户端"); if (Console.ReadKey().KeyChar == '1') { var n = UserOnline.Meta.Count; var svr = new DbServer { Log = XTrace.Log, StatPeriod = 5 }; svr.Start(); } else { DAL.AddConnStr("net", "Server=tcp://admin:[email protected]:3305/Log", null, "network"); var dal = DAL.Create("net"); UserOnline.Meta.ConnName = "net"; var count = UserOnline.Meta.Count; Console.WriteLine("count={0}", count); var entity = new UserOnline { Name = "新生命", OnlineTime = 12345 }; entity.Insert(); Console.WriteLine("id={0}", entity.ID); var entity2 = UserOnline.FindByKey(entity.ID); Console.WriteLine("user={0}", entity2); entity2.Page = Rand.NextString(8); entity2.Update(); entity2.Delete(); for (var i = 0; i < 100; i++) { entity2 = new UserOnline { Name = Rand.NextString(8), Page = Rand.NextString(8) }; entity2.Insert(); Thread.Sleep(5000); } } //var client = new DbClient(); //client.Log = XTrace.Log; //client.EncoderLog = client.Log; //client.StatPeriod = 5; //client.Servers.Add("tcp://127.0.0.1:3305"); //client.Open(); //var db = "Membership"; //var rs = client.LoginAsync(db, "admin", "newlife").Result; //Console.WriteLine((DatabaseType)rs["DbType"].ToInt()); //var ds = client.QueryAsync("Select * from User").Result; //Console.WriteLine(ds); //var count = client.QueryCountAsync("User").Result; //Console.WriteLine("count={0}", count); //var ps = new Dictionary<String, Object> //{ // { "Logins", 3 }, // { "id", 1 } //}; //var es = client.ExecuteAsync("update user set Logins=Logins+@Logins where id=@id", ps).Result; //Console.WriteLine("Execute={0}", es); }
void OnPost(Object sender, EventArgs e) { if (!WebOnline && !WebBehavior && !WebStatistics) { return; } var ctx = HttpContext.Current; if (ctx == null) { return; } var req = ctx.Request; if (req == null) { return; } var user = ctx.User?.Identity as IManageUser ?? ManageProvider.User as IManageUser; var sid = ctx.Session?.SessionID; var ip = GetIP(); var page = GetPage(req); // 过滤后缀 //var ext = Path.GetExtension(page); //if (!ext.IsNullOrEmpty() && ExcludeSuffixes.Contains(ext)) return; if (page.EndsWithIgnoreCase(ExcludeSuffixes)) { return; } var title = GetTitle(ctx, req); var msg = GetMessage(ctx, req, title); ThreadPoolX.QueueUserWorkItem(() => { try { // 统计网页状态 if (WebOnline && !sid.IsNullOrEmpty()) { UserOnline.SetWebStatus(sid, page, msg, user, ip); } // 记录用户访问的Url if (WebBehavior) { SaveBehavior(user, ip, page, msg, GetError(ctx) == null); } // 每个页面的访问统计 if (WebStatistics) { SaveStatistics(ctx, user, ip, page, title); } } catch (Exception ex) { XTrace.WriteException(ex); } }); }
private void Publish(UserOnline msg) { foreach (var subscriber in Subscribers) { // tell all everyone else this userMsg is userMsg if (!subscriber.Equals(msg.User)) subscriber.Tell(new UserOnline(msg.User)); } }
public ActionResult Calendar() { UserOnline.online(); return(View()); }
public ActionResult Edit(TasksManager task) { UserOnline.online(); obj.Edit(task); return(RedirectToAction("Index")); }
public ActionResult Remove(int id) { UserOnline.online(); obj.Remove(id); return(RedirectToAction("Index")); }
public ActionResult Index() { UserOnline.online(); return(View(NotificationObj.ViewsListObj())); }