Response.php 1.7 KB
<?php


namespace App\Helper;


use Illuminate\Pagination\LengthAwarePaginator;

/**
 * Class Response
 * @package App\Helper
 */
class Response
{
    /**
     * 成功
     * @param array $data
     * @return \Illuminate\Http\JsonResponse
     */
    public static function success($data = [], string $msg = '请求成功')
    {
        return response()->json([
            'code' => ErrorCode::SERVER_OK,
            'data' => $data instanceof LengthAwarePaginator ? self::paginator($data) : $data,
            'msg'  => $msg
        ]);
    }

    /**
     * 失败
     * @param int $code
     * @return mixed
     */
    public static function error($code = ErrorCode::SERVER_ERROR, string $msg = '',$data = [])
    {
        return  response()->json([
            'code' => $code,
            'msg'  => $msg ?: (ErrorCode::$messages[$code] ?? ErrorCode::$messages[ErrorCode::SERVER_ERROR]),
            'data' => $data
        ]);
    }

    /**
     * 分页
     * @param LengthAwarePaginator $data
     * @return array
     */
    public static function paginator(LengthAwarePaginator $data): array
    {
        $paginator = [
            'list'=> $data->items(),   'total' => (int)$data->total(),
            'page' => (int)$data->currentPage(), 'pageSize'=> (int)$data->perPage(),
            'pages' => ceil((int)$data->total() / (int)$data->perPage()),
        ];

        $paginator['hasNextPage'] = ( $paginator['page'] < $paginator['pages'] ) ? true : false;

        return $paginator;
    }

    public static function successWithCode(string $code, string $msg, $data = [])
    {
        return response()->json([
            'code' => $code,
            'msg' => $msg,
            'data' => $data
        ]);
    }

}