From f232066bc4b4bd00847aefdd56e5f023be14e38e Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Thu, 19 Mar 2020 22:30:39 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=95=E5=8D=B7=E7=AD=94=E9=A2=98=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E5=B0=86=E5=80=92=E8=AE=A1=E6=97=B6=E7=BB=93=E6=9D=9F?= =?UTF-8?q?=E4=B8=94=E6=9C=AA=E6=8F=90=E4=BA=A4=E7=9A=84=E5=AD=A6=E7=94=9F?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E7=AD=94=E9=A2=98=E5=B9=B6=E7=AE=97=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/exercises_controller.rb | 7 ++++--- app/jobs/end_exercise_calculate_job.rb | 8 +++++--- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/app/controllers/exercises_controller.rb b/app/controllers/exercises_controller.rb index 19b0f30fa..c6e7a1eda 100644 --- a/app/controllers/exercises_controller.rb +++ b/app/controllers/exercises_controller.rb @@ -816,7 +816,7 @@ class ExercisesController < ApplicationController ex_user_ids = exercise_users.pluck(:id) - EndExerciseCalculateJob.perform_later(ex_user_ids, exercise, Time.now.to_s) + EndExerciseCalculateJob.perform_later(ex_user_ids, exercise, Time.now.to_s, true, 4) # exercise_users.each do |user| # if user.commit_status == 0 && user.start_at.present? # objective_score = calculate_student_score(exercise,user.user)[:total_score] @@ -1192,8 +1192,9 @@ class ExercisesController < ApplicationController if @exercise.time > 0 start_time = Time.current - @exercise.time * 60 - if @exercise_users_list.where("start_at <= '#{Time.at(start_time)}' and commit_status = 0").count > 0 - + ex_user_ids = @exercise_users_list.where("start_at <= '#{Time.at(start_time)}' and commit_status = 0").pluck(:user_id) + if ex_user_ids.size > 0 + EndExerciseCalculateJob.perform_later(ex_user_ids, @exercise, Time.now.to_s, false, 2) end end diff --git a/app/jobs/end_exercise_calculate_job.rb b/app/jobs/end_exercise_calculate_job.rb index 251496cb5..28f1f6901 100644 --- a/app/jobs/end_exercise_calculate_job.rb +++ b/app/jobs/end_exercise_calculate_job.rb @@ -5,10 +5,12 @@ class EndExerciseCalculateJob < ApplicationJob queue_as :default - def perform(ex_user_ids,exercise,end_time) + def perform(ex_user_ids,exercise,end_time,work_time,commit_method) exercise_users = ExerciseUser.where(id: ex_user_ids) exercise_users.each do |user| if user.commit_status == 0 && user.start_at.present? + end_at = work_time ? end_time : Time.at(user.start_at + exercise.time * 60) + objective_score = calculate_student_score(exercise,user.user,end_time.to_time)[:total_score] user_sub_score = user.subjective_score subjective_score = user_sub_score < 0.0 ? 0.0 : user_sub_score @@ -16,11 +18,11 @@ class EndExerciseCalculateJob < ApplicationJob commit_option = { :status => 1, :commit_status => 1, - :end_at => Time.now, + :end_at => end_at, :objective_score => objective_score, :score => total_score, :subjective_score => user_sub_score, - :commit_method => user&.commit_method.to_i > 0 ? user&.commit_method.to_i : 4 + :commit_method => user&.commit_method.to_i > 0 ? user&.commit_method.to_i : commit_method } user.update_attributes(commit_option) end