147 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			147 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
<?php
 | 
						||
declare (strict_types = 1);
 | 
						||
 | 
						||
namespace app\index\controller;
 | 
						||
 | 
						||
use think\App;
 | 
						||
use think\facade\View;
 | 
						||
use think\facade\Request;
 | 
						||
use think\facade\Db;
 | 
						||
use app\service\VisitStatsService;
 | 
						||
 | 
						||
/**
 | 
						||
 * 前台控制器基础类
 | 
						||
 */
 | 
						||
abstract class BaseController
 | 
						||
{
 | 
						||
    /**
 | 
						||
     * Request实例
 | 
						||
     * @var \think\Request
 | 
						||
     */
 | 
						||
    protected $request;
 | 
						||
    protected $visitStats;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 应用实例
 | 
						||
     * @var \think\App
 | 
						||
     */
 | 
						||
    protected $app;
 | 
						||
 | 
						||
    /**
 | 
						||
     * 构造方法
 | 
						||
     * @access public
 | 
						||
     * @param  App  $app  应用对象
 | 
						||
     */
 | 
						||
    public function __construct(App $app)
 | 
						||
    {
 | 
						||
        $this->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
 | 
						||
        ]);
 | 
						||
    }
 | 
						||
} |