diff --git a/app/controllers/competition_infos_controller.rb b/app/controllers/competition_infos_controller.rb index a462fcc53..9e3b198f0 100644 --- a/app/controllers/competition_infos_controller.rb +++ b/app/controllers/competition_infos_controller.rb @@ -149,6 +149,7 @@ class CompetitionInfosController < ApplicationController @table_columns = enroll_fields.keys @table_columns = @table_columns + %w(作品下载链接) if params[:upload].to_s == "true" && !enroll_fields.values.include?("works_url") @table_columns = @table_columns + %w(申请表下载链接) if params[:apply_status].present? + @table_columns = @table_columns + %w(bm审查下载链接) if @competition_info.identifier == "KXSYSJ-2024" # 重排成员放最后 enroll_fields_values = enroll_fields.values - ["members_to_string"] + ["members_to_string"] @export_infos = [] @@ -172,6 +173,10 @@ class CompetitionInfosController < ApplicationController file = Attachment.where_id_or_uuid(u.ext2).first info_array = info_array + [file.blank? ? "" : "#{EduSetting.get('host_name')}/#{download_url(file)}"] end + if @competition_info.identifier == "KXSYSJ-2024" + file = Attachment.where_id_or_uuid(u.bm_file_id).first + info_array = info_array + [file.blank? ? "" : "#{EduSetting.get('host_name')}/#{download_url(file)}"] + end @export_infos.push(info_array) end Rails.logger.info("######_______________1111########@export_infos: #{@export_infos}") @@ -330,8 +335,13 @@ class CompetitionInfosController < ApplicationController # 第一轮赛合格人员 first_round_ids = [541, 543, 544, 545, 546, 548, 550, 551, 552, 554, 555, 556, 558, 560, 563, 565, 567, 576, 579, 581] @second_round = first_round_ids.include?(@competition_user&.id) - cache_key = "limit_forbid_control:#{@competition_info.identifier}:competition_api_score:#{@competition_user&.id}-#{@stage}" - @count_control = Rails.cache.read(cache_key) + if @competition_info.identifier.to_s == "dmsc" || @competition_info.identifier.to_s == "zswd" + cache_key = "limit_forbid_control:#{@competition_info.identifier}:competition_api_score:#{@competition_user&.id}-#{@stage}" + @count_control = Rails.cache.read(cache_key) + else + api_score_control = LimitForbidControl::CompetitionApiScore.new(@competition_user.id) + @count_control = api_score_control.forbid? + end end def upload @@ -431,7 +441,7 @@ class CompetitionInfosController < ApplicationController .order("competition_user_scores.score desc, competition_user_scores.created_at asc") @rank_num = competition_users.pluck(:id) if params[:keyword].present? - competition_users = competition_users.where("competition_users.org_name LIKE :keyword OR competition_users.leader LIKE :keyword ", keyword: "%#{params[:keyword].to_s}%") + competition_users = competition_users.where("competition_users.org_name LIKE :keyword OR competition_users.leader LIKE :keyword OR competition_users.ext4 LIKE :keyword ", keyword: "%#{params[:keyword].to_s}%") end @competition_users_count = competition_users.count @competition_users = paginate(competition_users) @@ -439,7 +449,7 @@ class CompetitionInfosController < ApplicationController competition_users = @competition_info.competition_users.where("competition_users.status = 3").where("score > 0").order("score desc, created_at asc") @rank_num = competition_users.pluck(:id) if params[:keyword].present? - competition_users = competition_users.where("competition_users.org_name LIKE :keyword OR competition_users.leader LIKE :keyword ", keyword: "%#{params[:keyword].to_s}%") + competition_users = competition_users.where("competition_users.org_name LIKE :keyword OR competition_users.leader LIKE :keyword OR competition_users.ext4 LIKE :keyword ", keyword: "%#{params[:keyword].to_s}%") end @competition_users_count = competition_users.count @competition_users = paginate(competition_users) @@ -460,7 +470,7 @@ class CompetitionInfosController < ApplicationController def enroll_params params.permit(:org_name, :org_job, :org_rank, :leader, :zone, :sub_competition, :phone, :subject_source_type, :subject_source_name, :enroll_template_id, :mail, :ext1, :ext2, :ext3, :ext4, :ext5, - :bm_file_id) + :bm_file_id, :teacher_name, :teacher_dept, :teacher_email, :teacher_phone, :teacher_professional) end def competition_info_params diff --git a/app/libs/limit_forbid_control/competition_api_score.rb b/app/libs/limit_forbid_control/competition_api_score.rb index b2db058ec..6caf712d4 100644 --- a/app/libs/limit_forbid_control/competition_api_score.rb +++ b/app/libs/limit_forbid_control/competition_api_score.rb @@ -12,7 +12,7 @@ class LimitForbidControl::CompetitionApiScore < LimitForbidControl::Base def forbid_expires num = EduSetting.get('daily_api_score_forbid_time').presence.to_i - num.zero? ? 1.hours : num.to_i.hours + num.zero? ? 1.hours : num.to_i.minutes end def cumulative_expires diff --git a/app/models/competition_info.rb b/app/models/competition_info.rb index 5e2d5b19e..05b2885cf 100644 --- a/app/models/competition_info.rb +++ b/app/models/competition_info.rb @@ -93,11 +93,11 @@ class CompetitionInfo < ApplicationRecord hash={} hash.merge!({ "ID" => "id" }) hash.merge!({ "用户名" => "user_login" }) - hash.merge!({ "参赛单位" => "org_name" }) - hash.merge!({ "参赛负责人" => "leader" }) - hash.merge!({ "职务" => "org_job" }) if self.is_local? + hash.merge!({ "队长姓名" => "leader" }) + hash.merge!({ "队长单位" => "org_name" }) + hash.merge!({ "队长职称" => "org_job" }) hash.merge!({ "军衔" => "org_rank" }) if self.is_local? - hash.merge!({ "电话" => "phone" }) + hash.merge!({ "队长电话" => "phone" }) hash.merge!({ "赛区" => "zone" }) hash.merge!({ "赛项" => "sub_competition" }) hash.merge!({ "课题来源" => "subject_source_from" }) if self.is_local? @@ -105,6 +105,11 @@ class CompetitionInfo < ApplicationRecord hash.merge!({ "参赛作品名称" => "works_name" }) hash.merge!({ "参赛作品链接" => "works_url" }) hash.merge!({ "成员" => "members_to_string" }) + hash.merge!({ "指导老师姓名" => "teacher_name" }) + hash.merge!({ "指导老师单位" => "teacher_dept" }) + hash.merge!({ "指导老师邮箱" => "teacher_email" }) + hash.merge!({ "指导老师电话" => "teacher_phone" }) + hash.merge!({ "指导老师职称" => "teacher_professional" }) self.enroll_columns.present? && self.enroll_columns.is_a?(String) ? JSON.parse(self.enroll_columns) : hash rescue => err diff --git a/app/models/competition_user.rb b/app/models/competition_user.rb index 3603ed0f6..dc7909d7b 100644 --- a/app/models/competition_user.rb +++ b/app/models/competition_user.rb @@ -42,6 +42,13 @@ class CompetitionUser < ApplicationRecord validates :user_id, uniqueness: { scope: :competition_info_id} + # 报名扩展字段应用记录 + # ext5:竞赛阶段 + # ext1:指导老师 + # ext2:申请模板文件 + # ext3:申请模板状态 + # ext4:参赛队伍名称 + serialize :members, JSON # %i[real_name org_name org_job org_rank].each do |method_name| diff --git a/app/views/competition_infos/enroll_list.json.jbuilder b/app/views/competition_infos/enroll_list.json.jbuilder index b6c5de0e0..2b21606ce 100644 --- a/app/views/competition_infos/enroll_list.json.jbuilder +++ b/app/views/competition_infos/enroll_list.json.jbuilder @@ -4,7 +4,8 @@ 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, :ext4, :ext5, :sub_item, :works_name, :works_url,:bm_file_id + :subject_source_name, :phone, :status, :mail, :ext1, :ext2, :ext3, :ext4, :ext5, :sub_item, :works_name, :works_url, + :bm_file_id, :teacher_name, :teacher_dept, :teacher_email, :teacher_phone, :teacher_professional json.user_id c_user.user_id json.user_real_name c_user.user&.real_name json.members c_user.members @@ -17,6 +18,10 @@ json.data do file = Attachment.where_id_or_uuid(c_user.ext2).first json.partial! 'attachments/attachment_simple', attachment: file if file.present? end + json.bm_file do + file = Attachment.where_id_or_uuid(c_user.bm_file_id).first + json.partial! 'attachments/attachment_simple', attachment: file if file.present? + end json.attachments c_user.attachments do |attachment| json.partial! "attachments/attachment_simple", locals: {attachment: attachment} end diff --git a/app/views/competition_infos/enroll_status.json.jbuilder b/app/views/competition_infos/enroll_status.json.jbuilder index 4e562c8f5..46b124482 100644 --- a/app/views/competition_infos/enroll_status.json.jbuilder +++ b/app/views/competition_infos/enroll_status.json.jbuilder @@ -8,7 +8,8 @@ json.data do if @competition_user.present? json.enroll_info do json.extract! @competition_user, :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,:bm_file_id + :subject_source_name, :phone, :status, :mail, :ext1, :ext2, :ext3, :ext4, :ext5, :sub_item, :works_name, :works_url, + :bm_file_id, :teacher_name, :teacher_dept, :teacher_email, :teacher_phone, :teacher_professional json.user_id @competition_user.user_id json.user_real_name @competition_user.user&.real_name json.members @competition_user.members diff --git a/db/migrate/202411077121724_add_competition_user_add_teacher.rb b/db/migrate/202411077121724_add_competition_user_add_teacher.rb new file mode 100644 index 000000000..626eead9c --- /dev/null +++ b/db/migrate/202411077121724_add_competition_user_add_teacher.rb @@ -0,0 +1,9 @@ +class AddCompetitionUserAddTeacher < ActiveRecord::Migration[5.2] + def change + add_column :competition_users, :teacher_name, :string + add_column :competition_users, :teacher_dept, :string + add_column :competition_users, :teacher_email, :string + add_column :competition_users, :teacher_phone, :string + add_column :competition_users, :teacher_professional, :string + end +end