87 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			87 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| declare(strict_types=1);
 | |
| 
 | |
| namespace App\Controller;
 | |
| 
 | |
| use App\Exception\BusinessException;
 | |
| use App\JsonRpc\UserExternalServiceInterface;
 | |
| use Hyperf\Di\Annotation\Inject;
 | |
| use Hyperf\HttpServer\Annotation\AutoController;
 | |
| use Hyperf\Utils\Collection;
 | |
| use Hyperf\Paginator\Paginator;
 | |
| 
 | |
| /**
 | |
|  * 示例控制器
 | |
|  */
 | |
| #[AutoController]
 | |
| class TestController extends BaseController
 | |
| {
 | |
|     /**
 | |
|      * @var UserExternalServiceInterface
 | |
|      */
 | |
|     #[Inject]
 | |
|     protected UserExternalServiceInterface $userService;
 | |
| 
 | |
|     /**
 | |
|      * 返回数据示例
 | |
|      *
 | |
|      * @return array
 | |
|      */
 | |
|     public function index()
 | |
|     {
 | |
|         $data['user_id'] = 'test';
 | |
|         return $data;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 空返回示例
 | |
|      *
 | |
|      * @return void
 | |
|      */
 | |
|     public function empty()
 | |
|     {}
 | |
| 
 | |
|     /**
 | |
|      * 错误示例
 | |
|      *
 | |
|      * @return mixed
 | |
|      */
 | |
|     public function error()
 | |
|     {
 | |
|         throw new BusinessException(500, 'error');
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * 分页示例
 | |
|      *
 | |
|      * @return Paginator
 | |
|      */
 | |
|     public function page()
 | |
|     {
 | |
|         $currentPage = (int) $this->request->input('page', 1);
 | |
|         $perPage = (int) $this->request->input('per_page', 2);
 | |
| 
 | |
|         // 这里根据 $currentPage 和 $perPage 进行数据查询,以下使用 Collection 代替
 | |
|         $collection = new Collection([
 | |
|             ['id' => 1, 'name' => 'Tom'],
 | |
|             ['id' => 2, 'name' => 'Sam'],
 | |
|             ['id' => 3, 'name' => 'Tim'],
 | |
|             ['id' => 4, 'name' => 'Joe'],
 | |
|         ]);
 | |
| 
 | |
|         $users = array_values($collection->forPage($currentPage, $perPage)->toArray());
 | |
| 
 | |
|         return new Paginator($users, $perPage, $currentPage);
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * RPC调用示例
 | |
|      *
 | |
|      * @return array
 | |
|      */
 | |
|     public function user_info()
 | |
|     {
 | |
|         return $this->getServiceResult($this->userService->getUserInfo());
 | |
|     }
 | |
| } |