diff --git a/app/controllers/challenges_controller.rb b/app/controllers/challenges_controller.rb index 344976ab..bf01ffb0 100644 --- a/app/controllers/challenges_controller.rb +++ b/app/controllers/challenges_controller.rb @@ -2,7 +2,7 @@ class ChallengesController < ApplicationController layout "base_shixun" # 如要添加或修改before_filter时,请将handle_openi_request这个before_filter放至第一位 - before_filter :handle_openi_request, if: -> { user_login_and_from_openi? }, only: [:index] + # before_filter :handle_openi_request, if: -> { user_login_and_from_openi? }, only: [:index] before_filter :check_authentication, :except => [:index] before_filter :find_shixun, :only => [:index, :new, :create, :destroy, :challenge_build, :update_evaluation, :add_choose_question, :new_choose_question, :choose_type_show, :edit_choose_question, :update_choose_question, :destroy_challenge_choose] diff --git a/app/models/challenge.rb b/app/models/challenge.rb index 5180c8fa..704fffb3 100644 --- a/app/models/challenge.rb +++ b/app/models/challenge.rb @@ -24,6 +24,14 @@ class Challenge < ActiveRecord::Base scope :choose_type, lambda{where(st: 1)} scope :practice_type, lambda{where(st: 0)} + def shixun_done_new + self.games.select{|game| game.status == 2 }.size + end + + def shixun_running_new + self.games.select{|game| game.status != 2 }.size + end + def game_difficulty str = "简单" case self.difficulty diff --git a/app/services/games_service.rb b/app/services/games_service.rb index f172edbd..3dccc7f9 100644 --- a/app/services/games_service.rb +++ b/app/services/games_service.rb @@ -92,12 +92,12 @@ class GamesService sql = if max_query_index > 0 "SELECT - b.actual_output, b.out_put, b.result, b.compile_success, a.is_public, a.input, a.output + b.code, b.actual_output, b.out_put, b.result, b.compile_success, a.is_public, a.input, a.output FROM (SELECT position, input, output, challenge_id, is_public FROM test_sets where challenge_id=#{game_challenge.id}) a LEFT JOIN (SELECT - result, test_set_position, g.challenge_id, o.actual_output, o.out_put, o.compile_success + result, test_set_position, g.challenge_id, o.actual_output, o.out_put, o.compile_success, o.code FROM outputs o left join games g on g.id=o.game_id WHERE @@ -153,9 +153,10 @@ class GamesService actual_output = test_set.attributes.count > 4 ? test_set.try(:actual_output) : nil result = test_set.attributes.count > 4 ? test_set.try(:result) : nil compile_success = test_set.attributes.count > 4 ? test_set.try(:compile_success) : nil + status = test_set.attributes.count > 4 ? test_set.try(:code) : nil #actual_output = Base64.encode64(actual_output) - actual_output = (compile_success.to_s == "0" ? "编译失败,请在测试结果中查看具体的错误信息" : actual_output) + actual_output = (compile_success.to_s == "0" && status.to_s == "-1" ? "编译失败,请在测试结果中查看具体的错误信息" : actual_output) public_result = {:is_public => (test_set.is_public ? 1 : 0), :result => result, :actual_output => actual_output, :compile_success => compile_success} @@ -837,7 +838,8 @@ class GamesService max_query_index = game.query_index - 1 # 区分评测过未评测过,未评测过按需求取数据 if max_query_index > 0 - qurey_test_sets = TestSet.find_by_sql("SELECT o.actual_output,o.result, o.compile_success, o.test_set_position, o.query_index,t.is_public,t.input, t.output, g.id as game_id, c.id as challenge_id FROM outputs o,games g ,challenges c,test_sets t where + qurey_test_sets = TestSet.find_by_sql("SELECT o.code, o.actual_output,o.result, o.compile_success, o.test_set_position, + o.query_index,t.is_public,t.input, t.output, g.id as game_id, c.id as challenge_id FROM outputs o,games g ,challenges c,test_sets t where g.id=#{game.id} and o.query_index=#{max_query_index} and g.id = o.game_id and c.id= g.challenge_id and t.challenge_id = c.id and t.position =o.test_set_position order by o.query_index ") else diff --git a/app/views/challenges/_content_list.html.erb b/app/views/challenges/_content_list.html.erb index bc7743de..f9ac88b8 100644 --- a/app/views/challenges/_content_list.html.erb +++ b/app/views/challenges/_content_list.html.erb @@ -73,8 +73,8 @@