user(); $keyword = $request->get('keyword'); 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.'%'); }) ->where('video.status',Video::STATUS_OPEN) ->select('users.avatar','users.sex','users.name','users.mobile','users.birthday','video.*') ->limit(10) ->get(); // 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 max_id')) ->groupBy('keyword')->orderByDesc('max_id')->limit(50)->get(); $hot_keyword = VideoSearch::select(DB::raw('count(*) as count'),DB::raw('keyword')) ->groupBy('keyword')->orderByDesc('count') ->limit(20) ->get()?->toArray(); $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不为空'); } VideoSearch::where('id',$id)->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(Request $request){ try { // $user = auth()->user(); $no_page = $request->get('no_page'); $video_id = $request->get('video_id'); $query = Video::query(); $query->whereNotIn('id',[21,22,23]); if(!empty($video_id)){ $query->orderByRaw("FIELD(id, $video_id) DESC"); } $query->where('status',Video::STATUS_OPEN); $query->orderByDesc('id'); if($no_page){ $list = $query->get(); }else{ $list = $query->paginate(); } // $list = Video::orderByDesc('id')->paginate(); foreach ($list as $item){ $item->user = User::select('name','birthday','avatar')->find($item->user_id); if(!$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); $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("视频错误"); } } }