WechatCheck.php 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. namespace App\Jobs\Video;
  3. use App\Service\Miniprogram\Wechat\AccessTokenService;
  4. use App\Service\Util\Support\Http\WechatURL;
  5. use App\Service\Util\Support\Trace\TraceContext;
  6. use App\Service\Util\Support\Http\HttpRequestService;
  7. use GuzzleHttp\Psr7\Utils;
  8. use Illuminate\Bus\Queueable;
  9. use Illuminate\Contracts\Queue\ShouldBeUnique;
  10. use Illuminate\Contracts\Queue\ShouldQueue;
  11. use Illuminate\Foundation\Bus\Dispatchable;
  12. use Illuminate\Queue\InteractsWithQueue;
  13. use Illuminate\Queue\SerializesModels;
  14. use Illuminate\Support\Arr;
  15. use Illuminate\Support\Facades\Redis;
  16. use Predis\Command\Traits\DB;
  17. class WechatCheck implements ShouldQueue
  18. {
  19. use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
  20. private $info;
  21. /**
  22. * Create a new job instance.
  23. */
  24. public function __construct($info)
  25. {
  26. $this->info = $info;
  27. }
  28. /**
  29. * Execute the job.
  30. */
  31. public function handle(): void
  32. {
  33. myLog('wechatCheck')->info('开始处理微信提审', [
  34. 'info' => $this->info
  35. ]);
  36. $traceContext = TraceContext::newFromParent($this->info['traceInfo']);
  37. $id = $this->info['id'];
  38. $record = DB::table('video_wechat_check')
  39. ->join('videos', 'videos.id', 'video_wechat_check.video_id')
  40. ->where(['video_wechat_check.id' => $id,
  41. 'video_wechat_check.is_enabled' => 1, 'video_wechat_check.status' => 0])
  42. ->select('video_wechat_check.*', 'videos.name as video_name', 'videos.cover_image as video_cover_image')
  43. ->first();
  44. if(!$record) {
  45. myLog('WechatCheck')->info('当前状态不支持提审', [
  46. 'traceInfo' => $traceContext->getTraceInfo()
  47. ]);
  48. return;
  49. }
  50. $accessToken = Redis::get(AccessTokenService::getAccessTokenRedisKey($record->appid ?:
  51. config('wechat.duanju.masterAppid')));
  52. $medias = DB::table('video_series_wechat_check')
  53. ->where('video_id', $record->video_id)
  54. ->where(['sync_status' => 4, 'is_enabled' => 1])
  55. ->where('media_id', '<>', 0)
  56. ->get();
  57. $cover_material_id = $this->getMaterialId($record->video_cover_image, $accessToken);
  58. $authorized_material_id = $this->getMaterialId($record->authorized_img, $accessToken);
  59. $publish_license_material_id = $this->getMaterialId($record->production_license_img, $accessToken);
  60. $postData = [
  61. 'name' => $record->video_name,
  62. 'media_count' => $medias->count(),
  63. 'media_id_list' => $medias->pluck('media_id')->toArray(),
  64. 'producer' => $record->producer,
  65. 'cover_material_id' =>$cover_material_id,
  66. 'authorized_material_id' => $authorized_material_id,
  67. 'publish_license' => $record->publish_license,
  68. ''
  69. ];
  70. if($record->drama_id) {
  71. $postData['drama_id'] = $record->drama_id;
  72. }
  73. HttpRequestService::simplePost(WechatURL::vod_auditdrama . $accessToken, );
  74. }
  75. public function getMaterialId($url, $accessToken){
  76. $result = HttpRequestService::post(WechatURL::media_upload. $accessToken, [
  77. 'multipart' => [
  78. [
  79. 'name' => 'type',
  80. 'contents' => 'image',
  81. ],
  82. [
  83. 'name' => 'media',
  84. 'contents' => file_get_contents($url),
  85. 'filename' => Arr::last(explode('/', $url)),
  86. ]
  87. ]
  88. ]);
  89. return $result;
  90. }
  91. }