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); } }); }