At this point you should just get that girl who wants you to go bra shopping to take care of him for you. Sounds like she's a lot less timid than you are.
In all seriousness, next time he tries to slap you or run into you in the hall just grab him by the shirt, immediately below the collar and run him straight up against the wall hard, get right in his face and tell him you won't be putting up with it anymore throw in a few cuss words if you think that will intimidate him further. Let him know that if he wants to try it again, he'd better be ready to defend himself. My experience with Bully's has been that 95% of the time this is all that's needed.
I got a lot of it in junior high and the first part of high school. I'd threaten, then the next time I'd go ape on the guy. I'm only 130 lbs now, but that played to my advantage cause nobody expected me to fight back at all. In Junior High this kid was shoving me one day, until I cocked back my right arm and let him have it square in the nose, he stumbled back on his ass and I just kept swinging until he rolled over and covered his face and started crying through his blood soaked hands. I got up and noticed a huge crowd of kids circled around totally flabbergasted that I could fight this kid. Truth be told I was shocked too, but I guess he just flipped the wrong switch or something. This kid had at least 5 inches on me and probably 30 lbs, but that didn't matter cause I caught him off guard and didn't relent till he was finished.
I'd recommend you not fight, but it sounds like you've cemented your reputation as the kid who won't stand up for himself. Now may be the time to change that reputation.
SLC