It still sounds like it's likely the gas cap, the cap may have been put on good and tight but the gasket in it may be bad. It would be very helpful to know what code the light is showing. The mechanic should have told you what code it was. Find out what code it is and then put it in google for likely causes.
You're absolutely right, $145 is OUTRAGEOUS for the 30 second job of finding out what code it is and resetting the light. Even by dealer standards that's at least $45 more than it should have been. That being said, you've got two other options, find a shop that will check codes and diagnose for free, it used to be that just about everyone but the dealer did that for free but it's getting a little tougher now. Pepboys will tell you what code it caused for free. They'll try to up sell a diagnostic service, just tell them you want to know what code it is.
Your other option is to purchase an OBDII scanner, they're about $70 for a decent one at any autoparts store. (there's a huge range though, from about $20 - a couple thousand for what they use at dealers.) If you buy your own you can have the luxury of not having to take it in and being able to clear the code (turn off the light) at home. Don't be afraid of this option, you don't even have to open the hood. It's literally easier than pumping your own gas.
Just a quick note about mileage, gauging mileage based on miles/tank isn't a good way to do it. Several factors, like not filling the tank all the way and not filling up at the exact same point when you're "empty" can drastically change your results. It's much better to actually calculate it out, use the trip odometer when you fill up, be sure to fill up all the way, and then whenever you feel like getting more gas just do miles/gallons. Good habit to keep track of it, mileage can be the first sign that something's wrong.