You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
30 lines
1.3 KiB
30 lines
1.3 KiB
class MigrateCompetitionScore < ActiveRecord::Migration[5.2]
|
|
def change
|
|
CompetitionModule.where(name: "排行榜", hidden: 0).each do |com_module|
|
|
competition = com_module.competition
|
|
if competition.present?
|
|
puts competition.id
|
|
if competition.identifier == 'hn' || competition.identifier == 'gcc-task-2019'
|
|
p_rate = 0.2
|
|
f_rate = 0.8
|
|
else
|
|
p_rate = 0.15
|
|
f_rate = 0.85
|
|
end
|
|
pre_stage = competition.competition_stages.where(:name => "预赛").first
|
|
final_stage = competition.competition_stages.where(:name => "决赛").first
|
|
|
|
competition.competition_teams.each do |team|
|
|
f_score = team.competition_scores.where(:competition_stage_id => final_stage.try(:id)).first
|
|
# 预赛记录
|
|
p_score = team.competition_scores.where(:competition_stage_id => pre_stage.try(:id)).first
|
|
s_score = (f_score.try(:score).to_f * f_rate + p_score.try(:score).to_f * p_rate).try(:round, 2)
|
|
s_spend_time = f_score.try(:cost_time).to_i + p_score.try(:cost_time).to_i
|
|
CompetitionScore.create(:user_id => team.user_id, :competition_team_id => team.id, :competition_id => competition.id,
|
|
:competition_stage_id => 0, :score => s_score, :cost_time => s_spend_time)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|