diff --git a/app/controllers/student_works_controller.rb b/app/controllers/student_works_controller.rb index dda677802..ad684952d 100644 --- a/app/controllers/student_works_controller.rb +++ b/app/controllers/student_works_controller.rb @@ -719,31 +719,35 @@ class StudentWorksController < ApplicationController tip_exception("参数错误,score和challenge_id不能为空") end challenge_setting = @homework.homework_challenge_settings.find_by(challenge_id: params[:challenge_id]) - challenge = challenge_setting&.challenge - tip_exception("不能小于零") if params[:score].to_i < 0 - tip_exception("不能大于关卡分值:#{challenge_setting.score}分") if challenge_setting && challenge_setting.score < params[:score].to_i + if challenge_setting + challenge = challenge_setting&.challenge + tip_exception("不能小于零") if params[:score].to_i < 0 + tip_exception("不能大于关卡分值:#{challenge_setting.score}分") if challenge_setting && challenge_setting.score < params[:score].to_i - ActiveRecord::Base.transaction do - begin - if params[:type] == "review" - copy_user = User.find params[:copy_user_id] - comment = "代码查重结果显示与#{copy_user.try(:show_real_name)}的代码相似度#{params[:code_rate]}%" - else - comment = "根据实训报告中最终提交的代码调整第#{challenge.position}关分数" - end - challenge_score = @work.challenge_work_scores.create(challenge_id: params[:challenge_id], user_id: current_user.id, score: params[:score], - comment: comment) - challenge_score.create_tiding current_user.id - if @work.work_status != 0 && @work.myshixun - HomeworksService.new.update_myshixun_work_score @work, @work.myshixun, @work.myshixun&.games, @homework, @homework.homework_challenge_settings - else - update_none_commit_work @work, @homework + ActiveRecord::Base.transaction do + begin + if params[:type] == "review" + copy_user = User.find params[:copy_user_id] + comment = "代码查重结果显示与#{copy_user.try(:show_real_name)}的代码相似度#{params[:code_rate]}%" + else + comment = "根据实训报告中最终提交的代码调整第#{challenge.position}关分数" + end + challenge_score = @work.challenge_work_scores.create(challenge_id: params[:challenge_id], user_id: current_user.id, score: params[:score], + comment: comment) + challenge_score.create_tiding current_user.id + if @work.work_status != 0 && @work.myshixun + HomeworksService.new.update_myshixun_work_score @work, @work.myshixun, @work.myshixun&.games, @homework, @homework.homework_challenge_settings + else + update_none_commit_work @work, @homework + end + rescue Exception => e + uid_logger(e.message) + tip_exception("调分失败") + raise ActiveRecord::Rollback end - rescue Exception => e - uid_logger(e.message) - tip_exception(e.message) - raise ActiveRecord::Rollback end + else + tip_exception("该关卡不记分") end end