| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112 |
- <?php
- namespace console\services;
- use common\models\backend\BackendNotice;
- use console\models\Mall;
- use Yii;
- use yii\base\BaseObject;
- /**
- * 站点
- *
- * Class SiteService
- * @package console\services
- */
- class SiteService extends BaseObject
- {
- /**
- * 站点到期检测
- *
- * @return boolean
- */
- public function expirationDetection()
- {
- $list = Mall::getTimeLimitMall();
- // 提醒时间
- $reminder_times = [
- ['=', 30],
- ['=', 15],
- ['<', 7],
- ];
-
- $time = strtotime(date('Y-m-d'));
- foreach ($reminder_times as $reminder_time) {
- list($exp, $limit) = $reminder_time;
- // 获取符合的商城
- $site_list = array_filter($list, function ($item) use ($exp, $limit, $time) {
- $expired_at = $item['expired_at'];
- return $this->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));
- }
- }
|