diff --git a/app/controllers/homework_commons_controller.rb b/app/controllers/homework_commons_controller.rb index cfc1c4ba5..4c8d2a729 100644 --- a/app/controllers/homework_commons_controller.rb +++ b/app/controllers/homework_commons_controller.rb @@ -246,13 +246,15 @@ class HomeworkCommonsController < ApplicationController student_works = @homework.student_works.where(user_id: user_ids) end - myshixuns = Myshixun.where(shixun_id: @homework.homework_commons_shixun&.shixun_id, user_id: user_ids). - includes(:games).where(games: {challenge_id: @homework.homework_challenge_settings.pluck(:challenge_id)}) + student_works = student_works.includes(:challenge_work_scores) + challenge_settings = @homework.homework_challenge_settings + challenge_setting_ids = challenge_settings.pluck(:challenge_id) + myshixuns = Myshixun.where(shixun_id: @homework.homework_commons_shixun&.shixun_id, user_id: user_ids).includes(:games) myshixuns.find_each(batch_size: 100) do |myshixun| work = student_works.select{|work| work.user_id == myshixun.user_id}.first if work && myshixun - games = myshixun.games.where(challenge_id: challenge_settings.pluck(:challenge_id)) + games = myshixun.games.select{|game| challenge_setting_ids.include?(game.challenge_id)} HomeworksService.new.update_myshixun_work_score work, myshixun, games, @homework, challenge_settings end end diff --git a/app/services/homeworks_service.rb b/app/services/homeworks_service.rb index b835685a6..ab149403d 100644 --- a/app/services/homeworks_service.rb +++ b/app/services/homeworks_service.rb @@ -286,7 +286,7 @@ class HomeworksService challenge_setting = challenge_settings.select{|setting| setting.challenge_id == game.challenge_id}.first pass_consume_time += (game.cost_time / 60.0).to_f user_total_score += game.final_score.to_i < 0 ? 0 : game.challenge.score.to_i - adjust_score = work.challenge_work_scores.where(:challenge_id => game.challenge_id).last + adjust_score = work.challenge_work_scores.select{|work_score| work_score.challenge_id == game.challenge_id}.last final_score += if adjust_score.present? adjust_score.score elsif homework.homework_detail_manual.answer_open_evaluation @@ -300,19 +300,6 @@ class HomeworksService end myshixun_endtime = games.select{|game| game.status == 2}.size == games.size ? games.map(&:end_time).max : nil - if myshixun_endtime.present? - work.cost_time = myshixun_endtime.to_i - setting_time.publish_time.to_i - - efficiency = (pass_consume_time == 0 ? 0 : Math.log((user_total_score / pass_consume_time.to_f) + 1.0)) - work.efficiency = format("%.2f", efficiency) - - if myshixun_endtime <= homework_end_or_late_time - work.compelete_status = myshixun_endtime < setting_time.publish_time ? 2 : 1 - - # 如果作业的最大效率值有变更则更新所有作品的效率分 - homework.update_column("max_efficiency", work.efficiency) if homework.work_efficiency && homework.max_efficiency < work.efficiency - end - end if work.work_status == 0 is_complete = myshixun_endtime && (myshixun_endtime < setting_time.end_time) @@ -321,18 +308,34 @@ class HomeworksService elsif homework.allow_late && myshixun.created_at < homework.late_time work.work_status = 2 end + end + + if work.work_status != 0 + if myshixun_endtime.present? + work.cost_time = myshixun_endtime.to_i - setting_time.publish_time.to_i + + efficiency = (pass_consume_time == 0 ? 0 : Math.log((user_total_score / pass_consume_time.to_f) + 1.0)) + work.efficiency = format("%.2f", efficiency) + + if myshixun_endtime <= homework_end_or_late_time + work.compelete_status = myshixun_endtime < setting_time.publish_time ? 2 : 1 + + # 如果作业的最大效率值有变更则更新所有作品的效率分 + homework.update_column("max_efficiency", work.efficiency) if homework.work_efficiency && homework.max_efficiency < work.efficiency + end + end + work.late_penalty = work.work_status == 2 ? homework.late_penalty : 0 work.commit_time = myshixun.created_at > setting_time.publish_time ? setting_time.publish_time : myshixun.created_at work.myshixun_id = myshixun.id - end + work.update_time = myshixun.updated_at - work.update_time = myshixun.updated_at - - work.final_score = final_score - score = work.final_score + work.eff_score - work.late_penalty - work.work_score = format("%.2f",(score < 0 ? 0 : score).to_f) unless work.ultimate_score - #logger.info("#############work_score: #{score}") - work.calculation_time = Time.now - work.save! + work.final_score = final_score + score = work.final_score + work.eff_score - work.late_penalty + work.work_score = format("%.2f",(score < 0 ? 0 : score).to_f) unless work.ultimate_score + #logger.info("#############work_score: #{score}") + work.calculation_time = Time.now + work.save! + end end end \ No newline at end of file diff --git a/dump.rdb b/dump.rdb new file mode 100644 index 000000000..a799840b1 Binary files /dev/null and b/dump.rdb differ diff --git a/public/react/src/AppConfig.js b/public/react/src/AppConfig.js index ddef777d6..9c407c82c 100644 --- a/public/react/src/AppConfig.js +++ b/public/react/src/AppConfig.js @@ -10,6 +10,7 @@ broadcastChannelOnmessage('refreshPage', () => { }) function locationurl(list){ + debugger if (window.location.port === "3007") { } else { @@ -141,10 +142,7 @@ export function initAxiosInterceptors(props) { // if(response.data.status === 401){ // console.log("401401401") // } - if (response.data.status === 403) { - // props.history.replace('/403') - // 这里会分2个情况,1、刚进入页面发请求返回的403;2、进入页面后,其他用户操作触发请求返回的403; - // TODO 这里做一个403弹框比较好? + if (response.data.status === 403||response.data.status === "403") { locationurl('/403'); } diff --git a/public/react/src/modules/courses/exercise/ExerciseDisplay.js b/public/react/src/modules/courses/exercise/ExerciseDisplay.js index 4da4768d2..bd70bece6 100644 --- a/public/react/src/modules/courses/exercise/ExerciseDisplay.js +++ b/public/react/src/modules/courses/exercise/ExerciseDisplay.js @@ -120,35 +120,35 @@ class ExerciseDisplay extends Component{ return } else if (item.question_type == 2) { return } else if (item.question_type == 3) { return } else if (item.question_type == 4) { return } else if (item.question_type == 5) { return } diff --git a/public/react/src/modules/courses/exercise/ExerciseNew.js b/public/react/src/modules/courses/exercise/ExerciseNew.js index fe1b8f565..f5332d56e 100644 --- a/public/react/src/modules/courses/exercise/ExerciseNew.js +++ b/public/react/src/modules/courses/exercise/ExerciseNew.js @@ -407,11 +407,11 @@ class ExerciceNew extends Component{ } `}
- + ]}> }

