RpcService.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134
  1. <?php
  2. namespace App\Admin\Services;
  3. use App\Admin\Repositories\SiteAlbumFolder;
  4. use App\Admin\Repositories\SiteAlbum;
  5. use Illuminate\Http\Request;
  6. use Illuminate\Support\Arr;
  7. /**
  8. * 外部rpc服务
  9. */
  10. class RpcService
  11. {
  12. protected $request;
  13. protected $apiSecret = 'MtbSecretVBUC';
  14. /*
  15. * 构造函数,验证签名
  16. */
  17. public function __construct()
  18. {
  19. // try {
  20. // $request = request();
  21. // // 验证签名
  22. // $apiKey = $request->header('X-API-Key');
  23. // $clientSignature = $request->header('X-API-Signature');
  24. // $all = $request->all();
  25. // $params = isset($all['params'])? $all['params'] : [];
  26. // $payload = json_encode($params);
  27. // $payload = $payload.$apiKey;
  28. // $serverSignature = hash_hmac('sha256', $payload, $this->apiSecret);
  29. // if ($clientSignature !== $serverSignature) {
  30. // return $this->responseError('签名验证失败');
  31. // }
  32. // if (time() - $apiKey > 100) {
  33. // return $this->responseError('签名已过期');
  34. // }
  35. // } catch (\Exception $e) {
  36. // return $this->responseError('签名验证失败 e - '. $e->getMessage());
  37. // }
  38. }
  39. /*
  40. * 相册分页
  41. * @param int $page 页码
  42. * @param int $perPage 每页数量
  43. */
  44. public function siteAlbumPaginate($filter = [],$perPage = 15,$page = 1): string
  45. {
  46. $result = SiteAlbum::siteAlbumPaginate($filter,$perPage,$page);
  47. $result = $result->toArray();
  48. return $this->responseSuccess( $result);
  49. }
  50. /*
  51. * 通过ids获取相册列表
  52. */
  53. public function siteAlbumGetByIds($ids): string
  54. {
  55. if (is_string($ids)) {
  56. $ids = explode(',', $ids);
  57. }
  58. $siteAlbum = new SiteAlbum();
  59. $result = $siteAlbum->model()->whereIn('id', $ids)->get();
  60. $result = $result->toArray();
  61. return $this->responseSuccess( $result);
  62. }
  63. /*
  64. * 相册详情
  65. */
  66. public function siteAlbumGet($id)
  67. {
  68. $siteAlbum = new SiteAlbum();
  69. $result = $siteAlbum->model()->find($id);
  70. if (!$result) {
  71. return $this->responseError('相册不存在');
  72. }
  73. $result = $result->toArray();
  74. return $this->responseSuccess( $result);
  75. }
  76. /*
  77. * 相册文件夹列表
  78. * $inIds 查询指定id及父级id的相册文件夹
  79. */
  80. public function siteAlbumFolderSelectOptions($inIds = [])
  81. {
  82. $result = SiteAlbumFolder::siteAlbumFolderSelectOptions($inIds);
  83. return $this->responseSuccess( $result);
  84. }
  85. /*
  86. * 全部相册文件夹列表
  87. */
  88. public function siteAlbumFolderSelectOptionsAll()
  89. {
  90. $result = SiteAlbumFolder::siteAlbumFolderSelectOptionsAll();
  91. return $this->responseSuccess( $result);
  92. }
  93. /*
  94. * 相册文件夹全部节点
  95. */
  96. public function siteAlbumFolderAllNodes()
  97. {
  98. $siteAlbumFolder = new SiteAlbumFolder();
  99. $result = $siteAlbumFolder->model()->allNodes();
  100. return $this->responseSuccess($result);
  101. }
  102. /*
  103. * rcp服务响应错误信息
  104. */
  105. public function responseError($result) {
  106. $result = ['status'=>false,'msg'=>$result,'data'=>[]];
  107. $response = ["jsonrpc"=>"2.0", "result"=> $result, "id"=>1];
  108. die(json_encode($response));
  109. }
  110. /*
  111. * rcp服务响应成功信息
  112. */
  113. public function responseSuccess($data) {
  114. $result = ['status'=>true,'msg'=>'Success','data'=>$data];
  115. $response = ["jsonrpc"=>"2.0", "result"=> $result, "id"=>1];
  116. die(json_encode($response));
  117. }
  118. }