181 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			181 lines
		
	
	
		
			4.2 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | ||
| /**
 | ||
|  * 商业使用授权协议
 | ||
|  * 
 | ||
|  * Copyright (c) 2025 [云泽网]. 保留所有权利.
 | ||
|  * 
 | ||
|  * 本软件仅供评估使用。任何商业用途必须获得书面授权许可。
 | ||
|  * 未经授权商业使用本软件属于侵权行为,将承担法律责任。
 | ||
|  * 
 | ||
|  * 授权购买请联系: 357099073@qq.com
 | ||
|  * 官方网站: https://www.yunzer.cn
 | ||
|  * 
 | ||
|  * 评估用户须知:
 | ||
|  * 1. 禁止移除版权声明
 | ||
|  * 2. 禁止用于生产环境
 | ||
|  * 3. 禁止转售或分发
 | ||
|  */
 | ||
| 
 | ||
| /**
 | ||
|  *	后台管理系统-管理员
 | ||
|  */
 | ||
| namespace app\admin\controller;
 | ||
| use app\AppApi;
 | ||
| use think\facade\Db;
 | ||
| use think\facade\View;
 | ||
| use think\facade\Cookie;
 | ||
| use think\facade\Config;
 | ||
| 
 | ||
| use app\admin\model\YzAdminConfig;
 | ||
| 
 | ||
| use think\exception\HttpResponseException;
 | ||
| use think\facade\Request;
 | ||
| use think\facade\Route;
 | ||
| use think\App;
 | ||
| 
 | ||
| class Base
 | ||
