代码评测信息更新

dev_shixuns
daiao 6 years ago
parent 2e37871c14
commit 0b587f7217

@ -1,10 +1,10 @@
# encoding: utf-8
class MyshixunsController < ApplicationController
layout 'base_myshixun'
skip_before_filter :verify_authenticity_token, :only => [:training_task_status, :close_webssh]
before_filter :require_login, :except => [:training_task_status, :close_webssh]
skip_before_filter :verify_authenticity_token, :only => [:training_task_status, :close_webssh, :code_runinng_message]
before_filter :require_login, :except => [:training_task_status, :close_webssh, :code_runinng_message]
before_filter :check_authentication, :except => [:training_task_status, :close_webssh, :mul_test_home, :mul_test_user,
:mul_test_myshixun, :mul_test_shixun, :mul_test_start]
:mul_test_myshixun, :mul_test_shixun, :mul_test_start, :code_runinng_message]
before_filter :find_myshixun, :only => [:show, :myshixun_reset, :open_webssh, :sync_reset_time, :destroy, :search_file_list, :vnc]
DCODES = %W(2 3 4 5 6 7 8 9 a b c f e f g h i j k l m n o p q r s t u v w x y z)
@ -435,6 +435,36 @@ class MyshixunsController < ApplicationController
end
# 代码运行中的信息接口
def code_runinng_message
begin
jsonTestDetails = JSON.parse(params[:jsonTestDetails])
game_id = jsonTestDetails['buildID']
message = jsonTestDetails['textMsg']
logger.info("##################code_runinng_message:#{jsonTestDetails}")
logger.info("##################buildID: #{game_id}")
logger.info("##################textMsg: #{message}")
if game_id.present? && message.present?
game = Game.find game_id
msg = game.run_code_message
# 只有评测中的game才会创建和更新代码评测中的信息
if game.status == 1 || game.status == 2 && game.retry_status == 1
if msg.blank?
RunCodeMessage.create!(:game_id => game_id, :status => 1, :message => message)
else
msg.update_attributes(:status => (msg.status + 1), :message => message)
end
else
# 评测完成,初始化评测信息的状态
msg.update_attributes(:status => 0, :message => nil) if msg.present?
end
render :json => {:data => "success"}
end
rescue Exception => e
render :json => {:data => "failed"}
end
end
# taskId 即返回的game id
# 返回结果params [:stauts] 0 表示成功,其它则失败
# msg 错误信息

@ -13,6 +13,7 @@ class Game < ActiveRecord::Base
has_many :challenge_samples
has_many :game_codes, :dependent => :destroy
has_many :evaluate_records, :dependent => :destroy
has_one :run_code_message, :dependent => :destroy
include ApplicationHelper
scope :min, lambda { select([:id, :status, :myshixun_id, :user_id, :final_score, :challenge_id, :identifier,

@ -0,0 +1,5 @@
class RunCodeMessage < ActiveRecord::Base
# attr_accessible :title, :body
belongs_to :game
end

@ -464,6 +464,7 @@ RedmineApp::Application.routes.draw do ## oauth相关
get 'sigle_mul_test'
get 'sigle_update_myshixun'
match 'training_task_status', :via => [:get, :post]
match 'code_runinng_message', :via => [:get, :post]
end
resources :games, :path => "stages" do
member do

@ -0,0 +1,11 @@
class CreateRunCodeMessages < ActiveRecord::Migration
def change
create_table :run_code_messages do |t|
t.integer :status
t.string :message
t.references :game
t.timestamps
end
end
end
mo

@ -0,0 +1,5 @@
FactoryGirl.define do
factory :run_code_message do
end
end

@ -0,0 +1,5 @@
require 'rails_helper'
RSpec.describe RunCodeMessage, :type => :model do
pending "add some examples to (or delete) #{__FILE__}"
end
Loading…
Cancel
Save