Я создал приложение, в котором пользователь отправляет заявку, затем модератор отклоняет ее или передает ее администратору, а затем администратор одобряет или отклоняет ее. На каждый процесс у модератора и админа есть 24 часа. Когда пользователь публикует билет в выходные или после 17:00 в пятницу, я хочу, чтобы он отправлял его, как в понедельник в 09:00 (потому что рабочее время 09:00 - 17:00).
SELECT step_one, offers.offer_department_in_charge as department,
offers.offer_id as id, COALESCE(cronjobmailsid.offer_id, 0) as cron_id
FROM offers INNER JOIN status ON offers.offer_id=status.offer_id
LEFT JOIN cronjobmailsid on offers.offer_id = cronjobmailsid.offer_id
WHERE status.status_id IN(SELECT MAX(status.status_id)
FROM status
GROUP BY status.offer_id)
AND offers.offer_category_id = 2
AND status.status_code IN(1, 2)
AND ( CASE WHEN WEEKDAY(offer_datePosted) = 4 AND HOUR(offer_datePosted) < 17 THEN 72*60*60
WHEN WEEKDAY(offer_datePosted) = 4 AND HOUR(offer_datePosted) >= 17 THEN 9*60*60 + 96*60*60
WHEN WEEKDAY(offer_datePosted) = 5 THEN 9*60*60+72*60*60
WHEN WEEKDAY(offer_datePosted) = 6 THEN 9*60*60+48*60*60 ELSE 24*60*60
END ) < (UNIX_TIMESTAMP(CURRENT_TIMESTAMP()) - UNIX_TIMESTAMP(IF((WEEKDAY(offers.offer_datePosted) >= 4
AND HOUR(offer_datePosted) >= 17), CAST(offers.offer_datePosted as date), offers.offer_datePosted)))
Быстрое определение: я держу таблицу предложений, в которой я храню сообщения, таблицу состояний для хранения потока сообщений и cronjob для хранения уведомлений модераторов или администраторов, если они опоздали с обработкой этого сообщения. Я хочу сделать это с mysql вместо php кода. Мне интересно, если это хороший sql подход? Код кажется работающим, но это хороший способ сделать это? Спасибо за ответы. Если коды написаны в sql и php правильно, какой из них будет быстрее?