Ejemplo n.º 1
0
        // 客户端请求问卷
        public void OnGetQuestionnaire(Session s, IReadableBuffer data, IWriteableBuffer buff, Action end)
        {
            var QuestionnaireName = data.ReadString();

            QRC.Retrieve(QuestionnaireName + s.Usr.ID, (questionnaire) =>
            {
                var isNew = questionnaire == null;

                buff.Write(isNew);

                if (isNew)
                {
                    var q = GetQuestionnaire(QuestionnaireName);

                    var isExists = q != null;

                    buff.Write(isExists);

                    if (isExists)
                    {
                        q.Serialize(buff);
                    }
                }

                end();
            });
        }
Ejemplo n.º 2
0
        void OnSubmitQuestionnaireResult(Session s, IReadableBuffer data)
        {
            var qr = new QuestionnaireResult();

            qr.Info.Usr = s.Usr.ID;

            qr.Info.Id = data.ReadString();
            while (data.Available > 0)
            {
                qr.Info.Answers.Add(data.ReadString());
            }

            qr.ID = qr.Info.Id + qr.Info.Usr;

            QRC.Retrieve(qr.ID, (questionnaire) =>
            {
                if (questionnaire != null)
                {
                    return;
                }

                QRC.AddNew(qr);
            });
        }
Ejemplo n.º 3
0
        // 用户登录请求
        void OnUserLoginMsg(Connection conn, IReadableBuffer data, IWriteableBuffer buff, Action end)
        {
            var uid = data.ReadString();

            var deviceModel = "";

            // 检查版本

            var isNewVersion = false;
            var version      = "";
            var buildNo      = "";
            var platform     = "";

            if (data.Available != 0)
            {
                version  = data.ReadString();
                platform = data.ReadString();
            }

            if (data.Available != 0)
            {
                deviceModel = data.ReadString();
                buildNo     = data.ReadString();
            }

            isNewVersion = (version == SrvVersion) && (buildNo == SrvBuildNo);

            buff.Write(isNewVersion);
            if (!isNewVersion)
            {
                if (platform == "IOS")
                {
                    buff.Write("https://www.apple.com");
                }
                else if (platform == "ANDROID")
                {
                    buff.Write("https://www.google.com");
                }
                else
                {
                    buff.Write("https://www.baidu.com");
                }

                end();
                return;
            }

            UC.Retrieve(uid, (usr) =>
            {
                if (SC[uid] != null)
                {
                    KickOut(uid);
                    end();
                    return;
                }

                var isNew = usr == null;
                if (isNew) // 用户不存在就创建新的
                {
                    usr                  = new User();
                    usr.ID               = uid;
                    usr.Info             = new UserInfo();
                    usr.Info.DeviceModel = deviceModel;
                    UC.AddNew(usr);

                    UserManager.SetDefaultInfo(usr);
                }

                // 创建会话
                var s   = new Session();
                s.Usr   = usr;
                s.Conn  = conn;
                SC[uid] = s;

                // 登录日志
                SrvLogger.Log(new LoginInfo(uid, usr.Info.Name, conn.GetIP(), isNew));

                BeforeUserLogin.SC(s, isNew);

                // 通知登录成功
                buff.Write(true);
                buff.Write(usr.Info);

                // 问卷调查

                var totalCount = usr.Info.WinCount + usr.Info.LoseCount;
                if (totalCount >= 1 && totalCount < 5)
                {
                    buff.Write("1");
                    end();
                    OnUserLogin.SC(s, isNew);
                }
                else if (totalCount >= 5)
                {
                    QRC.Retrieve("1" + s.Usr.ID, (questionnaire) =>
                    {
                        if (questionnaire == null)
                        {
                            buff.Write("1");
                            end();
                            OnUserLogin.SC(s, isNew);
                        }
                        else
                        {
                            buff.Write("2");
                            end();
                            OnUserLogin.SC(s, isNew);
                        }
                    });
                }
                else
                {
                    buff.Write("0");
                    end();
                    OnUserLogin.SC(s, isNew);
                }
            });
        }