AiFaceService.php 3.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163
  1. <?php
  2. namespace App\Http\Services\Web;
  3. use App\Models\Web\FaceMergeToken;
  4. use App\Models\Web\ShareData;
  5. use DB;
  6. use GuzzleHttp\Client;
  7. class AiFaceService
  8. {
  9. protected $faceMergeTokenDb;
  10. protected $shareDataDb;
  11. public function __construct()
  12. {
  13. $this->faceMergeTokenDb = new FaceMergeToken();
  14. $this->shareDataDb = new ShareData();
  15. }
  16. public function getTokenData()
  17. {
  18. $res = $this->faceMergeTokenDb
  19. ->select([
  20. '*'
  21. ])
  22. ->first();
  23. // \Log::info($res);
  24. // 整理返回值並返回
  25. return $res;
  26. }
  27. public function getAccessToken()
  28. {
  29. // \Log::info('service start!');
  30. $param = [
  31. 'grant_type' => 'client_credentials',
  32. 'client_id' => config('services.ai_face.client_id'),
  33. 'client_secret' => config('services.ai_face.client_secret'),
  34. ];
  35. $url = config('services.ai_face.token_url') . '?' . http_build_query($param);
  36. $client = new Client();
  37. $response = $client->request('POST', $url);
  38. // \Log::info('url: '.$url);
  39. // \Log::info('client_id: '.config('services.ai_face.client_id'));
  40. // \Log::info('client_secret: '.config('services.ai_face.client_secret'));
  41. return json_decode($response->getBody());
  42. }
  43. public function setTokenByDay($accessToken, $type)
  44. {
  45. // DB::enableQueryLog();
  46. if ($type=='insert') {
  47. $this->faceMergeTokenDb
  48. ->insert([
  49. 'accessToken' => $accessToken,
  50. 'updateDate' => date("Y-m-d"),
  51. 'updateTime' => date("H:i:s"),
  52. ]);
  53. } else if ($type=='update') {
  54. $this->faceMergeTokenDb
  55. ->where('id', '1')
  56. ->update([
  57. 'accessToken' => $accessToken,
  58. 'updateDate' => date("Y-m-d"),
  59. 'updateTime' => date("H:i:s"),
  60. ]);
  61. }
  62. // \Log::debug(DB::getQueryLog());
  63. }
  64. public function getMergeData($accessToken, $preData)
  65. {
  66. $param = [
  67. 'access_token' => $accessToken,
  68. ];
  69. $headers = [
  70. 'Content-Type' => 'application/json',
  71. ];
  72. $url = config('services.ai_face.merge_url') . '?' . http_build_query($param);
  73. $client = new Client();
  74. $response = $client->request('POST', $url , [
  75. 'headers' => $headers,
  76. 'body' => json_encode($preData),
  77. ]);
  78. if ($response->getStatusCode()==200) {
  79. $res=json_decode($response->getBody(),true);
  80. }
  81. else
  82. Log::error('error: '.$response->getStatusCode());
  83. return json_decode($response->getBody());
  84. }
  85. public function getShareId()
  86. {
  87. $id = $this->shareDataDb
  88. ->select([
  89. 'id'
  90. ])
  91. ->orderBy('id', 'desc')
  92. ->first();
  93. // ->toArray()
  94. if (!$id) {
  95. $id['id'] = '0';
  96. }
  97. // \Log::debug(print_r($id,true));
  98. return $id['id'];
  99. }
  100. public function saveShareData($shareId, $title, $desc, $imageName)
  101. {
  102. $this->shareDataDb
  103. ->insert([
  104. 'id' => $shareId,
  105. 'title' => $title,
  106. 'desc' => $desc,
  107. 'imageName' => $imageName,
  108. 'createDate' => date("Y-m-d H:i:s"),
  109. ]);
  110. }
  111. public function getShareData($shareId)
  112. {
  113. $res = $this->shareDataDb
  114. ->select([
  115. '*'
  116. ])
  117. ->where('id', '=', $shareId)
  118. ->first();
  119. // ->toArray()
  120. // 整理返回值並返回
  121. return $res;
  122. }
  123. }