From cef07e523232203a85825b62d9b46197d2dbe158 Mon Sep 17 00:00:00 2001 From: anke1460 Date: Fri, 13 Mar 2020 21:06:21 +0800 Subject: [PATCH 1/7] =?UTF-8?q?fix=20=E9=9D=9E=E8=AF=BE=E5=A0=82=E8=A7=86?= =?UTF-8?q?=E9=A2=91=E8=AE=B0=E5=BD=95=E6=97=B6=E9=95=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/create_watch_video_service.rb | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/app/services/create_watch_video_service.rb b/app/services/create_watch_video_service.rb index f2d360638..b110bcc97 100644 --- a/app/services/create_watch_video_service.rb +++ b/app/services/create_watch_video_service.rb @@ -28,17 +28,18 @@ class CreateWatchVideoService < ApplicationService watch_course_video = watch_video_history.watch_course_video - watch_course_video.total_duration = watch_course_video.watch_video_histories.sum(:total_duration) - watch_course_video.end_at = current_time - watch_course_video.save! - - if watch_course_video.present? && !watch_course_video.is_finished && watch_course_video.watch_duration < params[:watch_duration].to_f - # 更新课程视频的时长及是否看完状态 - watch_course_video.watch_duration = params[:watch_duration] - if params[:ed].present? - watch_course_video.is_finished = watch_course_video.watch_video_histories.sum(:total_duration) >= watch_course_video.duration - end + if watch_course_video.present? + watch_course_video.total_duration = watch_course_video.watch_video_histories.sum(:total_duration) + watch_course_video.end_at = current_time watch_course_video.save! + if !watch_course_video.is_finished && watch_course_video.watch_duration < params[:watch_duration].to_f + # 更新课程视频的时长及是否看完状态 + watch_course_video.watch_duration = params[:watch_duration] + if params[:ed].present? + watch_course_video.is_finished = watch_course_video.total_duration >= watch_course_video.duration + end + watch_course_video.save! + end end end else From 7d2fe47def5da0de5d4e319c3090eac002820f0d Mon Sep 17 00:00:00 2001 From: anke1460 Date: Fri, 13 Mar 2020 21:15:59 +0800 Subject: [PATCH 2/7] =?UTF-8?q?fix=20=E8=AF=BE=E5=A0=82=E8=A7=86=E9=A2=91?= =?UTF-8?q?=E5=88=9B=E5=BB=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/create_watch_video_service.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/services/create_watch_video_service.rb b/app/services/create_watch_video_service.rb index b110bcc97..e42f490d9 100644 --- a/app/services/create_watch_video_service.rb +++ b/app/services/create_watch_video_service.rb @@ -51,11 +51,10 @@ class CreateWatchVideoService < ApplicationService d.start_at = current_time d.duration = params[:duration] end - - watch_video_history = build_video_log(current_time, course_video.video_id, watch_course_video.id) - watch_video_history.save! watch_course_video.save! unless watch_course_video.persisted? + watch_video_history = build_video_log(current_time, course_video.video_id, watch_course_video.id) + watch_video_history.save! else # 非课堂视频 video = Video.find(params[:video_id]) From 853f9999231e878a27eec96524dde466ba5cbcb2 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Fri, 13 Mar 2020 21:26:36 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E7=AD=BE=E5=88=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/attendances/index.json.jbuilder | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/attendances/index.json.jbuilder b/app/views/attendances/index.json.jbuilder index 8a4dd2bb1..21fc68d71 100644 --- a/app/views/attendances/index.json.jbuilder +++ b/app/views/attendances/index.json.jbuilder @@ -1,5 +1,5 @@ json.attendances @attendances do |attendance| - json.(attendance, :id, :name, :normal_count, :all_count, :mode) + json.(attendance, :id, :name, :normal_count, :all_count, :mode, :code) json.author do user = attendance.user json.user_name user.real_name From 5df56b2d858c4ae662b88a3b1b3a295e658955ef Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Fri, 13 Mar 2020 21:28:49 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E7=AD=BE=E5=88=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/attendances/index.json.jbuilder | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/attendances/index.json.jbuilder b/app/views/attendances/index.json.jbuilder index 21fc68d71..b44f9a4fe 100644 --- a/app/views/attendances/index.json.jbuilder +++ b/app/views/attendances/index.json.jbuilder @@ -1,5 +1,5 @@ json.attendances @attendances do |attendance| - json.(attendance, :id, :name, :normal_count, :all_count, :mode, :code) + json.(attendance, :id, :name, :normal_count, :all_count, :mode, :attendance_code) json.author do user = attendance.user json.user_name user.real_name From 46e5582afd168da701ee3ce4b3106cc10f8396b2 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Fri, 13 Mar 2020 21:51:06 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E7=AD=BE=E5=88=B0=E5=BA=8F=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/weapps/course_member_attendances_controller.rb | 3 +++ app/views/weapps/course_member_attendances/index.json.jbuilder | 3 ++- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/app/controllers/weapps/course_member_attendances_controller.rb b/app/controllers/weapps/course_member_attendances_controller.rb index 5e92d5928..21a687d60 100644 --- a/app/controllers/weapps/course_member_attendances_controller.rb +++ b/app/controllers/weapps/course_member_attendances_controller.rb @@ -14,6 +14,9 @@ class Weapps::CourseMemberAttendancesController < ApplicationController @members = @members.where(course_group_id: params[:group_ids]) end + @page = params[:page] || 1 + @limit = params[:limit] || 5 + if params[:attendance_status].present? @members = @members.joins(:course_member_attendances).where(course_member_attendances: {course_attendance_id: attendance.id, attendance_status: params[:attendance_status]}) end diff --git a/app/views/weapps/course_member_attendances/index.json.jbuilder b/app/views/weapps/course_member_attendances/index.json.jbuilder index cec70b3fe..01d475e12 100644 --- a/app/views/weapps/course_member_attendances/index.json.jbuilder +++ b/app/views/weapps/course_member_attendances/index.json.jbuilder @@ -4,8 +4,9 @@ # json.student_id member.user&.student_id # end -json.member_attendances @members.each do |member| +json.member_attendances @members.each_with_index do |member, index| json.(member, :user_id) + json.index (@page.to_i - 1) * @limit.to_i + index + 1 json.user_name member.user&.real_name json.student_id member.user&.student_id json.attendance_status @member_attendances.select{|attendance| attendance.course_member_id == member.id}.first&.attendance_status || "ABSENCE" From d65e12f7dd7826901b53c5fdb472e2c8d9eca26b Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Fri, 13 Mar 2020 21:54:39 +0800 Subject: [PATCH 6/7] =?UTF-8?q?=E7=AD=BE=E5=88=B0=E5=BA=8F=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/weapps/course_member_attendances/index.json.jbuilder | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/weapps/course_member_attendances/index.json.jbuilder b/app/views/weapps/course_member_attendances/index.json.jbuilder index 01d475e12..765de5833 100644 --- a/app/views/weapps/course_member_attendances/index.json.jbuilder +++ b/app/views/weapps/course_member_attendances/index.json.jbuilder @@ -4,7 +4,7 @@ # json.student_id member.user&.student_id # end -json.member_attendances @members.each_with_index do |member, index| +json.member_attendances @members.each_with_index.to_a do |member, index| json.(member, :user_id) json.index (@page.to_i - 1) * @limit.to_i + index + 1 json.user_name member.user&.real_name From 5813ca5fcbe60c0f130bec58d386b801a60b5ec7 Mon Sep 17 00:00:00 2001 From: anke1460 Date: Fri, 13 Mar 2020 22:14:48 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E8=A7=86=E9=A2=91=E6=97=B6=E9=95=BF?= =?UTF-8?q?=E7=B2=BE=E5=BA=A6=E9=99=90=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/courses_controller.rb | 2 +- .../watch_video_histories_controller.rb | 2 +- app/services/create_watch_video_service.rb | 21 ++++++++++--------- app/views/courses/course_videos.json.jbuilder | 2 +- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index 2c1a78b86..d701575e7 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -114,7 +114,7 @@ class CoursesController < ApplicationController #sql = "left join videos on videos.id=course_videos.video_id AND (videos.transcoded=1 OR videos.user_id = #{current_user.id})" #@videos = paginate videos.joins(sql).includes(video: [user: :user_extension], user: :user_extension) - videos = videos.includes(:watch_course_videos, video: [user: :user_extension],user: :user_extension) + videos = videos.includes(video: [user: :user_extension],user: :user_extension).select("course_videos.id, course_videos.title, course_videos.link, course_videos.user_id") videos = videos.where(videos: {transcoded: true}) .or(videos.where(videos: {user_id: current_user.id})) .or(videos.where(course_videos: {is_link: true})) diff --git a/app/controllers/watch_video_histories_controller.rb b/app/controllers/watch_video_histories_controller.rb index 15ee62113..fe1fbf31b 100644 --- a/app/controllers/watch_video_histories_controller.rb +++ b/app/controllers/watch_video_histories_controller.rb @@ -5,6 +5,6 @@ class WatchVideoHistoriesController < ApplicationController watch_log = CreateWatchVideoService.new(current_user, request, params).call render_ok(log_id: watch_log&.id) rescue CreateWatchVideoService::Error => ex - render_error(ex.message) + render_ok(log_id: watch_log&.id) end end diff --git a/app/services/create_watch_video_service.rb b/app/services/create_watch_video_service.rb index e42f490d9..0f1b32814 100644 --- a/app/services/create_watch_video_service.rb +++ b/app/services/create_watch_video_service.rb @@ -10,19 +10,21 @@ class CreateWatchVideoService < ApplicationService def call ActiveRecord::Base.transaction do current_time = Time.now + params[:watch_duration] = params[:watch_duration].to_f.round(2) + params[:total_duration] = params[:total_duration].to_f.round(2) + params[:duration] = params[:duration].to_f.round(2) + if params[:log_id].present? - if params[:total_duration].to_f < params[:watch_duration].to_f || params[:watch_duration].to_f < 0 - raise Error, '观看时长错误' + watch_video_history = user.watch_video_histories.find(params[:log_id]) + if params[:total_duration] < params[:watch_duration] + return watch_video_history end # 更新观看时长 - watch_video_history = user.watch_video_histories.find(params[:log_id]) - - if watch_video_history.present? && watch_video_history.watch_duration <= params[:watch_duration].to_f && params[:total_duration].to_f > watch_video_history.total_duration + if watch_video_history.present? && !watch_video_history.is_finished && watch_video_history.watch_duration <= params[:watch_duration] && watch_video_history.total_duration <= params[:total_duration] # 如果观看总时长没变,说明视频没有播放,无需再去记录 - watch_video_history.end_at = current_time watch_video_history.total_duration = params[:total_duration] - watch_video_history.watch_duration = params[:watch_duration].to_f > watch_video_history.duration ? watch_video_history.duration : params[:watch_duration] + watch_video_history.watch_duration = params[:watch_duration] > watch_video_history.duration ? watch_video_history.duration : params[:watch_duration] watch_video_history.is_finished = params[:ed].present? watch_video_history.save! @@ -31,15 +33,14 @@ class CreateWatchVideoService < ApplicationService if watch_course_video.present? watch_course_video.total_duration = watch_course_video.watch_video_histories.sum(:total_duration) watch_course_video.end_at = current_time - watch_course_video.save! - if !watch_course_video.is_finished && watch_course_video.watch_duration < params[:watch_duration].to_f + if !watch_course_video.is_finished && watch_course_video.watch_duration < params[:watch_duration] # 更新课程视频的时长及是否看完状态 watch_course_video.watch_duration = params[:watch_duration] if params[:ed].present? watch_course_video.is_finished = watch_course_video.total_duration >= watch_course_video.duration end - watch_course_video.save! end + watch_course_video.save! end end else diff --git a/app/views/courses/course_videos.json.jbuilder b/app/views/courses/course_videos.json.jbuilder index 2e557828b..c2a4c1282 100644 --- a/app/views/courses/course_videos.json.jbuilder +++ b/app/views/courses/course_videos.json.jbuilder @@ -10,7 +10,7 @@ json.videos @videos do |video| json.user_login user&.login else json.partial! 'users/videos/video', locals: { video: video.video } - json.total_time video.watch_course_videos.sum(:total_duration) + json.total_time video.watch_course_videos.sum(:total_duration).round(0) json.people_num video.watch_course_videos.count(:user_id) end end