竞赛接口

dev_sync_trustie
cxt 5 years ago
parent 2983721f36
commit 5440c2a21e

@ -9,7 +9,7 @@ class Admins::CompetitionSettingsController < Admins::BaseController
end
def nav_setting
Admins::CompetitionNavSettingService.call(current_competition, basic_form_params)
Admins::CompetitionNavSettingService.call(current_competition, nav_form_params)
render_ok
end
@ -22,4 +22,8 @@ class Admins::CompetitionSettingsController < Admins::BaseController
def basic_form_params
params.permit(:identifier, :name, :sub_title, :start_time, :end_time, :mode, :identifier, :bonus, :awards_count, :description, :course_id, :teach_start_time, :teach_end_time)
end
def nav_form_params
params.permit(:enroll_end_time, competition_staffs: %i[category minimum maximum mutiple_limited], nav_module: %i[module_type name hidden position url])
end
end

@ -0,0 +1,26 @@
class Admins::CompetitionStagesController < Admins::BaseController
def create
if @competition.competition_stages.exists?(name: params[:stage_name])
render_error "已存在同名的阶段"
else
@competition.competition_stages << CompetitionStage.new(name: params[:stage_name])
render_ok
end
end
def update
current_stage.update_attributes!(name: params[:stage_name], score_rate: params[:score_rate])
render_ok
end
private
def current_competition
@_current_competition ||= Competition.find(params[:competition_id])
end
def current_stage
@_current_stage ||= CompetitionStage.find_by!(competition_id: params[:competition_id], id: params[:stage_id])
end
end

@ -34,12 +34,13 @@ class Competitions::CompetitionsController < Competitions::BaseController
def update
@competition.update_attributes!(introduction: params[:introduction])
Attachment.associate_container(params[:attachment_ids], @competition.id, @competition.class) if params[:attachment_ids]
normal_status("更新成功")
end
def common_header
@competition = current_competition
@competition_modules = @competition.unhidden_competition_modules
@competition_modules = @competition.unhidden_cgenompetition_modules
@user = current_user
end

@ -94,6 +94,10 @@ class Competition < ApplicationRecord
GROUP BY competition_stage_id order by competition_stage_id")
end
def all_module_types
%w[home enroll inform chart resource]
end
# def awards_count
# competition_awards.pluck(:num)&.sum > 0 ? competition_awards.pluck(:num)&.sum : 20
# end
@ -113,7 +117,7 @@ class Competition < ApplicationRecord
def create_competition_modules
CompetitionModule.bulk_insert(*%i[competition_id module_type name position created_at updated_at]) do |worker|
%w(home enroll inform chart resource).each_with_index do |type, index|
all_module_types.each_with_index do |type, index|
worker.add(competition_id: id, module_type: type, name: get_module_name(type), position: index + 1, )
end
end

@ -8,29 +8,26 @@ class Admins::CompetitionNavSettingService < ApplicationService
def call
ActiveRecord::Base.transaction do
competition.name = strip params[:name]
competition.sub_title = strip params[:sub_title]
competition.start_time = params[:start_time]
competition.end_time = params[:end_time]
competition.mode = params[:mode]
competition.identifier = strip params[:identifier]
competition.bonus = params[:bonus]
competition.awards_count = params[:awards_count]
competition.description = strip params[:description]
competition.competition_modules.where(module_type: 'md').destroy_all
competition.save!
# hidden_module_type = competition.all_module_types - params[:module_type]
# competition.competition_modules.where(module_type: hidden_module_type).update_all(hidden: 1)
if competition.mode == 1 || competition.mode == 4
competition.competition_mode_setting.destroy
else
setting = competition.competition_mode_setting || CompetitionModeSetting.create!(competition_id: competition.id)
if competition.mode == 2
setting.course_id = params[:course_id]
elsif competition.mode == 3
setting.start_time = params[:teach_start_time]
setting.end_time = params[:teach_end_time]
params[:nav_module].each do |nav|
module_type = nav["module_type"]
if competition.all_module_types.include?(module_type)
com_module = competition.competition_modules.find_by(module_type: module_type)
else
com_module = CompetitionModule.create!(competition_id: competition.id, module_type: 'md')
end
com_module.update_attributes!(hidden: nav["hidden"] ? 0 : 1, position: nav["position"], name: nav["name"], url: nav["url"])
end
if params[:competition_staffs].present?
competition.competition_staffs.delete_all
params[:competition_staffs].each_with_index do |staff_params, index|
competition.competition_staffs.create!(staff_params.merge(position: index + 1))
end
setting.save!
end
competition

@ -11,7 +11,7 @@ json.published @competition.published?
json.nearly_published @competition.published_at.present?
json.competition_modules @competition_modules do |com_module|
json.(com_module, :name, :position)
json.(com_module, :name, :position, :module_type)
json.module_url com_module.module_url
end

@ -1026,9 +1026,12 @@ Rails.application.routes.draw do
resources :competition_settings, only: [:index] do
post :basic_setting, on: :collection
end
resources :enroll_lists, only: [:index] do
get :export, on: :collection
end
resources :competition_stages, only: [:create, :update]
end
resources :weapp_carousels, only: [:index, :create, :update, :destroy] do

Loading…
Cancel
Save