From 9bee37b59aa020b6900a33ec76dd759bac95d4e4 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Wed, 16 Oct 2019 14:23:47 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E8=AF=95=E5=8D=B7=E3=80=81=E9=97=AE?= =?UTF-8?q?=E5=8D=B7=E7=9A=84=E5=88=86=E7=8F=AD=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/exercises_controller.rb | 31 +++++++++++++------------ app/controllers/polls_controller.rb | 26 +++++++++++---------- app/models/user.rb | 2 +- 3 files changed, 31 insertions(+), 28 deletions(-) diff --git a/app/controllers/exercises_controller.rb b/app/controllers/exercises_controller.rb index 9979ae48f..424b2fe3a 100644 --- a/app/controllers/exercises_controller.rb +++ b/app/controllers/exercises_controller.rb @@ -518,27 +518,27 @@ class ExercisesController < ApplicationController common_group = exercise_groups_ids & course_id #传入的班级与问卷已存在的班级的交集,即表示已有分班的 new_group_ids = course_id - common_group #新传入的班级id if common_group.count > 0 #判断试卷的分班设置是否存在,存在则更新,负责则新建 - ex_group_params = { + exercise_group_sets = exercise_groups.find_in_exercise_group("course_group_id",common_group) + exercise_group_sets.each do |the_group_setting| + ex_group_params = { :publish_time => exercise_publish_time, :end_time => exercise_end_time - } - exercise_group_sets = exercise_groups.find_in_exercise_group("course_group_id",common_group) - the_group_setting = exercise_group_sets.first - if the_group_setting.present? + } + the_group_setting_status = set_exercise_status(the_group_setting.publish_time,the_group_setting.end_time) if the_group_setting_status == 2 ex_group_params = { - :publish_time => the_group_setting.publish_time, - :end_time => exercise_end_time + :publish_time => the_group_setting.publish_time, + :end_time => exercise_end_time } elsif the_group_setting_status == 3 ex_group_params = { - :publish_time => the_group_setting.publish_time, - :end_time => the_group_setting.end_time + :publish_time => the_group_setting.publish_time, + :end_time => the_group_setting.end_time } end + the_group_setting.update_attributes!(ex_group_params) end - exercise_group_sets.update_all(ex_group_params) end if new_group_ids.size > 0 new_group_ids.each do |c| @@ -560,8 +560,9 @@ class ExercisesController < ApplicationController error_count == 0 normal_status(-1,"已发布/已截止的试卷不允许修改时间") else + # 未发布的分班设置才能删除 if old_exercise_groups.size > 0 - old_all_ex_groups = exercise_groups.find_in_exercise_group("course_group_id",old_exercise_groups) + old_all_ex_groups = exercise_groups.find_in_exercise_group("course_group_id",old_exercise_groups).exercise_group_not_published old_all_ex_groups.destroy_all end #试卷更新为exercise_group_setting的发布时间最小,截止时间最大 @@ -720,8 +721,8 @@ class ExercisesController < ApplicationController if exercise.unified_setting ex_status = exercise.exercise_status #则为试卷的状态 else - ex_status = exercise.exercise_group_settings.find_in_exercise_group("course_group_id",params[:group_ids]) - .exercise_group_not_published.present? ? 1 : 0 + ex_status = @course.course_groups.where(id: params[:group_ids]).size != + exercise.exercise_group_settings.where("course_group_id", params[:group_ids]).exercise_group_published.size ? 1 : 0 end if ex_status == 1 #如果试卷存在已发布的,或者是已截止的,那么则直接跳过 g_course = group_ids #表示是否传入分班参数,如果传入分班的参数,那么试卷的统一设置需修改 @@ -739,8 +740,8 @@ class ExercisesController < ApplicationController g_course.each_with_index do |i, index| exercise_group_setting = exercise.exercise_group_settings.find_in_exercise_group("course_group_id",i).first #根据课堂分班的id,寻找试卷所在的班级 group_end_time = params[:detail] ? group_end_times[index] : ex_end_time - if exercise_group_setting #如果该试卷分组存在,则更新,否则新建 - exercise_group_setting.update_attributes(publish_time: Time.now, end_time: group_end_time) + if exercise_group_setting.present? #如果该试卷分组存在,则更新,否则新建 + exercise_group_setting.update_attributes!(publish_time: Time.now, end_time: group_end_time) else p_course_group = { :exercise_id => exercise.id, diff --git a/app/controllers/polls_controller.rb b/app/controllers/polls_controller.rb index da5917e1b..e5cb8b1c2 100644 --- a/app/controllers/polls_controller.rb +++ b/app/controllers/polls_controller.rb @@ -279,7 +279,8 @@ class PollsController < ApplicationController if poll.unified_setting pl_status = poll.polls_status #则为试卷的状态 else - pl_status = poll.poll_group_settings.find_in_poll_group("course_group_id",params[:group_ids]).poll_group_not_published.present? ? 1 : 0 #立即发布针对分组设置的全部未发布的班级才生效 + pl_status = @course.course_groups.where(id: params[:group_ids]).size != + poll.poll_group_settings.where("course_group_id",params[:group_ids]).poll_group_published.size ? 1 : 0 #立即发布针对分组设置的全部未发布的班级才生效 end if pl_status == 1 #如果问卷存在已发布的,或者是已截止的,那么则直接跳过 g_course = group_ids #表示是否传入分班参数,如果传入分班的参数,那么poll的统一设置需修改 @@ -782,27 +783,27 @@ class PollsController < ApplicationController common_group = poll_groups_ids & course_id #传入的班级与问卷已存在的班级的交集,即表示已有分班的 new_group_ids = course_id - common_group #新传入的班级id if common_group.size > 0 #传入的参数存在已发布的分班 - poll_group_params = { + poll_group = poll_groups.find_in_poll_group("course_group_id",common_group) + poll_group.each do |the_group_setting| + poll_group_params = { :publish_time => poll_publish_time, :end_time => poll_end_time - } - poll_group = poll_groups.find_in_poll_group("course_group_id",common_group) - the_group_setting = poll_group.first - if the_group_setting.present? + } + the_group_setting_status = set_poll_status(the_group_setting.publish_time,the_group_setting.end_time) if the_group_setting_status == 2 poll_group_params = { - :publish_time => the_group_setting.publish_time, - :end_time => poll_end_time + :publish_time => the_group_setting.publish_time, + :end_time => poll_end_time } elsif the_group_setting_status == 3 poll_group_params = { - :publish_time => the_group_setting.publish_time, - :end_time => the_group_setting.end_time + :publish_time => the_group_setting.publish_time, + :end_time => the_group_setting.end_time } end + the_group_setting.update_attributes(poll_group_params) end - poll_group.update_all(poll_group_params) end if new_group_ids.size > 0 new_group_ids.each do |c| @@ -824,8 +825,9 @@ class PollsController < ApplicationController error_count == 0 normal_status(-1,"已发布/已截止的问卷不允许修改时间") else + # 未发布的分班设置才能删除 if old_poll_groups.size > 0 - old_all_poll_groups = poll_groups.find_in_poll_group("course_group_id",old_poll_groups) + old_all_poll_groups = poll_groups.find_in_poll_group("course_group_id",old_poll_groups).poll_group_not_published old_all_poll_groups.destroy_all end #问卷更新为poll_group_setting的发布时间最小,截止时间最大 diff --git a/app/models/user.rb b/app/models/user.rb index 2f5400051..103f9e0b5 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -274,7 +274,7 @@ class User < ApplicationRecord # 课堂的学生 def student_of_course?(course) - course.course_members.exists?(user_id: id, role: %i[STUDENT]) + course.course_members.exists?(user_id: id, role: %i[STUDENT], is_active: 1) end # 课堂成员 From e7b0d82a608ca3df7cc1ac399f9cf660abfe9fe1 Mon Sep 17 00:00:00 2001 From: SylorHuang Date: Wed, 16 Oct 2019 14:23:56 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E8=AF=95=E5=8D=B7=E7=9A=84=E7=BB=9F?= =?UTF-8?q?=E8=AE=A1=E7=BB=93=E6=9E=9C=E5=88=97=E8=A1=A8=E6=8E=92=E5=BA=8F?= =?UTF-8?q?=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admins/shixun_settings_controller.rb | 2 +- app/controllers/exercises_controller.rb | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/app/controllers/admins/shixun_settings_controller.rb b/app/controllers/admins/shixun_settings_controller.rb index 9202ccce6..9919c7daa 100644 --- a/app/controllers/admins/shixun_settings_controller.rb +++ b/app/controllers/admins/shixun_settings_controller.rb @@ -46,7 +46,7 @@ class Admins::ShixunSettingsController < Admins::BaseController tag_ids.each do |id| unless tag_repertoire_ids.include?(id) tag_repertoire = @shixun.shixun_tag_repertoires.new(shixun_id:@shixun.id,tag_repertoire_id:id) - tag_repertoire.save + tag_repertoire.save! end end else diff --git a/app/controllers/exercises_controller.rb b/app/controllers/exercises_controller.rb index 74059b314..317760796 100644 --- a/app/controllers/exercises_controller.rb +++ b/app/controllers/exercises_controller.rb @@ -1425,18 +1425,24 @@ class ExercisesController < ApplicationController @exercise_questions = @exercise.exercise_questions&.includes(:exercise_choices,:exercise_answers,:exercise_standard_answers,:exercise_shixun_challenges,:exercise_shixun_answers) - @paging_type = "percent" - # 按题型排序 + percent_sort = "desc" + if params[:sort].present? - @paging_type = params[:sort].to_s + percent_sort = params[:sort] end + # @paging_type = "percent" + # # 按题型排序 + # if params[:sort].present? + # @paging_type = params[:sort].to_s + # end ques_result_all = exercise_commit_result(@exercise_questions,@exercise_commit_user_ids) - if @paging_type == "percent" - @question_result_hash = ques_result_all.sort_by{|s| s[:percent]} + #默认降序排列 + if percent_sort == "desc" + @question_result_hash = ques_result_all.sort_by{|s| s[:percent]}.reverse else - @question_result_hash = ques_result_all.sort_by{|s| s[:"#{@paging_type}"]} + @question_result_hash = ques_result_all.sort_by{|s| s[:percent]} end @exercise_questions_count = @exercise_questions.size