FIX 同步educoder平台实训项目放入job中执行
This commit is contained in:
parent
7f685e4119
commit
a63d675a92
|
@ -0,0 +1,68 @@
|
||||||
|
class SyncEducoderShixunJob < ApplicationJob
|
||||||
|
queue_as :default
|
||||||
|
|
||||||
|
def perform(url, private_token, page, per_page)
|
||||||
|
uri = URI("#{url}?page=#{page}&per_page=#{per_page}&private_token=#{private_token}")
|
||||||
|
puts "-------url: #{uri}"
|
||||||
|
response = Net::HTTP.get_response(uri)
|
||||||
|
|
||||||
|
result = JSON.parse(response.body)
|
||||||
|
|
||||||
|
if result['status'] != 0
|
||||||
|
logger.info "======= 接口请求失败!"
|
||||||
|
return
|
||||||
|
end
|
||||||
|
|
||||||
|
result['data']['repositories'].each do |re|
|
||||||
|
next if re['repo_name'].blank?
|
||||||
|
next if ProjectEducoder.exists?(repo_name: re['repo_name'])
|
||||||
|
|
||||||
|
language = ProjectLanguage.find_by_name re['language']
|
||||||
|
language = ProjectLanguage.create!(name: re['language']) if language.blank?
|
||||||
|
|
||||||
|
category = ProjectCategory.find_by_name re['category']
|
||||||
|
category = ProjectCategory.create!(name: re['category']) if category.blank?
|
||||||
|
|
||||||
|
project_params =
|
||||||
|
{
|
||||||
|
name: re['name'],
|
||||||
|
# user_id: params[:user_id],
|
||||||
|
description: re['description'],
|
||||||
|
project_category_id: category.id,
|
||||||
|
project_language_id: language.id,
|
||||||
|
is_public: true,
|
||||||
|
# ignore_id: params[:ignore_id],
|
||||||
|
# license_id: params[:license_id],
|
||||||
|
identifier: re['repo_name'],
|
||||||
|
platform: Project.platforms[:educoder]
|
||||||
|
}
|
||||||
|
|
||||||
|
project = Project.new(project_params)
|
||||||
|
|
||||||
|
ActiveRecord::Base.transaction do
|
||||||
|
if project.save!
|
||||||
|
repo_params =
|
||||||
|
{
|
||||||
|
hidden: false,
|
||||||
|
project_id: project.id,
|
||||||
|
identifier: re['repo_name']
|
||||||
|
}
|
||||||
|
|
||||||
|
ProjectEducoder.create!(
|
||||||
|
project_id: project.id,
|
||||||
|
owner: re['username'],
|
||||||
|
repo_name: re['repo_name'],
|
||||||
|
image_url: re['image_url'])
|
||||||
|
|
||||||
|
repo = Repository.new(repo_params)
|
||||||
|
repo.save!
|
||||||
|
|
||||||
|
logger.info "项目: #{re['name']} 同步成功"
|
||||||
|
else
|
||||||
|
logger.info "项目: #{re['name']} 同步失败"
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
end
|
|
@ -202,64 +202,6 @@ class Project < ApplicationRecord
|
||||||
end
|
end
|
||||||
|
|
||||||
def self.sync_educoder_shixun(url, private_token, page, per_page)
|
def self.sync_educoder_shixun(url, private_token, page, per_page)
|
||||||
uri = URI("#{url}?page=#{page}&per_page=#{per_page}&private_token=#{private_token}")
|
SyncEducoderShixunJob.perform_later(uri, private_token, page, per_page)
|
||||||
puts "-------url: #{uri}"
|
|
||||||
response = Net::HTTP.get_response(uri)
|
|
||||||
|
|
||||||
result = JSON.parse(response.body)
|
|
||||||
|
|
||||||
if result['status'] != 0
|
|
||||||
logger.info "======= 接口请求失败!"
|
|
||||||
return
|
|
||||||
end
|
|
||||||
|
|
||||||
result['data']['repositories'].each do |re|
|
|
||||||
next if re['repo_name'].blank?
|
|
||||||
language = ProjectLanguage.find_by_name re['language']
|
|
||||||
language = ProjectLanguage.create!(name: re['language']) if language.blank?
|
|
||||||
|
|
||||||
category = ProjectCategory.find_by_name re['category']
|
|
||||||
category = ProjectCategory.create!(name: re['category']) if category.blank?
|
|
||||||
|
|
||||||
project_params =
|
|
||||||
{
|
|
||||||
name: re['name'],
|
|
||||||
# user_id: params[:user_id],
|
|
||||||
description: re['description'],
|
|
||||||
project_category_id: category.id,
|
|
||||||
project_language_id: language.id,
|
|
||||||
is_public: true,
|
|
||||||
# ignore_id: params[:ignore_id],
|
|
||||||
# license_id: params[:license_id],
|
|
||||||
identifier: re['repo_name'],
|
|
||||||
platform: Project.platforms[:educoder]
|
|
||||||
}
|
|
||||||
|
|
||||||
project = Project.new(project_params)
|
|
||||||
|
|
||||||
ActiveRecord::Base.transaction do
|
|
||||||
if project.save!
|
|
||||||
repo_params =
|
|
||||||
{
|
|
||||||
hidden: false,
|
|
||||||
project_id: project.id,
|
|
||||||
identifier: re['repo_name']
|
|
||||||
}
|
|
||||||
|
|
||||||
ProjectEducoder.create!(
|
|
||||||
project_id: project.id,
|
|
||||||
owner: re['username'],
|
|
||||||
repo_name: re['repo_name'],
|
|
||||||
image_url: re['image_url'])
|
|
||||||
|
|
||||||
repo = Repository.new(repo_params)
|
|
||||||
repo.save!
|
|
||||||
|
|
||||||
logger.info "项目: #{re['name']} 同步成功"
|
|
||||||
else
|
|
||||||
logger.info "项目: #{re['name']} 同步失败"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue