update achievement after grade changed

I think it's good to only have one method for others to call for updating exp, level and achievement related stuff. Otherwise will be tightly coupled.