Bueno, con esa información ya puedes plantearte las condiciones que se deben cumplir:
- Fecha actual:
Cita: fecha_inicio = CURDATE() AND fecha_final IS NULL AND campodía = 1
- Fecha actual, sólo evento de fecha única (por ejemplo, día lunes):
Cita: fecha_inicio = CURDATE() AND fecha_final IS NULL AND lun = 1 AND NOT( mar OR mie OR jue OR vie OR sab OR dom)
- Fecha en un periodo:
Cita: CURDATE() BETWEEN fecha_inicio AND fecha_final AND campodia = 1
En fin, lo que debes hacer es buscar las alternativas, plantearte qué es lo que debe cumplirse, y luego creas un método que le vaya agregando o sacando condiciones según lo que quieras buscar.
¿Se entiende la idea?