<?php
/**
 * 公共基础控制器
 * 统一处理登录验证和业务类型识别
 */
namespace app\common\common;

use think\Controller;
use think\Session;
use app\common\config\BusinessConfig;

class BaseController extends Controller
{
    /**
     * 当前业务类型
     * @var string
     */
    protected $businessType;
    
    /**
     * 数据表映射
     * @var array
     */
    protected $tableMap;
    
    /**
     * 初始化
     */
    protected function _initialize()
    {
        // 获取业务类型
        $this->businessType = BusinessConfig::getBusinessTypeByModule();
        $this->tableMap = BusinessConfig::getTableMap($this->businessType);
        
        // 验证登录
        $this->checkLogin();
    }
    
    /**
     * 检查登录状态
     */
    protected function checkLogin()
    {
        $sessionKey = BusinessConfig::getSessionKey($this->businessType);
        $loginTimeKey = BusinessConfig::getLoginTimeKey($this->businessType);
        
        if (!session($sessionKey)) {
            // 没有登录信息
            return $this->error('您还未登录', url('Login/logoutJump'));
            exit;
        } else {
            // 登录信息超时
            $logTime = session($loginTimeKey) - time();
            if ($logTime < 0) {
                Session::clear();
                return $this->error('登录超时', url('Login/logoutJump'));
                exit;
            }
        }
    }
    
    /**
     * 获取数据表名
     * @param string $tableKey 表键名
     * @return string
     */
    protected function getTableName($tableKey)
    {
        return isset($this->tableMap[$tableKey]) ? $this->tableMap[$tableKey] : $tableKey;
    }
}
