diff --git a/app/controllers/settings_controller.rb b/app/controllers/settings_controller.rb index ecabeca21..90ed5bc37 100644 --- a/app/controllers/settings_controller.rb +++ b/app/controllers/settings_controller.rb @@ -11,6 +11,20 @@ class SettingsController < ApplicationController get_top_system_notification end + def check_url + url = params[:url] + task_id = params[:task] + term = params[:term] + return normal_status(-1, "缺少url参数") unless url.present? + return normal_status(-1, "缺少term参数") unless term.present? + return normal_status(-1, "缺少task参数") unless task_id.present? + glcc_mate = GlccMediumTermExamineMaterial.new(code_or_pr_url: url, task_id: task_id, term: term, created_on:Time.now) + state = glcc_mate.check_pr_url + errors = glcc_mate.gennerate_content(state) + render_ok({ state:state, state_html: errors}) + end + + private def get_navbar @navbar = default_laboratory.navbar diff --git a/app/models/glcc_medium_term_examine_material.rb b/app/models/glcc_medium_term_examine_material.rb index 70bed6b9a..1e7c3bedb 100644 --- a/app/models/glcc_medium_term_examine_material.rb +++ b/app/models/glcc_medium_term_examine_material.rb @@ -40,10 +40,25 @@ class GlccMediumTermExamineMaterial < ActiveRecord::Base unless pr.present? state << 3 end + if white_list && term == 1 #特殊处理 白名单的中期考核不处理 中期考核后去掉 + state = [] + end state end + def white_list + # 全局设置白名单 key + key = "glcc_white_task_#{self.created_on.year}" + white_task = EduSetting.find_by_name(key) + if white_task + task_ids = white_task.value.split(",") + task_ids.map(&:to_i).include?(self.task_id) + else + false + end + end + def send_mail gcs = glcc_student mail = gcs.mail @@ -52,11 +67,7 @@ class GlccMediumTermExamineMaterial < ActiveRecord::Base state = check_pr_url return unless state.present? title = "2023年GitLink确实开源GLCC开源夏令营#{term == 1 ? "中期考核" : "结项考核"}提醒" - content = "" - state.map{|e| - content = content + number_to_content(e) - } - puts content + content = gennerate_content(state) UserMailer.glcc_pr_check_email(mail,title, gcs.student_name, content).deliver_now end @@ -65,6 +76,10 @@ class GlccMediumTermExamineMaterial < ActiveRecord::Base mail = gcs.mail return "数据异常PR连接为空" if mail.nil? || code_or_pr_url.nil? state = check_pr_url + gennerate_content(state) + end + + def gennerate_content(state) content = "" state.map{|e| content = content + number_to_content(e) diff --git a/app/views/admins/glcc_pr_check/_examine_material.html.erb b/app/views/admins/glcc_pr_check/_examine_material.html.erb index 6daf14546..36454232c 100644 --- a/app/views/admins/glcc_pr_check/_examine_material.html.erb +++ b/app/views/admins/glcc_pr_check/_examine_material.html.erb @@ -6,7 +6,8 @@ 邮件地址 视频地址 PR地址 - 考核阶段 + 考核阶段 + 白名单 检测状态 提交时间 @@ -21,6 +22,7 @@ 查看视频 查看PR <%= user.term == 1 ? "中期考核" : "结项考核"%> + <%= user.white_list ? "是":"否" %> <%= user.state_to_html.html_safe %> <%= user.created_on.strftime("%Y-%m-%d %H:%M")%> diff --git a/config/routes.rb b/config/routes.rb index 8297f5377..6d9fda2e9 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -19,6 +19,7 @@ Rails.application.routes.draw do get 'attachments/entries/get_file', to: 'attachments#get_file' get 'attachments/download/:id', to: 'attachments#show' get 'attachments/download/:id/:filename', to: 'attachments#show' + get 'check_pr_url',to: "settings#check_url" # get 'auth/qq/callback', to: 'oauth/qq#create' get 'auth/failure', to: 'oauth/base#auth_failure'