update achievement after grade changed

I don't understand your refactor here, why it's better ? Also, after update achievement, you NEED to expire the cache.