# == Schema Information # # Table name: glcc_medium_term_examine_material # # id :integer not null, primary key # student_reg_id :integer not null # task_id :integer not null # defence_video_url :string(1000) not null # code_or_pr_url :string(1000) # PPT_attachment_id :integer not null # term :integer # created_on :datetime # updated_on :datetime # is_delete :boolean default("0"), not null # round :integer default("1"), not null # class GlccMediumTermExamineMaterial < ActiveRecord::Base self.table_name = "glcc_medium_term_examine_material" belongs_to :glcc_student, :class_name => :GlccRegistrationStudent, :foreign_key => "student_reg_id" belongs_to :task, :class_name => :GlccRegistrationTask, :foreign_key => "task_id" def check_pr_url state = [] # code_or_pr_url = "https://www.gitlink.org.cn/Gitlink/forgeplus/pulls/337" url_array = code_or_pr_url.split("/") gitlink_index = url_array.index("www.gitlink.org.cn") || url_array.index("gitlink.org.cn") || url_array.index("testforgeplus.trustie.net") pull_index = url_array.index("pulls") #发送没有在gitlink上提交PR的邮件 unless gitlink_index.present? state << 1 end # 输入的地址有问题邮件内容 unless pull_index == 5 state << 2 end user = Owner.find_by(login: url_array[3]) project = Project.find_by(identifier: url_array[4], user_id:user.try(:id)) pr = PullRequest.where(project:project, gitea_number:url_array[6]) unless pr.present? state << 3 end if white_list #特殊处理 白名单考核不处理 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 return if mail.nil? || code_or_pr_url.nil? state = check_pr_url return unless state.present? title = "#{self.created_on.year}年GitLink确实开源GLCC开源夏令营#{term == 1 ? "中期考核" : "结项考核"}提醒" content = gennerate_content(state) UserMailer.glcc_pr_check_email(mail,title, gcs.student_name, content).deliver_now end def state_to_html gcs = glcc_student 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) } content end def number_to_content(num) case num when 1 "
PR链接为非GitLink平台链接
" when 2 "PR链接为GitLink平台链接, 但非PR链接
" when 3 "PR链接中的PR不存在
" end end end