mysql выбор только рабочих часов - PullRequest
0 голосов
/ 30 апреля 2020

Я создал приложение, в котором пользователь отправляет заявку, затем модератор отклоняет ее или передает ее администратору, а затем администратор одобряет или отклоняет ее. На каждый процесс у модератора и админа есть 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 правильно, какой из них будет быстрее?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...