user(); $keyword = $request->get('keyword'); $id = $request->get('video_id'); // if(empty($keyword)){ // return $this->failure('请输入关键词'); // } $list = Video::query()->join('users','video.user_id','=','users.id') ->when(!empty($keyword),function ($query) use($keyword){ $query->where('users.name','like','%'.$keyword.'%') ->orWhere('video.video_title','like','%'.$keyword.'%') ->orWhere('video.desc','like','%'.$keyword.'%') ->orWhere('video.country','like','%'.$keyword.'%'); }) ->when(!empty($id),function ($query) use ($id){ $query->where('video.id',$id); }) ->where('video.status',Video::STATUS_OPEN) ->select('users.avatar','users.sex','users.name','users.mobile','users.birthday','video.*') ->limit(10) ->get(); if(!empty($keyword)){ VideoSearch::create(['user_id'=>$user->id,'keyword'=>$keyword]); } foreach ($list as $item){ $item->is_collect = VideoCollect::isCollect($item->id,$user->id); $service_user = Collaborator::where('user_id',$item->user_id)->first(); if(!empty($service_user)){ $item->name = $service_user->name; $item->avatar = $service_user->avatar; } } $data = Video::dealAcCid($list); return $this->success('ok',$data); }catch (\Exception $e){ AddErrorLog::dispatch('searchVideo file:'.$e->getFile().' line:'.$e->getLine().' message:'.$e->getMessage())->onQueue('health'); return $this->failure("搜索异常"); } } public function getSearchLog(){ try { $user = auth()->user(); $search_list = VideoSearch::where('user_id',$user->id)->where('is_del',VideoSearch::DEL_STATUS_NO) ->select('keyword', DB::raw('MAX(id) AS id')) ->groupBy('keyword') ->orderByDesc('id') ->limit(50)->get(); $hot_keyword = VideoSearch::select(DB::raw('count(*) as count'),DB::raw('keyword')) ->groupBy('keyword')->orderByDesc('count') ->limit(20) ->get()?->toArray(); if(!empty($hot_keyword)){ $hot_keyword = get_random_elements($hot_keyword, 7); sort($hot_keyword); } return $this->success('ok',compact('search_list','hot_keyword')); }catch (\Exception $e){ AddErrorLog::dispatch('getSearchInfo file:'.$e->getFile().' line:'.$e->getLine().' message:'.$e->getMessage())->onQueue('health'); return $this->failure("获取失败"); } } public function delSearchLog(Request $request){ try { $user = auth()->user(); $id = $request->get('id'); $is_del_all = $request->get('is_del_all'); if($is_del_all){ VideoSearch::where('user_id',$user->id)->update(['is_del'=>VideoSearch::DEL_STATUS_YES]); }else{ if(empty($id)){ return $this->failure('id不为空'); } //软删除所有相关关键词记录 $log = VideoSearch::where('id',$id)->first(); VideoSearch::where('keyword',$log->keyword)->update(['is_del'=>VideoSearch::DEL_STATUS_YES]); } return $this->success('ok'); }catch (\Exception $e){ AddErrorLog::dispatch('delSearchLog file:'.$e->getFile().' line:'.$e->getLine().' message:'.$e->getMessage())->onQueue('health'); return $this->failure("删除失败"); } } public function getVideoList(){ try { $user = auth()->user(); $list = Video::where('status',Video::STATUS_OPEN)->orderByDesc('id')->paginate(); foreach ($list as $item){ $item->user = User::select('name','birthday','avatar')->find($item->user_id); if(empty($item->user)){ continue; } $service_user = Collaborator::where('user_id',$item->user_id)->first(); if(!empty($service_user)){ $item->user->name = $service_user->name; $item->user->avatar = $service_user->avatar; } $item->user->ac_cid =make_wangyiyun_accid($item->user_id); //查看当前用户是否收藏视频 $item->is_collect = VideoCollect::isCollect($item->id,$user->id); } return $this->success('ok',$list); }catch (\Exception $e){ AddErrorLog::dispatch('getVideoList file:'.$e->getFile().' line:'.$e->getLine().' message:'.$e->getMessage())->onQueue('health'); return $this->failure("获取失败"); } } public function getVideoDetail($id){ try { $detail = Video::findOrfail($id); $detail->user = User::select('name','birthday','avatar')->find($detail->user_id); $service_user = Collaborator::where('user_id',$detail->user_id)->first(); if(!empty($service_user)){ $detail->user->name = $service_user->name; $detail->user->avatar = $service_user->avatar; } $detail->ai_img = "https://img.99ppt.com/pic/a81d5ce4-da64-41a8-bdb2-ad19f5a4aad5.png"; $detail->status_img = "https://tva1.sinaimg.cn/large/cbc1qrn7xh648wnlqp4x8q5wchk6dt2yky6yyuv6xw7.jpg"; return $this->success('ok',$detail); }catch (\Exception $e){ AddErrorLog::dispatch('getVideoDetail file:'.$e->getFile().' line:'.$e->getLine().' message:'.$e->getMessage())->onQueue('health'); return $this->failure("获取失败"); } } public function collectVideo(Request $request){ try { $user = auth()->user(); $video_id = $request->input('video_id'); $video_info = Video::find($video_id); if(empty($video_info)){ return $this->failure('视频错误'); } $is_cancel = $request->input('is_cancel'); if($is_cancel){ VideoCollect::where('video_id',$video_id)->where('user_id',$user->id)->delete(); }else{ VideoCollect::create(['user_id'=>$user->id,'video_id'=>$video_id,'video_user_id'=>$video_info->user_id]); } return $this->success('ok'); }catch (\Exception $e){ AddErrorLog::dispatch('collectVideo file:'.$e->getFile().' line:'.$e->getLine().' message:'.$e->getMessage())->onQueue('health'); return $this->failure("收藏失败"); } } public function getCollect(Request $request){ try { $user = auth()->user(); $is_collect_my = $request->input('is_collect_my'); $query = VideoCollect::query(); if($is_collect_my){ // $list = $query->join('users','users.id','=','video_collect.user_id') // ->select('users.name','users.avatar','users.birthday','video_collect.*') // ->where('video_collect.video_user_id',$user->id) // ->paginate(); $list = $query->with('video','user','videoUser')->where('video_user_id',$user->id) ->orderByDesc('id') ->paginate(); foreach ($list as $item){ $item->collect_video = Video::where('user_id',$item->user_id)->orderByDesc('id')->first(); } }else{ // $list = $query->join('video','video.id','=','video_collect.video_id') // ->select('video.*') // ->where('video_collect.user_id',$user->id) // ->orderByDesc('id') // ->paginate(); $list = $query->with('video','user','videoUser')->where('user_id',$user->id) ->orderByDesc('id') ->paginate(); } $list = Video::dealAcCid($list); return $this->success('ok',$list); }catch (\Exception $e){ AddErrorLog::dispatch('collectVideo file:'.$e->getFile().' line:'.$e->getLine().' message:'.$e->getMessage())->onQueue('health'); return $this->failure("获取失败"); } } public function visitor(Request $request){ try { $user = auth()->user(); $video_id = $request->input('video_id'); if(empty($video_id)){ return $this->failure('视频错误'); } $video_info = Video::find($video_id); if(empty($video_info)){ return $this->failure('视频错误'); } if($video_info->user_id == $user->id){ return $this->success('ok'); } //访问过只更新访问时间,不再添加记录 $visitor = VideoVisitor::where('user_id',$user->id)->where('video_id',$video_id)->first(); if($visitor){ $visitor->touch(); }else{ VideoVisitor::create(['user_id'=>$user->id,'video_id'=>$video_id,'video_user_id'=>$video_info->user_id]); } return $this->success('ok'); }catch (\Exception $e){ AddErrorLog::dispatch('visitor file:'.$e->getFile().' line:'.$e->getLine().' message:'.$e->getMessage())->onQueue('health'); return $this->failure("视频错误"); } } public function getMyVisitor(){ try { $user = auth()->user(); $list = VideoVisitor::join('users','users.id','=','video_visitor.user_id') ->select('users.name','users.avatar','users.birthday','video_visitor.*') ->where('video_user_id',$user->id) ->paginate(); foreach ($list as $item){ $item->video = Video::where('user_id',$item->user_id)->orderByDesc('id')->first(); } $list = Video::dealAcCid($list); return $this->success('ok',$list); }catch (\Exception $e){ AddErrorLog::dispatch('getMyVisitor file:'.$e->getFile().' line:'.$e->getLine().' message:'.$e->getMessage())->onQueue('health'); return $this->failure("视频错误"); } } }