API接口返回数据结构构建类


<?php

declare(strict_types=1);

namespace wangqy\tcc\utils;

use think\Response;

class Result
{
    /**
     * 结果状态码
     *
     * @var int
     */
    protected $code = 0;
    /**
     * http请求状态码
     *
     * @var int
     */
    protected $httpCode = 200;

    /**
     * 响应结果类型.
     *
     * @var string
     */
    protected $responseType = 'json';

    /**
     * 失败返回信息.
     *
     * @param $code
     * @param $msg
     * @param $data
     *
     * @return Response
     */
    public function fail($msg, $code, $data = null)
    {
        return $this->make($code, $msg, $data);
    }

    /**
     * 仅返回说明.
     *
     * @param $msg
     *
     * @return Response
     */
    public function onlySucMsg($msg = 'success')
    {
        return $this->success(null, $msg);
    }

    /**
     * @return $this
     */
    public function setCode(int $code)
    {
        $this->code = $code;

        return $this;
    }

    /**
     * @return $this
     */
    public function setHttpCode(int $httpCode)
    {
        $this->httpCode = $httpCode;

        return $this;
    }

    /**
     * @return $this
     */
    public function setResponseType(string $responseType)
    {
        $this->responseType = $responseType;

        return $this;
    }

    /**
     * 成功返回信息.
     *
     * @param $data
     * @param $msg
     *
     * @return Response
     */
    public function success($data = null, $msg = 'success')
    {
        return $this->make($this->code, lang($msg), $data);
    }

    /**
     * @param int        $code
     * @param string     $msg
     * @param null|array $data
     *
     * @return Response
     */
    private function make($code, $msg, $data = null)
    {
        $extra = [
            'log_id' => $GLOBALS['log_id'] ?? '',
            'now' => time(),
        ];

        $res = compact('code', 'msg', 'extra');

        if (null !== $data) {
            $res['data'] = $data;
        }

        return Response::create($res, $this->responseType, $this->httpCode);
    }
}

在common文件中

if (!function_exists('result')) {
    /**
     * 获取当前json对象实例.
     *
     * @return App|object|Result
     */
    function result()
    {
        return app('result');
    }
}

实例:

  public function getList()
    {
        $params = input();

        $result = $this->logic->getList($params);

        return result()->success($result);
    }

原文:http://upwqy.com/?p=5

搜索

复制