From 63a60603f3682d5c4b6508d1fc45d77982666d70 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Sat, 6 Jul 2019 09:46:05 +0800 Subject: [PATCH 1/8] =?UTF-8?q?=E8=AF=95=E7=94=A8=E7=94=B3=E8=AF=B7?= =?UTF-8?q?=E7=9A=84=E7=9F=AD=E4=BF=A1=E9=80=9A=E7=9F=A5=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/account_controller.rb | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/app/controllers/account_controller.rb b/app/controllers/account_controller.rb index 987f2b70..3368da12 100644 --- a/app/controllers/account_controller.rb +++ b/app/controllers/account_controller.rb @@ -1066,12 +1066,14 @@ class AccountController < ApplicationController # end elsif !User.current.user_extensions.school.nil? @tip = "申请已提交,我们将在5分钟内完成审核" - unless apply_action.present? + if !apply_action.present? ApplyAction.create(:user_id => User.current.id, :status => 0, :ip_addr => request.remote_ip, :container_type => "TrialAuthorization", :apply_reason => params[:apply_reason]) - begin - status = Trustie::Sms.send(mobile:17680641960, send_type:'user_apply_auth',name:'管理员' ) - rescue => e - Rails.logger.error "发送验证码出错: #{e}" + if user_ex.identity == 0 || user_ex.identity == 2 + begin + status = Trustie::Sms.send(mobile:17680641960, send_type:'user_apply_auth',name:'管理员' ) + rescue => e + Rails.logger.error "发送验证码出错: #{e}" + end end end end From 89bc81d159d4c9bc2eecb2202a70026867e6388b Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Mon, 8 Jul 2019 10:12:14 +0800 Subject: [PATCH 2/8] =?UTF-8?q?=E8=B0=83=E6=95=B4pdf=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/student_work_controller.rb | 136 +++++++++++---------- 1 file changed, 69 insertions(+), 67 deletions(-) diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb index 304fcb7d..b25dfa20 100644 --- a/app/controllers/student_work_controller.rb +++ b/app/controllers/student_work_controller.rb @@ -79,89 +79,91 @@ class StudentWorkController < ApplicationController @shixun = Shixun.select([:id, :gpid, :name]).find(HomeworkCommonsShixuns.where(:homework_common_id => @homework.id).pluck(:shixun_id).first) @challenges = Challenge.select([:id]).where(:shixun_id => @shixun.id) @myshixun = @work.myshixun - @games = Game.where(:myshixun_id => @myshixun.id).includes(:challenge, :game_codes,:outputs).reorder("challenges.position") # 页面循环需要outputs + @games = Game.where(:myshixun_id => @myshixun.id).includes(:challenge, :game_codes, :outputs).reorder("challenges.position") # 页面循环需要outputs # 用户个人信息 @user_name = @work.user.show_real_name @student_id = @work.user.user_extensions.try(:student_id).nil? ? '--' : @work.user.user_extensions.try(:student_id) - student_works_user_id = StudentWork.where(:homework_common_id => @homework.id).pluck(:user_id) - myshixuns = @shixun.myshixuns.where(:user_id => student_works_user_id).includes(games: [:outputs]) - - # 课堂实训中,评测次数最大值 - @total_evaluate_max = 0 - @user_evaluate_count = 0 - # 为了取最小efficiency。最小值是一个不确定数 - @min_efficiency = [] - power = [] - @game_user_query = [] - myshixuns.each do |myshixun| - # 用户个人实训总得分 - user_total_score = 0 - # consume_time通关的关卡总耗时间;all_tine实训的总耗时 - pass_consume_time = 0 - all_time = 0 - # evaluate_count: 每次总评测次数;eff_score:用户得分/总评测次数;round_size:log(所有课堂实训最大评测次数/当前实训评测次数) - evaluate_count = 0 - eff_score = 0 - - myshixun.games.each do |game| - evaluate_count += game.outputs.first.try(:query_index).to_i # 评测次数 - # y_score = (evaluate_count == 0 ? 0 : (user_total_score / evaluate_count.to_f)) - # eff_score = format("%.2f", y_score).to_f - if game.status == 2 - pass_consume_time += (game.cost_time / 60.0).to_f + unless params[:pdf] + student_works_user_id = StudentWork.where(:homework_common_id => @homework.id).pluck(:user_id) + myshixuns = @shixun.myshixuns.where(:user_id => student_works_user_id).includes(:games) + + # 课堂实训中,评测次数最大值 + @total_evaluate_max = 0 + @user_evaluate_count = 0 + # 为了取最小efficiency。最小值是一个不确定数 + @min_efficiency = [] + power = [] + @game_user_query = [] + myshixuns.each do |myshixun| + # 用户个人实训总得分 + user_total_score = 0 + # consume_time通关的关卡总耗时间;all_tine实训的总耗时 + pass_consume_time = 0 + all_time = 0 + # evaluate_count: 每次总评测次数;eff_score:用户得分/总评测次数;round_size:log(所有课堂实训最大评测次数/当前实训评测次数) + evaluate_count = 0 + eff_score = 0 + + myshixun.games.each do |game| + evaluate_count += game.evaluate_count.to_i # 评测次数 + # y_score = (evaluate_count == 0 ? 0 : (user_total_score / evaluate_count.to_f)) + # eff_score = format("%.2f", y_score).to_f + if game.status == 2 + pass_consume_time += (game.cost_time / 60.0).to_f + end + all_time += (game.cost_time / 60.0).to_f + user_total_score += game.status == 2 ? game.final_score.to_i < 0 ? 0 : game.challenge.score.to_i : 0 + if myshixun.user_id == @work.user.id + @game_user_query << [game.id, game.evaluate_count.to_i] + end end - all_time += (game.cost_time / 60.0).to_f - user_total_score += game.status == 2 ? game.final_score.to_i < 0 ? 0 : game.challenge.score.to_i : 0 + + # 当前用户评测最大次数 if myshixun.user_id == @work.user.id - @game_user_query << [game.id, game.outputs.first.try(:query_index).to_i] + @user_evaluate_count = evaluate_count end - end - # 当前用户评测最大次数 - if myshixun.user_id == @work.user.id - @user_evaluate_count = evaluate_count - end - - x_time = (all_time <= 1) ? 1 : Math.log(all_time).to_f - consume_time = format("%.2f", x_time).to_f + x_time = (all_time <= 1) ? 1 : Math.log(all_time).to_f + consume_time = format("%.2f", x_time).to_f - efficiency = (pass_consume_time == 0 ? 0 : Math.log((user_total_score / pass_consume_time.to_f) + 1.0)) - efficiency = format("%.2f", efficiency).to_f - @min_efficiency << efficiency + efficiency = (pass_consume_time == 0 ? 0 : Math.log((user_total_score / pass_consume_time.to_f) + 1.0)) + efficiency = format("%.2f", efficiency).to_f + @min_efficiency << efficiency - @total_evaluate_max = @total_evaluate_max > evaluate_count.to_i ? @total_evaluate_max : evaluate_count - power << {:consume_time => consume_time, :evaluate_count => evaluate_count, :user_id => myshixun.user_id, - :user_total_score => user_total_score, :efficiency => efficiency} - end + @total_evaluate_max = @total_evaluate_max > evaluate_count.to_i ? @total_evaluate_max : evaluate_count + power << {:consume_time => consume_time, :evaluate_count => evaluate_count, :user_id => myshixun.user_id, + :user_total_score => user_total_score, :efficiency => efficiency} + end - # 数据库操作改成对数组操作 - min_efficiency = @min_efficiency.min - result_list = [] - power.each do |p| - y_score = (p[:evaluate_count] == 0 ? 0 : (p[:user_total_score] / p[:evaluate_count].to_f)) - eff_score = format("%.2f", y_score).to_f + # 数据库操作改成对数组操作 + min_efficiency = @min_efficiency.min + result_list = [] + power.each do |p| + y_score = (p[:evaluate_count] == 0 ? 0 : (p[:user_total_score] / p[:evaluate_count].to_f)) + eff_score = format("%.2f", y_score).to_f - user_id = p[:user_id] - consume_time = p[:consume_time] - efficiency = p[:efficiency] < 0 ? format("%.2f", p[:efficiency] - min_efficiency).to_f : p[:efficiency] - round_size = (p[:evaluate_count] == 0 ? 0 : Math.log(@total_evaluate_max / p[:evaluate_count].to_f)) * 3.14 - result_list << {:eff_score => eff_score, :user_id => user_id, :consume_time => consume_time, :efficiency => efficiency, :round_size => round_size} - end + user_id = p[:user_id] + consume_time = p[:consume_time] + efficiency = p[:efficiency] < 0 ? format("%.2f", p[:efficiency] - min_efficiency).to_f : p[:efficiency] + round_size = (p[:evaluate_count] == 0 ? 0 : Math.log(@total_evaluate_max / p[:evaluate_count].to_f)) * 3.14 + result_list << {:eff_score => eff_score, :user_id => user_id, :consume_time => consume_time, :efficiency => efficiency, :round_size => round_size} + end - @power = [] - @efficiency = [] - result_list.sort{|x, y| x[:efficiency] <=> y[:efficiency]}.each_with_index do |result, index| - @efficiency << [index+1, result[:efficiency], result[:user_id]] - if result[:user_id] == @work.user.id - @myself_eff = [index+1, result[:efficiency]] - @myself_power = [result[:consume_time], result[:eff_score], result[:round_size]] + @power = [] + @efficiency = [] + result_list.sort{|x, y| x[:efficiency] <=> y[:efficiency]}.each_with_index do |result, index| + @efficiency << [index+1, result[:efficiency], result[:user_id]] + if result[:user_id] == @work.user.id + @myself_eff = [index+1, result[:efficiency]] + @myself_power = [result[:consume_time], result[:eff_score], result[:round_size]] + end end - end - result_list.sort{|x, y| x[:consume_time] <=> y[:consume_time]}.each do |result| - @power << [result[:consume_time], result[:eff_score], result[:round_size], result[:user_id]] + result_list.sort{|x, y| x[:consume_time] <=> y[:consume_time]}.each do |result| + @power << [result[:consume_time], result[:eff_score], result[:round_size], result[:user_id]] + end end From ce83676e3def74cdb6be91a924552aa21a6cef37 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Mon, 8 Jul 2019 10:23:18 +0800 Subject: [PATCH 3/8] =?UTF-8?q?=E8=B0=83=E6=95=B4pdf=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/student_work/shixun_work_report.html.erb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/views/student_work/shixun_work_report.html.erb b/app/views/student_work/shixun_work_report.html.erb index e83cd3d7..748cbb9f 100644 --- a/app/views/student_work/shixun_work_report.html.erb +++ b/app/views/student_work/shixun_work_report.html.erb @@ -77,8 +77,8 @@ <% end %> <%= game.try(:open_time).nil? || game.status == 3 ? "--" : format_time(game.open_time) %> - <% user_query = @game_user_query.select{|user_query| user_query[0] == game.id} %> - <%= user_query.blank? ? "--" : user_query.first[1] %> + <%# user_query = @game_user_query.select{|user_query| user_query[0] == game.id} %> + <%= game.evaluate_count.to_i == 0 ? "--" : game.evaluate_count.to_i %> <%= game.try(:end_time).nil? ? "--" : format_time(game.end_time) %> <%= game.consumes_time %> <%= game.status == 2 ? (game.final_score.to_i < 0 ? 0 : game.challenge.choose_score.to_i) : 0 %> / <%= game.challenge.choose_score %> From 85de5b6c12e944a381bb0657278c5bfa6a657ad0 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Mon, 8 Jul 2019 11:38:53 +0800 Subject: [PATCH 4/8] =?UTF-8?q?=E8=B0=83=E6=95=B4pdf=E5=AF=BC=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/student_work_controller.rb | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb index b25dfa20..65be029c 100644 --- a/app/controllers/student_work_controller.rb +++ b/app/controllers/student_work_controller.rb @@ -85,13 +85,18 @@ class StudentWorkController < ApplicationController @user_name = @work.user.show_real_name @student_id = @work.user.user_extensions.try(:student_id).nil? ? '--' : @work.user.user_extensions.try(:student_id) + # 当前用户评测最大次数 + @user_evaluate_count = 0 + if myshixun.user_id == @work.user.id + @user_evaluate_count = @myshixun.games.pluck(:evaluate_count).sum.to_i + end + unless params[:pdf] student_works_user_id = StudentWork.where(:homework_common_id => @homework.id).pluck(:user_id) myshixuns = @shixun.myshixuns.where(:user_id => student_works_user_id).includes(:games) # 课堂实训中,评测次数最大值 @total_evaluate_max = 0 - @user_evaluate_count = 0 # 为了取最小efficiency。最小值是一个不确定数 @min_efficiency = [] power = [] @@ -120,11 +125,6 @@ class StudentWorkController < ApplicationController end end - # 当前用户评测最大次数 - if myshixun.user_id == @work.user.id - @user_evaluate_count = evaluate_count - end - x_time = (all_time <= 1) ? 1 : Math.log(all_time).to_f consume_time = format("%.2f", x_time).to_f From a496de41ee2dca70d495de8b45d9c8e8284fcb4f Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Mon, 8 Jul 2019 11:41:10 +0800 Subject: [PATCH 5/8] =?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/student_work_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb index 65be029c..01299409 100644 --- a/app/controllers/student_work_controller.rb +++ b/app/controllers/student_work_controller.rb @@ -88,7 +88,7 @@ class StudentWorkController < ApplicationController # 当前用户评测最大次数 @user_evaluate_count = 0 if myshixun.user_id == @work.user.id - @user_evaluate_count = @myshixun.games.pluck(:evaluate_count).sum.to_i + @user_evaluate_count = @myshixun.games.sum(:evaluate_count).to_i end unless params[:pdf] From 4b4a0d52e6a8373b67625bd463e7e90b163501b5 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Mon, 8 Jul 2019 11:43:12 +0800 Subject: [PATCH 6/8] =?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/student_work_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/student_work_controller.rb b/app/controllers/student_work_controller.rb index 01299409..d8b572ea 100644 --- a/app/controllers/student_work_controller.rb +++ b/app/controllers/student_work_controller.rb @@ -87,8 +87,8 @@ class StudentWorkController < ApplicationController # 当前用户评测最大次数 @user_evaluate_count = 0 - if myshixun.user_id == @work.user.id - @user_evaluate_count = @myshixun.games.sum(:evaluate_count).to_i + if @myshixun.user_id == @work.user.id + @user_evaluate_count = @myshixun.games.pluck(:evaluate_count).sum.to_i end unless params[:pdf] From f7a2057433b26612929b4c250894a47527b2c92f Mon Sep 17 00:00:00 2001 From: daiao <358551898@qq.com> Date: Tue, 9 Jul 2019 09:50:50 +0800 Subject: [PATCH 7/8] =?UTF-8?q?=E6=96=B0=E5=BB=BA=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E4=BC=9A=E9=85=8D=E7=BD=AE=E4=B8=80=E4=B8=AA=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/shixuns_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/shixuns_controller.rb b/app/controllers/shixuns_controller.rb index 965f15f3..7c248e92 100644 --- a/app/controllers/shixuns_controller.rb +++ b/app/controllers/shixuns_controller.rb @@ -792,7 +792,7 @@ class ShixunsController < ApplicationController shixun_script = modify_shixun_script @shixun, shixun_script end end - #@shixun.evaluate_script = shixun_script + @shixun.evaluate_script = shixun_script ActiveRecord::Base.transaction do begin From 77617c62488fe8b0f448ec8c00ac7e8f9a4e55e8 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Tue, 9 Jul 2019 14:38:10 +0800 Subject: [PATCH 8/8] =?UTF-8?q?=E8=BF=90=E8=90=A5=E4=BA=BA=E5=91=98?= =?UTF-8?q?=E7=9A=84=E5=AE=9E=E8=AE=AD=E6=8A=A5=E5=91=8A=E6=9F=A5=E7=9C=8B?= =?UTF-8?q?=E6=9D=83=E9=99=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/student_work/_shixun_work_show.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/student_work/_shixun_work_show.html.erb b/app/views/student_work/_shixun_work_show.html.erb index 77e3062f..3c0447de 100644 --- a/app/views/student_work/_shixun_work_show.html.erb +++ b/app/views/student_work/_shixun_work_show.html.erb @@ -7,7 +7,7 @@ <%= link_to @shixun.name, shixun_path(@shixun), :class => "edu-info-dark fl task-hide",:style=>"max-width:300px", :target => "_blank" %>

- <% if User.current.has_teacher_role(@homework.course) || User.current.admin? || @work.user == User.current %> + <% if User.current.has_teacher_role(@homework.course) || User.current.admin? || User.current.business? || @work.user == User.current %>
经验值:<%= @myshixun.total_score %>