diff --git a/app/controllers/shixuns_controller.rb b/app/controllers/shixuns_controller.rb index f1b4306ff..0ac7e9835 100644 --- a/app/controllers/shixuns_controller.rb +++ b/app/controllers/shixuns_controller.rb @@ -484,16 +484,15 @@ class ShixunsController < ApplicationController # 中间需要一个过渡动画 # TODO: 第一次开启实训都会去判断是否是纯选择题类型,感觉做成在创建关卡的时候就判断该实训是否是纯选择题更加合适 def shixun_exec - current_myshixun = @shixun.current_myshixun(current_user.id) - if @shixun.opening_time.present? && @shixun.opening_time > Time.now && current_user.shixun_identity(@shixun) > User::EDU_SHIXUN_MEMBER tip_show_exception(-3, "#{@shixun.opening_time.strftime('%Y-%m-%d %H:%M:%S')}") end - + current_myshixun = @shixun.current_myshixun(current_user.id) if current_myshixun # 如果TPM和TPI的管卡数不相等或者关卡顺序错了,说明实训被极大的改动,需要重置 - uid_logger_error("7777777777777777#{current_myshixun.games.count}, #{@shixun.challenges_count}") - if current_myshixun.games.count != @shixun.challenges_count || current_myshixun.games.map(&:challenge_id).sort != Challenge.where(shixun_id: @shixun.id).pluck(:id).sort + if current_myshixun.games.count != @shixun.challenges_count || + current_myshixun.games.reorder(:challenge_id).pluck(:challenge_id) != @shixun.challenges.reorder(:id).pluck(:id) + uid_logger_error("7777777777777777#{current_myshixun.games.count}, #{@shixun.challenges_count}") # 这里页面弹框要收到 当前用户myshixun的identifier. tip_show_exception("/myshixuns/#{current_myshixun.try(:identifier)}/reset_my_game") end @@ -517,7 +516,7 @@ class ShixunsController < ApplicationController ActiveRecord::Base.transaction do begin - cloud_bridge = edu_setting('cloud_bridge') + #cloud_bridge = edu_setting('cloud_bridge') myshixun_identifier = generate_identifier Myshixun, 10 myshixun = @shixun.myshixuns.create!(user_id: current_user.id, identifier: myshixun_identifier, modify_time: @shixun.modify_time, reset_time: @shixun.reset_time, @@ -529,12 +528,12 @@ class ShixunsController < ApplicationController # fork仓库 project_fork(myshixun, @repo_path, current_user.login) - rep_url = Base64.urlsafe_encode64(repo_ip_url @repo_path ) - uid_logger("start openGameInstance") - uri = "#{cloud_bridge}/bridge/game/openGameInstance" - logger.info("end openGameInstance") - params = {tpiID: "#{myshixun.id}", tpmGitURL:rep_url, tpiRepoName: myshixun.repo_name.split("/").last} - uid_logger("openGameInstance params is #{params}") + #rep_url = Base64.urlsafe_encode64(repo_ip_url @repo_path ) + #uid_logger("start openGameInstance") + #uri = "#{cloud_bridge}/bridge/game/openGameInstance" + #logger.info("end openGameInstance") + #params = {tpiID: "#{myshixun.id}", tpmGitURL:rep_url, tpiRepoName: myshixun.repo_name.split("/").last} + #uid_logger("openGameInstance params is #{params}") # res = interface_post uri, params, 83, "实训云平台繁忙(繁忙等级:83)" end # 其它创建关卡等操作 @@ -547,7 +546,7 @@ class ShixunsController < ApplicationController :open_time => Time.now, :identifier => game_identifier, :modify_time => challenge.modify_time) end - # REDO:开启实训时更新关联作品的状态 + # REDO:开启实训时更新关联作品的状态-> TODO:这个可以异步。 HomeworksService.new.update_myshixun_work_status myshixun @current_task = myshixun.current_task diff --git a/app/models/myshixun.rb b/app/models/myshixun.rb index 089b416de..53f06293c 100644 --- a/app/models/myshixun.rb +++ b/app/models/myshixun.rb @@ -56,7 +56,6 @@ class Myshixun < ApplicationRecord # status:0 可以测评的,正在测评的 # 如果都完成,则当前任务为最后一个任务 def current_task - current_game = self.games.select{|game| game.status == 1 || game.status == 0}.first if current_game.blank? if self.status == 1 diff --git a/db/migrate/20190625012548_add_index_for_evaluate_record.rb b/db/migrate/20190625012548_add_index_for_evaluate_record.rb new file mode 100644 index 000000000..d67e33b1e --- /dev/null +++ b/db/migrate/20190625012548_add_index_for_evaluate_record.rb @@ -0,0 +1,6 @@ +class AddIndexForEvaluateRecord < ActiveRecord::Migration[5.2] + def change + # 增加evalute_records的索引,提高查询效率 + add_index :evaluate_records, :game_id + end +end