expDay($exp, $this->getLeftDay($expired_at, $time), $limit); }); $site_list && $this->sendMessage($site_list, $exp, $limit); } } /** * 计算 * * @param string $exp * @param integer $day 当前剩余天数 * @param integer $limit 提醒天数 * @return boolean */ private function expDay(string $exp, int $day, int $limit) { switch ($exp) { case '>': return $day > $limit; break; case '<': return $day < $limit; break; default: return $day == $limit; break; } return false; } /** * 发送信息 * * @param array $list * @param string $exp * @param integer $day * @return boolean */ protected function sendMessage(array $list, string $exp, int $day) { $time = strtotime(date('Y-m-d')); $phone = Yii::$app->services->setting->platform->get('system.contact_tel'); foreach ($list as $site) { $title = '站点到期提醒'; $msg = sprintf( '您的站点剩余时间还剩下%s天,为了不影响您的使用,请及时联系客服人员进行续费。(或联系客服电话:%s)', // date('Y-m-d', $site['expired_at']), $this->getLeftDay($site['expired_at'], $time), $phone ); BackendNotice::addMallNotice($site['id'], $title, $msg, BackendNotice::ARREARS); } } /** * 计算剩余天数 * * @param integer $expired_at * @param integer $time * @return int */ protected function getLeftDay(int $expired_at, int $time) { return ceil(bcdiv(bcsub($expired_at, $time), 86400, 2)); } }