From 2cd891e0161f8af8a001153f464a926fe8c0981d Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Thu, 5 Dec 2019 11:04:24 +0800 Subject: [PATCH 1/5] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/homework_commons_controller.rb | 15 +++------------ app/models/homework_common.rb | 9 +++++++++ .../update_homework_publish_setting_service.rb | 4 ++-- 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/app/controllers/homework_commons_controller.rb b/app/controllers/homework_commons_controller.rb index 8e3436aa6..6918610df 100644 --- a/app/controllers/homework_commons_controller.rb +++ b/app/controllers/homework_commons_controller.rb @@ -1106,7 +1106,7 @@ class HomeworkCommonsController < ApplicationController else homework.unified_setting = false # 创建作业分班设置:homework_group_setting - create_homework_group_settings(homework) + homework.create_homework_group_settings # 选中的分班设置的发布时间改为当前时间,截止时间改为传的截止时间参数 if params[:detail] @@ -1142,7 +1142,7 @@ class HomeworkCommonsController < ApplicationController # 发消息 HomeworkCommonPushNotifyJob.perform_later(homework.id, tiding_group_ids) else - create_homework_group_settings(homework) + homework.create_homework_group_settings none_publish_settings = homework.homework_group_settings.where(course_group_id: publish_groups).none_published if params[:detail] @@ -1216,7 +1216,7 @@ class HomeworkCommonsController < ApplicationController # 分组设置 if !params[:group_ids].blank? # 确保之前是统一设置或者有新创建的分班的数据一致性 - create_homework_group_settings(homework) + homework.create_homework_group_settings homework.unified_setting = false if homework.unified_setting && end_groups.length != @course.course_groups_count @@ -1587,15 +1587,6 @@ class HomeworkCommonsController < ApplicationController end - def create_homework_group_settings homework - if homework.homework_group_settings.size != @course.course_groups.size - @course.course_groups.where.not(id: homework.homework_group_settings.pluck(:course_group_id)).each do |group| - homework.homework_group_settings << HomeworkGroupSetting.new(course_group_id: group.id, course_id: @course.id, - publish_time: homework.publish_time, end_time: homework.end_time) - end - end - end - def get_new_code_reviews_result homework if homework.code_reviews_new_results? # 获取最新的查询id diff --git a/app/models/homework_common.rb b/app/models/homework_common.rb index def3b6b0d..d37650c37 100644 --- a/app/models/homework_common.rb +++ b/app/models/homework_common.rb @@ -285,6 +285,15 @@ class HomeworkCommon < ApplicationRecord homework_challenge_settings.find_by(challenge_id: challenge_id)&.score.to_f end + def create_homework_group_settings + if homework_group_settings.size != course.course_groups.size + course.course_groups.where.not(id: homework_group_settings.pluck(:course_group_id)).each do |group| + homework_group_settings << HomeworkGroupSetting.new(course_group_id: group.id, course_id: course.id, + publish_time: publish_time, end_time: end_time) + end + end + end + def update_homework_work_score if unified_setting works = student_works diff --git a/app/services/update_homework_publish_setting_service.rb b/app/services/update_homework_publish_setting_service.rb index 10287ce64..6350e0dc7 100644 --- a/app/services/update_homework_publish_setting_service.rb +++ b/app/services/update_homework_publish_setting_service.rb @@ -29,7 +29,7 @@ class UpdateHomeworkSettingService < ApplicationService else raise(Error, "分班发布设置不能为空") if params[:group_settings].blank? # 创建作业的分班设置 - create_homework_group_settings homework + homework.create_homework_group_settings setting_group_ids = [] @@ -81,7 +81,7 @@ class UpdateHomeworkSettingService < ApplicationService homework.end_time = params[:end_time] elsif !homework.unified_setting - create_homework_group_settings homework + homework.create_homework_group_settings raise(Error, "分班发布设置不能为空") if params[:group_settings].blank? params[:group_settings].each do |setting| group_settings = HomeworkGroupSetting.where(homework_common_id: homework.id, course_group_id: setting[:group_id]) From 4c09c51ce93680d64d4cda6b26d6de8613a49f63 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Thu, 5 Dec 2019 11:10:34 +0800 Subject: [PATCH 2/5] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../homework_commons_controller.rb | 10 ++-- ...update_homework_publish_setting_service.rb | 52 +++++++++---------- 2 files changed, 32 insertions(+), 30 deletions(-) diff --git a/app/controllers/homework_commons_controller.rb b/app/controllers/homework_commons_controller.rb index 6918610df..4a31fc474 100644 --- a/app/controllers/homework_commons_controller.rb +++ b/app/controllers/homework_commons_controller.rb @@ -833,10 +833,12 @@ class HomeworkCommonsController < ApplicationController else tip_exception("课堂已结束不能再更新") end - rescue ApplicationService::Error => ex - uid_logger(ex.message) - render_error(ex.message) - raise ActiveRecord::Rollback + # rescue ActiveRecord::RecordInvalid + # render_error("保存失败") + # rescue ApplicationService::Error => ex + # uid_logger(ex.message) + # render_error(ex.message) + # raise ActiveRecord::Rollback rescue Exception => e uid_logger(e.backtrace) tip_exception(e.message) diff --git a/app/services/update_homework_publish_setting_service.rb b/app/services/update_homework_publish_setting_service.rb index 6350e0dc7..00d618522 100644 --- a/app/services/update_homework_publish_setting_service.rb +++ b/app/services/update_homework_publish_setting_service.rb @@ -10,14 +10,14 @@ class UpdateHomeworkSettingService < ApplicationService course = homework.course # 作业未发布时,unified_setting参数不能为空 if homework.publish_time.nil? || homework.publish_time > Time.now - raise(Error, "缺少统一设置的参数") if params[:unified_setting].nil? + tip_exception("缺少统一设置的参数") if params[:unified_setting].nil? if params[:unified_setting] || course.course_groups_count == 0 - raise(Error, "发布时间不能为空") if params[:publish_time].blank? - raise(Error, "截止时间不能为空") if params[:end_time].blank? - raise(Error, "发布时间不能早于当前时间") if params[:publish_time] <= Time.now.strftime("%Y-%m-%d %H:%M:%S") - raise(Error, "截止时间不能早于当前时间") if params[:end_time] <= Time.now.strftime("%Y-%m-%d %H:%M:%S") - raise(Error, "截止时间不能早于发布时间") if params[:publish_time] > params[:end_time] - raise(Error, "截止时间不能晚于课堂结束时间(#{course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if + tip_exception("发布时间不能为空") if params[:publish_time].blank? + tip_exception("截止时间不能为空") if params[:end_time].blank? + 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("截止时间不能晚于课堂结束时间(#{course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if course.end_date.present? && params[:end_time] > course.end_date.end_of_day homework.unified_setting = 1 @@ -27,20 +27,20 @@ class UpdateHomeworkSettingService < ApplicationService homework.end_time = params[:end_time] else - raise(Error, "分班发布设置不能为空") if params[:group_settings].blank? + tip_exception("分班发布设置不能为空") if params[:group_settings].blank? # 创建作业的分班设置 homework.create_homework_group_settings setting_group_ids = [] params[:group_settings].each do |setting| - raise(Error, "分班id不能为空") if setting[:group_id].length == 0 - raise(Error, "发布时间不能为空") if setting[:publish_time].blank? - raise(Error, "截止时间不能为空") if setting[:end_time].blank? - raise(Error, "发布时间不能早于当前时间") if setting[:publish_time] <= strf_time(Time.now) - raise(Error, "截止时间不能早于当前时间") if setting[:end_time] <= strf_time(Time.now) - raise(Error, "截止时间不能早于发布时间") if setting[:publish_time] > setting[:end_time] - raise(Error, "截止时间不能晚于课堂结束时间(#{course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if + tip_exception("分班id不能为空") if setting[:group_id].length == 0 + tip_exception("发布时间不能为空") if setting[:publish_time].blank? + tip_exception("截止时间不能为空") if setting[:end_time].blank? + tip_exception("发布时间不能早于当前时间") if setting[:publish_time] <= strf_time(Time.now) + tip_exception("截止时间不能早于当前时间") if setting[:end_time] <= strf_time(Time.now) + tip_exception("截止时间不能早于发布时间") if setting[:publish_time] > setting[:end_time] + tip_exception("截止时间不能晚于课堂结束时间(#{course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if course.end_date.present? && setting[:end_time] > course.end_date.end_of_day @@ -73,28 +73,28 @@ class UpdateHomeworkSettingService < ApplicationService # 作业在"提交中"状态时 else if homework.end_time > Time.now && homework.unified_setting - raise(Error, "截止时间不能为空") if params[:end_time].blank? - raise(Error, "截止时间不能早于当前时间") if params[:end_time] <= strf_time(Time.now) - raise(Error, "截止时间不能晚于课堂结束时间(#{course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if + tip_exception("截止时间不能为空") if params[:end_time].blank? + tip_exception("截止时间不能早于当前时间") if params[:end_time] <= strf_time(Time.now) + tip_exception("截止时间不能晚于课堂结束时间(#{course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if course.end_date.present? && params[:end_time] > strf_time(course.end_date.end_of_day) homework.end_time = params[:end_time] elsif !homework.unified_setting homework.create_homework_group_settings - raise(Error, "分班发布设置不能为空") if params[:group_settings].blank? + tip_exception("分班发布设置不能为空") if params[:group_settings].blank? params[:group_settings].each do |setting| group_settings = HomeworkGroupSetting.where(homework_common_id: homework.id, course_group_id: setting[:group_id]) - raise(Error, "分班id不能为空") if setting[:group_id].length == 0 - raise(Error, "发布时间不能为空") if setting[:publish_time].blank? - raise(Error, "截止时间不能为空") if setting[:end_time].blank? + tip_exception("分班id不能为空") if setting[:group_id].length == 0 + tip_exception("发布时间不能为空") if setting[:publish_time].blank? + tip_exception("截止时间不能为空") if setting[:end_time].blank? # 如果该发布规则 没有已发布的分班则需判断发布时间 - raise(Error, "发布时间不能早于等于当前时间") if setting[:publish_time] <= strf_time(Time.now) && group_settings.group_published.count == 0 + tip_exception("发布时间不能早于等于当前时间") if setting[:publish_time] <= strf_time(Time.now) && group_settings.group_published.count == 0 - raise(Error, "截止时间不能早于等于当前时间") if setting[:end_time] <= strf_time(Time.now) && group_settings.none_end.count > 0 - raise(Error, "截止时间不能早于发布时间") if setting[:publish_time] > setting[:end_time] - raise(Error, "截止时间不能晚于课堂结束时间(#{course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if + tip_exception("截止时间不能早于等于当前时间") if setting[:end_time] <= strf_time(Time.now) && group_settings.none_end.count > 0 + tip_exception("截止时间不能早于发布时间") if setting[:publish_time] > setting[:end_time] + tip_exception("截止时间不能晚于课堂结束时间(#{course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")})") if course.end_date.present? && setting[:end_time] > strf_time(course.end_date.end_of_day) group_settings.none_published.update_all(publish_time: setting[:publish_time]) From ff138cb420a4c233fab7d1370e2f4b2e27605a30 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Thu, 5 Dec 2019 11:14:48 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E4=BD=9C=E4=B8=9A=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../20191204030230_migrate_exercise_single_question_score.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/db/migrate/20191204030230_migrate_exercise_single_question_score.rb b/db/migrate/20191204030230_migrate_exercise_single_question_score.rb index c71fea157..1238e25f1 100644 --- a/db/migrate/20191204030230_migrate_exercise_single_question_score.rb +++ b/db/migrate/20191204030230_migrate_exercise_single_question_score.rb @@ -17,7 +17,7 @@ class MigrateExerciseSingleQuestionScore < ActiveRecord::Migration[5.2] user_choice_position = answer.exercise_choice&.choice_position if user_choice_position && (user_choice_position.to_i == question.exercise_standard_answers.take&.exercise_choice_id.to_i) answer.update!(score: question.question_score) - score = exercise_user.score + question.question_score + score = exercise_user.score.to_f + question.question_score objective_score = exercise_user.objective_score + question.question_score exercise_user.update!(score: score, objective_score: objective_score) end From 196d25362ee32ce5df10c08b1dadb87a76812fa7 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Thu, 5 Dec 2019 11:36:55 +0800 Subject: [PATCH 4/5] =?UTF-8?q?=E5=B0=8F=E7=A8=8B=E5=BA=8F=E5=AE=9E?= =?UTF-8?q?=E8=AE=AD=E4=BD=9C=E4=B8=9A=E7=9A=84=E8=AE=BE=E7=BD=AE=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../weapps/homework_commons_controller.rb | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 app/controllers/weapps/homework_commons_controller.rb diff --git a/app/controllers/weapps/homework_commons_controller.rb b/app/controllers/weapps/homework_commons_controller.rb new file mode 100644 index 000000000..00d2ce926 --- /dev/null +++ b/app/controllers/weapps/homework_commons_controller.rb @@ -0,0 +1,37 @@ +class Weapps::HomeworkCommonsController < Weapps::BaseController + before_action :require_login + before_action :find_homework, :user_course_identity + before_action :teacher_allowed + + def update_settings + begin + # 课堂结束后不能再更新 + if @course.is_end + UpdateHomeworkSettingService.call(@homework, publish_params) + else + tip_exception("课堂已结束不能再更新") + end + rescue Exception => e + uid_logger(e.backtrace) + tip_exception(e.message) + raise ActiveRecord::Rollback + end + end + + private + + def teacher_allowed + return render_forbidden unless @user_course_identity < Course::STUDENT + end + + def find_homework + @homework = HomeworkCommon.find_by!(id: params[:id]) + @course = @homework.course + @homework_detail_manual = @homework.homework_detail_manual + end + + def publish_params + params.permit(:unified_setting, :publish_time, :end_time, group_settings: []) + end + +end \ No newline at end of file From d8a64d31f79abf3d084dd12a5fc4ebccb8e0d323 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Thu, 5 Dec 2019 11:40:03 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E5=AE=9E=E8=AE=AD=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E7=9A=84=E8=AE=BE=E7=BD=AE=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config/routes.rb | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/config/routes.rb b/config/routes.rb index 3d4495edc..283ee0d24 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -926,6 +926,10 @@ Rails.application.routes.draw do delete :delete_course_students end end + + resources :homework_commons do + post :update_settings, on: :member + end end resources :users_for_partners, only: [:index]