80 lines
2.7 KiB
Ruby
80 lines
2.7 KiB
Ruby
# 执行示例 bundle exec rake "sync_mindspore:contributor_to_user"
|
|
# RAILS_ENV=production bundle exec rake "sync_mindspore:contributor_to_user"
|
|
desc "mindspore项目贡献者数据"
|
|
|
|
# 同步mindspre贡献者数据至用户表
|
|
|
|
namespace :sync_mindspore do
|
|
desc "同步用户信息"
|
|
task contributor_to_user: :environment do
|
|
i = 1
|
|
fail_users = []
|
|
file = File.open('public/mindspore_authors', 'r')
|
|
file.each_line do |l|
|
|
itemArray = l.gsub("\r\n", "").split("|:|")
|
|
email = itemArray[0]
|
|
username = itemArray[1]
|
|
password = '12345678'
|
|
puts "=======Generate:[#{i}] Username: #{username}, Password: #{password}, Email: #{email}======="
|
|
puts "=======Create User Begin====== "
|
|
|
|
user = User.new(admin: false, login: username, mail: email, type: "User", is_test: 1)
|
|
user.password = password
|
|
user.platform = 'forge'
|
|
user.activate
|
|
|
|
unless user.valid?
|
|
puts "=======Create User Fail!====== "
|
|
fail_users << [username, email]
|
|
next
|
|
end
|
|
|
|
interactor = Gitea::RegisterInteractor.call({username: username, email: email, password: password})
|
|
if interactor.success?
|
|
gitea_user = interactor.result
|
|
result = Gitea::User::GenerateTokenService.call(username, password)
|
|
user.gitea_token = result['sha1']
|
|
user.gitea_uid = gitea_user[:body]['id']
|
|
if user.save!
|
|
UserExtension.create!(user_id: user.id)
|
|
end
|
|
end
|
|
|
|
i += 1
|
|
puts "=======Create User End====== "
|
|
end
|
|
|
|
puts "=======Fail Users:#{fail_users}====== "
|
|
|
|
file.close
|
|
end
|
|
# 执行示例 bundle exec rake "sync_mindspore:init_project_blockchain[1,2]"
|
|
# RAILS_ENV=production bundle exec rake "sync_mindspore:init_project_blockchain[1,2]"
|
|
desc "初始化区块链项目"
|
|
task :init_project_blockchain, [:id, :init_id] => :environment do |t, args|
|
|
puts "=====Init Project Blockchain: #{args.id}====="
|
|
project = Project.find_by_id(args.id)
|
|
project.update_column(:use_blockchain, true)
|
|
|
|
username = project.user_id.to_s
|
|
token_name = project.id.to_s
|
|
total_supply = 10000
|
|
token_balance = [[init_id.to_s, 100]]
|
|
|
|
contributions = Project.mindspore_contributors
|
|
total_contributions = contributions.sum{|i| i["contributions"]}
|
|
contributions.each do |con|
|
|
cont_balance = Float(con["contributions"]*9900/total_contributions).round(0)
|
|
token_balance << [con["id"].to_s, cont_balance] if cont_balance > 0
|
|
end
|
|
params = {
|
|
"request-type": "create repo",
|
|
"username": username,
|
|
"token_name": token_name,
|
|
"total_supply": total_supply,
|
|
"token_balance": token_balance
|
|
}.to_json
|
|
resp_body = Blockchain::InvokeBlockchainApi.call(params)
|
|
end
|
|
end
|