From 26070cd8f70828c13704b7286a955942f73e6209 Mon Sep 17 00:00:00 2001 From: daiao <358551898@qq.com> Date: Fri, 28 Feb 2020 05:28:49 +0800 Subject: [PATCH 01/27] 1 --- app/views/homework_commons/index.json.jbuilder | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/views/homework_commons/index.json.jbuilder b/app/views/homework_commons/index.json.jbuilder index 44eabe06d..23d700beb 100644 --- a/app/views/homework_commons/index.json.jbuilder +++ b/app/views/homework_commons/index.json.jbuilder @@ -24,9 +24,9 @@ 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) + # 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 From 74851b7410ce31fdc9bf235ac57279d1580c3d74 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Fri, 28 Feb 2020 10:04:29 +0800 Subject: [PATCH 02/27] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=9C=AA=E7=99=BB=E5=BD=95=E8=AE=BF=E9=97=AE=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/course.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/course.rb b/app/models/course.rb index cbd09048f..38769ba07 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 = user.is_a?(CourseMember) ? user : 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? From 022751735bf26804e5f8ce657c5d3ec07ab8d64f Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Fri, 28 Feb 2020 10:08:11 +0800 Subject: [PATCH 03/27] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=9C=AA=E7=99=BB=E5=BD=95=E8=AE=BF=E9=97=AE=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/homework_commons/index.json.jbuilder | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/homework_commons/index.json.jbuilder b/app/views/homework_commons/index.json.jbuilder index 44eabe06d..e47c40745 100644 --- a/app/views/homework_commons/index.json.jbuilder +++ b/app/views/homework_commons/index.json.jbuilder @@ -25,8 +25,8 @@ 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) + json.publish_immediately @user.logged? && @user_course_identity < Course::STUDENT && homework.publish_immediately(charge_ids) + json.end_immediately @user.logged? && @user_course_identity < Course::STUDENT && homework.end_immediately(charge_ids) unless curr_status[:status].include?("未发布") work_count = calculate_work_count homework, @member From ea8aeafdb7fe8f84132cbe0303bf049671baf509 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Fri, 28 Feb 2020 10:09:44 +0800 Subject: [PATCH 04/27] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E5=88=97=E8=A1=A8?= =?UTF-8?q?=E6=9C=AA=E7=99=BB=E5=BD=95=E8=AE=BF=E9=97=AE=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/course.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/models/course.rb b/app/models/course.rb index 38769ba07..f7db61995 100644 --- a/app/models/course.rb +++ b/app/models/course.rb @@ -260,7 +260,7 @@ class Course < ApplicationRecord 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? + elsif user&.admin_or_business? course_groups.pluck(:id) else [] From 6d552378e38f82ededf1d60fe5b918c59d293906 Mon Sep 17 00:00:00 2001 From: daiao <358551898@qq.com> Date: Fri, 28 Feb 2020 10:50:50 +0800 Subject: [PATCH 05/27] =?UTF-8?q?=E5=9B=9E=E8=B0=83=E6=88=90=E5=8A=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/videos/dispatch_callback_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/videos/dispatch_callback_service.rb b/app/services/videos/dispatch_callback_service.rb index e6c089ac2..b32c87c4e 100644 --- a/app/services/videos/dispatch_callback_service.rb +++ b/app/services/videos/dispatch_callback_service.rb @@ -3,7 +3,7 @@ class Videos::DispatchCallbackService < ApplicationService def initialize(params) @video = Video.find_by(uuid: params[:VideoId]) - @params = params`` + @params = params end def call From 52017c985805084621b2551787421aa13bd14e65 Mon Sep 17 00:00:00 2001 From: daiao <358551898@qq.com> Date: Fri, 28 Feb 2020 11:21:22 +0800 Subject: [PATCH 06/27] =?UTF-8?q?=E8=B0=83=E8=AF=95=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/admins/school_daily_statistic_service.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/services/admins/school_daily_statistic_service.rb b/app/services/admins/school_daily_statistic_service.rb index 64bb97864..f81bc7bb6 100644 --- a/app/services/admins/school_daily_statistic_service.rb +++ b/app/services/admins/school_daily_statistic_service.rb @@ -44,6 +44,7 @@ class Admins::SchoolDailyStatisticService < ApplicationService courses = Course.where(is_delete: 0, school_id: ids).group('school_id') course_map = courses.count + Rails.logger.info("####courses_daiao: #{courses.inspect}") nearly_course_time_map = courses.joins(:course_acts).maximum('course_activities.updated_at') active_course_map = courses.where(is_end: false).count From 75870ba4d972498202c33d1ea3f47ed037dfdac9 Mon Sep 17 00:00:00 2001 From: daiao <358551898@qq.com> Date: Fri, 28 Feb 2020 11:27:03 +0800 Subject: [PATCH 07/27] 1 --- app/models/course.rb | 2 +- app/services/admins/school_daily_statistic_service.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models/course.rb b/app/models/course.rb index f7db61995..14c17cf39 100644 --- a/app/models/course.rb +++ b/app/models/course.rb @@ -387,7 +387,7 @@ class Course < ApplicationRecord end def max_activity_time - course_acts.pluck(:updated_at).max + course_activities.pluck(:updated_at).max end # 课堂作业数 diff --git a/app/services/admins/school_daily_statistic_service.rb b/app/services/admins/school_daily_statistic_service.rb index f81bc7bb6..fec289eae 100644 --- a/app/services/admins/school_daily_statistic_service.rb +++ b/app/services/admins/school_daily_statistic_service.rb @@ -45,7 +45,7 @@ class Admins::SchoolDailyStatisticService < ApplicationService courses = Course.where(is_delete: 0, school_id: ids).group('school_id') course_map = courses.count Rails.logger.info("####courses_daiao: #{courses.inspect}") - nearly_course_time_map = courses.joins(:course_acts).maximum('course_activities.updated_at') + nearly_course_time_map = courses.joins(:course_activities).maximum('course_activities.updated_at') active_course_map = courses.where(is_end: false).count shixun_map = Shixun.joins(user: :user_extension).where(user_extensions: { identity: :teacher, school_id: ids }) From bb5297522d9b8c8128956e736bd93a9cd1538b31 Mon Sep 17 00:00:00 2001 From: daiao <358551898@qq.com> Date: Fri, 28 Feb 2020 11:27:19 +0800 Subject: [PATCH 08/27] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=B3=A8=E8=A7=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/admins/school_daily_statistic_service.rb | 1 - 1 file changed, 1 deletion(-) diff --git a/app/services/admins/school_daily_statistic_service.rb b/app/services/admins/school_daily_statistic_service.rb index fec289eae..5dce40540 100644 --- a/app/services/admins/school_daily_statistic_service.rb +++ b/app/services/admins/school_daily_statistic_service.rb @@ -44,7 +44,6 @@ class Admins::SchoolDailyStatisticService < ApplicationService courses = Course.where(is_delete: 0, school_id: ids).group('school_id') course_map = courses.count - Rails.logger.info("####courses_daiao: #{courses.inspect}") nearly_course_time_map = courses.joins(:course_activities).maximum('course_activities.updated_at') active_course_map = courses.where(is_end: false).count From 32b059f538d6c82e451dc47b9adfe48a5376d7f6 Mon Sep 17 00:00:00 2001 From: daiao <358551898@qq.com> Date: Fri, 28 Feb 2020 14:22:42 +0800 Subject: [PATCH 09/27] 1 --- app/controllers/weapps/challenges_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/weapps/challenges_controller.rb b/app/controllers/weapps/challenges_controller.rb index 24bd4baeb..e29f16f28 100644 --- a/app/controllers/weapps/challenges_controller.rb +++ b/app/controllers/weapps/challenges_controller.rb @@ -6,10 +6,10 @@ class Weapps::ChallengesController < Weapps::BaseController # 关卡有展示效果 || 选择题 || jupyter实训 || vnc || 隐藏代码窗口 || html+css实训 # @challenge.show_type != -1 || @challenge.st == 1 || @shixun.is_jupyter? || @shixun.vnc || # @shixun.hide_code? || (@shixun.small_mirror_name & ["Css", "Html", "Web"]).present? - play = @shixun.is_jupyter? || @shixun.vnc || + play = @challenge.st == 1 || @shixun.is_jupyter? || @shixun.vnc || @shixun.hide_code? || (@shixun.small_mirror_name & ["Css", "Html", "Web"]).present? - if @challenge.st != 1 && play + if play normal_status(-5, "该关卡暂不支持小程序") else render_ok From 7f9e1123ef598c9ae2a48c1a245df9f165fd88ac Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Fri, 28 Feb 2020 15:33:43 +0800 Subject: [PATCH 10/27] =?UTF-8?q?=E8=AF=BE=E5=A0=82=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/tasks/migrate_course_resource.rake | 232 +++++++++++++++++++++++++ lib/tasks/migrate_course_student.rake | 32 ---- 2 files changed, 232 insertions(+), 32 deletions(-) create mode 100644 lib/tasks/migrate_course_resource.rake delete mode 100644 lib/tasks/migrate_course_student.rake diff --git a/lib/tasks/migrate_course_resource.rake b/lib/tasks/migrate_course_resource.rake new file mode 100644 index 000000000..d3095c6dd --- /dev/null +++ b/lib/tasks/migrate_course_resource.rake @@ -0,0 +1,232 @@ +# 执行示例 RAILS_ENV=production bundle exec rake migrate_course_resource:import_attachments args=3835,2526 +# + +desc "同步课堂学生数据" +namespace :migrate_course_resource do + if ENV['args'] + source_id = ENV['args'].split(",")[0] # 源课堂id + target_id = ENV['args'].split(",")[1] # 目标课堂id + end + + task import_attachments: :environment do + source_course = Course.find_by(id: source_id) + target_course = Course.find_by(id: target_id) + return if source_course.blank? || target_course.blank? + + source_course.attachments.each do |atta| + if atta.course_second_category.present? + target_category = CourseSecondCategory.find_by(name: atta.course_second_category.name, course_id: target_course.id, category_type: "attachment") + unless target_category.present? + course_module = Course.course_modules.find_by(module_type: "attachment") + target_category = CourseSecondCategory.create(name: atta.course_second_category.name, course_id: target_course.id, + category_type: "attachment", course_module_id: course_module&.id, + position: course_module&.course_second_categories&.count.to_i + 1) + end + end + target_course.attachments << target_course.attachments.build(atta.attributes.except("id").merge( + quotes: 0, + downloads: 0, + author_id: target_course.tea_id, + created_on: Time.now, + course_second_category_id: target_category&.id.to_i + )) + end + end + + task import_videos: :environment do + source_course = Course.find_by(id: source_id) + target_course = Course.find_by(id: target_id) + return if source_course.blank? || target_course.blank? + + source_course.course_videos.each do |video| + target_course.course_videos << CourseVideo.new(video_id: video.video_id) + end + end + + task import_homeworks: :environment do + source_course = Course.find_by(id: source_id) + target_course = Course.find_by(id: target_id) + return if source_course.blank? || target_course.blank? + + source_course.homework_commons.each do |homework| + ActiveRecord::Base.transaction do + if homework.course_second_category.present? + target_category = CourseSecondCategory.find_by(name: homework.course_second_category.name, course_id: target_course.id, category_type: "shixun_homework") + unless target_category.present? + course_module = Course.course_modules.find_by(module_type: "shixun_homework") + target_category = CourseSecondCategory.create(name: homework.course_second_category.name, course_id: target_course.id, + category_type: "shixun_homework", course_module_id: course_module&.id, + position: course_module&.course_second_categories&.count.to_i + 1) + end + end + + # 复制作业的基本信息 + new_homework = HomeworkCommon.new(name: homework.name, user_id: target_course.tea_id, description: homework.description, + homework_type: homework.homework_type, course_id: target_course.id, + reference_answer: homework.reference_answer, course_second_category_id: target_category&.id.to_i) + + # 作业的基本设置复制 + new_homework.homework_detail_manual = HomeworkDetailManual.new + new_homework_detail_manual = new_homework.homework_detail_manual + new_homework_detail_manual.te_proportion = 0.7 + new_homework_detail_manual.ta_proportion = 0.3 + + if new_homework.homework_type == "group" + # 分组作业表的复制 + old_homework_group = homework.homework_detail_group + new_homework.homework_detail_group = HomeworkDetailGroup.new + new_homework.homework_detail_group.min_num = old_homework_group&.min_num + new_homework.homework_detail_group.max_num = old_homework_group&.max_num + new_homework.homework_detail_group.base_on_project = old_homework_group&.base_on_project + end + + if new_homework.homework_type == "practice" + # 分组作业表的复制 + new_homework.homework_commons_shixun = HomeworkCommonsShixun.new + new_homework.homework_commons_shixun.shixun_id = homework.homework_commons_shixun&.shixun_id + + homework.position = HomeworkCommon.where(course_id:target_course.id, homework_type: "practice").pluck(:position).max.to_i + 1 + + homework.homework_challenge_settings.each do |setting| + new_homework.homework_challenge_settings << HomeworkChallengeSetting.new(challenge_id: setting.challenge_id, + shixun_id: setting.shixun_id, score: setting.score) + end + end + + # 附件 + if new_homework.save + homework.attachments.try(:each) do |attachment| + att = attachment.copy + att.container_id = nil + att.container_type = nil + att.author_id = homework.user_id + att.attachtype = attachment.attachtype || 1 + # att.attachtype = 1 + att.copy_from = attachment.id + att.save! + new_homework.attachments << att + end + new_homework_detail_manual.save if new_homework_detail_manual + new_homework.homework_detail_group.save if new_homework.homework_detail_group + new_homework.homework_commons_shixun.save if new_homework.homework_commons_shixun + CreateStudentWorkJob.perform_later(new_homework.id) + end + end + end + end + + task import_exercises: :environment do + source_course = Course.find_by(id: source_id) + target_course = Course.find_by(id: target_id) + return if source_course.blank? || target_course.blank? + + source_course.exercises.each do |exercise| + ActiveRecord::Base.transaction do + new_exercise = Exercise.new(:exercise_name => exercise.exercise_name, :exercise_description => exercise.exercise_description, + :user_id => target_course.tea_id, :course_id => target_course.id) + # 复制试卷基本信息 + exercise.exercise_questions.each do |q| + option = { + :question_title => q.question_title, + :question_type => q.question_type || 1, + :question_number => q.question_number, + :question_score => q.question_score, + :shixun_name => q.shixun_name, + :shixun_id => q.shixun_id, + :is_ordered => q.is_ordered + } + exercise_question = new_exercise.exercise_questions.new option + # question_type:5实训题;其他是非实训题 + if q.question_type != 5 + # 复制选择题题目选项 + q.exercise_choices.try(:each_with_index) do |choice, index| + exercise_question.exercise_choices.new({choice_position: index+1, choice_text: choice.choice_text}) + end + + # 复制标准答案(填空题和问答题) 多空填空题的话,应该是原标准答案的exercise_choice_id,即为题空的位置。 + q.exercise_standard_answers.try(:each) do |answer| + exercise_question.exercise_standard_answers.new({exercise_choice_id: answer.exercise_choice_id, answer_text: answer.answer_text}) + end + else + # 复制实训题 + q.exercise_shixun_challenges.try(:each_with_index) do |sc, index| + exercise_question.exercise_shixun_challenges.new({position: index+1, challenge_id: sc.challenge_id, + shixun_id: sc.shixun_id, question_score: sc.question_score}) + end + end + end + new_exercise.save! + end + end + end + + task import_polls: :environment do + source_course = Course.find_by(id: source_id) + target_course = Course.find_by(id: target_id) + return if source_course.blank? || target_course.blank? + + source_course.polls.each do |poll| + new_poll = Poll.new(:polls_name => poll.polls_name, :polls_description => poll.polls_description, :user_id => target_course.tea_id, + :polls_type => 'Course', :course_id => target_course.id) + + poll.poll_questions.try(:each) do |q| + option = { + :question_title => q.question_title, + :question_type => q.question_type || 1, + :is_necessary => q.is_necessary, + :question_number => q.question_number, + :max_choices => q.max_choices, + :min_choices => q.min_choices + } + poll_question = new_poll.poll_questions.new option + q.poll_answers.try(:each_with_index) do |choice, index| + poll_question.poll_answers.new({answer_position: index+1, answer_text: choice.answer_text}) + end + end + new_poll.save! + end + end + + + task import_members: :environment do + source_course = Course.find_by(id: source_id) + target_course = Course.find_by(id: target_id) + return if source_course.blank? || target_course.blank? + + source_course.course_members.where(role: %i[PROFESSOR ASSISTANT_PROFESSOR]).each do |teacher| + new_member = target_course.teachers.find_by(user_id: teacher.user_id) + unless new_member.present? + new_member = CourseMember.create!(course_id: target_course.id, user_id: teacher.user_id, role: teacher.role) + end + end + + source_course.course_groups.each do |group| + unless target_course.course_groups.where(name: group.name).exists? + new_group = CourseGroup.create!(course_id: target_course.id, name: group.name, position: target_course.course_groups.pluck(:position).max.to_i + 1) + else + new_group = target_course.course_groups.find_by(name: group.name) + end + new_user_ids = [] + group.course_members.where(role: 4).each do |member| + new_member = target_course.course_members.find_by(user_id: member.user_id) + if new_member.present? + new_member.update_column("course_group_id", new_group.id) + else + CourseMember.create!(course_id: target_course.id, course_group_id: new_group.id, user_id: member.user_id, role: member.role) + new_user_ids << member.user_id + end + end + + # CourseAddStudentCreateWorksJob.perform_later(target_course.id, new_user_ids) unless new_user_ids.blank? + + group.teacher_course_groups.each do |teacher_group| + member = CourseMember.find_by(course_id: target_course.id, user_id: teacher_group.user_id, role: %i[CREATOR PROFESSOR ASSISTANT_PROFESSOR]) + if member.present? + TeacherCourseGroup.create!(course_group_id: new_group.id, course_id: target_course.id, course_member_id: member&.id, user_id: member&.user_id) + end + end + end + + end + + end \ No newline at end of file diff --git a/lib/tasks/migrate_course_student.rake b/lib/tasks/migrate_course_student.rake deleted file mode 100644 index 913cb2562..000000000 --- a/lib/tasks/migrate_course_student.rake +++ /dev/null @@ -1,32 +0,0 @@ -# 执行示例 RAILS_ENV=production bundle exec rake migrate_course_student:student args=3835,2526,21950,1000 -# args 第一个课程 course_id,第二个参数是学校school_id,第三个参数是部门id,第四个参数是迁移数量 -# - -desc "同步学校的学生" -namespace :migrate_course_student do - if ENV['args'] - course_id = ENV['args'].split(",")[0] # 对应课堂的id - school_id = ENV['args'].split(",")[1] # 对应学校id - department_id = ENV['args'].split(",")[2] # 对应部门id - limit = ENV['args'].split(",")[3] # 限制导入的数量 - end - - task :student => :environment do - course = Course.find course_id - users = User.joins(:user_extension).where(user_extensions: {school_id: school_id, department_id: department_id, identity: 1}).limit(limit) - user_ids = [] - - users.each do |user| - if user.student_id.present? && !course.students.exists?(user_id: user.id) - begin - CourseMember.create!(course_id: course_id, user_id: user.id, role: 4) - user_ids << user.id - rescue Exception => e - Rails.logger(e.message) - end - end - end - CourseAddStudentCreateWorksJob.perform_later(course_id, user_ids) - - end -end \ No newline at end of file From db833e83a57935f205a8fcea5bdf9104dde3586c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com> Date: Fri, 28 Feb 2020 15:38:15 +0800 Subject: [PATCH 11/27] =?UTF-8?q?=E8=B0=83=E6=95=B4=E8=AF=BE=E5=A0=82?= =?UTF-8?q?=E8=80=81=E5=B8=88=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../courses/members/CourseGroupChooser.js | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/public/react/src/modules/courses/members/CourseGroupChooser.js b/public/react/src/modules/courses/members/CourseGroupChooser.js index 655754dc4..32868f15d 100644 --- a/public/react/src/modules/courses/members/CourseGroupChooser.js +++ b/public/react/src/modules/courses/members/CourseGroupChooser.js @@ -2,7 +2,7 @@ import React, { useState, useEffect } from 'react' import { trigger } from 'educoder' import { Input, Checkbox } from "antd"; -/** +/** arg_course_groups 选中的id数组 joinCourseGroup 选中时触发 joinCourseGroup(checkedValues, item, index) 传入item:数据对象,index: 数据对象index checkAllValue 是否全选 @@ -33,13 +33,13 @@ function CourseGroupChooser({ course_groups, isAdminOrCreator = true, item, inde that.setState({groupSearchValue: e.target.value}) that.onCheckAllChange(e, item, index) - onCheckAllChange(e, item, index) - that.joinCourseGroup(checkedValues, item, index) - joinCourseGroup(checkedValues, item, index) + that.joinCourseGroup(checkedValues, item, index) - joinCourseGroup(checkedValues, item, index) that.state.checkAllArray[index] - checkAllValue */ console.log('arg_course_groups', arg_course_groups) - + const urlStyle = {"left":"unset", minWidth: '262px'}; if (alwaysShow == true) { @@ -54,17 +54,18 @@ function CourseGroupChooser({ course_groups, isAdminOrCreator = true, item, inde

): '' } - - joinCourseGroup(checkedValues, item, index)} + + joinCourseGroup(checkedValues, item, index)} value={arg_course_groups.length && arg_course_groups[0].id ? arg_course_groups.map(item => item.id): arg_course_groups} disabled={!isAdminOrCreator} className="mainGroup" > {course_groups && course_groups.length > 1 &&
  • {/* 防止被外面group包裹 */} onCheckAllChange(e, item, index)} value={[checkAllValue]}> - {}} + disabled={!isAdminOrCreator} + style={{ marginRight: '6px' }} onClick={() => {}} >全选
  • } @@ -84,7 +85,7 @@ function CourseGroupChooser({ course_groups, isAdminOrCreator = true, item, inde ) }) } - +

    Date: Fri, 28 Feb 2020 15:40:45 +0800 Subject: [PATCH 12/27] =?UTF-8?q?=E8=AF=BE=E5=A0=82=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/tasks/migrate_course_resource.rake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/tasks/migrate_course_resource.rake b/lib/tasks/migrate_course_resource.rake index d3095c6dd..628d84de2 100644 --- a/lib/tasks/migrate_course_resource.rake +++ b/lib/tasks/migrate_course_resource.rake @@ -17,7 +17,7 @@ namespace :migrate_course_resource do if atta.course_second_category.present? target_category = CourseSecondCategory.find_by(name: atta.course_second_category.name, course_id: target_course.id, category_type: "attachment") unless target_category.present? - course_module = Course.course_modules.find_by(module_type: "attachment") + course_module = target_course.course_modules.find_by(module_type: "attachment") target_category = CourseSecondCategory.create(name: atta.course_second_category.name, course_id: target_course.id, category_type: "attachment", course_module_id: course_module&.id, position: course_module&.course_second_categories&.count.to_i + 1) From b42cbbd09be5e6764c6866fcd3bdb457fd541b0f Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Fri, 28 Feb 2020 15:43:25 +0800 Subject: [PATCH 13/27] =?UTF-8?q?=E8=AF=BE=E5=A0=82=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/tasks/migrate_course_resource.rake | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/tasks/migrate_course_resource.rake b/lib/tasks/migrate_course_resource.rake index 628d84de2..e22f0b54e 100644 --- a/lib/tasks/migrate_course_resource.rake +++ b/lib/tasks/migrate_course_resource.rake @@ -53,7 +53,7 @@ namespace :migrate_course_resource do if homework.course_second_category.present? target_category = CourseSecondCategory.find_by(name: homework.course_second_category.name, course_id: target_course.id, category_type: "shixun_homework") unless target_category.present? - course_module = Course.course_modules.find_by(module_type: "shixun_homework") + course_module = target_course.course_modules.find_by(module_type: "shixun_homework") target_category = CourseSecondCategory.create(name: homework.course_second_category.name, course_id: target_course.id, category_type: "shixun_homework", course_module_id: course_module&.id, position: course_module&.course_second_categories&.count.to_i + 1) @@ -217,7 +217,7 @@ namespace :migrate_course_resource do end end - # CourseAddStudentCreateWorksJob.perform_later(target_course.id, new_user_ids) unless new_user_ids.blank? + CourseAddStudentCreateWorksJob.perform_later(target_course.id, new_user_ids) unless new_user_ids.blank? group.teacher_course_groups.each do |teacher_group| member = CourseMember.find_by(course_id: target_course.id, user_id: teacher_group.user_id, role: %i[CREATOR PROFESSOR ASSISTANT_PROFESSOR]) From 658f862a32bf8a8c2e9b4ab05eae280fa8051be3 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Fri, 28 Feb 2020 15:52:07 +0800 Subject: [PATCH 14/27] =?UTF-8?q?rake=E4=BB=BB=E5=8A=A1=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/tasks/migrate_course_resource.rake | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/tasks/migrate_course_resource.rake b/lib/tasks/migrate_course_resource.rake index e22f0b54e..44e4ef5f4 100644 --- a/lib/tasks/migrate_course_resource.rake +++ b/lib/tasks/migrate_course_resource.rake @@ -208,7 +208,7 @@ namespace :migrate_course_resource do end new_user_ids = [] group.course_members.where(role: 4).each do |member| - new_member = target_course.course_members.find_by(user_id: member.user_id) + new_member = target_course.students.find_by(user_id: member.user_id) if new_member.present? new_member.update_column("course_group_id", new_group.id) else @@ -227,6 +227,18 @@ namespace :migrate_course_resource do end end + user_ids = [] + source_course.students.where(course_group_id: 0).each do |member| + new_member = target_course.students.find_by(user_id: member.user_id) + if new_member.present? + new_member.update_column("course_group_id", 0) + else + CourseMember.create!(course_id: target_course.id, course_group_id: 0, user_id: member.user_id, role: member.role) + user_ids << member.user_id + end + end + CourseAddStudentCreateWorksJob.perform_later(target_course.id, user_ids) unless user_ids.blank? + end end \ No newline at end of file From 75d009c97412c6a4fc94643692627e6eee5c9709 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Fri, 28 Feb 2020 16:16:15 +0800 Subject: [PATCH 15/27] =?UTF-8?q?rake=E4=BB=BB=E5=8A=A1=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/tasks/migrate_course_resource.rake | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/lib/tasks/migrate_course_resource.rake b/lib/tasks/migrate_course_resource.rake index 44e4ef5f4..afccb8523 100644 --- a/lib/tasks/migrate_course_resource.rake +++ b/lib/tasks/migrate_course_resource.rake @@ -193,6 +193,16 @@ namespace :migrate_course_resource do target_course = Course.find_by(id: target_id) return if source_course.blank? || target_course.blank? + + # 先把target——course中的老师创建分班权限 + target_course.teachers.each do |member| + if member.teacher_course_groups.blank? + target_course.course_groups.each do |group| + TeacherCourseGroup.create!(course_group_id: group.id, course_id: target_course.id, course_member_id: member&.id, user_id: member&.user_id) + end + end + end + source_course.course_members.where(role: %i[PROFESSOR ASSISTANT_PROFESSOR]).each do |teacher| new_member = target_course.teachers.find_by(user_id: teacher.user_id) unless new_member.present? @@ -210,7 +220,7 @@ namespace :migrate_course_resource do group.course_members.where(role: 4).each do |member| new_member = target_course.students.find_by(user_id: member.user_id) if new_member.present? - new_member.update_column("course_group_id", new_group.id) + new_member.update_attributes(course_group_id: new_group.id) else CourseMember.create!(course_id: target_course.id, course_group_id: new_group.id, user_id: member.user_id, role: member.role) new_user_ids << member.user_id @@ -221,7 +231,7 @@ namespace :migrate_course_resource do group.teacher_course_groups.each do |teacher_group| member = CourseMember.find_by(course_id: target_course.id, user_id: teacher_group.user_id, role: %i[CREATOR PROFESSOR ASSISTANT_PROFESSOR]) - if member.present? + if member.present? && member.teacher_course_groups.where(course_group_id: new_group.id).exists? TeacherCourseGroup.create!(course_group_id: new_group.id, course_id: target_course.id, course_member_id: member&.id, user_id: member&.user_id) end end @@ -231,7 +241,7 @@ namespace :migrate_course_resource do source_course.students.where(course_group_id: 0).each do |member| new_member = target_course.students.find_by(user_id: member.user_id) if new_member.present? - new_member.update_column("course_group_id", 0) + new_member.update_attributes(course_group_id: 0) else CourseMember.create!(course_id: target_course.id, course_group_id: 0, user_id: member.user_id, role: member.role) user_ids << member.user_id From 9a4c0215cdf4812e8dbcd54918eea697aa9d8b04 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Fri, 28 Feb 2020 16:36:53 +0800 Subject: [PATCH 16/27] =?UTF-8?q?rake=E4=BB=BB=E5=8A=A1=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/tasks/migrate_course_resource.rake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/tasks/migrate_course_resource.rake b/lib/tasks/migrate_course_resource.rake index afccb8523..34d216625 100644 --- a/lib/tasks/migrate_course_resource.rake +++ b/lib/tasks/migrate_course_resource.rake @@ -231,7 +231,7 @@ namespace :migrate_course_resource do group.teacher_course_groups.each do |teacher_group| member = CourseMember.find_by(course_id: target_course.id, user_id: teacher_group.user_id, role: %i[CREATOR PROFESSOR ASSISTANT_PROFESSOR]) - if member.present? && member.teacher_course_groups.where(course_group_id: new_group.id).exists? + if member.present? && !member.teacher_course_groups.where(course_group_id: new_group.id).exists? TeacherCourseGroup.create!(course_group_id: new_group.id, course_id: target_course.id, course_member_id: member&.id, user_id: member&.user_id) end end From 564a18ed4bf1b0908adb3e4955defea672572573 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com> Date: Fri, 28 Feb 2020 17:08:00 +0800 Subject: [PATCH 17/27] =?UTF-8?q?=E8=B0=83=E6=95=B4=E6=BB=9A=E5=8A=A8?= =?UTF-8?q?=E6=9D=A1=E5=BD=B1=E5=93=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/react/public/index.html | 3 + .../src/modules/courses/ListPageIndex.js | 13 ++- .../modules/courses/common/ModalWrapper.js | 2 +- .../courses/coursesDetail/CoursesLeftNav.js | 2 +- .../courses/coursesPublic/HomeworkModal.js | 10 +- .../courses/coursesPublic/ModalsRename.js | 10 ++ .../courses/coursesPublic/NewShixunModel.js | 2 +- .../modules/courses/members/teacherList.js | 97 ++++++++++--------- .../courses/shixunHomework/shixunHomework.js | 4 +- public/react/src/modules/modals/Modals.js | 2 +- .../modules/page/main/ChooseRepositoryView.js | 44 ++++----- 11 files changed, 103 insertions(+), 86 deletions(-) diff --git a/public/react/public/index.html b/public/react/public/index.html index 38fd550ab..2fa1d3297 100755 --- a/public/react/public/index.html +++ b/public/react/public/index.html @@ -96,6 +96,9 @@ :""}

    {this.props.Navname}名称: