From 9bbb66f8904fe9a658ef53f574939cac5f646eef Mon Sep 17 00:00:00 2001 From: yystopf Date: Tue, 9 Apr 2024 17:02:51 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E9=80=9A=E8=BF=87?= =?UTF-8?q?=E5=AE=A1=E6=A0=B8=E5=8F=91=E9=80=81=E6=B6=88=E6=81=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../apply_signatures_controller.rb | 1 + app/jobs/send_template_message_job.rb | 8 ++++++++ app/models/message_template.rb | 2 ++ .../apply_signature_passed.rb | 19 +++++++++++++++++++ 4 files changed, 30 insertions(+) create mode 100644 app/models/message_template/apply_signature_passed.rb diff --git a/app/controllers/apply_signatures_controller.rb b/app/controllers/apply_signatures_controller.rb index 1a5920436..76d71a71a 100644 --- a/app/controllers/apply_signatures_controller.rb +++ b/app/controllers/apply_signatures_controller.rb @@ -77,6 +77,7 @@ class ApplySignaturesController < ApplicationController return normal_status(-1, "已经是该状态了") if @apply_signature.status == params[:status] @apply_signature.update_attributes!(apply_signature_params) if @apply_signature.status == "passed" + SendTemplateMessageJob.perform_later('ApplySignaturePassed', @apply_signature.user_id, @apply_signature.id) Projects::AddMemberInteractor.call(@apply_signature.project.owner, @apply_signature.project, @apply_signature.user, "read", true) else Projects::DeleteMemberInteractor.call(@apply_signature.project.owner, @apply_signature.project, @apply_signature.user) diff --git a/app/jobs/send_template_message_job.rb b/app/jobs/send_template_message_job.rb index 716a7d974..b74727d57 100644 --- a/app/jobs/send_template_message_job.rb +++ b/app/jobs/send_template_message_job.rb @@ -376,6 +376,14 @@ class SendTemplateMessageJob < ApplicationJob 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}) + when 'ApplySignaturePassed' + user_id, apply_signature_id = args[0], args[1] + user = User.find_by_id(user_id) + apply_signature = ApplySignature.find_by_id apply_signature_id + return unless user.present? && apply_signature.present? + receivers = User.where(id: user_id) + receivers_string, content, notification_url = MessageTemplate::ApplySignaturePassed.get_message_content(receivers, apply_signature) + Notice::Write::CreateService.call(receivers_string, content, notification_url, source, {user_id: user_id, apply_signature_id: apply_signature_id}) end end end \ No newline at end of file diff --git a/app/models/message_template.rb b/app/models/message_template.rb index b1ff99590..10012b0df 100644 --- a/app/models/message_template.rb +++ b/app/models/message_template.rb @@ -80,6 +80,8 @@ class MessageTemplate < ApplicationRecord self.create(type: 'MessageTemplate::CompetitionBegin', sys_notice: '你报名的竞赛 {competition_name} 已进入比赛进行阶段,可在此期间提交作品', notification_url: '{to_url}') self.create(type: 'MessageTemplate::CompetitionResult', sys_notice: '你报名的竞赛 {competition_name} 已进入成绩公示阶段,可查看排行榜信息', notification_url: '{to_url}') self.create(type: 'MessageTemplate::CompetitionReview', sys_notice: '你报名的竞赛 {competition_name} 距作品提交结束日期仅剩3天,若尚未提交参赛作品,请尽快提交', notification_url: '{to_url}') + # 用户提交审核通知 + self.create(type: 'MessageTemplate::ApplySignaturePassed', sys_notice: '您提交的 {nickname}/{repository} 仓库访问申请已审核通过,可正常访问受限仓库。{ifcdkey}软件激活码:{cdkey} {endcdkey}', notification_url: '{baseurl}/{owner}/{identifier}') end def self.sys_notice diff --git a/app/models/message_template/apply_signature_passed.rb b/app/models/message_template/apply_signature_passed.rb new file mode 100644 index 000000000..a7cad38b4 --- /dev/null +++ b/app/models/message_template/apply_signature_passed.rb @@ -0,0 +1,19 @@ +class MessageTemplate::ApplySignaturePassed < MessageTemplate + + # MessageTemplate::ApplySignaturePassed.get_message_content(User.where(phone: 15386415121), ApplySignature.last) + def self.get_message_content(receivers, apply_signature) + return '', '', '' if receivers.blank? + project = apply_signature&.project + owner = project&.owner + content = sys_notice.gsub('{nickname}', owner&.real_name).gsub('{repository}', project&.name) + url = notification_url.gsub('{owner}', owner&.login).gsub('{identifier}', project&.identifier) + if apply_signature.cdkey.present? + content.sub!('{ifcdkey}', '') + content.sub!('{endcdkey}', '') + content.gsub!('{cdkey}', apply_signature.cdkey) + else + content.gsub!(/({ifcdkey})(.*)({endcdkey})/, '') + end + return receivers_string(receivers), content, url + end +end \ No newline at end of file