withCount(['information','service','activity','course','video','test','shop'])->first(); $anchor = Anchor::where('mobile',$account->mobile)->first(); $account->name = '匿名商户'; $account->avatar = User::DefaultAvatar; if($anchor){ $anchor->pic = $anchor->pic == '' ? User::DefaultAvatar : $anchor->pic; $account->name = $anchor->name; } $services = []; if($account->information_count>0) $services[] = 'information'; if($account->service_count>0) $services[] = 'service'; if($account->activity_count>0) $services[] = 'activity'; if($account->course_count>0) $services[] = 'course'; if($account->video_count>0) $services[] = 'video'; $ids = ConsultAccount::where('merchant_id',$merchant_id)->pluck('id')->toArray(); $account->consult_count = Consultation::whereIn('consult_account_id',$ids)->count(); if($account->consult_count>0) $services[] = 'consult'; if($account->test_count>0) $services[] = 'test'; if($account->shop_count>0) $services[] = 'shop'; $account->services = $services; $jump_url = urlencode(env('APP_URL').'/pu/#/'); $url = env('APP_URL').'/api/official/live/wechat/FamilyAuth?merchant_id='.$merchant_id.'&url='.$jump_url; $qr_codes = Redis::get('HomePage_S'.$merchant_id); if(!$qr_codes){ $qr_code = $this->getPreviewQrcode($url); Redis::setex('HomePage_S'.$merchant_id,60*60*24*30,$qr_code); $qr_codes = Redis::get('HomePage_S'.$merchant_id); } $share_url = env('APP_URL').'/api/official/live/wechat/FamilyAuth?merchant_id='.$merchant_id.'&url='.$jump_url; return $this->success('ok',compact('account','anchor','qr_codes','share_url')); } //单个老师的课程列表 public function merchantCourses(Request $request, $merchant_id=0) { try{ //课程列表 if ($merchant_id) { //$courses = Course::with('tagged')->where('merchant_id', $merchant_id); $courses = Course::where('merchant_id', $merchant_id)->withCount('videos'); }else{ //$courses = Course::with('tagged'); $courses = Course::where('id','>',0)->withCount('videos'); } $keyword = $request->input('keyword'); if ($keyword){ $courses = $courses->where('title', 'like', '%'.trim($keyword).'%'); } if(isset($request->is_love_show) && in_array($request->is_love_show,[0,1])) { $courses = $courses->where('is_love_show', $request->is_love_show); } $courses = $courses->orderBy('id','desc')->paginate(); foreach($courses as $course){ $course_tags = []; foreach($course->tags as $tag) { $course_tags[] = $tag->name; } $course->course_tags = $course_tags; unset($course->tagged); } return $this->success('ok', $courses); }catch(\Exception $e){ $this->getError($e); return $this->failure('数据错误,请联系开发人员'.$e->getMessage()); } } /** 老师服务列表 */ public function merchantServices(Request $request, $merchant_id=0) { try{ $activities = $this->getCommunityActities($merchant_id, $class='many',$request); return $this->success('ok', $activities); }catch(\Exception $e){ $this->getError($e); return $this->failure("获取服务列表失败,请稍后再试"); } } /** 老师活动列表 */ public function merchantActivities(Request $request, $merchant_id=0) { try{ $activities = $this->getCommunityActities($merchant_id, $class='one',$request); return $this->success('ok', $activities); }catch(\Exception $e){ $this->getError($e); return $this->failure("获取活动列表失败,请稍后再试"); } } /** 老师资讯列表 */ public function merchantInfos(Request $request, $merchant_id=0) { try{ if ($merchant_id) { $infos = MerchantInformation::where('merchant_id', $merchant_id)->orderBy('id', 'desc'); }else{ $infos = MerchantInformation::orderBy('id', 'desc'); } $is_love_show = $request->is_love_show??2; if($is_love_show != 2){ $infos = $infos->where('is_love_show',$is_love_show); } $keyword = trim($request->input('keyword')); if ($keyword) { $infos = $infos->where(function($sql) use($keyword){ $sql->where('title', 'like', '%'.$keyword.'%') ->orWhere('subTitle', 'like', '%'.$keyword.'%'); }); } $infos = $infos->select('id', 'merchant_id', 'title', 'subTitle', 'created_at', 'pic', 'status','is_love_show','reward_status')->paginate(); foreach ($infos as $item) { $item->pv = Redis::zscore('information',$item->id)?:0; } return $this->success('ok', $infos); }catch(\Exception $e){ $this->getError($e); return $this->failure("获取资讯列表失败,请稍后再试"); } } //单个老师的视频列表 public function merchantVideos(Request $request, $merchant_id=0) { try{ //课程列表 if ($merchant_id) { //$courses = Course::with('tagged')->where('merchant_id', $merchant_id); $videos = AnchorVideo::where('m_id', $merchant_id); }else{ //$courses = Course::with('tagged'); $videos = AnchorVideo::where('id','>',0); } $keyword = $request->input('keyword'); if ($keyword){ $videos = $videos->where('title', 'like', '%'.trim($keyword).'%'); } if(isset($request->is_love_show) && in_array($request->is_love_show,[0,1])) { $videos = $videos->where('is_love_show', $request->is_love_show); } $videos = $videos->orderBy('id','desc')->paginate(); foreach ($videos as $key => $video) { $video->pv = Redis::zscore('short_videopv',$video->id)?:0; $video->type = 'video'; } return $this->success('ok', $videos); }catch(\Exception $e){ $this->getError($e); return $this->failure('数据错误,请联系开发人员'.$e->getMessage()); } } //商家问答 public function merchantTests(Request $request, $merchant_id=0) { try { if ($merchant_id) { $tests = QATest::with('merchant')->withCount('record')->where('merchant_id',$merchant_id); } else { $tests = QATest::with('merchant')->withCount('record'); } $keyword = $request->input('keyword'); if ($keyword) { $keyword = trim($keyword); $tests = $tests->where(function($sql) use($keyword){ $sql->where('title', 'like', '%'.$keyword.'%'); }); } $tests = $tests->orderBy('id', 'desc')->paginate(); foreach ($tests as $test) { $test->question = json_decode($request->question); } return $this->success("ok", $tests); } catch (\Exception $e) { $this->getError($e); $this->failure("获取测试列表失败,请稍后再试"); } } //商家商城 public function merchantShops(Request $request, $merchant_id=0) { try { $keyword = $request->keyword; $is_show = $request->is_show??2; if ($merchant_id) { $shops = MerchantShop::with('merchant')->where('merchant_id',$merchant_id); } else { $shops = MerchantShop::with('merchant')->where('title','<>','【预售】JOHN英文原版2021品牌杂志(虚拟商品)'); } if($is_show != 2){ $shops = $shops->where('is_show',$is_show); } if($keyword){ $shops = $shops->where('title','like','%'.$keyword.'%'); } $shops = $shops->paginate(); return $this->success('ok', $shops); } catch (\Exception $e) { $this->getError($e); return $this->failure('获取商品列表失败,请稍后再试'); } } //商家咨询 public function merchantConsults(Request $request, $merchant_id=0) { try{ if ($merchant_id) { //咨询师id $consult_account_ids = ConsultAccount::where('merchant_id', $merchant_id)->pluck('id'); $consults = Consultation::whereIn('consult_account_id', $consult_account_ids)->orderBy('id', 'desc'); }else{ $consults = Consultation::orderBy('id', 'desc'); } $keyword = request()->input('keyword'); if($keyword){ $keyword = trim($keyword); $consults = $consults->where(function($sql) use($keyword){ $sql->where('title','like','%'.$keyword.'%'); }); } $consults = $consults->with('teacher.merchant')->paginate(); return $this->success('ok', $consults); }catch(\Exception $e){ $this->getError($e); return $this->failure("获取服务列表失败,请稍后再试"); } } public function getCommunityActities($merchant_id, $class,$request) { if ($merchant_id) { $activities = CommunityActivity::with('banners:class_id,icon')->where('merchant_id', $merchant_id); }else{ $activities = CommunityActivity::with('banners:class_id,icon')->whereNotIn('title',['如何创建和管理服务','如何创建和管理活动']); } if(isset($request->is_love_show)&&$request->is_love_show!=2){ $activities = $activities->where('is_love_show',$request->is_love_show); } if($request->sortName=='timeSort'){ $sortType = $request->sortType??'desc'; $activities = $activities->orderBy('created_at', $sortType); } if($request->sortName=='hotSort'){ $sortType = $request->sortType??'desc'; $activities = $activities->orderBy('pv', $sortType); } $activities = $activities->orderBy('id', 'desc'); $keyword = request()->input('keyword'); if($keyword){ $keyword = trim($keyword); $activities = $activities->where(function($sql) use($keyword){ $sql->where('title','like','%'.$keyword.'%') ->orWhere('id','like','%'.$keyword.'%'); }); } $activityies = $activities->where('class', $class)->paginate(); return $activityies; } }