From 5ed7b3e4ad14c87b1344b5a38cb45e5212f04bc6 Mon Sep 17 00:00:00 2001 From: xiaoxiaoqiong Date: Mon, 21 Feb 2022 16:46:40 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AB=9E=E8=B5=9B=E9=80=9A=E7=9F=A5=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E8=B0=83=E5=BA=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/notices_controller.rb | 4 +- app/jobs/send_template_message_job.rb | 18 ++++++++- ...petition_view.rb => competition_review.rb} | 2 +- lib/tasks/competition_notice.rake | 38 +++++++++++++++++++ 4 files changed, 58 insertions(+), 4 deletions(-) rename app/models/message_template/{competition_view.rb => competition_review.rb} (95%) create mode 100644 lib/tasks/competition_notice.rake diff --git a/app/controllers/notices_controller.rb b/app/controllers/notices_controller.rb index 057c52224..bf7eb21b1 100644 --- a/app/controllers/notices_controller.rb +++ b/app/controllers/notices_controller.rb @@ -10,9 +10,9 @@ class NoticesController < ApplicationController elsif params["source"] == "CompetitionResult" competition_id = params[:competition_id] SendTemplateMessageJob.perform_later('CompetitionResult', user_id, competition_id) - elsif params["source"] == "CompetitionView" + elsif params["source"] == "CompetitionReview" competition_id = params[:competition_id] - SendTemplateMessageJob.perform_later('CompetitionView', user_id, competition_id) + SendTemplateMessageJob.perform_later('CompetitionReview', user_id, competition_id) else tip_exception("#{params["source"]}未配置") end diff --git a/app/jobs/send_template_message_job.rb b/app/jobs/send_template_message_job.rb index 4c20a05b1..9cc819a11 100644 --- a/app/jobs/send_template_message_job.rb +++ b/app/jobs/send_template_message_job.rb @@ -332,7 +332,23 @@ class SendTemplateMessageJob < ApplicationJob project = Project.find_by_sql("select *,title as name from competitions where id=#{competition_id}") return unless user.present? && project.present? receivers = User.where(id: user_id) - receivers_string, content, notification_url = MessageTemplate::TeamLeft.get_message_content(receivers, nil, nil) + receivers_string, content, notification_url = MessageTemplate::CompetitionBegin.get_message_content(receivers, project.first) + Notice::Write::CreateService.call(receivers_string, content, notification_url, source, {user_id: user_id, competition_name: project.first&.name, identifier: project.first&.identifier}) + when 'CompetitionReview' + user_id, competition_id = args[0], args[1] + user = User.find_by_id(user_id) + project = Project.find_by_sql("select *,title as name from competitions where id=#{competition_id}") + return unless user.present? && project.present? + receivers = User.where(id: user_id) + receivers_string, content, notification_url = MessageTemplate::CompetitionReview.get_message_content(receivers, project.first) + Notice::Write::CreateService.call(receivers_string, content, notification_url, source, {user_id: user_id, competition_name: project.first&.name, identifier: project.first&.identifier}) + when 'CompetitionResult' + user_id, competition_id = args[0], args[1] + user = User.find_by_id(user_id) + project = Project.find_by_sql("select *,title as name from competitions where id=#{competition_id}") + return unless user.present? && project.present? + receivers = User.where(id: user_id) + receivers_string, content, notification_url = MessageTemplate::CompetitionResult.get_message_content(receivers, project.first) Notice::Write::CreateService.call(receivers_string, content, notification_url, source, {user_id: user_id, competition_name: project.first&.name, identifier: project.first&.identifier}) end end diff --git a/app/models/message_template/competition_view.rb b/app/models/message_template/competition_review.rb similarity index 95% rename from app/models/message_template/competition_view.rb rename to app/models/message_template/competition_review.rb index d669d7fda..12bf5a883 100644 --- a/app/models/message_template/competition_view.rb +++ b/app/models/message_template/competition_review.rb @@ -24,7 +24,7 @@ # 点击通知跳转页面 # 点击此通知将跳转到代码审查大赛详情页: # http://117.50.100.12:8080/competitions/lgw7st/home -class MessageTemplate::CompetitionView < MessageTemplate +class MessageTemplate::CompetitionReview < MessageTemplate # MessageTemplate::FollowedTip.get_message_content(User.where(login: 'yystopf'), User.last) def self.get_message_content(receivers, competition) diff --git a/lib/tasks/competition_notice.rake b/lib/tasks/competition_notice.rake new file mode 100644 index 000000000..3de5b3eeb --- /dev/null +++ b/lib/tasks/competition_notice.rake @@ -0,0 +1,38 @@ +# 竞赛通知 + +namespace :competition_notice do + + desc "竞赛通知-进入提交作品状态" + task submit_work_begin: :environment do + competitions = Project.find_by_sql("select * from competitions where status=1 and DATE_FORMAT(enroll_end_time,'%Y-%m-%d %h:00:00') ='#{(Time.now - 1.day).strftime('%Y-%m-%d %H:00:00')}' ") + competitions.each do |c| + competition_teams = Project.find_by_sql("select * from competition_teams where competition_id=#{c.id} ") + competition_teams.each do |team| + SendTemplateMessageJob.perform_later('CompetitionBegin', team.user_id, c.id) + end + end + end + + desc "竞赛通知-截止提交作品时间前3小时" + task submit_work_end: :environment do + competitions = Project.find_by_sql("select * from competitions where status=1 and DATE_FORMAT(end_time,'%Y-%m-%d %h:00:00') ='#{(Time.now + 3.hours).strftime('%Y-%m-%d %H:00:00')}' ") + competitions.each do |c| + competition_teams = Project.find_by_sql("select * from competition_teams where competition_id=#{c.id} ") + competition_teams.each do |team| + SendTemplateMessageJob.perform_later('CompetitionReview', team.user_id, c.id) + end + end + end + + desc "竞赛通知-报名的竞赛进入成绩公示阶段" + task submit_work_result: :environment do + competitions = Project.find_by_sql("select * from competitions where status=1 and DATE_FORMAT(review_time,'%Y-%m-%d %h:00:00') ='#{(Time.now - 1.day).strftime('%Y-%m-%d %H:00:00')}' ") + competitions.each do |c| + competition_teams = Project.find_by_sql("select * from competition_teams where competition_id=#{c.id} ") + competition_teams.each do |team| + SendTemplateMessageJob.perform_later('CompetitionResult', team.user_id, c.id) + end + end + end + +end \ No newline at end of file