79 lines
1.8 KiB
PHP
79 lines
1.8 KiB
PHP
<?php
|
|
// +----------------------------------------------------------------------
|
|
// | Author: ScottPan Team
|
|
// +----------------------------------------------------------------------
|
|
|
|
namespace app\common\controller;
|
|
|
|
use app\Request;
|
|
use think\App;
|
|
use think\Response;
|
|
|
|
/**
|
|
* 项目自有控制器基类,不依赖 CRMEB 商业授权基础类。
|
|
*/
|
|
abstract class AppBaseController
|
|
{
|
|
/**
|
|
* @var App
|
|
*/
|
|
protected App $app;
|
|
|
|
/**
|
|
* @var Request
|
|
*/
|
|
protected Request $request;
|
|
|
|
/**
|
|
* 是否批量验证
|
|
* @var bool
|
|
*/
|
|
protected bool $batchValidate = false;
|
|
|
|
public function __construct(App $app)
|
|
{
|
|
$this->app = $app;
|
|
$this->request = $app->request;
|
|
|
|
$this->initialize();
|
|
}
|
|
|
|
/**
|
|
* 初始化钩子,子类可覆盖。
|
|
*/
|
|
protected function initialize()
|
|
{
|
|
}
|
|
|
|
protected function success($message = 'ok', array $data = []): Response
|
|
{
|
|
return app('json')->success($message, $data);
|
|
}
|
|
|
|
protected function fail($message = 'fail', array $data = []): Response
|
|
{
|
|
return app('json')->fail($message, $data);
|
|
}
|
|
|
|
/**
|
|
* 兼容项目控制器中 `$this->validate($data, ValidateClass::class, 'scene')` 的调用方式。
|
|
*
|
|
* @param array $data
|
|
* @param string|array $validate
|
|
* @param string|array|null $scene
|
|
* @return bool
|
|
*/
|
|
protected function validate(array $data, $validate, $scene = null): bool
|
|
{
|
|
$validator = validate($validate)->batch($this->batchValidate);
|
|
|
|
if (is_string($scene) && $scene !== '') {
|
|
$validator->scene($scene);
|
|
} elseif (is_array($scene)) {
|
|
$validator->message($scene);
|
|
}
|
|
|
|
return $validator->check($data);
|
|
}
|
|
}
|