新增:专家智享站内信

This commit is contained in:
yystopf 2026-04-02 09:15:49 +08:00
parent 8329bfe245
commit 8962cebd3a
5 changed files with 49 additions and 0 deletions

View File

@ -25,6 +25,7 @@ class Admins::ResidentExpertsController < Admins::BaseController
@expert.resident_expert_actions.where.not(action_type: ResidentExpertAction::action_types[:approved]).destroy_all
@expert.resident_expert_actions.create(action_type: ResidentExpertAction::action_types[:approved], action_name: '管理员审核通过' )
@expert.resident_expert_actions.create(action_type: ResidentExpertAction::action_types[:approved], action_name: '专家主页上线' )
SendTemplateMessageJob.perform_later('ResidentExpertApproved', @expert.user_id, @expert.id)
redirect_to admins_resident_experts_path
flash[:success] = "入驻通过成功"
else
@ -38,6 +39,7 @@ class Admins::ResidentExpertsController < Admins::BaseController
@expert.resident_expert_actions.where.not(action_type: ResidentExpertAction::action_types[:approved]).destroy_all
@expert.resident_expert_actions.create(action_type: ResidentExpertAction::action_types[:rejected], action_name: '管理员驳回', action_description: params[:rejection_reason] )
@expert.resident_expert_actions.create(action_type: ResidentExpertAction::action_types[:todo], action_name: '展示上线', action_description: "待重新申请并通过审核" )
SendTemplateMessageJob.perform_later('ResidentExpertRejected', @expert.user_id, @expert.id)
redirect_to admins_resident_experts_path
flash[:success] = "入驻驳回成功"
else

View File

@ -4,6 +4,22 @@ class SendTemplateMessageJob < ApplicationJob
def perform(source, *args)
Rails.logger.info "SendTemplateMessageJob [args] #{args}"
case source
when 'ResidentExpertApproved'
receivers_id, resident_expert_id = args[0], args[1]
resident_expert = ResidentExpert.find_by_id(resident_expert_id)
return unless resident_expert.present?
receivers = User.where("id in(?)", receivers_id).or(User.where(mail: receivers_id))
not_exists_receivers = receivers_id - receivers.pluck(:id) - receivers.pluck(:mail)
receivers_string, content, notification_url = MessageTemplate::ResidentExpertApproved.get_message_content(receivers, resident_expert)
Notice::Write::CreateService.call(receivers_string, content, notification_url, source, {receivers_id: receivers_id, resident_expert_id: resident_expert_id})
when 'ResidentExpertRejected'
receivers_id, resident_expert_id = args[0], args[1]
resident_expert = ResidentExpert.find_by_id(resident_expert_id)
return unless resident_expert.present?
receivers = User.where("id in(?)", receivers_id).or(User.where(mail: receivers_id))
not_exists_receivers = receivers_id - receivers.pluck(:id) - receivers.pluck(:mail)
receivers_string, content, notification_url = MessageTemplate::ResidentExpertRejected.get_message_content(receivers, resident_expert)
Notice::Write::CreateService.call(receivers_string, content, notification_url, source, {receivers_id: receivers_id, resident_expert_id: resident_expert_id})
when 'CustomTip'
receivers_id, template_id, props = args[0], args[1], args[2]
template = MessageTemplate.find_by_id(template_id)

View File

@ -85,6 +85,8 @@ class MessageTemplate < ApplicationRecord
self.create(type: 'MessageTemplate::CompetitionReview', sys_notice: '你报名的竞赛 <b>{competition_name}</b> 距作品提交结束日期仅剩3天若尚未提交参赛作品请尽快提交', notification_url: '{to_url}')
# 用户提交审核通知
self.create(type: 'MessageTemplate::ApplySignaturePassed', sys_notice: '您提交的 {nickname}/{repository} 仓库访问申请已审核通过,可正常访问受限仓库。{ifcdkey}软件激活码:{cdkey} {endcdkey}', notification_url: '{baseurl}/{owner}/{identifier}')
self.create(type: 'MessageTemplate::ResidentExpertApproved', sys_notice: '您好,您提交的专家入驻申请已审核通过,欢迎加入红山开源专家智享社区!', notification_url: '{baseurl}/forums/expert/apply')
self.create(type: 'MessageTemplate::ResidentExpertRejected', sys_notice: '您好,您提交的专家入驻申请未能通过审核,如有疑问或希望重新申请,请修改相关信息后再次提交。点击查看驳回理由→', notification_url: '{baseurl}/forums/expert/apply')
end
def self.sys_notice

View File

@ -0,0 +1,14 @@
class MessageTemplate::ResidentExpertApproved < MessageTemplate
# MessageTemplate::ResidentExpertApproved.get_message_content(User.where(phone: 15386415121), ResidentExpert.last)
def self.get_message_content(receivers, resident_expert)
return '', '', '' if receivers.blank?
content = sys_notice
url = notification_url
return receivers_string(receivers), content, url
rescue => e
Rails.logger.info("MessageTemplate::ResidentExpertApproved.get_message_content [ERROR] #{e}")
return '', '', ''
end
end

View File

@ -0,0 +1,15 @@
class MessageTemplate::ResidentExpertRejected < MessageTemplate
# MessageTemplate::ResidentExpertRejected.get_message_content(User.where(phone: 15386415121), ResidentExpert.last)
def self.get_message_content(receivers, resident_expert)
return '', '', '' if receivers.blank?
content = sys_notice
url = notification_url
return receivers_string(receivers), content, url
rescue => e
Rails.logger.info("MessageTemplate::ResidentExpertRejected.get_message_content [ERROR] #{e}")
return '', '', ''
end
end