diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index c27a57c90..94c8a4ec1 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -62,15 +62,12 @@ class CoursesController < ApplicationController if @order == "mine" @courses = Course.joins(:course_members) .where("is_delete = 0 AND is_hidden = 0 AND course_members.user_id = ?", @user.id) - .order("courses.id = 1309 DESC, courses.#{order_str} DESC") elsif @order == "created_at" # REDO:Extension @courses = Course.where(is_delete: 0, is_hidden: 0, is_end: 0) - .order("courses.id = 1309 DESC, courses.#{order_str} DESC") else # REDO:Extension @courses = Course.where(is_delete: 0, is_hidden: 0) - .order("courses.id = 1309 DESC, courses.#{order_str} DESC") end # 根据搜索关键字进一步筛选 @@ -89,14 +86,15 @@ class CoursesController < ApplicationController @courses = @courses.joins(:school, course_members: :user) .where("#{sql}", keyword: "%#{params[:search]}%").distinct end - @courses_count = @courses.size + @courses_count = @courses.count("courses.id") + @courses = @courses.order("courses.id = 1309 DESC, courses.#{order_str} DESC") # 分页 page = params[:page] || 1 limit = params[:limit] || 16 @courses = @courses.page(page).per(limit) - @courses = @courses.preload(:school, teacher: :user_extension) + @courses = @courses.preload(:school, :none_hidden_course_modules, teacher: :user_extension) end def visits_plus_one diff --git a/app/controllers/exercises_controller.rb b/app/controllers/exercises_controller.rb index 4319f2e4a..4522c64f6 100644 --- a/app/controllers/exercises_controller.rb +++ b/app/controllers/exercises_controller.rb @@ -1316,8 +1316,6 @@ class ExercisesController < ApplicationController @exercise_all_users = @exercise.exercise_users ex_common_ids = @exercise.common_published_ids(current_user.id) @exercise_course_groups = @course.get_ex_published_course(ex_common_ids) - @exercise_users_list = @exercise.all_exercise_users(current_user.id) - @course_all_members_count = @exercise_users_list.size #班级的选择 if params[:exercise_group_id].present? @@ -1325,6 +1323,10 @@ class ExercisesController < ApplicationController exercise_students = @course_all_members.course_find_by_ids("course_group_id",group_id) # 试卷所分班的全部人数 user_ids = exercise_students.pluck(:user_id).reject(&:blank?) @exercise_all_users = @exercise.exercise_users.exercise_commit_users(user_ids) + @course_all_members_count = @exercise_all_users.size + else + @exercise_users_list = @exercise.all_exercise_users(current_user.id) + @course_all_members_count = @exercise_users_list.size end @exercise_commit_users = @exercise_all_users.commit_exercise_by_status(1) #试卷的已提交用户 @exercise_commit_user_ids = @exercise_commit_users.pluck(:user_id).uniq #已提交试卷的全部用户id diff --git a/app/controllers/homework_commons_controller.rb b/app/controllers/homework_commons_controller.rb index e3b72e62d..ccadba89c 100644 --- a/app/controllers/homework_commons_controller.rb +++ b/app/controllers/homework_commons_controller.rb @@ -448,7 +448,7 @@ class HomeworkCommonsController < ApplicationController tip_exception("发布时间不能早于当前时间") if params[:publish_time] <= Time.now.strftime("%Y-%m-%d %H:%M:%S") tip_exception("截止时间不能早于当前时间") if params[:end_time] <= Time.now.strftime("%Y-%m-%d %H:%M:%S") tip_exception("截止时间不能早于发布时间") if params[:publish_time] > params[:end_time] - tip_exception("截止时间不能晚于课堂结束时间") if @course.end_date.present? && params[:end_time] > @course.end_date.end_of_day + tip_exception("截止时间不能早于课堂结束时间") if @course.end_date.present? && params[:end_time] > @course.end_date.end_of_day @homework.unified_setting = 1 @homework.homework_group_settings.destroy_all @@ -1086,7 +1086,6 @@ class HomeworkCommonsController < ApplicationController homework.publish_time = Time.now # 截止时间不为空的保持原状,为空的改为一个月后, 非统一设置的更新为最大分班截止时间 - if homework.end_time.nil? homework.end_time = params[:end_time] elsif homework.max_group_end_time diff --git a/app/helpers/exercises_helper.rb b/app/helpers/exercises_helper.rb index fc1e7874e..4a0c5509d 100644 --- a/app/helpers/exercises_helper.rb +++ b/app/helpers/exercises_helper.rb @@ -93,6 +93,7 @@ module ExercisesHelper if ex.question_type != Exercise::PRACTICAL ques_title = ex.question_title ques_less_title = nil + ex_answers = ex.exercise_answers effictive_users = ex_answers.search_answer_users("user_id",user_ids) else ques_title = ex.shixun.name @@ -114,12 +115,17 @@ module ExercisesHelper ex_choices = ex.exercise_choices standard_answer = ex.exercise_standard_answers.pluck(:exercise_choice_id).sort #标准答案的位置 right_users_count = 0 #该问题的回答正确的人数 - user_ids.each do |user_id| - ex_choice_ids = effictive_users.map{|e| e.exercise_choice_id if e.user_id == user_id}.reject(&:blank?).uniq - answer_choice_array = ex_choices.map{|a| a.choice_position if ex_choice_ids.include?(a.id)}.reject(&:blank?).uniq - if answer_choice_array.sort == standard_answer - right_users_count += 1 + if ex.question_type == Exercise::MULTIPLE #多选题 + user_ids.each do |user_id| + ex_choice_ids = effictive_users.map{|e| e.exercise_choice_id if e.user_id == user_id}.reject(&:blank?).uniq + answer_choice_array = ex_choices.map{|a| a.choice_position if ex_choice_ids.include?(a.id)}.reject(&:blank?).uniq + if answer_choice_array.sort == standard_answer + right_users_count += 1 + end end + else #单选题和判断题 + standard_answer_choice_id = ex.exercise_choices.find_by(choice_position: standard_answer.first)&.id + right_users_count = effictive_users.select{|answer| answer.exercise_choice_id == standard_answer_choice_id}.size end percent = effictive_users_count > 0 ? (right_users_count / effictive_users_count.to_f).round(3)*100 : 0.0 diff --git a/app/models/course.rb b/app/models/course.rb index b2835fc21..3794a8b2b 100644 --- a/app/models/course.rb +++ b/app/models/course.rb @@ -10,6 +10,7 @@ class Course < ApplicationRecord has_many :course_infos, dependent: :destroy # 课堂左侧导航栏的模块 has_many :course_modules, dependent: :destroy + has_many :none_hidden_course_modules, -> { not_hidden }, class_name: "CourseModule" has_many :board_course_modules, -> { board_module }, class_name: "CourseModule" has_many :attachment_course_modules, -> { attachment_module }, class_name: "CourseModule" has_many :common_course_modules, -> { common_homework_module }, class_name: "CourseModule" @@ -310,15 +311,13 @@ class Course < ApplicationRecord #获取试卷/问卷已发布的班级id,名称和人数。当为统一设置时,显示全部,否则只显示当前已发布的班级信息 def get_ex_published_course(common_ids) teacher_power_courses = [] - if course_groups.present? - common_ids.each do |i| - if i == 0 - student_count = students.where(course_group_id:i).count - teacher_power_courses << {course_name:"未分班",course_id:0,student_count:student_count} - else - course_group_name = course_groups.find_by(id:i) - teacher_power_courses << {course_name:course_group_name&.name,course_id:i,student_count:course_group_name&.course_members_count} - end + publish_groups = course_groups.where(id: common_ids) + if common_ids.include?(0) + teacher_power_courses << {course_name:"未分班", course_id: 0, student_count: none_group_count} + end + if publish_groups.present? + publish_groups.each do |group| + teacher_power_courses << {course_name: group&.name,course_id: group&.id, student_count: group&.course_members_count} end end teacher_power_courses diff --git a/app/views/courses/index.json.jbuilder b/app/views/courses/index.json.jbuilder index 2b6866517..32a7047b7 100644 --- a/app/views/courses/index.json.jbuilder +++ b/app/views/courses/index.json.jbuilder @@ -11,5 +11,6 @@ json.courses @courses do |course| json.is_public course.is_public json.is_accessible course.is_public == 1 || @user.course_identity(course) < Course::NORMAL json.is_end course.is_end + json.first_category_url module_url(course.none_hidden_course_modules.first, course) end json.courses_count @courses_count