Response.php
1.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
<?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
        ]);
    }
}