diff --git a/app/jobs/sync_competition_tzb_user_job.rb b/app/jobs/sync_competition_tzb_user_job.rb new file mode 100644 index 000000000..b05b546ce --- /dev/null +++ b/app/jobs/sync_competition_tzb_user_job.rb @@ -0,0 +1,38 @@ +class SyncCompetitionTzbUserJob < ApplicationJob + queue_as :default + + def perform(code=nil) + url = EduSetting.get("SyncCompetitionTzbUserUrl") || "https://www.tiaozhanbei.net/api/v1/ai_contest/123456/project_list/" + uri = URI.parse(url) + http = Net::HTTP.new(uri.hostname, uri.port) + if uri.scheme == 'https' + http.verify_mode = OpenSSL::SSL::VERIFY_NONE + http.use_ssl = true + end + response = http.send_request('POST', uri.path, nil, {'Content-Type' => 'application/json'}) + result = JSON.parse(response.body) +# data = '{"Code":"Ok","Message":"成功","Data":[{"corp_id":123456,"match_id":666,"user_uid":"uid_y0gqNR3EesqZVgA", +# "project_pid":"pid_123001","activation_code":"V2nyoEYzl2zRaVySpldc","project_status":"not_finished", +# "project_status_text":"未提交","status_level":"school","status_level_text":"校级","school_code":"10003", +# "school_name":"清华大学","province_name":"北京"},{"corp_id":123456,"match_id":666,"user_uid":"uid_JHnTBdt8GA3tziq","project_pid":"pid_123002","activation_code":"nde8u5HNQ7qqXjkBIQG0","project_status":"submit_to","project_status_text":"已提交","status_level":"school","status_level_text":"校级","school_code":"10003","school_name":"清华大学","province_name":"北京"},{"corp_id":123456,"match_id":666,"user_uid":"uid_2tCNcoKX8T8oHvk","project_pid":"pid_123003","activation_code":"iZQCh3mfuJ8ESrUPwGRo","project_status":"pass_by","project_status_text":"审核通过","status_level":"school","status_level_text":"校级","school_code":"10001","school_name":"北京大学","province_name":"北京"},{"corp_id":123456,"match_id":666,"user_uid":"uid_DziaXaNTkyS1M05","project_pid":"pid_123004","activation_code":"c42BKyehYWAxeAqjLdc8","project_status":"not_pass_by","project_status_text":"审核未通过","status_level":"province","status_level_text":"省级","school_code":"10001","school_name":"北京大学","province_name":"北京"}]}' +# result = JSON.parse(data) + Rails.logger.info("SyncCompetitionTzbUserJob size===#{result["Data"].size}") + result["Data"].each do |row| + unless CompetitionTzbUser.find_by(user_uid: row["user_uid"]).present? + tzb_user = CompetitionTzbUser.new + tzb_user.corp_id = row["corp_id"] + tzb_user.match_id = row["match_id"] + tzb_user.user_uid = row["user_uid"] + tzb_user.project_pid = row["project_pid"] + tzb_user.activation_code = row["activation_code"] + tzb_user.project_status = row["project_status"] + tzb_user.status_level = row["status_level"] + tzb_user.project_status_text = row["project_status_text"] + tzb_user.school_code = row["school_code"] + tzb_user.school_name = row["school_name"] + tzb_user.province_name = row["province_name"] + tzb_user.save + end + end + end +end \ No newline at end of file diff --git a/app/models/competition_tzb_user.rb b/app/models/competition_tzb_user.rb new file mode 100644 index 000000000..aa07d3c4d --- /dev/null +++ b/app/models/competition_tzb_user.rb @@ -0,0 +1,5 @@ + +class CompetitionTzbUser < ApplicationRecord + + +end diff --git a/db/migrate/202505132525119_create_competition_tzb_users.rb b/db/migrate/202505132525119_create_competition_tzb_users.rb new file mode 100644 index 000000000..e9df67806 --- /dev/null +++ b/db/migrate/202505132525119_create_competition_tzb_users.rb @@ -0,0 +1,27 @@ +class CreateCompetitionTzbUsers < ActiveRecord::Migration[5.2] + def change + # data = '{"Code":"Ok","Message":"成功","Data":[{"corp_id":123456,"match_id":666,"user_uid":"uid_y0gqNR3EesqZVgA","project_pid":"pid_123001","activation_code":"V2nyoEYzl2zRaVySpldc","project_status":"not_finished","project_status_text":"未提交", + # "status_level":"school","status_level_text":"校级","school_code":"10003","school_name":"清华大学","province_name":"北京"},{"corp_id":123456,"match_id":666,"user_uid":"uid_JHnTBdt8GA3tziq","project_pid":"pid_123002","activation_code":"nde8u5HNQ7qqXjkBIQG0","project_status":"submit_to","project_status_text":"已提交","status_level":"school","status_level_text":"校级","school_code":"10003","school_name":"清华大学","province_name":"北京"},{"corp_id":123456,"match_id":666,"user_uid":"uid_2tCNcoKX8T8oHvk","project_pid":"pid_123003","activation_code":"iZQCh3mfuJ8ESrUPwGRo","project_status":"pass_by","project_status_text":"审核通过","status_level":"school","status_level_text":"校级","school_code":"10001","school_name":"北京大学","province_name":"北京"},{"corp_id":123456,"match_id":666,"user_uid":"uid_DziaXaNTkyS1M05","project_pid":"pid_123004","activation_code":"c42BKyehYWAxeAqjLdc8","project_status":"not_pass_by","project_status_text":"审核未通过","status_level":"province","status_level_text":"省级","school_code":"10001","school_name":"北京大学","province_name":"北京"}]}' + + create_table :competition_tzb_users do |t| + t.string :corp_id + t.string :match_id + t.string :user_uid + t.string :project_pid + t.string :activation_code + t.string :project_status + t.string :project_status_text + t.string :status_level + t.string :status_level_text + t.string :school_code + t.string :school_name + t.string :province_name + t.integer :user_id + t.timestamps + end + + add_index :competition_tzb_users, :user_uid + add_index :competition_tzb_users, :activation_code + add_index :competition_tzb_users, :user_id + end +end