Merge branch 'dev_aliyun' of https://bdgit.educoder.net/Hjqreturn/educoder into dev_aliyun

dev_forge
daiao 5 years ago
commit ffb4b2c09e

@ -833,10 +833,12 @@ class HomeworkCommonsController < ApplicationController
else else
tip_exception("课堂已结束不能再更新") tip_exception("课堂已结束不能再更新")
end end
rescue ApplicationService::Error => ex # rescue ActiveRecord::RecordInvalid
uid_logger(ex.message) # render_error("保存失败")
render_error(ex.message) # rescue ApplicationService::Error => ex
raise ActiveRecord::Rollback # uid_logger(ex.message)
# render_error(ex.message)
# raise ActiveRecord::Rollback
rescue Exception => e rescue Exception => e
uid_logger(e.backtrace) uid_logger(e.backtrace)
tip_exception(e.message) tip_exception(e.message)
@ -1106,7 +1108,7 @@ class HomeworkCommonsController < ApplicationController
else else
homework.unified_setting = false homework.unified_setting = false
# 创建作业分班设置homework_group_setting # 创建作业分班设置homework_group_setting
create_homework_group_settings(homework) homework.create_homework_group_settings
# 选中的分班设置的发布时间改为当前时间,截止时间改为传的截止时间参数 # 选中的分班设置的发布时间改为当前时间,截止时间改为传的截止时间参数
if params[:detail] if params[:detail]
@ -1142,7 +1144,7 @@ class HomeworkCommonsController < ApplicationController
# 发消息 # 发消息
HomeworkCommonPushNotifyJob.perform_later(homework.id, tiding_group_ids) HomeworkCommonPushNotifyJob.perform_later(homework.id, tiding_group_ids)
else 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 none_publish_settings = homework.homework_group_settings.where(course_group_id: publish_groups).none_published
if params[:detail] if params[:detail]
@ -1216,7 +1218,7 @@ class HomeworkCommonsController < ApplicationController
# 分组设置 # 分组设置
if !params[:group_ids].blank? 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 homework.unified_setting = false if homework.unified_setting && end_groups.length != @course.course_groups_count
@ -1587,15 +1589,6 @@ class HomeworkCommonsController < ApplicationController
end 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 def get_new_code_reviews_result homework
if homework.code_reviews_new_results? if homework.code_reviews_new_results?
# 获取最新的查询id # 获取最新的查询id

@ -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

@ -285,6 +285,15 @@ class HomeworkCommon < ApplicationRecord
homework_challenge_settings.find_by(challenge_id: challenge_id)&.score.to_f homework_challenge_settings.find_by(challenge_id: challenge_id)&.score.to_f
end 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 def update_homework_work_score
if unified_setting if unified_setting
works = student_works works = student_works

