123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185 |
- <?php
- namespace App\Libs;
- use Symfony\Component\HttpFoundation\Response as FoundationResponse;
- use Response;
- trait ApiResponse
- {
- /**
- * @var int
- */
- protected $statusCode = FoundationResponse::HTTP_OK;
- /**
- * @return mixed
- */
- public function getStatusCode()
- {
- return $this->statusCode;
- }
- /**
- * @param $statusCode
- * @return $this
- */
- public function setStatusCode($statusCode, $httpCode = null)
- {
- $httpCode = $httpCode ?? $statusCode;
- $this->statusCode = $statusCode;
- return $this;
- }
- /**
- * @param $data
- * @param array $header
- * @return mixed
- */
- public function respond($data, $header = [])
- {
- return Response::json($data, $this->getStatusCode(), $header, JSON_UNESCAPED_UNICODE);
- }
- /**
- * @param $status
- * @param array $data
- * @param null $code
- * @return mixed
- */
- public function status($status, $data, $code = null)
- {
- if ($code) {
- $this->setStatusCode($code);
- }
- $res = [
- 'msg' => $status,
- 'code' => 0,
- 'data' => $data
- ];
- return $this->respond($res);
- }
- /**
- * @param $message
- * @param int $code
- * @param string $status
- * @return mixed
- */
- /*
- * 格式
- * data:
- * code:422
- * message:xxx
- * status:'error'
- */
- public function failed($message, $code = FoundationResponse::HTTP_BAD_REQUEST, $status = 'error')
- {
- return $this->setStatusCode($code)->message($message, $status);
- }
- /**
- * @param $message
- * @param string $status
- * @return mixed
- */
- public function message($message, $status = 'success')
- {
- return $this->status($status, [
- 'message' => $message
- ]);
- }
- /**
- * @param string $message
- * @return mixed
- */
- public function internalError($message = 'Internal Error!')
- {
- return $this->failed($message, FoundationResponse::HTTP_INTERNAL_SERVER_ERROR);
- }
- /**
- * @param string $message
- * @return mixed
- */
- public function created($message = 'created')
- {
- return $this->setStatusCode(FoundationResponse::HTTP_CREATED)
- ->message($message);
- }
- /**
- * @param $data
- * @param $callFunc
- * @return mixed
- */
- public function success($data, $callFunc = [])
- {
- if ($callFunc) {
- return $this->status('', call_user_func($callFunc, $data));
- }
- return $this->status('', $data);
- }
- /**
- * @param $data
- * @param $callFunc
- * @return mixed
- */
- public function paginate($data, $callFunc = [])
- {
- $result = [
- 'meta' => getMeta($data),
- 'list' => $data->items()
- ];
- if ($callFunc) {
- $result['list'] = call_user_func($callFunc, $data->items());
- }
- return $this->status('', $result);
- }
- /**
- * @param $errorData
- * @param $data
- * @return mixed
- */
- public function error($errorData, $data = '')
- {
- // 分解错误码、错误信息
- $arr = explode(':', (string)$errorData);
- $code = (int)$arr[0];
- $msg = (string)$arr[1];
- $res = [
- 'msg' => $msg,
- 'code' => $code,
- 'data' => $data
- ];
- return $this->respond($res);
- }
- public function appResponse($res)
- {
- return $this->respond($res);
- }
- /**
- * @param string $message
- * @return mixed
- */
- public function notFond($message = 'Not Fond!')
- {
- return $this->failed($message, Foundationresponse::HTTP_NOT_FOUND);
- }
- }
|