header_list = self::$default_header_list; $this->fzmCrossHeader(); } } public function fzmCrossHeader() { $this->lang = \Yii::$app->request->headers->get('lang') ?? 'zh-CN'; if ('en' == strtolower($this->lang)) { $this->lang = 'en-US'; } if (\Yii::$app->request->headers->get('FZM-PLATFORM-ID')) { $this->platform_id = \Yii::$app->request->headers->get('FZM-PLATFORM-ID'); } if (\Yii::$app->request->headers->get('FZM-CURRENCY-ID')) { $this->currency_id = \Yii::$app->request->headers->get('FZM-CURRENCY-ID'); } } public function beforeAction($action) { $this->start = microtime(true); return parent::beforeAction($action); // TODO: Change the autogenerated stub } public function afterAction($action, $result) { $this->end = microtime(true); return parent::afterAction($action, $result); // TODO: Change the autogenerated stub } /** * 返回成功结果,附加成功code * @param type $data * @return array */ public static function formatSuccessResult($data = null) { return self::formatResult(0, 'ok', $data); } /** * 返回结果,附加部分信息 * @param int $errcode * @param string $errmsg * @param array $data */ public static function formatResult($errcode, $errmsg, $data = null) { $callback = Yii::$app->request->get('callback'); $result = [ 'errcode' => $errcode, 'errmsg' => $errmsg, ]; if ($data !== null) { $result['data'] = Yii::createObject('yii\rest\Serializer')->serialize($data); } $response = Yii::$app->response; $response->format = Response::FORMAT_JSON; //jsonp数据格式 if (!is_null($callback)) { Yii::$app->getResponse()->format = Response::FORMAT_JSONP; $result = [ 'data' => $result, 'callback' => $callback, ]; } return $result; } protected function addPaginationHeaders($pagination) { $links = []; foreach ($pagination->getLinks(true) as $rel => $url) { $links[] = "<$url>; rel=$rel"; } Yii::$app->getResponse()->getHeaders() ->set('X-Pagination-Total-Count', $pagination->totalCount) ->set('X-Pagination-Page-Count', $pagination->getPageCount()) ->set('X-Pagination-Current-Page', $pagination->getPage() + 1) ->set('X-Pagination-Per-Page', $pagination->pageSize) ->set('Link', implode(', ', $links)); } protected function getRequestedFields() { $fields = Yii::$app->request->get('fields'); $expand = Yii::$app->request->get('expand'); return [ preg_split('/\s*,\s*/', $fields, -1, PREG_SPLIT_NO_EMPTY), preg_split('/\s*,\s*/', $expand, -1, PREG_SPLIT_NO_EMPTY), ]; } protected function serializeModels(array $models) { list ($fields, $expand) = $this->getRequestedFields(); foreach ($models as $i => $model) { if ($model instanceof Arrayable) { $models[$i] = $model->toArray($fields, $expand); } elseif (is_array($model)) { $models[$i] = ArrayHelper::toArray($model); } } return $models; } }