@ -10,14 +10,14 @@ class UpdateHomeworkSettingService < ApplicationService
course = homework.course course = homework.course
# 作业未发布时unified_setting参数不能为空 # 作业未发布时unified_setting参数不能为空
if homework.publish_time.nil? || homework.publish_time > Time.now 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 if params[:unified_setting] || course.course_groups_count == 0
raise(Error, "发布时间不能为空") if params[:publish_time].blank? tip_exception("发布时间不能为空") if params[:publish_time].blank?
raise(Error, "截止时间不能为空") if params[:end_time].blank? tip_exception("截止时间不能为空") if params[:end_time].blank?
raise(Error, "发布时间不能早于当前时间") if params[:publish_time] <= Time.now.strftime("%Y-%m-%d %H:%M:%S") tip_exception("发布时间不能早于当前时间") 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") tip_exception("截止时间不能早于当前时间") if params[:end_time] <= Time.now.strftime("%Y-%m-%d %H:%M:%S")
raise(Error, "截止时间不能早于发布时间") if params[:publish_time] > params[:end_time] tip_exception("截止时间不能早于发布时间") if params[:publish_time] > params[:end_time]
raise(Error, "截止时间不能晚于课堂结束时间(#{course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")}") if 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 course.end_date.present? && params[:end_time] > course.end_date.end_of_day
homework.unified_setting = 1 homework.unified_setting = 1
@ -27,20 +27,20 @@ class UpdateHomeworkSettingService < ApplicationService
homework.end_time = params[:end_time] homework.end_time = params[:end_time]
else else
raise(Error, "分班发布设置不能为空") if params[:group_settings].blank? tip_exception("分班发布设置不能为空") if params[:group_settings].blank?
# 创建作业的分班设置 # 创建作业的分班设置
create_homework_group_settings homework homework.create_homework_group_settings
setting_group_ids = [] setting_group_ids = []
params[:group_settings].each do |setting| params[:group_settings].each do |setting|
raise(Error, "分班id不能为空") if setting[:group_id].length == 0 tip_exception("分班id不能为空") if setting[:group_id].length == 0
raise(Error, "发布时间不能为空") if setting[:publish_time].blank? tip_exception("发布时间不能为空") if setting[:publish_time].blank?
raise(Error, "截止时间不能为空") if setting[:end_time].blank? tip_exception("截止时间不能为空") if setting[:end_time].blank?
raise(Error, "发布时间不能早于当前时间") if setting[:publish_time] <= strf_time(Time.now) tip_exception("发布时间不能早于当前时间") if setting[:publish_time] <= strf_time(Time.now)
raise(Error, "截止时间不能早于当前时间") if setting[:end_time] <= strf_time(Time.now) tip_exception("截止时间不能早于当前时间") if setting[:end_time] <= strf_time(Time.now)
raise(Error, "截止时间不能早于发布时间") if setting[:publish_time] > setting[:end_time] tip_exception("截止时间不能早于发布时间") if setting[:publish_time] > setting[:end_time]
raise(Error, "截止时间不能晚于课堂结束时间(#{course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")}") if 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 course.end_date.present? && setting[:end_time] > course.end_date.end_of_day
@ -73,28 +73,28 @@ class UpdateHomeworkSettingService < ApplicationService
# 作业在"提交中"状态时 # 作业在"提交中"状态时
else else
if homework.end_time > Time.now && homework.unified_setting if homework.end_time > Time.now && homework.unified_setting
raise(Error, "截止时间不能为空") if params[:end_time].blank? tip_exception("截止时间不能为空") if params[:end_time].blank?
raise(Error, "截止时间不能早于当前时间") if params[:end_time] <= strf_time(Time.now) tip_exception("截止时间不能早于当前时间") 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("截止时间不能晚于课堂结束时间(#{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) course.end_date.present? && params[:end_time] > strf_time(course.end_date.end_of_day)
homework.end_time = params[:end_time] homework.end_time = params[:end_time]
elsif !homework.unified_setting elsif !homework.unified_setting
create_homework_group_settings homework 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| params[:group_settings].each do |setting|
group_settings = HomeworkGroupSetting.where(homework_common_id: homework.id, course_group_id: setting[:group_id]) group_settings = HomeworkGroupSetting.where(homework_common_id: homework.id, course_group_id: setting[:group_id])
raise(Error, "分班id不能为空") if setting[:group_id].length == 0 tip_exception("分班id不能为空") if setting[:group_id].length == 0
raise(Error, "发布时间不能为空") if setting[:publish_time].blank? tip_exception("发布时间不能为空") if setting[:publish_time].blank?
raise(Error, "截止时间不能为空") if setting[:end_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 tip_exception("截止时间不能早于等于当前时间") if setting[:end_time] <= strf_time(Time.now) && group_settings.none_end.count > 0
raise(Error, "截止时间不能早于发布时间") if setting[:publish_time] > setting[:end_time] tip_exception("截止时间不能早于发布时间") if setting[:publish_time] > setting[:end_time]
raise(Error, "截止时间不能晚于课堂结束时间(#{course.end_date.end_of_day.strftime("%Y-%m-%d %H:%M")}") if 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) 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]) group_settings.none_published.update_all(publish_time: setting[:publish_time])

@ -926,6 +926,10 @@ Rails.application.routes.draw do
delete :delete_course_students delete :delete_course_students
end end
end end
resources :homework_commons do
post :update_settings, on: :member
end
end end
resources :users_for_partners, only: [:index] resources :users_for_partners, only: [:index]

@ -17,7 +17,7 @@ class MigrateExerciseSingleQuestionScore < ActiveRecord::Migration[5.2]
user_choice_position = answer.exercise_choice&.choice_position 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) 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) 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 objective_score = exercise_user.objective_score + question.question_score
exercise_user.update!(score: score, objective_score: objective_score) exercise_user.update!(score: score, objective_score: objective_score)
end end

Loading…
Cancel
Save