public override OperationResponse OnHandlerMeesage(OperationRequest request, ClientPeer peer)
        {
            //1.获得客户端发送的帐号和明文密码
            object json;
            request.Parameters.TryGetValue((byte) ParameterCode.UserCheckInfo, out json);
            var user = JsonMapper.ToObject<User>(json.ToString());
            var userDb = _manager.GetUserByUsername(user.Username);
            var s = userDb != null
                ? string.Format("user.Username:{0},user.Password:{1} userDb.Username:{2},userDb.Password:{3}",
                    user.Username, user.Password, userDb.Username, userDb.Password)
                : "未找到用户:" + user.Username;
            peer.WriteLog(s);

            //2.比较,然后创建响应
            var response = new OperationResponse {OperationCode = request.OperationCode};
            if (userDb != null && userDb.Password == MD5Tool.GetMD5(user.Password))
            {
                response.ReturnCode = (short) ReturnCode.Success;
                peer.SetUser(userDb);
            }
            else
            {
                response.ReturnCode = (short) ReturnCode.Fail;
                response.DebugMessage = "用户名或密码错误!";
            }

            return response;
        }
        public override OperationResponse OnHandlerMeesage(OperationRequest request, ClientPeer peer)
        {
            var subCode = ParameterTool.GetParameter<SubCode>(request.Parameters, ParameterCode.SubCode, false);
            peer.WriteLog("Handling Request OperationCode:Role SubCode:" + subCode);
            var parameters = new Dictionary<byte, object>
            {
                {(byte) ParameterCode.SubCode, subCode}
            };
            var response = new OperationResponse
            {
                OperationCode = request.OperationCode,
                ReturnCode = (short) ReturnCode.Success
            };
            peer.WriteLog(subCode.ToString());
            switch (subCode)
            {
                case SubCode.GetRole:
                    //1.返回当前用户的角色列表
                    var roles = _manager.GetRoles(peer.User);
                    foreach (var role1 in roles)
                    {
                        role1.User = null;
                    }
                    var json = JsonMapper.ToJson(roles);
                    parameters.Add((byte) ParameterCode.RoleList, json);
                    break;
                case SubCode.AddRole:
                    //2.为当前用户添加一个角色
                    var role = ParameterTool.GetParameter<Role>(request.Parameters, ParameterCode.Role);
                    if (_manager.ContainRole(role.Name))
                    {
                        response.ReturnCode = (short) ReturnCode.Fail;
                        response.DebugMessage = "昵称已被占用";
                    }
                    else
                    {
                        role.User = peer.User;
                        response.ReturnCode = (short) (_manager.AddRole(role) ? ReturnCode.Success : ReturnCode.Fail);
                        role.User = null;
                        json = JsonMapper.ToJson(role);
                        parameters.Add((byte) ParameterCode.Role, json);
                    }
                    break;
                case SubCode.SelectRole:
                    //3.设定登录的角色
                    role = ParameterTool.GetParameter<Role>(request.Parameters, ParameterCode.Role);
                    peer.SetLoginRole(role);
                    ParameterTool.AddParameter(parameters, ParameterCode.Role, role);
                    role.User = peer.User;
                    break;
                case SubCode.UpdateRole:
                    //更新当前角色信息
                    role = ParameterTool.GetParameter<Role>(request.Parameters, ParameterCode.Role);
                    role.User = peer.User;
                    _manager.UpdateRole(role);
                    role.User = null;
                    ParameterTool.AddParameter(parameters, ParameterCode.Role, role);
                    break;
                default:
                    throw new ArgumentOutOfRangeException();
            }

            response.Parameters = parameters;
            return response;
        }