diff --git a/app/controllers/homework_commons_controller.rb b/app/controllers/homework_commons_controller.rb index 3ed71746d..6bdd726dd 100644 --- a/app/controllers/homework_commons_controller.rb +++ b/app/controllers/homework_commons_controller.rb @@ -92,11 +92,11 @@ class HomeworkCommonsController < ApplicationController @homework_commons = @homework_commons.order(order_str).page(page).per(15) if @homework_type == 4 - @homework_commons = @homework_commons.includes(:homework_detail_manual, :published_settings, :shixuns) + @homework_commons = @homework_commons.includes(:homework_detail_manual, :published_settings, :homework_group_settings, :shixuns, :course_second_category, user: :user_extension) elsif @homework_type == 3 - @homework_commons = @homework_commons.includes(:homework_detail_manual, :published_settings, :homework_detail_group) + @homework_commons = @homework_commons.includes(:homework_detail_manual, :published_settings, :homework_group_settings, :homework_detail_group, :course_second_category, user: :user_extension) else - @homework_commons = @homework_commons.includes(:homework_detail_manual, :published_settings) + @homework_commons = @homework_commons.includes(:homework_detail_manual, :published_settings, :homework_group_settings, :course_second_category, user: :user_extension) end end @@ -902,7 +902,8 @@ class HomeworkCommonsController < ApplicationController def publish_groups @current_user = current_user - if @homework.publish_immediately @current_user + charge_ids = @course.charge_group_ids(@current_user) + if @homework.publish_immediately charge_ids # 可立即发布的分班:当前用户管理的分班去除已发布的分班 group_ids = @course.charge_group_ids(@current_user) - @homework.homework_group_settings.group_published.pluck(:course_group_id) @course_groups = @course.course_groups.where(id: group_ids) @@ -1031,7 +1032,8 @@ class HomeworkCommonsController < ApplicationController def end_groups @current_user = current_user - if @homework.end_immediately @current_user + charge_ids = @course.charge_group_ids(@current_user) + if @homework.end_immediately charge_ids # 可立即截止的分班:统一设置则是用户管理的所有分班,否则是当前用户管理的分班中已发布且未截止的 charge_group_ids = @course.charge_group_ids(@current_user) # 当前用户管理的分班 group_ids = @homework.unified_setting ? charge_group_ids : @@ -1313,7 +1315,7 @@ class HomeworkCommonsController < ApplicationController # 最新一次的查重时间 @last_review_time = format_time @homework.homework_group_reviews.last.try(:created_at) - + @charge_ids = @course.charge_group_ids(@current_user) end # 代码查重代码的详情 diff --git a/app/helpers/homework_commons_helper.rb b/app/helpers/homework_commons_helper.rb index 2ffc3872f..ffbc61b53 100644 --- a/app/helpers/homework_commons_helper.rb +++ b/app/helpers/homework_commons_helper.rb @@ -183,7 +183,7 @@ module HomeworkCommonsHelper student_works = homework_common.teacher_works(member) count[:commit_count] = student_works.select{|work| work.work_status != 0 }.size count[:uncommit_count] = student_works.select{|work| work.work_status == 0 }.size - count[:compelete_count] = Myshixun.where(id: student_works.pluck(:myshixun_id).reject(&:blank?), status: 1).size + count[:compelete_count] = Myshixun.where(id: student_works.pluck(:myshixun_id).reject{|ms| ms==0}, status: 1).size count[:all_count] = student_works.size count end diff --git a/app/models/course.rb b/app/models/course.rb index 4b997fcb8..cbd09048f 100644 --- a/app/models/course.rb +++ b/app/models/course.rb @@ -257,7 +257,7 @@ class Course < ApplicationRecord # 老师负责的分班id def charge_group_ids user - member = course_member(user.id) + member = user.is_a?(CourseMember) ? user : course_member(user.id) group_ids = if member.present? member.teacher_course_groups.size > 0 ? member.teacher_course_groups.pluck(:course_group_id) : course_groups.pluck(:id) elsif user.admin_or_business? diff --git a/app/models/homework_common.rb b/app/models/homework_common.rb index f3a2e85f8..58e5120de 100644 --- a/app/models/homework_common.rb +++ b/app/models/homework_common.rb @@ -141,15 +141,17 @@ class HomeworkCommon < ApplicationRecord end # 作业能否立即发布 - def publish_immediately user - homework_detail_manual.try(:comment_status) == 0 || homework_group_settings.where(course_group_id: course.charge_group_ids(user)). - none_published.count > 0 + def publish_immediately charge_ids + homework_detail_manual.try(:comment_status) == 0 || + homework_group_settings.select{|setting| charge_ids.include?(setting.course_group_id) && + (setting.publish_time.nil? || setting.publish_time > Time.now)}.size > 0 end # 作业能否立即截止 - def end_immediately user - (unified_setting && homework_detail_manual.try(:comment_status) == 1 && end_time > Time.now) || homework_group_settings. - where(course_group_id: course.charge_group_ids(user)).published_no_end.count > 0 + def end_immediately charge_ids + (unified_setting && homework_detail_manual.try(:comment_status) == 1 && end_time > Time.now) || + homework_group_settings.select{|setting| charge_ids.include?(setting.course_group_id) && + !setting.publish_time.nil? && setting.publish_time < Time.now && setting.end_time > Time.now}.size > 0 end # 学生是否提交了作品 diff --git a/app/views/homework_commons/_homework_btn_check.json.jbuilder b/app/views/homework_commons/_homework_btn_check.json.jbuilder index ff6e5bc0c..1acf97d9d 100644 --- a/app/views/homework_commons/_homework_btn_check.json.jbuilder +++ b/app/views/homework_commons/_homework_btn_check.json.jbuilder @@ -1,5 +1,6 @@ # 教师身份的立即发布、立即截止、代码查重入口的判断 -json.publish_immediately identity < Course::STUDENT && homework.publish_immediately(user) -json.end_immediately identity < Course::STUDENT && homework.end_immediately(user) +charge_ids = homework.course.charge_group_ids(user) +json.publish_immediately identity < Course::STUDENT && homework.publish_immediately(charge_ids) +json.end_immediately identity < Course::STUDENT && homework.end_immediately(charge_ids) json.code_review identity < Course::STUDENT && homework.code_review if homework.homework_type == 'practice' json.view_answer homework.view_answer(identity, user.id) if homework.homework_type != "practice" \ No newline at end of file diff --git a/app/views/homework_commons/code_review_results.json.jbuilder b/app/views/homework_commons/code_review_results.json.jbuilder index 3759ea1c2..309938547 100644 --- a/app/views/homework_commons/code_review_results.json.jbuilder +++ b/app/views/homework_commons/code_review_results.json.jbuilder @@ -1,7 +1,9 @@ json.partial! "homework_public_navigation", locals: {homework: @homework, course: @course, user: @current_user} json.last_review_time @last_review_time -json.publish_immediately @user_course_identity < Course::STUDENT && @homework.publish_immediately(@current_user) -json.end_immediately @user_course_identity < Course::STUDENT && @homework.end_immediately(@current_user) + + +json.publish_immediately @user_course_identity < Course::STUDENT && @homework.publish_immediately(@charge_ids) +json.end_immediately @user_course_identity < Course::STUDENT && @homework.end_immediately(@charge_ids) # 分班情况 json.group_info do diff --git a/app/views/homework_commons/index.json.jbuilder b/app/views/homework_commons/index.json.jbuilder index 6d64cf1f1..44eabe06d 100644 --- a/app/views/homework_commons/index.json.jbuilder +++ b/app/views/homework_commons/index.json.jbuilder @@ -24,6 +24,10 @@ json.homeworks @homework_commons.each do |homework| # 只有在主目录才显示 json.upper_category_name homework.course_second_category&.name unless params[:category] + charge_ids = @course.charge_group_ids(@member) + json.publish_immediately @user_course_identity < Course::STUDENT && homework.publish_immediately(charge_ids) + json.end_immediately @user_course_identity < Course::STUDENT && homework.end_immediately(charge_ids) + unless curr_status[:status].include?("未发布") work_count = calculate_work_count homework, @member json.commit_count work_count[:commit_count]