@ -1487,9 +1487,7 @@ class CoursesController < ApplicationController
def watch_video_histories
def watch_video_histories
return normal_status ( 403 , " 你没有权限操作 " ) unless current_user . teacher_of_course? ( @course )
return normal_status ( 403 , " 你没有权限操作 " ) unless current_user . teacher_of_course? ( @course )
@videos = CourseVideo . find_by_sql ( "
@videos = CourseVideo . joins ( "
SELECT course_videos . id , videos . user_id , videos . title , IFNULL ( hisotries . time , 0 ) AS time , IFNULL ( hisotries . num , 0 ) AS num
FROM course_videos
JOIN videos ON course_videos . course_id = #{@course.id} AND videos.id = course_videos.video_id
JOIN videos ON course_videos . course_id = #{@course.id} AND videos.id = course_videos.video_id
LEFT JOIN (
LEFT JOIN (
SELECT watch_course_videos . course_video_id , SUM ( watch_course_videos . total_duration ) AS time , COUNT ( watch_course_videos . course_video_id ) AS num
SELECT watch_course_videos . course_video_id , SUM ( watch_course_videos . total_duration ) AS time , COUNT ( watch_course_videos . course_video_id ) AS num
@ -1497,29 +1495,48 @@ class CoursesController < ApplicationController
JOIN course_videos ON course_videos . id = watch_course_videos . course_video_id AND watch_course_videos . end_at IS NOT NULL
JOIN course_videos ON course_videos . id = watch_course_videos . course_video_id AND watch_course_videos . end_at IS NOT NULL
WHERE course_videos . course_id = #{@course.id}
WHERE course_videos . course_id = #{@course.id}
GROUP BY watch_course_videos . course_video_id
GROUP BY watch_course_videos . course_video_id
) AS hisotries ON hisotries . course_video_id = course_videos . id
) AS hisotries ON hisotries . course_video_id = course_videos . id " ).select( " course_videos . id " )
" )
@count = @videos . count
@count = @videos . count
if params [ :order ] . present?
key = params [ :order ] . split ( " - " )
if [ " people_num " , 'total_time' ] . include? ( key . first ) && [ " desc " , " asc " ] . include? ( key . last )
@videos = @videos . order ( " #{ key . first } #{ key . last } " )
end
end
@videos = @videos . select ( " course_videos.id, videos.user_id, videos.title, IFNULL(hisotries.time,0) AS total_time, IFNULL(hisotries.num,0) AS people_num " )
@videos = paginate @videos
@videos = paginate @videos
end
end
# 学生角度观看课堂视频的记录
# 学生角度观看课堂视频的记录
def own_watch_histories
def own_watch_histories
@current_user = current_user
@current_user = current_user
@videos = CourseVideo . find_by_sql ( "
SELECT course_videos . id , watch_course_videos . start_at , watch_course_videos . total_duration , watch_course_videos . end_at , watch_course_videos . is_finished , videos . title , IFNULL ( hisotries . time , 0 ) AS time , IFNULL ( hisotries . num , 0 ) AS num
@videos = CourseVideo . joins ( "
FROM course_videos
JOIN videos ON course_videos . course_id = #{@course.id} AND videos.id = course_videos.video_id
JOIN videos ON course_videos . course_id = #{@course.id} AND videos.id = course_videos.video_id
JOIN watch_course_videos ON course_videos . id = watch_course_videos . course_video_id AND watch_course_videos . user_id = #{current_user.id}
JOIN watch_course_videos ON course_videos . id = watch_course_videos . course_video_id AND watch_course_videos . user_id = #{current_user.id}
JOIN (
JOIN (
SELECT watch_course_videos . course_video_id , SUM( watch_course_videos . total_duration ) AS time , COUNT( watch_course_videos . course_video_id ) AS num
SELECT watch_course_videos . course_video_id , COUNT( watch_course_videos . course_video_id ) AS num
FROM watch_course_videos
FROM watch_course_videos
JOIN course_videos ON course_videos . id = watch_course_videos . course_video_id
JOIN course_videos ON course_videos . id = watch_course_videos . course_video_id
WHERE course_videos . course_id = #{@course.id} AND watch_course_videos.user_id = #{current_user.id} AND watch_course_videos.end_at IS NOT NULL
WHERE course_videos . course_id = #{@course.id} AND watch_course_videos.user_id = #{current_user.id} AND watch_course_videos.end_at IS NOT NULL
GROUP BY watch_course_videos . course_video_id
GROUP BY watch_course_videos . course_video_id
) AS hisotries ON hisotries . course_video_id = course_videos . id
) AS hisotries ON hisotries . course_video_id = course_videos . id " ).select( " course_videos . id " )
" )
@count = @videos . count
@count = @videos . count
if params [ :order ] . present?
key = params [ :order ] . split ( " - " )
if [ " freq " , 'total_duration' ] . include? ( key . first ) && [ " desc " , " asc " ] . include? ( key . last )
@videos = @videos . order ( " #{ key . first } #{ key . last } " )
end
end
@videos = @videos . select ( " course_videos.id, watch_course_videos.start_at, watch_course_videos.total_duration, watch_course_videos.end_at, watch_course_videos.is_finished, videos.title, IFNULL(hisotries.num,0) AS freq " )
@videos = paginate @videos
@videos = paginate @videos
end
end