From 914660ad9f8de05619d2941e51d4df7b82f89644 Mon Sep 17 00:00:00 2001 From: jingquan huang Date: Fri, 15 Mar 2019 17:25:04 +0800 Subject: [PATCH 1/9] =?UTF-8?q?=E4=B8=80=E4=BA=9B=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/application_controller.rb | 3 ++- app/controllers/ecloud_controller.rb | 12 +++++++----- app/models/ecloud_service.rb | 1 + 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 262efb00..6792babf 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -68,7 +68,8 @@ class ApplicationController < ActionController::Base def ecloud_auth ucloud_user_id euser = EcloudUser.where("id =? and opttype not in(3, 5)", ucloud_user_id).first if euser.present? # 开通过业务 - # + # ni + else false end diff --git a/app/controllers/ecloud_controller.rb b/app/controllers/ecloud_controller.rb index edf568a9..080b2565 100644 --- a/app/controllers/ecloud_controller.rb +++ b/app/controllers/ecloud_controller.rb @@ -55,12 +55,12 @@ class EcloudController < ApplicationController begin if params['opttype'] == 0 # 开通企业/个人业务 ecloud = Ecloud.create!(eloud_params) - create_service(params['services'], ecloud.try(:id)) + create_service(params['services'], ecloud.try(:id)) if params['services'].present? create_product_params(params['productparas'], ecloud.try(:id)) if params['productparas'].present? # 为管理员添加一条记录 # 开通的时候都是用户的opttype也是0 # 如果管理员已经存在,则不用重复开通 - euser = EcloudUser.where(id: params['userid'], custid: params['custid']).first + euser = EcloudUser.where(userid: params['userid'], custid: params['custid']).first unless euser EcloudUser.create!(custid: params['custid'], opttype: params['opttype'], userid: params['userid'], username: params['username'], useralias: params['useralias'], @@ -88,7 +88,8 @@ class EcloudController < ApplicationController elsif params['opttype'] == 1 # 业务变更 ecloud = Ecloud.where(custid: params['custid'], custcode: params['custcode'], productcode: params['productcode']).first # 套餐变更 - # 新增业务 + # 操作代码 0:新增业务,1:注销业务2:修改业务 + # # 新增服务 add_service = params['services'].select{|s| s['opttype'] == 0} create_service(add_service, ecloud.try(:id)) if add_service.present? @@ -106,8 +107,8 @@ class EcloudController < ApplicationController if edt_services.present? edt_services.each do |es| ese = EcloudService.where(ecloud_id: ecloud.try(:id), code: es['code']).first - ese.update_attributes!(opttype: es['opttype'], begintime: es['begintime'], endtime: es['endtime']) - create_serviceparas es['serviceparas'].first, ese.id + ese.update_attributes!(opttype: es['opttype'], begintime: es['begintime'], endtime: es['endtime']) if ese.present? + create_serviceparas(es['serviceparas'].first, ese.id) if ese.present? end end @@ -120,6 +121,7 @@ class EcloudController < ApplicationController # ecloud_id = ecloud.try(:id) elsif params['opttype'] == 4 # 再次重复开通 + # 再次申请开通,这种情况就是累加时间 ecloud = Ecloud.where(custid: params['custid'], custcode: params['custcode'], productcode: params['productcode']).first create_service(params['services'], ecloud.try(:id)) create_product_params(params['productparas'], ecloud.try(:id)) if params['productparas'].present? diff --git a/app/models/ecloud_service.rb b/app/models/ecloud_service.rb index 4a388ed4..dba4a7b2 100644 --- a/app/models/ecloud_service.rb +++ b/app/models/ecloud_service.rb @@ -1,3 +1,4 @@ +# 操作代码 0:新增业务,1:注销业务2:修改业务 class EcloudService < ActiveRecord::Base attr_accessible :begintime, :code, :endtime, :opttype, :ecloud_id, :packagecode, :bossorderid belongs_to :ecloud From 8243b33634edf1eed4411c1c3396fd2ced1b2a32 Mon Sep 17 00:00:00 2001 From: guange <8863824@gmail.com> Date: Fri, 15 Mar 2019 23:26:50 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E6=AD=A3=E5=BC=8F=E7=8E=AF=E5=A2=83?= =?UTF-8?q?=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/ecloud_controller.rb | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/app/controllers/ecloud_controller.rb b/app/controllers/ecloud_controller.rb index 0201fd73..39b7bc98 100644 --- a/app/controllers/ecloud_controller.rb +++ b/app/controllers/ecloud_controller.rb @@ -33,10 +33,18 @@ class EcloudController < ApplicationController def trustie_login end - CLIENT_ID = '1022' - CLIENT_SECRET = '2112037a-6d7a-432b-9081-feb1153d8668' - ROOT_URl = 'http://localhost:3000' - SERVER_URL = "https://221.176.54.92:9081/restful/services/" + # 测试环境 + # CLIENT_ID = '1022' + # CLIENT_SECRET = '2112037a-6d7a-432b-9081-feb1153d8668' + # SERVER_URL = "https://221.176.54.92:9081/restful/services/" + # + + # 正式环境 + CLIENT_ID = '1056' + CLIENT_SECRET = '2e84256a-3de4-4713-9e02-10ee88a14592' + SERVER_URL = "https://221.176.53.130:44390/services/" + + ## 签名 def sign(timestamp) From 0b587f72174846f5ac31f522582a3fcca6b22c6f Mon Sep 17 00:00:00 2001 From: daiao <35855898@qq.com> Date: Sat, 16 Mar 2019 09:11:36 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E4=BB=A3=E7=A0=81=E8=AF=84=E6=B5=8B?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/myshixuns_controller.rb | 36 +++++++++++++++++-- app/models/game.rb | 1 + app/models/run_code_message.rb | 5 +++ config/routes.rb | 1 + ...20190315093727_create_run_code_messages.rb | 11 ++++++ spec/factories/run_code_messages.rb | 5 +++ spec/models/run_code_message_spec.rb | 5 +++ 7 files changed, 61 insertions(+), 3 deletions(-) create mode 100644 app/models/run_code_message.rb create mode 100644 db/migrate/20190315093727_create_run_code_messages.rb create mode 100644 spec/factories/run_code_messages.rb create mode 100644 spec/models/run_code_message_spec.rb diff --git a/app/controllers/myshixuns_controller.rb b/app/controllers/myshixuns_controller.rb index cf7e6ee9..cdc3d682 100644 --- a/app/controllers/myshixuns_controller.rb +++ b/app/controllers/myshixuns_controller.rb @@ -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 错误信息 diff --git a/app/models/game.rb b/app/models/game.rb index 9f92d109..47674541 100644 --- a/app/models/game.rb +++ b/app/models/game.rb @@ -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, diff --git a/app/models/run_code_message.rb b/app/models/run_code_message.rb new file mode 100644 index 00000000..191ead34 --- /dev/null +++ b/app/models/run_code_message.rb @@ -0,0 +1,5 @@ +class RunCodeMessage < ActiveRecord::Base + # attr_accessible :title, :body + belongs_to :game + +end diff --git a/config/routes.rb b/config/routes.rb index 79c46a54..2b8b4b60 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -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 diff --git a/db/migrate/20190315093727_create_run_code_messages.rb b/db/migrate/20190315093727_create_run_code_messages.rb new file mode 100644 index 00000000..bbd91acd --- /dev/null +++ b/db/migrate/20190315093727_create_run_code_messages.rb @@ -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 \ No newline at end of file diff --git a/spec/factories/run_code_messages.rb b/spec/factories/run_code_messages.rb new file mode 100644 index 00000000..b52afbc3 --- /dev/null +++ b/spec/factories/run_code_messages.rb @@ -0,0 +1,5 @@ +FactoryGirl.define do + factory :run_code_message do + + end +end diff --git a/spec/models/run_code_message_spec.rb b/spec/models/run_code_message_spec.rb new file mode 100644 index 00000000..6e5cb831 --- /dev/null +++ b/spec/models/run_code_message_spec.rb @@ -0,0 +1,5 @@ +require 'rails_helper' + +RSpec.describe RunCodeMessage, :type => :model do + pending "add some examples to (or delete) #{__FILE__}" +end From de2db8ce325ecff741c91ebf927c31ba59f71c3a Mon Sep 17 00:00:00 2001 From: daiao <35855898@qq.com> Date: Sat, 16 Mar 2019 09:22:24 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E5=AD=A6=E7=94=9F=E8=AF=84=E6=B5=8B?= =?UTF-8?q?=E6=95=B0=E6=8D=AE?= 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 2537c465..0e7af070 100644 --- a/app/controllers/student_work_controller.rb +++ b/app/controllers/student_work_controller.rb @@ -113,7 +113,7 @@ class StudentWorkController < ApplicationController pass_consume_time += (game.cost_time / 60.0).to_f end all_time += (game.cost_time / 60.0).to_f - user_total_score += game.final_score.to_i < 0 ? 0 : game.challenge.score.to_i + user_total_score += game.final_score.to_i <= 0 ? 0 : game.challenge.score.to_i if myshixun.user_id == @work.user.id @game_user_query << [game.id, game.outputs.first.try(:query_index).to_i] end From 0a772dd67b666cb28362bd40076d3566eaa03e9e Mon Sep 17 00:00:00 2001 From: daiao <35855898@qq.com> Date: Sat, 16 Mar 2019 09:36:17 +0800 Subject: [PATCH 5/9] =?UTF-8?q?=E8=AF=84=E6=B5=8B=E4=B8=AD=E7=9A=84?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/myshixuns_controller.rb | 3 +++ app/services/games_service.rb | 13 ++++++++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/app/controllers/myshixuns_controller.rb b/app/controllers/myshixuns_controller.rb index cdc3d682..3b747970 100644 --- a/app/controllers/myshixuns_controller.rb +++ b/app/controllers/myshixuns_controller.rb @@ -567,6 +567,9 @@ class MyshixunsController < ApplicationController :create_pod => timeCost['createPod'], :pod_execute => timeCost['execute'], :test_cases => test_cases_time, :brige => timeCost['evaluateAllTime'], :return_back => return_back_time) end + # 清空代码评测信息 + msg = game.run_code_message + msg.update_column(:status => 0, :message => nil) if msg.present? logger.info("training_task_status start#4**#{game_id}**** #{Time.now.strftime("%Y-%m-%d %H:%M:%S.%L")}") render :json => {:data => "success"} rescue Exception => e diff --git a/app/services/games_service.rb b/app/services/games_service.rb index d7b56838..bcb1d61b 100644 --- a/app/services/games_service.rb +++ b/app/services/games_service.rb @@ -886,9 +886,16 @@ class GamesService next_game = Game.next_game(shixun.id, game.myshixun_id, game_challenge.position).try(:identifier) output_hash = {:test_sets => test_sets, :had_test_count => test_sets_count, :test_sets_count => test_sets_count, :had_passed_testsests_error_count => had_passed_testsests_error_count} - return {:grade => grade, :gold => score, :experience => experience, :status => game_status, :had_done => had_done, :position => game_challenge.position, - :port => port, :power => power, :record => record, :mirror_name => mirror_name, :picture => picture, :web_route => web_route, :latest_output => latest_output, - :star => game.star, :next_game => next_game, :prev_game => prev_game}.merge(output_hash) + + # 代码评测的信息 + running_code_status = game.run_code_message.try(:status) + running_code_message = game.run_code_message.try(:message) + + return {:grade => grade, :gold => score, :experience => experience, :status => game_status, :had_done => had_done, + :position => game_challenge.position, :port => port, :power => power, :record => record, + :mirror_name => mirror_name, :picture => picture, :web_route => web_route, :latest_output => latest_output, + :star => game.star, :next_game => next_game, :prev_game => prev_game, + :running_code_status => running_code_status, :running_code_message => running_code_message}.merge(output_hash) end # 记录实训花费的时间,前端是通过ent_time - open_time,所以最终只更新open_time即可 From d50a44dad61e694cd9bbe2ec8229e2160e44383f Mon Sep 17 00:00:00 2001 From: daiao <35855898@qq.com> Date: Sat, 16 Mar 2019 09:44:49 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E8=BF=81=E7=A7=BB=E6=8A=A5=E9=94=99?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- db/migrate/20190315093727_create_run_code_messages.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/db/migrate/20190315093727_create_run_code_messages.rb b/db/migrate/20190315093727_create_run_code_messages.rb index bbd91acd..59aea2cc 100644 --- a/db/migrate/20190315093727_create_run_code_messages.rb +++ b/db/migrate/20190315093727_create_run_code_messages.rb @@ -7,5 +7,4 @@ class CreateRunCodeMessages < ActiveRecord::Migration t.timestamps end end -end -mo \ No newline at end of file +end \ No newline at end of file From d8c389757fe306d0e13a2913033beef8d84f6d36 Mon Sep 17 00:00:00 2001 From: daiao <35855898@qq.com> Date: Sat, 16 Mar 2019 09:53:40 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E8=AF=84=E6=B5=8B=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/games_service.rb | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/app/services/games_service.rb b/app/services/games_service.rb index bcb1d61b..cbc736d5 100644 --- a/app/services/games_service.rb +++ b/app/services/games_service.rb @@ -793,7 +793,10 @@ class GamesService # 如果没有超时并且正在评测中 # 判断评测中的状态有两种:1、如果之前没有通关的,只需判断status为1即可;如果通过关,则判断game的resubmit_identifier是否更新 if (params[:time_out] == "false") && ((params[:resubmit].blank? && game.status==1) || (params[:resubmit].present? && (params[:resubmit] != resubmit_identifier))) - return + # 代码评测的信息 + running_code_status = game.run_code_message.try(:status) + running_code_message = game.run_code_message.try(:message) + return {:running_code_status => running_code_status, :running_code_message => running_code_message} end Rails.logger.info("##### resubmit_identifier is #{resubmit_identifier}") @@ -887,15 +890,10 @@ class GamesService output_hash = {:test_sets => test_sets, :had_test_count => test_sets_count, :test_sets_count => test_sets_count, :had_passed_testsests_error_count => had_passed_testsests_error_count} - # 代码评测的信息 - running_code_status = game.run_code_message.try(:status) - running_code_message = game.run_code_message.try(:message) - return {:grade => grade, :gold => score, :experience => experience, :status => game_status, :had_done => had_done, :position => game_challenge.position, :port => port, :power => power, :record => record, :mirror_name => mirror_name, :picture => picture, :web_route => web_route, :latest_output => latest_output, - :star => game.star, :next_game => next_game, :prev_game => prev_game, - :running_code_status => running_code_status, :running_code_message => running_code_message}.merge(output_hash) + :star => game.star, :next_game => next_game, :prev_game => prev_game}.merge(output_hash) end # 记录实训花费的时间,前端是通过ent_time - open_time,所以最终只更新open_time即可 From 8b26219beeca31059f6edeab3085fdde58fa1c8e Mon Sep 17 00:00:00 2001 From: daiao <35855898@qq.com> Date: Sat, 16 Mar 2019 10:11:53 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E5=AD=97=E6=AE=B5=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/myshixuns_controller.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/app/controllers/myshixuns_controller.rb b/app/controllers/myshixuns_controller.rb index 3b747970..39bf615e 100644 --- a/app/controllers/myshixuns_controller.rb +++ b/app/controllers/myshixuns_controller.rb @@ -438,6 +438,7 @@ class MyshixunsController < ApplicationController # 代码运行中的信息接口 def code_runinng_message begin + logger.info("######################params: #{params}") jsonTestDetails = JSON.parse(params[:jsonTestDetails]) game_id = jsonTestDetails['buildID'] message = jsonTestDetails['textMsg'] From d1f536b19158e3fb90cd0c8cdda311f3f0df4e80 Mon Sep 17 00:00:00 2001 From: daiao <35855898@qq.com> Date: Sat, 16 Mar 2019 11:09:05 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=97=A5=E5=BF=97?= =?UTF-8?q?=E4=BF=A1=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/myshixuns_controller.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/app/controllers/myshixuns_controller.rb b/app/controllers/myshixuns_controller.rb index 39bf615e..4f04cf68 100644 --- a/app/controllers/myshixuns_controller.rb +++ b/app/controllers/myshixuns_controller.rb @@ -449,6 +449,8 @@ class MyshixunsController < ApplicationController game = Game.find game_id msg = game.run_code_message # 只有评测中的game才会创建和更新代码评测中的信息 + logger.info("##################game: #{game.status}") + logger.info("##################retry_status: #{game.retry_status}") if game.status == 1 || game.status == 2 && game.retry_status == 1 if msg.blank? RunCodeMessage.create!(:game_id => game_id, :status => 1, :message => message)