app = $app; $this->request = $this->app->request; $this->visitStats = new VisitStatsService(); // 控制器初始化 $this->initialize(); } /** * 初始化 */ protected function initialize() { // 记录访问 $this->visitStats->recordVisit($this->getControllerName()); // 获取配置 $configList = Db::table('yz_admin_config') ->where('config_status', 1) ->order('config_sort DESC') ->select() ->toArray(); // 将配置数据转换为键值对形式 $config = []; foreach ($configList as $item) { $config[$item['config_name']] = $item['config_value']; } // 设置通用变量 View::assign([ 'config' => $config ]); } /** * 获取控制器名称(移除Controller后缀) * @return string */ public function getControllerName() { $className = get_class($this); $className = substr($className, strrpos($className, '\\') + 1); return str_replace('Controller', '', $className); } /** * 渲染模板输出 * @param string $template 模板文件 * @param array $vars 模板变量 * @return string */ protected function fetch($template = '', $vars = []) { return View::fetch($template, $vars); } /** * 操作成功跳转 * @param string $msg 提示信息 * @param string $url 跳转地址 * @param mixed $data 返回数据 * @param integer $wait 跳转等待时间 * @return void */ protected function success($msg = '', $url = null, $data = '', $wait = 3) { if (Request::isAjax()) { return json([ 'code' => 1, 'msg' => $msg, 'data' => $data, 'url' => $url ]); } return View::fetch('common/success', [ 'msg' => $msg, 'url' => $url, 'data' => $data, 'wait' => $wait ]); } /** * 操作失败跳转 * @param string $msg 提示信息 * @param string $url 跳转地址 * @param mixed $data 返回数据 * @param integer $wait 跳转等待时间 * @return void */ protected function error($msg = '', $url = null, $data = '', $wait = 3) { if (Request::isAjax()) { return json([ 'code' => 0, 'msg' => $msg, 'data' => $data, 'url' => $url ]); } return View::fetch('common/error', [ 'msg' => $msg, 'url' => $url, 'data' => $data, 'wait' => $wait ]); } protected function sendEmail($to, $content, $title) { // 获取邮件配置 $mailConfig = MailConfig::where('id', 1)->find(); if (!$mailConfig) { return '邮件配置不存在'; } //实例化PHPMailer核心类 $mail = new PHPMailer(); //是否启用smtp的debug进行调试 开发环境建议开启 生产环境注释掉即可 默认关闭debug调试模式 $mail->SMTPDebug = 0; //使用smtp鉴权方式发送邮件 $mail->isSMTP(); //smtp需要鉴权 这个必须是true $mail->SMTPAuth = true; //链接qq域名邮箱的服务器地址 $mail->Host = $mailConfig['smtp_host']; //设置使用ssl加密方式登录鉴权 $mail->SMTPSecure = 'ssl'; //设置ssl连接smtp服务器的远程服务器端口号 $mail->Port = $mailConfig['smtp_port']; //设置发件人的主机域 $mail->Hostname = $mailConfig['smtp_email']; //设置发送的邮件的编码 $mail->CharSet = 'UTF-8'; //设置发件人姓名(昵称) $mail->FromName = $mailConfig['smtp_name']; //smtp登录的账号 $mail->Username = $mailConfig['smtp_email']; //smtp登录的密码 $mail->Password = $mailConfig['smtp_password']; //设置发件人邮箱地址 $mail->setFrom($mailConfig['smtp_email'], $mailConfig['smtp_name']); //邮件正文是否为html编码 $mail->isHTML(true); //设置收件人邮箱地址 $mail->addAddress($to); //添加该邮件的主题 $mail->Subject = $title; //添加邮件正文 $mail->Body = $content; try { $status = $mail->send(); if ($status) { return '发送成功'; } else { return '发送失败'; } } catch (\Exception $e) { return '发送失败:' . $e->getMessage(); } } }