namespace :update_educoder_user do desc "update educoder user mail phone" task done: :environment do data = User.where("mail like '%***%' or phone like '%***%'") data = User.where(login: ENV['login']) if ENV['login'].present? data.each do |user| begin req_params = { "login" => "#{user.login}", "private_token" => "hriEn3UwXfJs3PmyXnqQ" } api_url = "https://data.educoder.net" client = Faraday.new(url: api_url) response = client.public_send("get", "/api/sources/get_user_info_by_login", req_params) result = JSON.parse(response.body) #查询 next if result["status"].to_s != "0" # login 邮箱 手机号 姓名 学校/单位 user_info = result["data"] Rails.logger.info("user_info====== #{user_info}") login = user_info["login"] email = user_info["mail"] phone = user_info["phone"] real_name = user_info["username"] department_name = user_info["school"] password = "12345678" user.update_columns(mail: "#{email}", phone: "#{phone}") sync_params = { email: email, login_name: user.login, source_id: 0 } interactor = Gitea::User::UpdateInteractor.call(user.login, sync_params) if interactor.success? puts "success user: #{user.id} username:#{user.login}" else puts "error user: #{user.id} username:#{user.login}, error:#{interactor.error.to_s}" end rescue Exception => e puts "error user: #{user.id} username:#{user.login}, error:#{e}" end end end end