In British English the comma before "John says" goes inside the quotation marks if there is punctuation in the quoted speech and outside if there isn't:
Bob likes cheese. → ‘Bob’, I said, ‘likes cheese.’
Bob, do you like cheese? → ‘Bob,’ I asked, ‘do you like cheese?’
(Source: University of Oxford Style Guide, p. 16)
In Amercian English the comma always goes inside the quotation:
Bob likes cheese. → “Bob,” I said, “likes cheese.”
(Source: Modern Language Association of America Style Center)
As the MLA explains, in British English the convention is logical, in American English the convention is typographical.