lifetime; } public function getKey($id = null) { return "course_recommended_list:{$id}"; } public function getContent($id = null) { $courses = $this->findCourses(5); if ($courses->count() == 0) { return []; } return $this->handleContent($courses); } /** * @param CourseModel[] $courses * @return array */ public function handleContent($courses) { $result = []; foreach ($courses as $course) { $userCount = $course->user_count; if ($course->fake_user_count > $course->user_count) { $userCount = $course->fake_user_count; } $result[] = [ 'id' => $course->id, 'title' => $course->title, 'cover' => $course->cover, 'model' => $course->model, 'level' => $course->level, 'rating' => round($course->rating, 1), 'market_price' => (float)$course->market_price, 'vip_price' => (float)$course->vip_price, 'user_count' => $userCount, 'lesson_count' => $course->lesson_count, 'review_count' => $course->review_count, 'favorite_count' => $course->favorite_count, ]; } return $result; } /** * @param int $limit * @return ResultsetInterface|Resultset|CourseModel[] */ public function findCourses($limit = 5) { return CourseModel::query() ->where('market_price > 0') ->andWhere('published = 1') ->andWhere('deleted = 0') ->orderBy('RAND()') ->limit($limit) ->execute(); } }