app = $app; $this->request = $this->app->request; // 控制器初始化 $this->initialize(); $lang = request()->header('Lang', 'en'); $this->lang = $lang; Lang::setLangSet($lang); } // 初始化 protected function initialize() { $this->userInfo=$this->request->userInfo; $this->admin_id = $this->request->adminInfo ? $this->request->adminInfo->id : 0; $this->uid=$this->userInfo['user_id'] ?? 0; $config=Config::getSystemInfo(); if($config){ $this->globalConfig = $config; $this->chatSetting = $config['chatInfo'] ?? []; } // 验证版本,如果不一致,就需要退出重新登陆 $version =config('app.app_version'); $oldVersion=Cache::get('app_version'); if($version!=$oldVersion){ Cache::set('app_version',$version); JWTAuth::refresh(); Cache::delete('systemInfo_config'); } } /** * 验证数据 * @access protected * @param array $data 数据 * @param string|array $validate 验证器名或者验证规则数组 * @param array $message 提示信息 * @param bool $batch 是否批量验证 * @return array|string|true * @throws ValidateException */ protected function validate(array $data, $validate, array $message = [], bool $batch = false) { if (is_array($validate)) { $v = new Validate(); $v->rule($validate); } else { if (strpos($validate, '.')) { // 支持场景 [$validate, $scene] = explode('.', $validate); } $class = false !== strpos($validate, '\\') ? $validate : $this->app->parseClass('validate', $validate); $v = new $class(); if (!empty($scene)) { $v->scene($scene); } } $v->message($message); // 是否批量验证 if ($batch || $this->batchValidate) { $v->batch(true); } return $v->failException(true)->check($data); } /** * 自动获取前端传递的分页数量 * @param \think\Model|\think\model\relation\HasMany $model * @return \think\Paginator */ protected function paginate($model) { $limit = $this->request->param('limit', 20); return $model->paginate($limit); } protected function success($data = [], $msg = 'ok') { return json([ 'code' => 0, 'timestamp' => time(), 'msg' => Lang::get($msg), 'data' => $data ]); } /** * @apiError (错误) {String} msg 错误信息 * @apiError (错误) {Array} [data] 数据 若code!=0 则为错误数据,code=101009 该值为验证失败的详情 * @apiError (错误) {Int} code 错误代码 * @apiVersion 1.0.0 */ protected function error(string $msg = "请求错误", $data = [], int $code = -1) { $code = intval($code); if ($code === 0) $code = -1; $a = Lang::get("{$msg}", $data); if ($a == $msg) { $a = $msg; } return json([ 'code' => $code, 'timestamp' => time(), 'msg' => $a, 'data' => $data ]); } }