Exemplo n.º 1
0
        public override void doResponse(OperationRequest operationRequest, SendParameters sendParameters, MyClientPeer peer)
        {
            //获取并查询用户
            Dictionary <byte, object> parameters = operationRequest.Parameters;
            String userName = (String)DictionaryUtils.getValue <byte, object>(parameters, (byte)ParameterCode.UserName);
            String password = (String)DictionaryUtils.getValue <byte, object>(parameters, (byte)ParameterCode.Password);

            Application.logger.Info("===================" + userName + " " + password + "尝试登录===========================");

            //检查登录结果
            int result = UserInfoServices.verify(userName, password);

            if (result == 2)
            {
                Application.logger.Info("===================" + userName + " " + password + "登录失败(账号不存在)===========================");
            }
            else if (result == 1)
            {
                Application.logger.Info("===================" + userName + " " + password + "登录成功===========================");
            }
            else
            {
                Application.logger.Info("===================" + userName + " " + password + "登录失败(密码错误)===========================");
            }

            //封装所有信息
            User   user       = null;
            String userString = null;

            if (result == 1)
            {
                user = UserInfoServices.encapsulateAllUserInfo(userName);

                //存放在loginUser字典中
                if (DictionaryUtils.getValue <String, User>(Application.loginUserDict, userName) != null)
                {
                    Application.loginUserDict.Remove(userName);
                }
                Application.loginUserDict.Add(user.UserName, user);

                //尝试序列化
                userString = UserManager.praseUserToUserString(user);
            }

            //开始封装返回参数
            Dictionary <byte, object> responseParameters = new Dictionary <byte, object>();

            responseParameters.Add((byte)ParameterCode.LoginResult, result);
            responseParameters.Add((byte)ParameterCode.User, userString);

            //将用户名保存到客户端对象之中
            if (user != null)
            {
                peer.userName = user.UserName;
                if (DictionaryUtils.getValue <String, MyClientPeer>(Application.clientPeerDict, user.UserName) != null)
                {
                    Application.clientPeerDict.Remove(userName);
                }
                Application.clientPeerDict.Add(userName, peer);
            }

            //发送响应
            OperationResponse operationResponse = new OperationResponse((byte)this.opCode, responseParameters);

            peer.SendOperationResponse(operationResponse, sendParameters);
        }