| {
 | ||
| 	protected $app;
 | ||
| 	protected $request;
 | ||
| 	public $adminId = null;
 | ||
| 	public $config = [];
 | ||
| 	public $aUser = [];
 | ||
| 	public function __construct()
 | ||
| 	{
 | ||
| 		date_default_timezone_set('PRC');
 | ||
| 		# 获取配置
 | ||
| 		$YzAdminConfig = new YzAdminConfig();
 | ||
| 		$this->config = $YzAdminConfig->getAll();
 | ||
| 		# 获取账户,账户判断
 | ||
| 		$this->adminId = Cookie::get('admin_id');
 | ||
| 		if (empty($this->adminId)) {
 | ||
| 			header('Location:' . $this->config['admin_route'] . 'Login/index');
 | ||
| 			exit;
 | ||
| 		}
 | ||
| 		$this->aUser = Db::table('yz_admin_user')->where('uid', $this->adminId)->find();
 | ||
| 
 | ||
| 		if (empty($this->aUser)) {
 | ||
| 			Cookie::delete('admin_id');
 | ||
| 			$this->error('管理员账户不存在');
 | ||
| 		}
 | ||
| 		if ($this->aUser['status'] != 1) {
 | ||
| 			Cookie::delete('admin_id');
 | ||
| 			$this->error('管理员已被禁用');
 | ||
| 		}
 | ||
| 		# 获取用户组权限
 | ||
| 		$group = Db::table('yz_admin_user_group')->where(['group_id' => $this->aUser['group_id']])->find();
 | ||
| 		if (empty($group)) {
 | ||
| 			$this->error('对不起,您没有权限');
 | ||
| 		}
 | ||
| 		# 获取当前链接,查询是否有权限
 | ||
| 		$controller = request()->controller();
 | ||
| 		$action = request()->action();
 | ||
| 		$key = $controller . '/' . $action;
 | ||
| 		View::assign([
 | ||
| 			'aUser' => $this->aUser,
 | ||
| 			'config' => $this->config
 | ||
| 		]);
 | ||
| 	}
 | ||
| 	/**
 | ||
| 	 * 返回json对象
 | ||
| 	 */
 | ||
| 	protected function returnCode($code, $data = [], $count = 10)
 | ||
| 	{
 | ||
| 		header('Content-type:application/json');
 | ||
| 		if ($code == 0) {
 | ||
| 			$arr = array(
 | ||
| 				'code' => $code,
 | ||
| 				'msg' => '操作成功',
 | ||
| 				'count' => $count,
 | ||
| 				'data' => $data
 | ||
| 			);
 | ||
| 		} else if ($code >= 1 && $code <= 100) {
 | ||
| 			$arr = array(
 | ||
| 				'code' => $code,
 | ||
| 				'msg' => $data
 | ||
| 			);
 | ||
| 		} else {
 | ||
| 			$appapi = new AppApi();
 | ||
| 			$arr = array(
 | ||
| 				'code' => $code,
 | ||
| 				'msg' => $appapi::errorTip($code)
 | ||
| 			);
 | ||
| 		}
 | ||
| 		echo json_encode($arr);
 | ||
| 		if ($code != 0) {
 | ||
| 			exit;
 | ||
| 		}
 | ||
| 	}
 | ||
| 
 | ||
| 	/**
 | ||
| 	 * 操作成功跳转的快捷方法
 | ||
| 	 * @access protected
 | ||
| 	 * @param  mixed     $msg 提示信息
 | ||
| 	 * @return void
 | ||
| 	 */
 | ||
| 	protected function success($msg = '')
 | ||
| 	{
 | ||
| 		$result = [
 | ||
| 			'code' => 1,
 | ||
| 			'msg' => $msg
 | ||
| 		];
 | ||
| 
 | ||
| 		$type = $this->getResponseType();
 | ||
| 		if ($type == 'html') {
 | ||
| 			$response = view(Config::get('app.dispatch_success_tmpl'), $result);
 | ||
| 		} else if ($type == 'json') {
 | ||
| 			$response = json($result);
 | ||
| 		}
 | ||
| 		throw new HttpResponseException($response);
 | ||
| 	}
 | ||
| 
 | ||
| 	/**
 | ||
| 	 * 操作错误跳转的快捷方法
 | ||
| 	 * @access protected
 | ||
| 	 * @param  mixed     $msg 提示信息
 | ||
| 	 * @return void
 | ||
| 	 */
 | ||
| 	protected function error($msg = '')
 | ||
| 	{
 | ||
| 		$result = [
 | ||
| 			'code' => 0,
 | ||
| 			'msg' => $msg
 | ||
| 		];
 | ||
| 		$response = view(Config::get('app.dispatch_error_tmpl'), $result);
 | ||
| 		throw new HttpResponseException($response);
 | ||
| 	}
 | ||
| 
 | ||
| 	/**
 | ||
| 	 * 获取当前的response 输出类型
 | ||
| 	 * @access protected
 | ||
| 	 * @return string
 | ||
| 	 */
 | ||
| 	protected function getResponseType()
 | ||
| 	{
 | ||
| 		return Request::isJson() || Request::isAjax() ? 'json' : 'html';
 | ||
| 	}
 | ||
| 
 | ||
| 	public function initialize(App $app)
 | ||
| 	{
 | ||
| 		$this->app = $app;
 | ||
| 		$this->request = $this->app->request;
 | ||
| 
 | ||
| 		// 检查是否是直接访问具体页面
 | ||
| 		$controller = $this->request->controller();
 | ||
| 		$action = $this->request->action();
 | ||
| 
 | ||
| 		// 如果不是访问index控制器,且不是通过iframe加载,且不是ajax请求
 | ||
| 		if (
 | ||
| 			$controller != 'Index' &&
 | ||
| 			!$this->request->isAjax() &&
 | ||
| 			!$this->request->header('X-Requested-With') &&
 | ||
| 			!$this->request->param('iframe')
 | ||
| 		) {  // 添加iframe参数检查
 | ||
| 
 | ||
| 			// 重定向到index页面,并带上当前页面参数
 | ||
| 			$currentUrl = $controller . '/' . $action;
 | ||
| 			redirect(url('index/index', ['page' => $currentUrl]))->send();
 | ||
| 			exit;
 | ||
| 		}
 | ||
| 	}
 | ||
| } |