From a21c3d640f47dd8f901f4652afebef98a1180d92 Mon Sep 17 00:00:00 2001 From: kuaifan Date: Sun, 26 Feb 2023 22:00:07 +0800 Subject: [PATCH] no message --- app/Module/Base.php | 35 +++++++++++++++++++++++++++++++++ app/Tasks/CheckinRemindTask.php | 22 +-------------------- 2 files changed, 36 insertions(+), 21 deletions(-) diff --git a/app/Module/Base.php b/app/Module/Base.php index f68edb22d..8593a03b9 100755 --- a/app/Module/Base.php +++ b/app/Module/Base.php @@ -3194,4 +3194,39 @@ class Base } return Response::streamDownload($callback, $name); } + + /** + * 判断是否工作日 + * @param string $Ymd 年月日(如:20220102) + * @return int + * 0: 工作日 + * 1: 非工作日 + * 2: 获取不到远程数据的非工作日(周六、日) + * 所以可以用>0来判断是否工作日 + */ + public static function isHoliday($Ymd) { + $time = strtotime($Ymd . " 00:00:00"); + $holidayKey = "holiday::" . date("Ym", $time); + $holidayData = Cache::remember($holidayKey, now()->addMonth(), function () use ($time) { + $apiMonth = date("Ym", $time); + $apiResult = Ihttp::ihttp_request("https://api.apihubs.cn/holiday/get?field=date&month={$apiMonth}&workday=2&size=31", [], [], 20); + if (Base::isError($apiResult)) { + info('[holiday] get error'); + return []; + } + $apiResult = Base::json2array($apiResult['data']); + if ($apiResult['code'] !== 0) { + info('[holiday] result error'); + return []; + } + return array_map(function ($item) { + return $item['date']; + }, $apiResult['data']['list']); + }); + if (empty($holidayData)) { + Cache::forget($holidayKey); + return in_array(date("w", $time), [0, 6]) ? 2 : 0; + } + return in_array($Ymd, $holidayData) ? 1 : 0; + } } diff --git a/app/Tasks/CheckinRemindTask.php b/app/Tasks/CheckinRemindTask.php index 76a3f360b..ba2b1eac6 100644 --- a/app/Tasks/CheckinRemindTask.php +++ b/app/Tasks/CheckinRemindTask.php @@ -27,27 +27,7 @@ class CheckinRemindTask extends AbstractTask return; } // 判断非工作日 - $holidayKey = "holiday::" . date("Ym"); - $holidayData = Cache::remember($holidayKey, now()->addMonth(), function () { - $apiMonth = date("Ym"); - $apiResult = Ihttp::ihttp_request("https://api.apihubs.cn/holiday/get?field=date&month={$apiMonth}&workday=2&size=31", [], [], 30); - if (Base::isError($apiResult)) { - info('[holiday] get error'); - return []; - } - $apiResult = Base::json2array($apiResult['data']); - if ($apiResult['code'] !== 0) { - info('[holiday] result error'); - return []; - } - return array_map(function ($item) { - return $item['date']; - }, $apiResult['data']['list']); - }); - if (empty($holidayData)) { - Cache::forget($holidayKey); - } - if (in_array(date("Ymd"), $holidayData)) { + if (Base::isHoliday(date("Ymd")) > 0) { return; } //