diff --git a/app/controllers/competition_infos_controller.rb b/app/controllers/competition_infos_controller.rb index efeb9bcd3..7891a8ce4 100644 --- a/app/controllers/competition_infos_controller.rb +++ b/app/controllers/competition_infos_controller.rb @@ -1,12 +1,18 @@ class CompetitionInfosController < ApplicationController include ApplicationHelper before_action :find_competition, only: [:show, :edit, :update, :update_zone_or_sub, :enroll, :upload, :enroll_status, - :statistics, :enroll_list, :ranking_list, :enroll_update, :enroll_status_update, :upload_enroll_template, :enroll_template] + :statistics, :enroll_list, :ranking_list, :enroll_update, :enroll_status_update, + :upload_enroll_template, :enroll_template, :online_switch] before_action :require_admin, only: [:index, :new, :edit, :create] before_action :check_competition_manager, only: [:update, :enroll_status_update] def index @competition_infos = CompetitionInfo.order(created_at: :desc) + @competition_infos = @competition_infos.where(status: true) if params[:status]=="true" + @competition_infos = @competition_infos.where("title like ?", "%#{params[:name]}%") if params[:name].present? + if params[:sort_by].to_s == "hot" + @competition_infos = @competition_infos.select("competition_infos.*, (SELECT count(1) from competition_users where competition_users.competition_info_id = competition_infos.id ) as count").order("count desc") + end respond_to do |format| format.html format.json { render_ok(data: @competition_infos.as_json) } @@ -57,6 +63,15 @@ class CompetitionInfosController < ApplicationController end end + def online_switch + if @competition_info.status + @competition_info.update_attributes!(status: false) + else + @competition_info.update_attributes!(status: true) + end + render_ok + end + def update_zone_or_sub tip_exception "参数错误" if params[:new].blank? || params[:old].blank? || params[:type].blank? if params[:type].to_s == "zone" @@ -128,7 +143,7 @@ class CompetitionInfosController < ApplicationController end total_col = @competition_info.enroll_fields.values.size + max_members.max.to_i @export_infos.each do |info| - blank_str=[] + blank_str = [] (total_col - 1 - info.size).times do blank_str.push("") end @@ -140,7 +155,7 @@ class CompetitionInfosController < ApplicationController render xlsx: "#{export_name.strip}", template: "competition_infos/enroll_list.xlsx.axlsx", locals: { table_columns: @table_columns, export_infos: @export_infos_new } } format.zip { - competition_users = params[:upload].to_s == "true" ? competition_users.where(status: [2,3]) : competition_users.where(status: [1, 2, 3]) + competition_users = params[:upload].to_s == "true" ? competition_users.where(status: [2, 3]) : competition_users.where(status: [1, 2, 3]) Rails.logger.info("######_______________########competition_users.size: #{competition_users.size}") service = Competition::ZipWorkFileService.new(competition_users, "files") send_file service.zip, filename: service.filename, type: 'application/zip' @@ -218,7 +233,7 @@ class CompetitionInfosController < ApplicationController @competition_user = CompetitionUser.find_by(competition_info: @competition_info.id, user_id: current_user.id) # 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] + 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) end @@ -228,7 +243,7 @@ class CompetitionInfosController < ApplicationController 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] + first_round_ids = [541, 543, 544, 545, 546, 548, 550, 551, 552, 554, 555, 556, 558, 560, 563, 565, 567, 576, 579, 581] tip_exception "您不在复赛名单中,不能参加复赛!" if @competition_info.identifier == "zstp2022" && !first_round_ids.include?(competition_user&.id) api_score_control = LimitForbidControl::CompetitionApiScore.new(competition_user.id) return normal_status(-1, "今日打分已达上限,请明日再试") if api_score_control.forbid? diff --git a/config/routes.rb b/config/routes.rb index 68f10c3b4..2932a0379 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -414,6 +414,7 @@ Rails.application.routes.draw do post :upload_enroll_template get :enroll_template get :update_zone_or_sub + post :online_switch end resources :competition_notices, only: [:show, :index, :update, :destroy, :create] end diff --git a/db/migrate/20220906032257_add_competition_info_status.rb b/db/migrate/20220906032257_add_competition_info_status.rb new file mode 100644 index 000000000..6469e7b71 --- /dev/null +++ b/db/migrate/20220906032257_add_competition_info_status.rb @@ -0,0 +1,5 @@ +class AddCompetitionInfoStatus < ActiveRecord::Migration[5.2] + def change + add_column :competition_infos, :status, :boolean, default: false + end +end