diff --git a/app/controllers/competition_infos_controller.rb b/app/controllers/competition_infos_controller.rb index 1b68061eb..e12cd9b5b 100644 --- a/app/controllers/competition_infos_controller.rb +++ b/app/controllers/competition_infos_controller.rb @@ -127,6 +127,9 @@ class CompetitionInfosController < ApplicationController if params[:upload].to_s == "true" competition_users = competition_users.joins("join attachments on attachments.container_type='CompetitionUser' and attachments.container_id = competition_users.id") end + if params[:sub_item].present? + competition_users = competition_users.where(sub_item: params[:sub_item]) + end @competition_users_count = competition_users.count competition_users = competition_users.select("DISTINCT competition_users.*") @competition_users = paginate(competition_users) @@ -262,7 +265,7 @@ class CompetitionInfosController < ApplicationController def upload competition_user = CompetitionUser.find_by(competition_info: @competition_info.id, user_id: current_user.id) tip_exception "未报名,请先报名" if competition_user.blank? - tip_exception "附件参数attachment_ids不能为空" if params[:attachment_ids].blank? + # tip_exception "附件参数attachment_ids不能为空" if params[:attachment_ids].blank? # 第一轮赛合格人员 # first_round_ids = CompetitionUser.where(competition_info_id: @competition_info.id).where("score > 26").pluck(:id) first_round_ids = [541, 543, 544, 545, 546, 548, 550, 551, 552, 554, 555, 556, 558, 560, 563, 565, 567, 576, 579, 581] @@ -271,25 +274,30 @@ class CompetitionInfosController < ApplicationController return normal_status(-1, "今日打分已达上限,请明日再试") if api_score_control.forbid? api_score_control.increment! # tip_exception "您已经提交作品!" if competition_user.present? && competition_user.attachments.present? - competition_user.attachments.update_all(container_id: nil, container_type: nil) - params[:attachment_ids].each do |id| - attachment = Attachment.where_id_or_uuid(id).first - unless attachment.blank? - attachment.container = competition_user - attachment.author_id = current_user.id - attachment.description = "" - attachment.save - end - forge_url = Rails.application.config_for(:configuration)['platform_url'] || EduSetting.get("main_site") - filePath = "#{forge_url}/api/attachments/#{attachment.id}" - if EduSetting.get("competition_ccks_ids").to_s.split(",").include?(@competition_info.identifier.to_s) - api_url = "/script/ccks" - CompetitionAutoScoreNewJob.perform_later(competition_user.id, api_url, filePath) - elsif EduSetting.get("competition_zstp2023_ids").to_s.split(",").include?(@competition_info.identifier.to_s) - api_url = "/script/ccks2023" - CompetitionAutoScoreNewJob.perform_later(competition_user.id, api_url, filePath) + if params[:attachment_ids].present? + competition_user.attachments.update_all(container_id: nil, container_type: nil) + params[:attachment_ids].each do |id| + attachment = Attachment.where_id_or_uuid(id).first + unless attachment.blank? + attachment.container = competition_user + attachment.author_id = current_user.id + attachment.description = "" + attachment.save + end + forge_url = Rails.application.config_for(:configuration)['platform_url'] || EduSetting.get("main_site") + filePath = "#{forge_url}/api/attachments/#{attachment.id}" + if EduSetting.get("competition_ccks_ids").to_s.split(",").include?(@competition_info.identifier.to_s) + api_url = "/script/ccks" + CompetitionAutoScoreNewJob.perform_later(competition_user.id, api_url, filePath) + elsif EduSetting.get("competition_zstp2023_ids").to_s.split(",").include?(@competition_info.identifier.to_s) + api_url = "/script/ccks2023" + CompetitionAutoScoreNewJob.perform_later(competition_user.id, api_url, filePath) + end end end + competition_user.sub_item = params[:sub_item] if params[:sub_item].present? + competition_user.works_name = params[:works_name] if params[:works_name].present? + competition_user.works_url = params[:works_url] if params[:works_url].present? competition_user.update_attributes!(status: 3) render_ok end diff --git a/app/models/competition_info.rb b/app/models/competition_info.rb index c9383102b..7814f2d8a 100644 --- a/app/models/competition_info.rb +++ b/app/models/competition_info.rb @@ -101,6 +101,9 @@ class CompetitionInfo < ApplicationRecord hash.merge!({ "赛项" => "sub_competition" }) hash.merge!({ "课题来源" => "subject_source_from" }) if self.is_local? hash.merge!({ "成员" => "members_to_string" }) + hash.merge!({ "子赛道" => "sub_item" }) + hash.merge!({ "参赛作品名称" => "works_name" }) + hash.merge!({ "参赛作品名称" => "works_url" }) self.enroll_columns.present? && self.enroll_columns.is_a?(String) ? JSON.parse(self.enroll_columns) : hash rescue => err diff --git a/app/views/competition_infos/enroll_list.json.jbuilder b/app/views/competition_infos/enroll_list.json.jbuilder index 3ef6c4943..e3c8b5b60 100644 --- a/app/views/competition_infos/enroll_list.json.jbuilder +++ b/app/views/competition_infos/enroll_list.json.jbuilder @@ -3,7 +3,8 @@ json.message "success" json.count @competition_users_count json.data do json.array! @competition_users.to_a do |c_user| - json.extract! c_user, :id, :org_name, :org_job, :org_rank, :leader, :zone, :sub_competition, :subject_source_type, :subject_source_name, :phone, :status, :mail, :ext1, :ext2, :ext3 + json.extract! c_user, :id, :org_name, :org_job, :org_rank, :leader, :zone, :sub_competition, :subject_source_type, + :subject_source_name, :phone, :status, :mail, :ext1, :ext2, :ext3, :ext4, :ext5, :sub_item, :works_name, :works_url json.user_id c_user.user_id json.user_real_name c_user.user&.real_name json.members c_user.members diff --git a/db/migrate/202407019221721_add_competition_user_col.rb b/db/migrate/202407019221721_add_competition_user_col.rb new file mode 100644 index 000000000..acfec9a56 --- /dev/null +++ b/db/migrate/202407019221721_add_competition_user_col.rb @@ -0,0 +1,9 @@ +class AddCompetitionUserCol < ActiveRecord::Migration[5.2] + def change + add_column :competition_users, :sub_item, :string + add_column :competition_users, :works_name, :string + add_column :competition_users, :works_url, :string + add_column :competition_users, :ext4, :string + add_column :competition_users, :ext5, :string + end +end