| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 | <?phpnamespace Modules\Video\Http\Controllers;use Catch\Base\CatchController;use Illuminate\Foundation\Validation\ValidatesRequests;use Illuminate\Http\Request;use Illuminate\Support\Facades\DB;use Illuminate\Support\Facades\Redis;use Illuminate\Support\Facades\Response;use Modules\Common\Errors\Errors;use Modules\Common\Exceptions\CommonBusinessException;use Modules\Manage\Services\WechatMiniprogramService;use Modules\Video\Services\WechatCheckSyncService;class VideoSeriesWechatCheckController extends CatchController{    use ValidatesRequests;    /**     * 剧集同步到微信     * @param Request $request     */    public function syncWechat(Request $request) {        $this->validate($request, [            'series_ids' => 'required|array'        ]);        $series_ids = $request->input('series_ids');        $series = DB::table('video_series')            ->join('videos', 'video_series.video_id', 'videos.id')            ->whereIn('video_series.id', $series_ids)            ->where(['video_series.is_enabled' => 1])            ->select('video_series.video_id', 'videos.name', 'video_series.series_sequence',                'video_series.id', 'video_series.video_key')            ->get();        if(collect($series_ids)->count() != $series->count()) {            CommonBusinessException::throwError(Errors::VIDEO_SERIES_NOT_EXISTS);        }        $appid = WechatMiniprogramService::getDuanjuCheckAppid();        $accessToken = WechatMiniprogramService::getDuanjuCheckAccessToken($appid);        $now = date('Y-m-d H:i:s');        foreach ($series as $item) {            $item->video_url = config('common.qiniu.publicVideoLinkDomain') . DIRECTORY_SEPARATOR . $item->video_key;            $item->media_name = sprintf('%s - 第%s集', $item->name, $item->series_sequence);            $parsedContent = WechatCheckSyncService::pullupload($item, $accessToken);            if(false === $parsedContent || (0 != ($parsedContent['errcode'] ?? 0))) {                CommonBusinessException::throwError(Errors::SYNC_WECHAT_NOT_OK);            }            $taskId = $parsedContent['task_id'];            DB::table('video_series_wechat_check')                ->where(['series_id' => $item->id, 'is_enabled' => 1])                ->update(['is_enabled' => 0, 'updated_at' => $now]);            DB::table('video_series_wechat_check')                ->insert([                    'series_id' => $item->id,                    'sync_task_id' => $taskId, 'appid' => $appid,                    'created_at' => $now, 'updated_at' => $now,                    'video_id' => $item->video_id,                ]);        }        return 'ok';    }    /**     * 获取微信方的剧集播放链接     * @param Request $request     * @return mixed     * @throws \Illuminate\Validation\ValidationException     */    public function medialink(Request $request) {        $this->validate($request, [            'series_id' => 'required'        ]);        $seriesId = $request->input('series_id');        $redisKey = WechatCheckSyncService::getWechatMediaLinkRedisKey($seriesId);        $link = Redis::get($redisKey);        if($link) {            return $link;        }        $medialinkInfo = WechatCheckSyncService::getMedialinkInfo($seriesId);        if(false === $medialinkInfo) {            CommonBusinessException::throwError(Errors::GET_WECHAT_MEDIA_LINK_ERROR);        }        $link = $medialinkInfo['mp4_url'];        Redis::setex($redisKey, 6000, $link);        return $link;    }    /**     * 获取审核证据     * todo:fix     * @param Request $request     * @throws \Illuminate\Validation\ValidationException     */    public function listEvidence(Request $request) {        $this->validate($request, [            'series_id' => 'required'        ]);        $info = DB::table('video_series_wechat_check')            ->where([                'series_id' => $request->input('series_id'),                'is_enabled' => 1            ])->orderBy('id', 'desc')            ->select('evidence_material_id_list', 'appid')->first();        if($info) {            $evidence_material_id_lists = \json_decode($info->evidence_material_id_list, true);            $accessToken = WechatMiniprogramService::getDuanjuCheckAccessToken($info->appid);        }    }    public function test(Request $request) {        foreach (['1228789.jpg'] as $i) {            $path = storage_path(uniqid());            file_put_contents($path, file_put_contents(app_path($i)));            return response()->file($path);        }    }}
 |