middleware('auth')->except(['show', 'category']); View::share('nav', 3); } public function index(Request $request) { $type = $request->type ?? 'unoverdue'; $lists = SellerLessonLog::with('lesson')->whereHas('lesson', function ($query) use ($type) { if ($type == 'unoverdue') { $query->where('end_at', '>=', date('Y-m-d H:i:s', strtotime("+1 days", time()))); } else { $query->where('end_at', '<=', date('Y-m-d H:i:s', strtotime("+1 days", time()))); } })->where('user_id', Auth::id())->where('status', 1)->get(); view()->share('nav', 3); return view('lesson.index', compact('lists', 'type')); } public function show(SellerLesson $lesson) { if (Auth::guest()) { $favorite = collect(); } else { $favorite = Auth::user()->lessonFavorite()->where('item_id', $lesson->id)->first(); } $cart = Cart::where('user_id', Auth::id())->where('lesson_id', $lesson->id)->first(); return view('lesson.show', compact('lesson', 'favorite', 'cart')); } //分类 public function category(Request $request) { $category_id = $request->category_id; $location = Parent::getDefaultLocation(); $lat = $location['lat']; $lng = $location['lng']; $area = $location['area']; $category = Category::find($category_id); $user = Auth::user(); $organCateIds = []; if ($user && $user->organ) { $organCateIds = $user->organ->top_cate_id; } $lists = SellerLesson::with(['organ' => function ($query) use ($lat, $lng) { $query->select('id', 'name', 'storage_id', 'user_id', 'category_id', DB::raw('round(ACOS(SIN((' . $lat . ' * 3.1415) / 180 ) *SIN((lat * 3.1415) / 180 ) +COS((' . $lat . ' * 3.1415) / 180 ) * COS((lat * 3.1415) / 180 ) *COS((' . $lng . ' * 3.1415) / 180 - (lng * 3.1415) / 180 ) ) * 6380,2) as distance')); }])->when(is_numeric($category_id), function ($query) use ($category_id) { $query->whereHas('category', function ($q) use ($category_id) { $q->where('id', $category_id)->Orwhere('parent_id', $category_id); }); })->when($area, function ($query) use ($area) { $query->whereHas('organ', function ($query) use ($area) { if ($area->depth == 2) { $query->where('city_sn', $area->sn); } elseif ($area->depth == 3) { $query->where('area_sn', $area->sn); } else { $query->where('province_sn', $area->sn); } }); })->when(in_array($category_id, $organCateIds), function ($q) use ($user) { $q->where('seller_id', $user->organ->id); })->where('status', 1)->get(); $search_id = ($category->parent_id == 1) ? $category->id : $category->parent_id; $categorys = Category::with('storage')->where('parent_id', $search_id) ->orderBy('sort', 'asc') ->orderBy('created_at', 'desc')->get(); return view('lesson.category', compact('lists', 'categorys', 'search_id')); } public function report(Request $request) { return view('lesson.report'); } //所有课程 public function all(Request $request) { $user = Auth::user(); $category_id = $request->category_id ?? ''; $location = Parent::getDefaultLocation(); $lat = $location['lat']; $lng = $location['lng']; $area = $location['area']; $organCateIds = []; if ($user && $user->organ) { $organCateIds = $user->organ->top_cate_id; } $lists = SellerLesson::with(['organ' => function ($query) use ($lat, $lng) { $query->select('id', 'name', 'storage_id', 'user_id', 'category_id', DB::raw('round(ACOS(SIN((' . $lat . ' * 3.1415) / 180 ) *SIN((lat * 3.1415) / 180 ) +COS((' . $lat . ' * 3.1415) / 180 ) * COS((lat * 3.1415) / 180 ) *COS((' . $lng . ' * 3.1415) / 180 - (lng * 3.1415) / 180 ) ) * 6380,2) as distance')); }])->when(is_numeric($category_id), function ($query) use ($category_id) { $query->whereHas('category', function ($q) use ($category_id) { $q->where('id', $category_id)->Orwhere('parent_id', $category_id); }); })->when($area, function ($query) use ($area) { $query->whereHas('organ', function ($query) use ($area) { if ($area->depth == 2) { $query->where('city_sn', $area->sn); } elseif ($area->depth == 3) { $query->where('area_sn', $area->sn); } else { $query->where('province_sn', $area->sn); } }); })->when(in_array($category_id, $organCateIds), function ($q) use ($user) { $q->where('seller_id', $user->organ->id); })->where('status', 1)->get(); $lists = $lists->sortBy('button_value'); $categorys = Category::with('storage')->where('parent_id', 1) ->orderBy('sort', 'asc') ->get(); return view('lesson.all', compact('lists', 'categorys')); } }