/**
  * @see ISmsService::sendTemplateMessage()
  */
 public function sendTemplateMessage($mobiles, $tempKey, $sendTime = '')
 {
     //获取模板内容
     $templateService = Beans::get('admin.messageTemplate.service');
     $template = $templateService->getItem("type='message' AND tkey='{$tempKey}'");
     if (!$template) {
         return false;
     }
     //获取当前登录用户
     $userService = Beans::get('user.user.service');
     $loginUser = $userService->getLoginUser();
     //替换标签
     $replacements = array('{username}' => $loginUser['username'], '{mobile}' => $loginUser['mobile'], '{email}' => $loginUser['email'], '{nickname}' => $loginUser['nickname']);
     $content = str_replace(array_keys($replacements), $replacements, $template['content']);
     //去除html标签
     $content = strip_tags($content);
     //发送校验码
     if (strpos($content, '{authcode}') !== false) {
         $authCode = mt_rand(100000, 999999);
         //缓存校验码
         $factor = $mobiles;
         if (!is_numeric($mobiles)) {
             $factor = getHashCode($mobiles);
         }
         $CACHER = CacheFactory::create('file');
         $CACHER->baseKey('authcode')->ftype('mobile')->factor($factor);
         $CACHER->set(null, $authCode);
         $content = str_replace('{authcode}', $authCode, $content);
     }
     return $this->sendMessage($mobiles, strip_tags($content), $sendTime);
 }
Example #2
0
/**
 * 获取手机授权码, 默认30分钟有效
 * @param string $mobile
 * @param int $expr 授权码的有效期, 默认为30分钟
 * @return mixed
 */
function getMobileCode($mobile, $expr = 1800)
{
    //缓存校验码
    $factor = $mobile;
    if (!is_numeric($mobile)) {
        $factor = getHashCode($mobile);
    }
    $CACHER = \herosphp\cache\CacheFactory::create('file');
    $CACHER->baseKey('authcode')->ftype('mobile')->factor($factor);
    return $CACHER->get(null, $expr);
}
 /**
  * @see \common\service\interfaces\IEmailService::sendTemplateEmail
  */
 public function sendTemplateEmail($to, $templateKey, $params = null)
 {
     //获取模板内容
     $templateService = Beans::get('admin.messageTemplate.service');
     $template = $templateService->getItem("type='email' AND tkey='{$templateKey}'");
     if (!$template) {
         return false;
     }
     //获取当前登录用户
     $userService = Beans::get('user.user.service');
     $mediaService = Beans::get('media.media.service');
     $loginUser = $userService->getLoginUser();
     $loginMedia = $mediaService->getLoginMedia();
     $CACHER = CacheFactory::create('file');
     if (!$loginUser) {
         $key = 'register_' . $to;
         $loginUser = $CACHER->get($key, 0);
         //删除缓存
         //$CACHER->delete($key);
     }
     //替换标签
     $replacements = array('{username}' => $loginUser['username'], '{userid}' => $loginUser['id'], '{site_url}' => getConfig('site_url'), '{mobile}' => $loginUser['mobile'], '{email}' => $loginUser['email'], '{nickname}' => $loginUser['nickname'], '{media_name}' => $loginMedia['name'], '{media_id}' => $loginMedia['id']);
     $content = str_replace(array_keys($replacements), $replacements, $template['content']);
     //如果有传入自定义参数则惊醒自定义参数替换
     if (is_array($params)) {
         $content = str_replace(array_keys($params), $params, $content);
     }
     //发送校验码
     if (strpos($content, '{authcode}') !== false) {
         $authCode = mt_rand(100000, 999999);
         //缓存校验码
         $factor = getHashCode($to);
         $CACHER->baseKey('authcode')->ftype('email')->factor($factor);
         $CACHER->set(null, $authCode);
         $content = str_replace('{authcode}', $authCode, $content);
     }
     return $this->sendEmail($to, $template['name'], $content, 'html');
 }
Example #4
0
 /**
  * 获取缓存文件路径
  * @param string $key
  * @param string $extension 缓存后缀
  * @return string
  */
 public function getCacheFile($key = null, $extension = '.cache')
 {
     $cacheDir = $this->configs['cache_dir'];
     /**
      * 1. 如果有传入了缓存key,则默认为公共缓存,缓存文件全部放入公共缓存中
      * 2. 如果key=null,则认为是模块的特殊缓存,按照模块将缓存分类
      */
     if ($key) {
         $dir = getHashCode($key) % self::$_FILE_OPACITY;
         $cacheDir .= "common/{$dir}/";
         return $cacheDir . "{$key}.cache";
     } else {
         $cacheDir .= $this->baseKey . '/';
         $filename = $this->baseKey;
         if ($this->ftype) {
             $cacheDir .= $this->ftype . '/';
             $filename .= '_' . $this->ftype;
         }
         if ($this->factor) {
             if (is_numeric($this->factor)) {
                 $cacheDir .= $this->factor % self::$_FILE_OPACITY . '/';
             } else {
                 $factor = HashUtils::BKDRHash($this->factor);
                 $cacheDir .= $factor % self::$_FILE_OPACITY . '/';
             }
             $filename .= '_' . $this->factor;
         }
         return $cacheDir . $filename . $extension;
     }
 }