|
|
|
@ -47,7 +47,7 @@ class ShixunsController < ApplicationController
|
|
|
|
|
where("challenge_tags.name like '%#{keyword}%'
|
|
|
|
|
or challenges.subject like '%#{keyword}%'
|
|
|
|
|
or concat(lastname, firstname) like '%#{keyword}%'
|
|
|
|
|
or shixuns.name like '%#{keyword.split(" ").join("%")}%'")
|
|
|
|
|
or shixuns.name like '%#{keyword.split(" ").join("%")}%'").distinct
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
## 筛选 状态
|
|
|
|
@ -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的管卡数不相等或者关卡顺序错了,说明实训被极大的改动,需要重置
|
|
|
|
|
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}")
|
|
|
|
|
if current_myshixun.games.count != @shixun.challenges_count || current_myshixun.games.map(&:challenge_id).sort != Challenge.where(shixun_id: @shixun.id).pluck(:id).sort
|
|
|
|
|
# 这里页面弹框要收到 当前用户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
|
|
|
|
|
# 其它创建关卡等操作
|
|
|
|
@ -548,6 +547,7 @@ class ShixunsController < ApplicationController
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# REDO:开启实训时更新关联作品的状态
|
|
|
|
|
# TODO:这个可以异步。或者放到课程里面取,不要在开启实训这边做
|
|
|
|
|
HomeworksService.new.update_myshixun_work_status myshixun
|
|
|
|
|
|
|
|
|
|
@current_task = myshixun.current_task
|
|
|
|
|