diff --git a/app/assets/javascripts/admins/competition_settings/index.js b/app/assets/javascripts/admins/competition_settings/index.js index 6568ab43f..87c4e4a01 100644 --- a/app/assets/javascripts/admins/competition_settings/index.js +++ b/app/assets/javascripts/admins/competition_settings/index.js @@ -262,7 +262,8 @@ $(function () { } }) -}) +}); + //新增子阶段 function add_task_sub(item){ var index = $(item).parents(".large_panel_part").attr("attr_line"); @@ -368,7 +369,7 @@ function Del_tab(item) { $(item).parents(".large_panel_part").remove(); } //新增tab -function addNewTab() { +function addNewTab() { var count = parseInt($("#large_panel").find(".large_panel_part").length)+1; var html = '
\n' + ' tab标题\n' + diff --git a/app/controllers/competitions/competitions_controller.rb b/app/controllers/competitions/competitions_controller.rb index 009c3183f..2c3d00529 100644 --- a/app/controllers/competitions/competitions_controller.rb +++ b/app/controllers/competitions/competitions_controller.rb @@ -69,7 +69,7 @@ class Competitions::CompetitionsController < Competitions::BaseController end def update_md_content - tip_exception("标题和内容不能为空") if params[:name].blank? || params[:content].blank? + tip_exception("内容不能为空") if params[:content].blank? tip_exception("缺少competition_module_id") if params[:competition_module_id].blank? ActiveRecord::Base.transaction do com_module = current_competition.competition_modules.find_by!(id: params[:competition_module_id]) diff --git a/app/controllers/weapps/code_sessions_controller.rb b/app/controllers/weapps/code_sessions_controller.rb index c92c3cb70..887e97eed 100644 --- a/app/controllers/weapps/code_sessions_controller.rb +++ b/app/controllers/weapps/code_sessions_controller.rb @@ -25,6 +25,8 @@ class Weapps::CodeSessionsController < Weapps::BaseController end set_session_unionid(user_info['unionId']) + user_info['nickname'] = user_info['nickName'] + session[:wechat_user_extra] = user_info end set_session_openid(result['openid']) diff --git a/app/controllers/weapps/sessions_controller.rb b/app/controllers/weapps/sessions_controller.rb index 371a3f7d3..8c7c57a7f 100644 --- a/app/controllers/weapps/sessions_controller.rb +++ b/app/controllers/weapps/sessions_controller.rb @@ -16,7 +16,7 @@ class Weapps::SessionsController < Weapps::BaseController end # 绑定微信号 - OpenUsers::Wechat.create!(user: user, uid: session_unionid) if user.wechat_open_user.blank? + OpenUsers::Wechat.create!(user: user, uid: session_unionid, extra: session[:wechat_user_extra]) if user.wechat_open_user.blank? successful_authentication(user) end diff --git a/app/models/competition.rb b/app/models/competition.rb index 845c5c00f..b5526f74c 100644 --- a/app/models/competition.rb +++ b/app/models/competition.rb @@ -23,8 +23,8 @@ class Competition < ApplicationRecord has_many :competition_awards, dependent: :destroy has_many :competition_schools, dependent: :destroy - has_one :sponsor_schools, -> { where(source: :sponsor) }, class_name: 'CompetitionSchool' # 主办方 - has_one :region_schools, -> { where(source: :region) }, class_name: 'CompetitionSchool' # 开放范围 + has_many :sponsor_schools, -> { where(source: :sponsor) }, class_name: 'CompetitionSchool' # 主办方 + has_many :region_schools, -> { where(source: :region) }, class_name: 'CompetitionSchool' # 开放范围 after_create :create_competition_modules @@ -85,7 +85,7 @@ class Competition < ApplicationRecord # 是否开放 def open?(user) user_school_id = user.user_extension&.school_id.to_i - competition.region_schools.size == 0 || competition.region_schools.exists?(school_id: user_school_id) + region_schools.size == 0 || region_schools.exists?(school_id: user_school_id) end # 是否禁止教师报名 diff --git a/app/services/competitions/join_team_service.rb b/app/services/competitions/join_team_service.rb index cb0253fa2..7ec453013 100644 --- a/app/services/competitions/join_team_service.rb +++ b/app/services/competitions/join_team_service.rb @@ -24,7 +24,7 @@ class Competitions::JoinTeamService < ApplicationService raise Error, '您已加入该战队' if team.team_members.exists?(user_id: user.id) enrolled = competition.team_members.exists?(user_id: user.id) - if enrolled && (is_teacher && competition.teacher_multiple_limited?) || (!is_teacher && competition.member_multiple_limited?) + if enrolled && ((is_teacher && competition.teacher_multiple_limited?) || (!is_teacher && competition.member_multiple_limited?)) raise Error, '您已加入其它战队' end diff --git a/app/views/admins/competition_settings/index.html.erb b/app/views/admins/competition_settings/index.html.erb index 580b9b585..a8ee780e2 100644 --- a/app/views/admins/competition_settings/index.html.erb +++ b/app/views/admins/competition_settings/index.html.erb @@ -229,7 +229,7 @@
  
