Merge branch 'dev_aliyun' into dev_course

dev_course
daiao 5 years ago
commit 28737321fc

@ -18,6 +18,7 @@ class GitsController < ApplicationController
input_password = username_password.split(":")[1].strip()
uid_logger("git start auth: input_username is #{input_username}")
# Git 超级权限用户
if input_username.strip == gituser.strip && input_password.strip == gitpassword.strip
result = true
@ -43,12 +44,13 @@ class GitsController < ApplicationController
if system_user.present? && system_user.manager_of_shixun?(shixun)
result = true
else
logger.info("git411 start")
uid_logger_error("gituser is not shixun manager")
result = false
end
else
render :json => { :status => 404 }
result = false
uid_logger_error("shixun is not exist")
# result = false
result = true # 为了测试跳出
end
end
end

@ -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的管卡数不相等或者关卡顺序错了说明实训被极大的改动需要重置
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
# 其它创建关卡等操作
@ -548,6 +547,7 @@ class ShixunsController < ApplicationController
end
# REDO:开启实训时更新关联作品的状态
# TODO:这个可以异步。或者放到课程里面取,不要在开启实训这边做
HomeworksService.new.update_myshixun_work_status myshixun
@current_task = myshixun.current_task

@ -0,0 +1,6 @@
class AddIndexForEvaluateRecord < ActiveRecord::Migration[5.2]
def change
# 增加evalute_records的索引提高查询效率
add_index :evaluate_records, :game_id
end
end

@ -0,0 +1,51 @@
# 新版Git测试说明
统一:
参考实训http://47.96.87.25:48080/shixuns/ca9fvobr/repository
请求方式POST
参数{repo_path: "educoder/ca9fvobr.git"}
公共方法:
['add_repository', 'fork_repository', 'delete_repository', 'file_tree', 'update_file',
'file_content', 'commits']
1、仓库目录接口
测试方法模拟1000个用户同时去访问接口访问方式
http://121.199.19.206:9000/api/file_tree
参数:
{repo_path: "educoder/ca9fvobr.git", path: ''} // 如:{path: 'step1'}
2、创建版本库
访问地址http://121.199.19.206:9000/api/add_repository
参数:
{repo_path: 比如:"Hjqreturn/aaass1.git"}
3、fork版本库
http://121.199.19.206:9000/api/fork_repository
参数:
{repo_path: 'Hjqreturn/aaass1.git', fork_repository_path: 'educoder/ca9fvobr.git'}
说明fork_repository_path是源项目的repo_path, repo_path是新项目的
4、更新文件
测试方法:
1、更新同一个文件并发量可以不用很大可以用同一个用户并发10-100
2、更新不同的文件可以依据创建的版本库去更新
访问地址http://121.199.19.206:9000/api/update_file
参数:
{repo_path: "educoder/ca9fvobr.git",
file_path: 'step1/main.py',
message: 'commit by test',
content: 'afdjadsjfj1111',
author_name: 'guange',
author_email: '8863824@gmil.com'}
5、获取文件内容
访问地址http://121.199.19.206:9000/api/file_content
参数:
{repo_path: "educoder/ca9fvobr.git", file_path: 'step1/main.py',}
6、获取提交记录
访问地址http://121.199.19.206:9000/api/commits
参数:
{repo_path: 比如:"educoder/ca9fvobr.git"}

@ -0,0 +1,16 @@
namespace :git do
desc "检测是否TPM是否需要更新"
task :shixun_check_update => :environment do
end
desc "检测版本库是否有异常"
task :myshixuns_check_update => :environment do
end
task :check => :environment do
end
end
Loading…
Cancel
Save