/** * @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); }
/** * 获取手机授权码, 默认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'); }
/** * 获取缓存文件路径 * @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; } }