| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103 | <?phpnamespace Modules\Video\Services;use GuzzleHttp\Client;use Illuminate\Support\Facades\DB;use Modules\Common\Errors\Errors;use Modules\Common\Exceptions\CommonBusinessException;use Modules\Manage\Services\WechatMiniprogramService;class WechatCheckSyncService{    /**     * 拉取上传     * @param $item 剧集信息     * @param $accessToken 小程序accessToken     * @return  string task_id     * @throws \GuzzleHttp\Exception\GuzzleException     */    public static function pullupload($item, $accessToken) {        $url = 'https://api.weixin.qq.com/wxa/sec/vod/pullupload?access_token='.$accessToken;        $parsedContent = self::postWechat($url, [            'media_name' => $item->media_name,            'media_url' => $item->video_url        ]);        return $parsedContent['task_id'];    }    /**     * 获取微信短剧剧集的播放链接信息     * @param $seriesId     * @return mixed     * @throws \GuzzleHttp\Exception\GuzzleException     */    public static function getMedialinkInfo($seriesId) {        $syncInfo = DB::table('video_series_wechat_check')            ->where([                'series_id'=> $seriesId,                'sync_status' => 3,                'is_enabled' => 1,            ])->first();        if(!$syncInfo || !$syncInfo->media_id) {            CommonBusinessException::throwError(Errors::SYNC_WECHAT_NOT_OK);        }        $mediaId = $syncInfo->media_id;        $accessToken = WechatMiniprogramService::getDuanjuCheckAccessToken($syncInfo->appid);        $url = 'https://api.weixin.qq.com/wxa/sec/vod/getmedialink?access_token='.$accessToken;        $parsedContent = self::postWechat($url, [            'media_id' => $mediaId,            't' => time() + 7200,        ]);        return $parsedContent['media_info'];    }    public static function getWechatMediaLinkRedisKey($seriesId) {        return 'wechat.medialink.'.$seriesId;    }    public static function getTask($syncInfo) {        try {            $accessToken = WechatMiniprogramService::getDuanjuCheckAccessToken($syncInfo->appid);            $url = 'https://api.weixin.qq.com/wxa/sec/vod/gettask?access_token='.$accessToken;            $parsedContent = self::postWechat($url, [                'task_id' => $syncInfo->sync_task_id            ]);            return $parsedContent['task_info'];        } catch (\Exception $exception) {            return [];        }    }    /**     *  post 请求微信上游     * @param $url     * @param $data     * @throws \GuzzleHttp\Exception\GuzzleException     */    public static function postWechat($url, $data) {        $client = new Client(['timeout' => 3]);        $httpResult = $client->post($url, $data);        $httpStatus = $httpResult->getStatusCode();        if(200 != $httpStatus) {            CommonBusinessException::throwError(Errors::REQUEST_HTTP_STATUS_ERROR);        }        $httpContent = $httpResult->getBody()->getContents();        $parsedContent = \json_decode($httpContent, true);        if(0 != ($parsedContent['errcode'] ?? 0)) {            myLog('WechatCheckSync')->error('请求微信异常', [                'url' => $url,                'data' => $data,                'errMsg' => $httpContent            ]);            CommonBusinessException::throwError(Errors::REQUEST_CODE_STATUS_ERROR);        }        return $parsedContent;    }}
 |