From 8914a41ac634fa4f24eefcb4222864b7eff0f5d6 Mon Sep 17 00:00:00 2001 From: daiao <358551898@qq.com> Date: Fri, 7 Feb 2020 18:14:40 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8A=E4=BC=A0=E8=A7=86=E9=A2=91=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/courses_controller.rb | 8 ++++++++ app/helpers/courses_helper.rb | 2 ++ app/models/course.rb | 4 ++++ app/models/course_video.rb | 4 ++++ app/models/video.rb | 1 + app/services/videos/batch_publish_service.rb | 5 +++++ app/views/courses/course_videos.json.jbuilder | 2 ++ config/routes.rb | 1 + db/migrate/20200207094432_create_course_videos.rb | 9 +++++++++ spec/models/course_video_spec.rb | 5 +++++ 10 files changed, 41 insertions(+) create mode 100644 app/models/course_video.rb create mode 100644 app/views/courses/course_videos.json.jbuilder create mode 100644 db/migrate/20200207094432_create_course_videos.rb create mode 100644 spec/models/course_video_spec.rb diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index c946cd5c1..89b77fd3e 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -1,6 +1,7 @@ class CoursesController < ApplicationController include MessagesHelper include ExportHelper + include CustomSortable # model validation error rescue_from ActiveRecord::RecordInvalid do |ex| @@ -100,6 +101,13 @@ class CoursesController < ApplicationController @courses = @courses.preload(:school, :none_hidden_course_modules, teacher: :user_extension) end + def course_videos + videos = @course.videos + videos = custom_sort(videos, params[:sort_by], params[:sort_direction]) + @count = videos.count + @videos = paginate videos + end + def visits_plus_one new_visits = @course.visits + 1 @course.update_visits(new_visits) diff --git a/app/helpers/courses_helper.rb b/app/helpers/courses_helper.rb index a28668c6b..769314815 100644 --- a/app/helpers/courses_helper.rb +++ b/app/helpers/courses_helper.rb @@ -65,6 +65,8 @@ module CoursesHelper "/courses/#{course.id}/course_groups" when "statistics" "/courses/#{course.id}/statistics" + when "video" + "/courses/#{course.id}/course_videos" end end diff --git a/app/models/course.rb b/app/models/course.rb index eb7ffd91f..0326842ef 100644 --- a/app/models/course.rb +++ b/app/models/course.rb @@ -81,6 +81,10 @@ class Course < ApplicationRecord # 老版的members弃用 现用course_members has_many :members + # 视频 + has_many :course_videos, dependent: :destroy + has_many :videos, through: :course_videos + validate :validate_sensitive_string scope :hidden, ->(is_hidden = true) { where(is_hidden: is_hidden) } diff --git a/app/models/course_video.rb b/app/models/course_video.rb new file mode 100644 index 000000000..e61a439dc --- /dev/null +++ b/app/models/course_video.rb @@ -0,0 +1,4 @@ +class CourseVideo < ApplicationRecord + belongs_to :course + belongs_to :video +end diff --git a/app/models/video.rb b/app/models/video.rb index 9af87fe85..6f5f79ca6 100644 --- a/app/models/video.rb +++ b/app/models/video.rb @@ -4,6 +4,7 @@ class Video < ApplicationRecord belongs_to :user has_many :video_applies, dependent: :destroy + has_many :course_videos, dependent: :destroy has_one :processing_video_apply, -> { where(status: :pending) }, class_name: 'VideoApply' aasm(:status) do diff --git a/app/services/videos/batch_publish_service.rb b/app/services/videos/batch_publish_service.rb index e435b9508..fbd7e7c73 100644 --- a/app/services/videos/batch_publish_service.rb +++ b/app/services/videos/batch_publish_service.rb @@ -27,6 +27,11 @@ class Videos::BatchPublishService < ApplicationService video.video_applies.create! video_ids << video.id + + # 如果是课堂上传则创建课堂记录 + if params[:course_id].present? + video.course_videos.create!(course_id: params[:course_id]) + end end end diff --git a/app/views/courses/course_videos.json.jbuilder b/app/views/courses/course_videos.json.jbuilder new file mode 100644 index 000000000..e88ea6e28 --- /dev/null +++ b/app/views/courses/course_videos.json.jbuilder @@ -0,0 +1,2 @@ +json.count @count +json.videos @videos, partial: 'users/videos/video', as: :video \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index a4f8b80f6..2ed53511e 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -515,6 +515,7 @@ Rails.application.routes.draw do get 'work_score' get 'act_score' get 'statistics' + get 'course_videos' post :inform_up post :inform_down get :calculate_all_shixun_scores diff --git a/db/migrate/20200207094432_create_course_videos.rb b/db/migrate/20200207094432_create_course_videos.rb new file mode 100644 index 000000000..f6628762c --- /dev/null +++ b/db/migrate/20200207094432_create_course_videos.rb @@ -0,0 +1,9 @@ +class CreateCourseVideos < ActiveRecord::Migration[5.2] + def change + create_table :course_videos do |t| + t.references :course + t.references :video + t.timestamps + end + end +end diff --git a/spec/models/course_video_spec.rb b/spec/models/course_video_spec.rb new file mode 100644 index 000000000..ea9553e23 --- /dev/null +++ b/spec/models/course_video_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe CourseVideo, type: :model do + pending "add some examples to (or delete) #{__FILE__}" +end