{this.isEdit ? "编辑" : "新建"}试卷 diff --git a/public/react/src/modules/paths/PathDetail/PathDetailIndex.js b/public/react/src/modules/paths/PathDetail/PathDetailIndex.js index a72771c39..8f5802c9e 100644 --- a/public/react/src/modules/paths/PathDetail/PathDetailIndex.js +++ b/public/react/src/modules/paths/PathDetail/PathDetailIndex.js @@ -146,7 +146,7 @@ class PathDetailIndex extends Component{ if (result.data.status === 403) { debugger - window.location.href = "/403"; + // window.location.href = "/403"; return; } @@ -173,7 +173,7 @@ class PathDetailIndex extends Component{ } if (result.data.status === 403 ) { debugger - window.location.href = "/403"; + // window.location.href = "/403"; return; } diff --git a/public/react/src/modules/tpm/newshixuns/Newshixuns.js b/public/react/src/modules/tpm/newshixuns/Newshixuns.js index 8cb79e9d0..c15269c5a 100644 --- a/public/react/src/modules/tpm/newshixuns/Newshixuns.js +++ b/public/react/src/modules/tpm/newshixuns/Newshixuns.js @@ -16,6 +16,7 @@ import './css/Newshixuns.css'; import {getUrl} from 'educoder' +import moment from 'moment'; let path = getUrl("/editormd/lib/")