- +
~
@@ -331,74 +331,145 @@
+<% if @competition.mode == 1 %> +
+
+ 排行榜设置 + + 新增tab + 实训ID填写示例:实训地址为https://www.educoder.net/shixuns/u5plmgka/challenges,则填写“u5plmgka” +
+
+
+ <% if @competition.competition_stages.count > 0 %> + <% @competition.competition_stages.each_with_index do |stage, index| %> + <%= form_tag(admins_competition_competition_stage_path(competition_id: @competition.id, id: stage.id), method: :put, class: 'stage_update_form flex-1', remote: true) do %> +
+
+ tab标题 +
+ +
+ 总排行榜占比: +
+ +
% + + 删除 + 保存 +
-
-
- 排行榜设置 - + 新增tab +
+ <% stage.competition_stage_sections.each_with_index do |section, j| %> +
+ 第<%= j + 1 %>阶段 +
+
+ 有效时间: +
+ <%= text_field_tag 'stage[][start_time]', section.start_time&.strftime('%Y-%m-%d %H:%M'), autocomplete: 'off', class: 'section_start_time form-control', placeholder: '有效开始时间' %> +
+ ~ +
+ <%= text_field_tag 'stage[][end_time]', section.end_time&.strftime('%Y-%m-%d %H:%M'), autocomplete: 'off', class: 'section_end_time form-control', placeholder: '有效结束时间' %> +
+ 任务完成要求: +
+ +
+ / +
+ +
+ (总任务) + 成绩来源: +
+ +
+
+
+
+ + 删除 + +
+ <% end %> +
+
+ <% end %> + <% end %> + <% else %> + <% end %> +
+
- 实训ID填写示例:实训地址为https://www.educoder.net/shixuns/u5plmgka/challenges,则填写“u5plmgka” -
-
-
-
-
- tab标题 -
- -
- 总排行榜占比: -
- -
% - - 删除 - 保存 -
-
-
- 第1阶段 +
+
+
+
+ tab标题 +
+ +
+ 总排行榜占比: +
+ +
%
-
- 有效时间: -
- -
- ~ -
- -
- 任务完成要求: -
- -
- / -
- -
- (总任务) - 成绩来源: -
- + 新增子阶段 + 发送短信提醒 + 计算成绩 +
+ 删除 + 保存 +
+
+
+ 第1阶段 +
+
+ 有效时间: +
+ +
+ ~ +
+ +
+ 任务完成要求: +
+ +
+ / +
+ +
+ (总任务) + 成绩来源: +
+ +
+
-
-
- + 删除 +
-
+<% end %> diff --git a/db/migrate/20191023103633_add_column_to_stage_sections.rb b/db/migrate/20191023103633_add_column_to_stage_sections.rb deleted file mode 100644 index baa1754fa..000000000 --- a/db/migrate/20191023103633_add_column_to_stage_sections.rb +++ /dev/null @@ -1,10 +0,0 @@ -class AddColumnToStageSections < ActiveRecord::Migration[5.2] - def change - def change - add_column :competition_stage_sections, :mission_count, :integer, default: 0 - add_column :competition_stage_sections, :score_source, :integer, default: 0 - - add_column :competition_entries, :shixun_identifier, :string - end - end -end diff --git a/db/migrate/20191025012950_add_column_to_stage_sections.rb b/db/migrate/20191025012950_add_column_to_stage_sections.rb new file mode 100644 index 000000000..5eb96aea9 --- /dev/null +++ b/db/migrate/20191025012950_add_column_to_stage_sections.rb @@ -0,0 +1,8 @@ +class AddColumnToStageSections < ActiveRecord::Migration[5.2] + def change + add_column :competition_stage_sections, :mission_count, :integer, default: 0 + add_column :competition_stage_sections, :score_source, :integer, default: 0 + + add_column :competition_entries, :shixun_identifier, :string + end +end