Esempio n. 1
0
        /// <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));
        }
Esempio n. 2
0
        /// <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));
        }
Esempio n. 4
0
        void CheckExpire(Object state)
        {
            var timeout = Setting.Current.SessionTimeout;

            //if (Svr != null) Svr.ClearExpire(timeout);
            DeviceOnline.ClearExpire(timeout);
            UserOnline.ClearExpire(timeout);
        }
Esempio n. 5
0
        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"));
        }
Esempio n. 7
0
        /// <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);
        }
Esempio n. 8
0
        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));
         }
     }
 }
Esempio n. 10
0
 public ActionResult Delete(int id)
 {
     UserOnline.online();
     try
     {
         return(View(NotificationObj.ViewsObj(id)));
     }
     catch (Exception)
     {
         return(HttpNotFound());
     }
 }
Esempio n. 11
0
 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"));
 }
Esempio n. 12
0
 public ActionResult DeleteFinish(int id)
 {
     FinishedProducts = new EFRepository <FinishedProducts>(new ApplicationDbContext());
     UserOnline.online();
     try
     {
         return(View(FinishedProducts.FindById(id)));
     }
     catch (Exception)
     {
         return(HttpNotFound());
     }
 }
Esempio n. 13
0
        public ActionResult DeleteConfirmed(int id)
        {//add
            UserOnline.online();
            try
            {
            }
            catch (Exception)
            {
                return(HttpNotFound());
            }


            return(RedirectToAction("Index"));
        }
Esempio n. 14
0
        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);
                }
            }
        }
Esempio n. 15
0
        public ActionResult Edit(int?id)
        {
            var db       = new ApplicationDbContext();
            var products = db.Products;

            UserOnline.online();
            try
            {
                return(View());
            }
            catch (Exception)
            {
                return(HttpNotFound());
            }
        }
Esempio n. 16
0
        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);
        }
Esempio n. 17
0
        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));
        }
Esempio n. 18
0
        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);
            }
        }
Esempio n. 19
0
        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));
            }
        }
Esempio n. 20
0
        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);
                }
            }
        }
Esempio n. 21
0
        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>&nbsp; " + user.Username + ", " + user.FullName + "<span class=\"text-required\"> " + ConfigurationManager.AppSettings["ApplicationTitle"].ToString() + "</span> &nbsp;<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>&nbsp; Logout</a></li>");
            sb.Append("</ul>");
            sb.Append("</li>");
            sb.Append("</ul>");

            return(new MvcHtmlString(sb.ToString()));
        }
Esempio n. 22
0
        /// <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));
        }
Esempio n. 23
0
        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());
        }
Esempio n. 24
0
        /// <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);
            }
        }
Esempio n. 25
0
        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);
        }
Esempio n. 26
0
        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));
     }
 }
Esempio n. 28
0
 public ActionResult Calendar()
 {
     UserOnline.online();
     return(View());
 }
Esempio n. 29
0
 public ActionResult Edit(TasksManager task)
 {
     UserOnline.online();
     obj.Edit(task);
     return(RedirectToAction("Index"));
 }
Esempio n. 30
0
 public ActionResult Remove(int id)
 {
     UserOnline.online();
     obj.Remove(id);
     return(RedirectToAction("Index"));
 }
Esempio n. 31
0
 public ActionResult Index()
 {
     UserOnline.online();
     return(View(NotificationObj.ViewsListObj()));
 }