예제 #1
0
        private void SaveVisitorAsync(Session session, Visitor visitor)
        {
            var sessionDao = new SessionDao();

            sessionDao.GetAndSave(session.Id, () =>
            {
                //维护访问者数据
                var visitorDao = new VisitorDao();
                visitorDao.GetAndSave(visitor.Id, () =>
                {
                    //插入访问者
                    visitor.VisitCount = 1;
                    visitorDao.MongoHelper.InsertOne(visitor);
                    session.IsNewUser = true;
                    //执行插入会话数据
                    sessionDao.MongoHelper.InsertOne(session);
                }, v =>
                {
                    //修改访问者数据
                    v.VisitPreviousTime = v.VisitLastTime;
                    v.VisitLastTime     = visitor.VisitLastTime;
                    v.UpdateTime        = DateTime.Now;
                    v.VisitCount++;
                    visitorDao.MongoHelper.ReplaceOne(v);
                    session.IsNewUser = false;
                    //执行插入会话数据
                    sessionDao.MongoHelper.InsertOne(session);
                });
            }, s =>
            {
                //执行修改,第一次登录状态时将本次会话修改为已登录
                if (s.UserId == -1 && session.UserId != -1)
                {
                    s.UserId     = session.UserId;
                    s.ClientInfo = session.ClientInfo;
                    s.UpdateTime = session.UpdateTime;
                    sessionDao.MongoHelper.ReplaceOne(session);
                }
            });
        }