// +---------------------------------------------------------------------- namespace crmeb\listens; use crmeb\interfaces\ListenerInterface; use crmeb\jobs\CloseSvipCouponJob; use crmeb\jobs\SendSvipCouponJob; use crmeb\services\TimerService; use think\facade\Cache; use think\facade\Queue; class SendSvipCouponListen extends TimerService implements ListenerInterface { public function handle($event): void { $this->tick(1000 * 60 * 60 * 23, function () { $day = date('d', time()); if ((int)$day === 1) { Queue::push(SendSvipCouponJob::class, []); } $nuxt = strtotime(date('Y-m-01', time()) . ' +1 month'); $last = strtotime(date('Y-m-d', $nuxt) . " -1 day"); if ($last - time() < 300) { Queue::push(CloseSvipCouponJob ::class, []); } }); } }