From fa667fe66516b4773d91808baa978384359bf0c5 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Tue, 2 Apr 2019 09:23:56 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E5=AE=9E=E8=AE=AD=E8=AF=84=E5=88=86?= =?UTF-8?q?=E5=8A=A0=E4=BA=8B=E5=8A=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helpers/application_helper.rb | 114 +++++++++++++++--------------- 1 file changed, 58 insertions(+), 56 deletions(-) diff --git a/app/helpers/application_helper.rb b/app/helpers/application_helper.rb index bb413608..b0417e5f 100644 --- a/app/helpers/application_helper.rb +++ b/app/helpers/application_helper.rb @@ -6817,68 +6817,70 @@ end # 用户评测时更新实训作业成绩 def update_myshixun_work_score myshixun - student_works = myshixun.student_works - #logger.info("#############student_works_count: #{student_works.count}") - if student_works.count > 0 - student_works.each do |work| - homework = work.homework_common - member = Member.find_by_sql("select course_group_id from members where course_id = #{homework.course_id} and user_id = #{User.current.id}").first - #logger.info("#############member_course_group_id: #{member.try(:course_group_id)}") - setting_time = homework_group_setting homework, member.try(:course_group_id) - if setting_time.end_time.present? && (setting_time.end_time > Time.now || (homework.allow_late && !homework.course.is_end)) - #logger.info("#############setting_time: #{setting_time.end_time}") - - user_total_score = 0 - pass_consume_time = 0 - final_score = 0 - homework.homework_challenge_settings.each do |setting| - game = myshixun.games.where(:challenge_id => setting.challenge_id, :status => 2).first - unless game.nil? - 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 => setting.challenge_id).last - final_score += adjust_score.present? ? adjust_score.score : (homework.homework_detail_manual.answer_open_evaluation ? setting.score : (game.final_score >= 0 ? setting.score : 0)) + ActiveRecord::Base.transaction do + student_works = myshixun.student_works + #logger.info("#############student_works_count: #{student_works.count}") + if student_works.count > 0 + student_works.each do |work| + homework = work.homework_common + member = Member.find_by_sql("select course_group_id from members where course_id = #{homework.course_id} and user_id = #{User.current.id}").first + #logger.info("#############member_course_group_id: #{member.try(:course_group_id)}") + setting_time = homework_group_setting homework, member.try(:course_group_id) + if setting_time.end_time.present? && (setting_time.end_time > Time.now || (homework.allow_late && !homework.course.is_end)) + #logger.info("#############setting_time: #{setting_time.end_time}") + + user_total_score = 0 + pass_consume_time = 0 + final_score = 0 + homework.homework_challenge_settings.each do |setting| + game = myshixun.games.where(:challenge_id => setting.challenge_id, :status => 2).first + unless game.nil? + 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 => setting.challenge_id).last + final_score += adjust_score.present? ? adjust_score.score : (homework.homework_detail_manual.answer_open_evaluation ? setting.score : (game.final_score >= 0 ? setting.score : 0)) + end + end + if work.work_status == 0 + is_complete = myshixun.is_complete? && (myshixun.done_time < setting_time.end_time) + work.work_status = setting_time.end_time > Time.now ? 1 : (is_complete ? 1 : 2) + work.late_penalty = setting_time.end_time > Time.now ? 0 : (is_complete ? 0 : homework.late_penalty) + work.commit_time = myshixun.created_at > setting_time.publish_time ? setting_time.publish_time : myshixun.created_at + work.myshixun_id = myshixun.id end - end - if work.work_status == 0 - is_complete = myshixun.is_complete? && (myshixun.done_time < setting_time.end_time) - work.work_status = setting_time.end_time > Time.now ? 1 : (is_complete ? 1 : 2) - work.late_penalty = setting_time.end_time > Time.now ? 0 : (is_complete ? 0 : homework.late_penalty) - work.commit_time = myshixun.created_at > setting_time.publish_time ? setting_time.publish_time : myshixun.created_at - work.myshixun_id = myshixun.id - end - efficiency = (pass_consume_time == 0 ? 0 : Math.log((user_total_score / pass_consume_time.to_f) + 1.0)) - work.efficiency = format("%.2f", efficiency) - - games = myshixun.games.where(:challenge_id => homework.homework_challenge_settings.map(&:challenge_id)) - myshixun_endtime = games.select{|game| game.status == 2}.size == games.size ? games.map(&:end_time).max : nil - if myshixun_endtime.present? - min_efficiency_changed = min_efficiency_changed.present? ? min_efficiency_changed : false - work.compelete_status = 1 - work.cost_time = myshixun_endtime.to_i - setting_time.publish_time.to_i - - # 计算作品的效率分(已完成才计算) - if homework.work_efficiency - # 如果作业的最大效率值有变更则更新所有作品的效率分 - if homework.max_efficiency < work.efficiency - homework.max_efficiency = work.efficiency - homework.update_column("max_efficiency", homework.max_efficiency) - update_student_eff_score homework + efficiency = (pass_consume_time == 0 ? 0 : Math.log((user_total_score / pass_consume_time.to_f) + 1.0)) + work.efficiency = format("%.2f", efficiency) + + games = myshixun.games.where(:challenge_id => homework.homework_challenge_settings.map(&:challenge_id)) + myshixun_endtime = games.select{|game| game.status == 2}.size == games.size ? games.map(&:end_time).max : nil + if myshixun_endtime.present? + min_efficiency_changed = min_efficiency_changed.present? ? min_efficiency_changed : false + work.compelete_status = 1 + work.cost_time = myshixun_endtime.to_i - setting_time.publish_time.to_i + + # 计算作品的效率分(已完成才计算) + if homework.work_efficiency + # 如果作业的最大效率值有变更则更新所有作品的效率分 + if homework.max_efficiency < work.efficiency + homework.max_efficiency = work.efficiency + homework.update_column("max_efficiency", homework.max_efficiency) + update_student_eff_score homework + end + eff_score = homework.max_efficiency == 0 ? 0 : work.efficiency / homework.max_efficiency * homework.eff_score + work.eff_score = format("%.2f", eff_score) end - eff_score = homework.max_efficiency == 0 ? 0 : work.efficiency / homework.max_efficiency * homework.eff_score - work.eff_score = format("%.2f", eff_score) end - end - work.update_time = Time.now + work.update_time = Time.now - # 为迁移的数据做特殊处理, 若分数小于当前通关分数则不更新 - work.final_score = final_score if work.final_score.nil? || final_score > work.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.save! + # 为迁移的数据做特殊处理, 若分数小于当前通关分数则不更新 + work.final_score = final_score if work.final_score.nil? || final_score > work.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.save! + end end end end From 06f29e91093996882092fd8bb8ae7767081306c7 Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 2 Apr 2019 17:40:38 +0800 Subject: [PATCH 2/4] =?UTF-8?q?500=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/challenges/_challenges_left_nav.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/challenges/_challenges_left_nav.html.erb b/app/views/challenges/_challenges_left_nav.html.erb index 6d2389bb..3111266d 100644 --- a/app/views/challenges/_challenges_left_nav.html.erb +++ b/app/views/challenges/_challenges_left_nav.html.erb @@ -1,6 +1,6 @@
fl mr40">任务 - <% if @shixun.propaedeutics.present? %> + <% if @shixun.try(:propaedeutics).present? %> fl mr40">背景知识 <% end %> <% if User.current.manager_of_shixun?(@shixun) %> From e6b786edc0431d6e90f2666a223bb9b03830ca7d Mon Sep 17 00:00:00 2001 From: huang Date: Tue, 2 Apr 2019 17:46:51 +0800 Subject: [PATCH 3/4] .. --- app/views/challenges/_challenges_left_nav.html.erb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/views/challenges/_challenges_left_nav.html.erb b/app/views/challenges/_challenges_left_nav.html.erb index 3111266d..caba1cbe 100644 --- a/app/views/challenges/_challenges_left_nav.html.erb +++ b/app/views/challenges/_challenges_left_nav.html.erb @@ -1,8 +1,6 @@
fl mr40">任务 - <% if @shixun.try(:propaedeutics).present? %> - fl mr40">背景知识 - <% end %> + <% if User.current.manager_of_shixun?(@shixun) %> <%= link_to l(:project_module_repository), ({:controller => 'repositories', From 86641c67b1bd6b1122f3c0b7d575fc412b3690ca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9D=A8=E6=A0=91=E6=98=8E?= <775174143@qq.com> Date: Tue, 2 Apr 2019 19:22:22 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E9=9A=90=E8=97=8F=E5=AD=A6=E6=A0=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/subjects/_subject_members.html.erb | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/app/views/subjects/_subject_members.html.erb b/app/views/subjects/_subject_members.html.erb index 45907381..729b8a84 100644 --- a/app/views/subjects/_subject_members.html.erb +++ b/app/views/subjects/_subject_members.html.erb @@ -6,9 +6,12 @@ <%= image_tag(url_to_avatar(member.user), :width =>"80", :height => "80", :class => "radius", :alt=>"头像") %>
-

<%= member.user.try(:show_name) %>

-
-

<%= member.user.school_name %><%= member.user.identity == "学生" ? "" : member.user.identity %>

+

<%= member.user.try(:show_name) %> <%= member.user.identity == "学生" ? "" : member.user.identity %>

+
+

+ + +