diff --git a/api_document.md b/api_document.md index 3f609ed3e..8a579f8e7 100644 --- a/api_document.md +++ b/api_document.md @@ -26,11 +26,11 @@ POST accounts/remote_register *示例* ```bash curl -X POST \ --d "email=yystopf@163.com" \ --d "password=a19960425" \ --d "username=yystopf" \ +-d "email=2456233122@qq.com" \ +-d "password=djs_D_00001" \ +-d "username=16895620" \ -d "platform=forge" \ -http://120.132.31.109:8080/api/accounts/remote_register | jq +http://localhost:3000/api/accounts/remote_register | jq ``` *请求参数说明:* diff --git a/app/controllers/issues_controller.rb b/app/controllers/issues_controller.rb index e383a4f5c..208e68a47 100644 --- a/app/controllers/issues_controller.rb +++ b/app/controllers/issues_controller.rb @@ -112,6 +112,7 @@ class IssuesController < ApplicationController @issue = Issue.new(issue_params) if @issue.save! SendTemplateMessageJob.perform_later('IssueAssigned', current_user.id, @issue&.id) + SendTemplateMessageJob.perform_later('ProjectIssue', current_user.id, @issue&.id) if params[:attachment_ids].present? params[:attachment_ids].each do |id| attachment = Attachment.select(:id, :container_id, :container_type)&.find_by_id(id) @@ -288,8 +289,12 @@ class IssuesController < ApplicationController def clean #批量删除,暂时只能删除未悬赏的 issue_ids = params[:ids] - if issue_ids.present? - if Issue.where(id: issue_ids, issue_type: "1").destroy_all + issues = Issue.where(id: issue_ids, issue_type: "1") + if issues.present? + issues.find_each do |i| + SendTemplateMessageJob.perform_later('IssueDeleted', current_user.id, i&.subject, i.assigned_to_id, i.author_id) + end + if issues.destroy_all normal_status(0, "删除成功") else normal_status(-1, "删除失败") @@ -323,7 +328,18 @@ class IssuesController < ApplicationController if update_hash.blank? normal_status(-1, "请选择批量更新内容") elsif issues&.update(update_hash) - issues.map{|i| i.create_journal_detail(false, [], [], current_user&.id) if i.previous_changes.present?} + issues.each do |i| + i.create_journal_detail(false, [], [], current_user&.id) if i.previous_changes.present? + previous_changes = i.previous_changes.slice(:status_id, :assigned_to_id, :tracker_id, :priority_id, :fixed_version_id, :done_ratio, :issue_tags_value, :branch_name) + if i.previous_changes[:start_date].present? + previous_changes.merge!(start_date: [i.previous_changes[:start_date][0].to_s, i.previous_changes[:start_date][1].to_s]) + end + if i.previous_changes[:due_date].present? + previous_changes.merge!(due_date: [i.previous_changes[:due_date][0].to_s, i.previous_changes[:due_date][1].to_s]) + end + SendTemplateMessageJob.perform_later('IssueChanged', current_user.id, i&.id, previous_changes) + SendTemplateMessageJob.perform_later('IssueAssigned', current_user.id, i&.id) if i.previous_changes[:assigned_to_id].present? + end normal_status(0, "批量更新成功") else normal_status(-1, "批量更新失败") diff --git a/app/controllers/members_controller.rb b/app/controllers/members_controller.rb index 36c57b5b6..0af4898fc 100644 --- a/app/controllers/members_controller.rb +++ b/app/controllers/members_controller.rb @@ -9,7 +9,8 @@ class MembersController < ApplicationController def create interactor = Projects::AddMemberInteractor.call(@project.owner, @project, @user) - SendTemplateMessageJob.perform_later('ProjectJoined', @user.id, @project.id) + SendTemplateMessageJob.perform_later('ProjectJoined', current_user.id, @user.id, @project.id) + SendTemplateMessageJob.perform_later('ProjectMemberJoined', current_user.id, @user.id, @project.id) render_response(interactor) rescue Exception => e uid_logger_error(e.message) @@ -29,7 +30,8 @@ class MembersController < ApplicationController def remove interactor = Projects::DeleteMemberInteractor.call(@project.owner, @project, @user) - SendTemplateMessageJob.perform_later('ProjectLeft', @user.id, @project.id) + SendTemplateMessageJob.perform_later('ProjectLeft', current_user.id, @user.id, @project.id) + SendTemplateMessageJob.perform_later('ProjectMemberLeft', current_user.id, @user.id, @project.id) render_response(interactor) rescue Exception => e uid_logger_error(e.message) @@ -38,7 +40,7 @@ class MembersController < ApplicationController def change_role interactor = Projects::ChangeMemberRoleInteractor.call(@project.owner, @project, @user, params[:role]) - SendTemplateMessageJob.perform_later('ProjectRole', @user.id, @project.id, message_role_name) + SendTemplateMessageJob.perform_later('ProjectRole', current_user.id, @user.id, @project.id, message_role_name) render_response(interactor) rescue Exception => e uid_logger_error(e.message) diff --git a/app/controllers/pull_requests_controller.rb b/app/controllers/pull_requests_controller.rb index 0799beb58..fe1edab5f 100644 --- a/app/controllers/pull_requests_controller.rb +++ b/app/controllers/pull_requests_controller.rb @@ -60,6 +60,7 @@ class PullRequestsController < ApplicationController if @gitea_pull_request[:status] == :success @pull_request.bind_gitea_pull_request!(@gitea_pull_request[:body]["number"]) SendTemplateMessageJob.perform_later('PullRequestAssigned', current_user.id, @pull_request&.id) + SendTemplateMessageJob.perform_later('ProjectPullRequest', current_user.id, @pull_request&.id) render_ok else render_error("create pull request error: #{@gitea_pull_request[:status]}") diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index c69dfdb69..b80827efa 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -91,8 +91,12 @@ class UsersController < ApplicationController def get_user_info begin @user = current_user - result = Notice::Read::CountService.call(current_user.id) - @message_unread_total = result.nil? ? 0 : result[2]["unread_notification"] + begin + result = Notice::Read::CountService.call(current_user.id) + @message_unread_total = result.nil? ? 0 : result[2]["unread_notification"] + rescue + @message_unread_total = 0 + end # TODO 等消息上线再打开注释 #@tidding_count = unviewed_tiddings(current_user) if current_user.present? rescue Exception => e diff --git a/app/jobs/send_template_message_job.rb b/app/jobs/send_template_message_job.rb index 9c94e16e9..d35938063 100644 --- a/app/jobs/send_template_message_job.rb +++ b/app/jobs/send_template_message_job.rb @@ -17,7 +17,7 @@ class SendTemplateMessageJob < ApplicationJob operator = User.find_by_id(operator_id) issue = Issue.find_by_id(issue_id) return unless operator.present? && issue.present? - receivers = User.where(id: issue&.assigned_to_id) + receivers = User.where(id: issue&.assigned_to_id).where.not(id: operator&.id) receivers_string, content, notification_url = MessageTemplate::IssueAssigned.get_message_content(receivers, operator, issue) Notice::Write::CreateService.call(receivers_string, content, notification_url, source, {operator_id: operator.id, issue_id: issue.id}) when 'IssueAssignerExpire' @@ -32,6 +32,7 @@ class SendTemplateMessageJob < ApplicationJob operator = User.find_by_id(operator_id) issue = Issue.find_by_id(issue_id) return unless operator.present? && issue.present? + receivers = receivers.where.not(id: operator&.id) receivers_string, content, notification_url = MessageTemplate::IssueAtme.get_message_content(receivers, operator, issue) Notice::Write::CreateService.call(receivers_string, content, notification_url, source, {operator_id: operator.id, issue_id: issue.id}, 2) when 'IssueChanged' @@ -39,7 +40,7 @@ class SendTemplateMessageJob < ApplicationJob operator = User.find_by_id(operator_id) issue = Issue.find_by_id(issue_id) return unless operator.present? && issue.present? - receivers = User.where(id: [issue&.assigned_to_id, issue&.author_id]) + receivers = User.where(id: [issue&.assigned_to_id, issue&.author_id]).where.not(id: operator&.id) receivers_string, content, notification_url = MessageTemplate::IssueChanged.get_message_content(receivers, operator, issue, change_params) Notice::Write::CreateService.call(receivers_string, content, notification_url, source, {operator_id: operator.id, issue_id: issue.id, change_params: change_params.symbolize_keys}) when 'IssueCreatorExpire' @@ -53,7 +54,7 @@ class SendTemplateMessageJob < ApplicationJob operator_id, issue_title, issue_assigned_to_id, issue_author_id = args[0], args[1], args[2], args[3] operator = User.find_by_id(operator_id) return unless operator.present? - receivers = User.where(id: [issue_assigned_to_id, issue_author_id]) + receivers = User.where(id: [issue_assigned_to_id, issue_author_id]).where.not(id: operator&.id) receivers_string, content, notification_url = MessageTemplate::IssueDeleted.get_message_content(receivers, operator, issue_title) Notice::Write::CreateService.call(receivers_string, content, notification_url, source, {operator_id: operator.id, issue_title: issue_title}) when 'OrganizationJoined' @@ -80,36 +81,75 @@ class SendTemplateMessageJob < ApplicationJob receivers = User.where(id: user.id) receivers_string, content, notification_url = MessageTemplate::OrganizationRole.get_message_content(receivers, organization, role) Notice::Write::CreateService.call(receivers_string, content, notification_url, source, {user_id: user.id, organization_id: organization.id, role: role}) + when 'ProjectIssue' + operator_id, issue_id = args[0], args[1] + operator = User.find_by_id(operator_id) + issue = Issue.find_by_id(issue_id) + return unless operator.present? && issue.present? && issue&.project.present? + managers = issue&.project&.all_managers.where.not(id: operator&.id) + followers = [] # TODO + receivers_string, content, notification_url = MessageTemplate::ProjectIssue.get_message_content(managers, followers, operator, issue) + Notice::Write::CreateService.call(receivers_string, content, notification_url, source, {operator_id: operator.id, issue_id: issue.id}) when 'ProjectJoined' - user_id, project_id = args[0], args[1] + operator_id, user_id, project_id = args[0], args[1], args[2] + operator = User.find_by_id(operator_id) user = User.find_by_id(user_id) project = Project.find_by_id(project_id) - return unless user.present? && project.present? - receivers = User.where(id: user.id) + return unless operator.present? && user.present? && project.present? + receivers = User.where(id: user.id).where.not(id: operator&.id) receivers_string, content, notification_url = MessageTemplate::ProjectJoined.get_message_content(receivers, project) - Notice::Write::CreateService.call(receivers_string, content, notification_url, source, {user_id: user.id, project_id: project.id}) + Notice::Write::CreateService.call(receivers_string, content, notification_url, source, {operator_id: operator.id, user_id: user.id, project_id: project.id}) when 'ProjectLeft' - user_id, project_id = args[0], args[1] + operator_id, user_id, project_id = args[0], args[1], args[2] + operator = User.find_by_id(operator_id) user = User.find_by_id(user_id) project = Project.find_by_id(project_id) - return unless user.present? && project.present? - receivers = User.where(id: user.id) + return unless operator.present? && user.present? && project.present? + receivers = User.where(id: user.id).where.not(id: operator&.id) receivers_string, content, notification_url = MessageTemplate::ProjectLeft.get_message_content(receivers, project) - Notice::Write::CreateService.call(receivers_string, content, notification_url, source, {user_id: user.id, project_id: project.id}) - when 'ProjectRole' - user_id, project_id, role = args[0], args[1], args[2] + Notice::Write::CreateService.call(receivers_string, content, notification_url, source, {operator_id: operator.id, user_id: user.id, project_id: project.id}) + when 'ProjectMemberJoined' + operator_id, user_id, project_id = args[0], args[1], args[2] + operator = User.find_by_id(operator_id) user = User.find_by_id(user_id) project = Project.find_by_id(project_id) - return unless user.present? && project.present? - receivers = User.where(id: user.id) + return unless operator.present? && user.present? && project.present? + receivers = project&.all_managers.where.not(id: operator&.id) + receivers_string, content, notification_url = MessageTemplate::ProjectMemberJoined.get_message_content(receivers, user, project) + Notice::Write::CreateService.call(receivers_string, content, notification_url, source, {operator_id: operator.id, user_id: user.id, project_id: project.id}) + when 'ProjectMemberLeft' + operator_id, user_id, project_id = args[0], args[1], args[2] + operator = User.find_by_id(operator_id) + user = User.find_by_id(user_id) + project = Project.find_by_id(project_id) + return unless operator.present? && user.present? && project.present? + receivers = project&.all_managers.where.not(id: operator&.id) + receivers_string, content, notification_url = MessageTemplate::ProjectMemberLeft.get_message_content(receivers, user, project) + Notice::Write::CreateService.call(receivers_string, content, notification_url, source, {operator_id: operator.id, user_id: user.id, project_id: project.id}) + when 'ProjectPullRequest' + operator_id, pull_request_id = args[0], args[1] + operator = User.find_by_id(operator_id) + pull_request = PullRequest.find_by_id(pull_request_id) + return unless operator.present? && pull_request.present? && pull_request&.project.present? + managers = pull_request&.project&.all_managers.where.not(id: operator&.id) + followers = [] # TODO + receivers_string, content, notification_url = MessageTemplate::ProjectPullRequest.get_message_content(managers, followers, operator, pull_request) + Notice::Write::CreateService.call(receivers_string, content, notification_url, source, {operator_id: operator.id, pull_request_id: pull_request.id}) + when 'ProjectRole' + operator_id, user_id, project_id, role = args[0], args[1], args[2], args[3] + operator = User.find_by_id(operator_id) + user = User.find_by_id(user_id) + project = Project.find_by_id(project_id) + return unless operator.present? && user.present? && project.present? + receivers = User.where(id: user.id).where.not(id: operator&.id) receivers_string, content, notification_url = MessageTemplate::ProjectRole.get_message_content(receivers, project, role) - Notice::Write::CreateService.call(receivers_string, content, notification_url, source, {user_id: user.id, project_id: project.id, role: role}) + Notice::Write::CreateService.call(receivers_string, content, notification_url, source, {operator_id: operator.id, user_id: user.id, project_id: project.id, role: role}) when 'ProjectSettingChanged' operator_id, project_id, change_params = args[0], args[1], args[2] operator = User.find_by_id(operator_id) project = Project.find_by_id(project_id) return unless operator.present? && project.present? - receivers = project.all_managers + receivers = project.all_managers.where.not(id: operator&.id) receivers_string, content, notification_url = MessageTemplate::ProjectSettingChanged.get_message_content(receivers, operator, project, change_params.symbolize_keys) Notice::Write::CreateService.call(receivers_string, content, notification_url, source, {operator_id: operator.id, project_id: project.id, change_params: change_params}) when 'PullRequestAssigned' @@ -117,7 +157,7 @@ class SendTemplateMessageJob < ApplicationJob operator = User.find_by_id(operator_id) pull_request = PullRequest.find_by_id(pull_request_id) return unless operator.present? && pull_request.present? - receivers = User.where(id: pull_request&.issue&.assigned_to_id) + receivers = User.where(id: pull_request&.issue&.assigned_to_id).where.not(id: operator&.id) receivers_string, content, notification_url = MessageTemplate::PullRequestAssigned.get_message_content(receivers, operator, pull_request) Notice::Write::CreateService.call(receivers_string, content, notification_url, source, {operator_id: operator.id, pull_request_id: pull_request.id}) when 'PullRequestAtme' @@ -125,6 +165,7 @@ class SendTemplateMessageJob < ApplicationJob operator = User.find_by_id(operator_id) pull_request = PullRequest.find_by_id(pull_request_id) return unless operator.present? && pull_request.present? + receivers = receivers.where.not(id: operator&.id) receivers_string, content, notification_url = MessageTemplate::PullRequestAtme.get_message_content(receivers, operator, pull_request) Notice::Write::CreateService.call(receivers_string, content, notification_url, source, {operator_id: operator.id, pull_request_id: pull_request.id}, 2) when 'PullRequestChanged' @@ -132,7 +173,7 @@ class SendTemplateMessageJob < ApplicationJob operator = User.find_by_id(operator_id) pull_request = PullRequest.find_by_id(pull_request_id) return unless operator.present? && pull_request.present? - receivers = User.where(id: [pull_request&.issue&.assigned_to_id, pull_request&.user_id]) + receivers = User.where(id: [pull_request&.issue&.assigned_to_id, pull_request&.user_id]).where.not(id: operator&.id) receivers_string, content, notification_url = MessageTemplate::PullRequestChanged.get_message_content(receivers, operator, pull_request, change_params.symbolize_keys) Notice::Write::CreateService.call(receivers_string, content, notification_url, source, {operator_id: operator.id, pull_request_id: pull_request.id, change_params: change_params}) when 'PullRequestClosed' @@ -140,7 +181,7 @@ class SendTemplateMessageJob < ApplicationJob operator = User.find_by_id(operator_id) pull_request = PullRequest.find_by_id(pull_request_id) return unless operator.present? && pull_request.present? - receivers = User.where(id: [pull_request&.issue&.assigned_to_id, pull_request&.user_id]) + receivers = User.where(id: [pull_request&.issue&.assigned_to_id, pull_request&.user_id]).where.not(id: operator&.id) receivers_string, content, notification_url = MessageTemplate::PullRequestClosed.get_message_content(receivers, operator, pull_request) Notice::Write::CreateService.call(receivers_string, content, notification_url, source, {operator_id: operator.id, pull_request_id: pull_request.id}) when 'PullRequestMerged' @@ -148,7 +189,7 @@ class SendTemplateMessageJob < ApplicationJob operator = User.find_by_id(operator_id) pull_request = PullRequest.find_by_id(pull_request_id) return unless operator.present? && pull_request.present? - receivers = User.where(id: [pull_request&.issue&.assigned_to_id, pull_request&.user_id]) + receivers = User.where(id: [pull_request&.issue&.assigned_to_id, pull_request&.user_id]).where.not(id: operator&.id) receivers_string, content, notification_url = MessageTemplate::PullRequestMerged.get_message_content(receivers, operator, pull_request) Notice::Write::CreateService.call(receivers_string, content, notification_url, source, {operator_id: operator.id, pull_request_id: pull_request.id}) end diff --git a/app/models/message_template.rb b/app/models/message_template.rb index 6c5e4df22..42aa64a44 100644 --- a/app/models/message_template.rb +++ b/app/models/message_template.rb @@ -18,7 +18,7 @@ class MessageTemplate {nickname2}/{repository}指派给你一个易修:{title}', notification_url: '{baseurl}/{owner}/{identifier}/issues/{id}') self.create(type: 'MessageTemplate::IssueAssignerExpire', sys_notice: '您负责的易修{title}已临近截止日期,请尽快处理', notification_url: '{baseurl}/{owner}/{identifier}/issues/{id}') self.create(type: 'MessageTemplate::IssueAtme', sys_notice: '{nickname}在易修{title}中@我', notification_url: '{baseurl}/{owner}/{identifier}/issues/{id}') - self.create(type: 'MessageTemplate::IssueChanged', sys_notice: '在项目{nickname2}/{repository}的易修{title}中:{ifassigner}{nickname1}将负责人从{assigner1}修改为{assigner2}
{endassigner}{ifstatus}{nickname1}将状态从{status1}修改为{status2}
{endstatus}{iftracker}{nickname1}将类型从{tracker1}修改为{tracker2}
{endtracker}{ifpriority}{nickname1}将优先级从{priority1}修改为{priority2}
{endpriority}{ifmilestone}{nickname1}将里程碑从{milestone1}修改为{milestone2}
{endmilestone}{iftag}{nickname1}将标签从{tag1}修改为{tag2}
{endtag}{ifdoneratio}{nickname1}将完成度从{doneratio2}修改为{doneratio1}{enddoneratio}
{ifbranch}{nickname1}将指定分支从{branch1}修改为{branch2}
{endbranch}{ifstartdate}{nickname1}将开始日期从{startdate1}修改为{startdate2}
{endstartdate}{ifduedate}{nickname1}将结束日期从{duedate1}修改为{duedate2}
{endduedate}', notification_url: '{baseurl}/{owner}/{identifier}/issues/{id}') + self.create(type: 'MessageTemplate::IssueChanged', sys_notice: '在项目{nickname2}/{repository}的易修{title}中:{ifassigner}{nickname1}将负责人从{assigner1}修改为{assigner2}{endassigner}{ifstatus}{nickname1}将状态从{status1}修改为{status2}{endstatus}{iftracker}{nickname1}将类型从{tracker1}修改为{tracker2}{endtracker}{ifpriority}{nickname1}将优先级从{priority1}修改为{priority2}{endpriority}{ifmilestone}{nickname1}将里程碑从{milestone1}修改为{milestone2}{endmilestone}{iftag}{nickname1}将标签从{tag1}修改为{tag2}{endtag}{ifdoneratio}{nickname1}将完成度从{doneratio1}修改为{doneratio2}{enddoneratio}{ifbranch}{nickname1}将指定分支从{branch1}修改为{branch2}{endbranch}{ifstartdate}{nickname1}将开始日期从{startdate1}修改为{startdate2}{endstartdate}{ifduedate}{nickname1}将结束日期从{duedate1}修改为{duedate2}{endduedate}', notification_url: '{baseurl}/{owner}/{identifier}/issues/{id}') self.create(type: 'MessageTemplate::IssueCreatorExpire', sys_notice: '您发布的易修{title}已临近截止日期,请尽快处理', notification_url: '{baseurl}/{owner}/{identifier}/issues/{id}') self.create(type: 'MessageTemplate::IssueDeleted', sys_notice: '{nickname}已将易修{title}删除', notification_url: '') self.create(type: 'MessageTemplate::IssueJournal', sys_notice: '{nickname}评论易修{title}:{notes}', notification_url: '{baseurl}/{owner}/{identifier}/issues/{id}') @@ -38,12 +38,12 @@ class MessageTemplate {nickname}
点赞了你管理的仓库', notification_url: '{baseurl}/{login}') self.create(type: 'MessageTemplate::ProjectPullRequest', sys_notice: '{nickname1}在{nickname2}/{repository}提交了一个合并请求:{title}', notification_url: '{baseurl}/{owner}/{identifier}/pulls/{id}/Messagecount') self.create(type: 'MessageTemplate::ProjectRole', sys_notice: '仓库{repository}已把你的角色改为{role}', notification_url: '{baseurl}/{owner}/{identifier}') - self.create(type: 'MessageTemplate::ProjectSettingChanged', sys_notice: '{nickname1}更改了{nickname2}/{repository}仓库设置:{ifname}更改项目名称为"{name}";{endname}{ifdescription}更改项目简介为"{description}";{enddescription}{ifcategory}更改项目类别为"{category}";{endcategory}{iflanguage}更改项目语言为"{language}";{endlanguage}{ifpermission}将仓库设为"{permission}";{endpermission}{ifnavbar}将项目导航更改为"{navbar}";{endnavbar}', notification_url: '{baseurl}/{owner}/{identifier}/settings') + self.create(type: 'MessageTemplate::ProjectSettingChanged', sys_notice: '{nickname1}更改了{nickname2}/{repository}仓库设置:{ifname}更改项目名称为"{name}"{endname}{ifdescription}更改项目简介为"{description}"{enddescription}{ifcategory}更改项目类别为"{category}"{endcategory}{iflanguage}更改项目语言为"{language}"{endlanguage}{ifpermission}将仓库设为"{permission}"{endpermission}{ifnavbar}将项目导航更改为"{navbar}"{endnavbar}', notification_url: '{baseurl}/{owner}/{identifier}/settings') self.create(type: 'MessageTemplate::ProjectTransfer', sys_notice: '你关注的仓库{nickname1}/{repository1}已被转移至{nickname2}/{repository2}', notification_url: '{baseurl}/{owner}/{identifier}') self.create(type: 'MessageTemplate::ProjectVersion', sys_notice: '{nickname1}在{nickname2}/{repository}创建了发行版:{title}', notification_url: '{baseurl}/{owner}/{identifier}/releases') self.create(type: 'MessageTemplate::PullRequestAssigned', sys_notice: '{nickname1}在{nickname2}/{repository}指派给你一个合并请求:{title}', notification_url: '{baseurl}/{owner}/{identifier}/pulls/{id}/Messagecount') self.create(type: 'MessageTemplate::PullRequestAtme', sys_notice: '{nickname}在合并请求{title}中@我', notification_url: '{baseurl}/{owner}/{identifier}/pulls/{id}/Messagecount') - self.create(type: 'MessageTemplate::PullRequestChanged', sys_notice: '在项目{nickname2}/{repository}的合并请求{title}中:{ifassigner}{nickname1}将审查成员从{assigner1}修改为{assigner2}
{endassigner}{ifmilestone}{nickname1}将里程碑从{milestone1}修改为{milestone2}
{endmilestone}{iftag}{nickname1}将标签从{tag1}修改为{tag2}
{endtag}{ifpriority}{nickname1}将优先级从{priority1}修改为{priority2}
{endpriority}', notification_url: '{baseurl}/{owner}/{identifier}/pulls/{id}/Messagecount') + self.create(type: 'MessageTemplate::PullRequestChanged', sys_notice: '在项目{nickname2}/{repository}的合并请求{title}中:{ifassigner}{nickname1}将审查成员从{assigner1}修改为{assigner2}{endassigner}{ifmilestone}{nickname1}将里程碑从{milestone1}修改为{milestone2}{endmilestone}{iftag}{nickname1}将标签从{tag1}修改为{tag2}{endtag}{ifpriority}{nickname1}将优先级从{priority1}修改为{priority2}{endpriority}', notification_url: '{baseurl}/{owner}/{identifier}/pulls/{id}/Messagecount') self.create(type: 'MessageTemplate::PullRequestClosed', sys_notice: '你提交的合并请求:{title}被拒绝', notification_url: '') self.create(type: 'MessageTemplate::PullRequestJournal', sys_notice: '{nickname}评论合并请求{title}:{notes}', notification_url: '{baseurl}/{owner}/{identifier}/pulls/{id}/Messagecount') self.create(type: 'MessageTemplate::PullRequestMerged', sys_notice: '你提交的合并请求:{title}被合并', notification_url: '{baseurl}/{owner}/{identifier}/pulls/{id}/Messagecount') diff --git a/app/models/message_template/followed_tip.rb b/app/models/message_template/followed_tip.rb index 15a074fb3..d8c6cba20 100644 --- a/app/models/message_template/followed_tip.rb +++ b/app/models/message_template/followed_tip.rb @@ -16,7 +16,7 @@ class MessageTemplate::FollowedTip < MessageTemplate # MessageTemplate::FollowedTip.get_message_content(User.where(login: 'yystopf'), User.last) def self.get_message_content(receivers, followeder) - return receivers_string(receivers), sys_notice.gsub('{nickname}', followeder&.nickname), notification_url.gsub('{login}', followeder.login) + return receivers_string(receivers), sys_notice.gsub('{nickname}', followeder&.real_name), notification_url.gsub('{login}', followeder.login) rescue return '', '', '' end diff --git a/app/models/message_template/issue_assigned.rb b/app/models/message_template/issue_assigned.rb index ccef717e2..0507f2acb 100644 --- a/app/models/message_template/issue_assigned.rb +++ b/app/models/message_template/issue_assigned.rb @@ -18,7 +18,7 @@ class MessageTemplate::IssueAssigned < MessageTemplate def self.get_message_content(receivers, operator, issue) project = issue&.project owner = project&.owner - content = sys_notice.gsub('{nickname1}', operator&.nickname).gsub('{nickname2}', owner&.nickname).gsub('{repository}', project&.name).gsub('{title}', issue&.subject) + content = sys_notice.gsub('{nickname1}', operator&.real_name).gsub('{nickname2}', owner&.real_name).gsub('{repository}', project&.name).gsub('{title}', issue&.subject) url = notification_url.gsub('{owner}', owner&.login).gsub('{identifier}', project&.identifier).gsub('{id}', issue&.id.to_s) return receivers_string(receivers), content, url rescue => e diff --git a/app/models/message_template/issue_atme.rb b/app/models/message_template/issue_atme.rb index 1738838ef..5678b31de 100644 --- a/app/models/message_template/issue_atme.rb +++ b/app/models/message_template/issue_atme.rb @@ -18,7 +18,7 @@ class MessageTemplate::IssueAtme < MessageTemplate def self.get_message_content(receivers, operator, issue) project = issue&.project owner = project&.owner - content = sys_notice.gsub('{nickname}', operator&.nickname).gsub('{title}', issue&.subject) + content = sys_notice.gsub('{nickname}', operator&.real_name).gsub('{title}', issue&.subject) url = notification_url.gsub('{owner}', owner&.login).gsub('{identifier}', project&.identifier).gsub('{id}', issue&.id.to_s) return receivers_string(receivers), content, url rescue => e diff --git a/app/models/message_template/issue_changed.rb b/app/models/message_template/issue_changed.rb index ddecab80e..f6f443677 100644 --- a/app/models/message_template/issue_changed.rb +++ b/app/models/message_template/issue_changed.rb @@ -19,16 +19,21 @@ class MessageTemplate::IssueChanged < MessageTemplate return '', '', '' if change_params.blank? project = issue&.project owner = project&.owner - content = MessageTemplate::IssueChanged.sys_notice.gsub('{nickname1}', operator&.nickname).gsub('{nickname2}', owner&.nickname).gsub('{repository}', project&.name).gsub('{title}', issue&.subject) + content = MessageTemplate::IssueChanged.sys_notice.gsub('{nickname1}', operator&.real_name).gsub('{nickname2}', owner&.real_name).gsub('{repository}', project&.name).gsub('{title}', issue&.subject) url = notification_url.gsub('{owner}', owner&.login).gsub('{identifier}', project&.identifier).gsub('{id}', issue&.id.to_s) + change_count = change_params.keys.size # 易修负责人修改 if change_params[:assigned_to_id].present? assigner1 = User.find_by_id(change_params[:assigned_to_id][0]) assigner2 = User.find_by_id(change_params[:assigned_to_id][1]) - content.sub!('{ifassigner}', '') + if change_count > 1 + content.sub!('{ifassigner}', '
') + else + content.sub!('{ifassigner}', '') + end content.sub!('{endassigner}', '') - content.gsub!('{assigner1}', assigner1.present? ? assigner1&.nickname || assigner1.login : '未指派成员') - content.gsub!('{assigner2}', assigner2.present? ? assigner2&.nickname || assigner2.login : '未指派成员') + content.gsub!('{assigner1}', assigner1.present? ? assigner1&.real_name : '未指派成员') + content.gsub!('{assigner2}', assigner2.present? ? assigner2&.real_name : '未指派成员') else content.gsub!(/({ifassigner})(.*)({endassigner})/, '') end @@ -36,7 +41,11 @@ class MessageTemplate::IssueChanged < MessageTemplate if change_params[:status_id].present? status1 = IssueStatus.find_by_id(change_params[:status_id][0]) status2 = IssueStatus.find_by_id(change_params[:status_id][1]) - content.sub!('{ifstatus}', '') + if change_count > 1 + content.sub!('{ifstatus}', '
') + else + content.sub!('{ifstatus}', '') + end content.sub!('{endstatus}', '') content.gsub!('{status1}', status1&.name) content.gsub!('{status2}', status2&.name) @@ -47,7 +56,11 @@ class MessageTemplate::IssueChanged < MessageTemplate if change_params[:tracker_id].present? tracker1 = Tracker.find_by_id(change_params[:tracker_id][0]) tracker2 = Tracker.find_by_id(change_params[:tracker_id][1]) - content.sub!('{iftracker}', '') + if change_count > 1 + content.sub!('{iftracker}', '
') + else + content.sub!('{iftracker}', '') + end content.sub!('{endtracker}', '') content.gsub!('{tracker1}', tracker1&.name) content.gsub!('{tracker2}', tracker2&.name) @@ -58,7 +71,11 @@ class MessageTemplate::IssueChanged < MessageTemplate if change_params[:fixed_version_id].present? fix_version1 = Version.find_by_id(change_params[:fixed_version_id][0]) fix_version2 = Version.find_by_id(change_params[:fixed_version_id][1]) - content.sub!('{ifmilestone}', '') + if change_count > 1 + content.sub!('{ifmilestone}', '
') + else + content.sub!('{ifmilestone}', '') + end content.sub!('{endmilestone}', '') content.gsub!('{milestone1}', fix_version1.present? ? fix_version1&.name : '未选择里程碑') content.gsub!('{milestone2}', fix_version2.present? ? fix_version2&.name : '未选择里程碑') @@ -71,8 +88,11 @@ class MessageTemplate::IssueChanged < MessageTemplate issue_tags2 = IssueTag.where(id: change_params[:issue_tags_value][1]).distinct tag1 = issue_tags1.pluck(:name).join(",").blank? ? '未选择标签' : issue_tags1.pluck(:name).join(",") tag2 = issue_tags2.pluck(:name).join(",").blank? ? '未选择标签' : issue_tags2.pluck(:name).join(",") - content.sub!('{iftag}', '') - content.sub!('{endtag}', '') + if change_count > 1 + content.sub!('{iftag}', '
') + else + content.sub!('{endtag}', '') + end content.gsub!('{tag1}', tag1) content.gsub!('{tag2}', tag2) else @@ -82,8 +102,11 @@ class MessageTemplate::IssueChanged < MessageTemplate if change_params[:priority_id].present? priority1 = IssuePriority.find_by_id(change_params[:priority_id][0]) priority2 = IssuePriority.find_by_id(change_params[:priority_id][1]) - - content.sub!('{ifpriority}', '') + if change_count > 1 + content.sub!('{ifpriority}', '
') + else + content.sub!('{ifpriority}', '') + end content.sub!('{endpriority}', '') content.gsub!('{priority1}', priority1&.name) content.gsub!('{priority2}', priority2&.name) @@ -94,8 +117,11 @@ class MessageTemplate::IssueChanged < MessageTemplate if change_params[:done_ratio].present? doneratio1 = change_params[:done_ratio][0] doneratio2 = change_params[:done_ratio][1] - - content.sub!('{ifdoneratio}', '') + if change_count > 1 + content.sub!('{ifdoneratio}', '
') + else + content.sub!('{ifdoneratio}', '') + end content.sub!('{enddoneratio}', '') content.gsub!('{doneratio1}', "#{doneratio1}%") content.gsub!('{doneratio2}', "#{doneratio2}%") @@ -106,8 +132,11 @@ class MessageTemplate::IssueChanged < MessageTemplate if change_params[:branch_name].present? branch1 = change_params[:branch_name][0].blank? ? '分支未指定' : change_params[:branch_name][0] branch2 = change_params[:branch_name][1].blank? ? '分支未指定' : change_params[:branch_name][1] - - content.sub!('{ifbranch}', '') + if change_count > 1 + content.sub!('{ifbranch}', '
') + else + content.sub!('{ifbranch}', '') + end content.sub!('{endbranch}', '') content.gsub!('{branch1}', branch1) content.gsub!('{branch2}', branch2) @@ -118,8 +147,11 @@ class MessageTemplate::IssueChanged < MessageTemplate if change_params[:start_date].present? startdate1 = change_params[:start_date][0].blank? ? "未选择开始日期" : change_params[:start_date][0] startdate2 = change_params[:start_date][1].blank? ? "未选择开始日期" : change_params[:start_date][1] - - content.sub!('{ifstartdate}', '') + if change_count > 1 + content.sub!('{ifstartdate}', '
') + else + content.sub!('{ifstartdate}', '') + end content.sub!('{endstartdate}', '') content.gsub!('{startdate1}', startdate1 ) content.gsub!('{startdate2}', startdate2) @@ -130,7 +162,11 @@ class MessageTemplate::IssueChanged < MessageTemplate if change_params[:due_date].present? duedate1 = change_params[:due_date][0].blank? ? '未选择结束日期' : change_params[:due_date][0] duedate2 = change_params[:due_date][1].blank? ? '未选择结束日期' : change_params[:due_date][1] - content.sub!('{ifduedate}', '') + if change_count > 1 + content.sub!('{ifduedate}', '
') + else + content.sub!('{ifduedate}', '') + end content.sub!('{endduedate}', '') content.gsub!('{duedate1}', duedate1) content.gsub!('{duedate2}', duedate2) diff --git a/app/models/message_template/issue_deleted.rb b/app/models/message_template/issue_deleted.rb index 8decdd157..46d7d6e64 100644 --- a/app/models/message_template/issue_deleted.rb +++ b/app/models/message_template/issue_deleted.rb @@ -16,7 +16,7 @@ class MessageTemplate::IssueDeleted < MessageTemplate # MessageTemplate::IssueDeleted.get_message_content(User.where(login: 'yystopf'), User.last, "hahah") def self.get_message_content(receivers, operator, issue_title) - content = sys_notice.gsub('{nickname}', operator&.nickname).gsub('{title}', issue_title) + content = sys_notice.gsub('{nickname}', operator&.real_name).gsub('{title}', issue_title) return receivers_string(receivers), content, notification_url rescue => e Rails.logger.info("MessageTemplate::IssueAtme.get_message_content [ERROR] #{e}") diff --git a/app/models/message_template/organization_joined.rb b/app/models/message_template/organization_joined.rb index d3a7ca1d1..81ae2a67d 100644 --- a/app/models/message_template/organization_joined.rb +++ b/app/models/message_template/organization_joined.rb @@ -16,7 +16,7 @@ class MessageTemplate::OrganizationJoined < MessageTemplate # MessageTemplate::OrganizationJoined.get_message_content(User.where(login: 'yystopf'), Organization.last) def self.get_message_content(receivers, organization) - content = sys_notice.gsub('{organization}', organization&.name) + content = sys_notice.gsub('{organization}', organization&.real_name) url = notification_url.gsub('{login}', organization&.name) return receivers_string(receivers), content, url rescue => e diff --git a/app/models/message_template/organization_left.rb b/app/models/message_template/organization_left.rb index 9fe844746..16652d30e 100644 --- a/app/models/message_template/organization_left.rb +++ b/app/models/message_template/organization_left.rb @@ -16,7 +16,7 @@ class MessageTemplate::OrganizationLeft < MessageTemplate # MessageTemplate::OrganizationLeft.get_message_content(User.where(login: 'yystopf'), Organization.last) def self.get_message_content(receivers, organization) - content = sys_notice.gsub('{organization}', organization&.name) + content = sys_notice.gsub('{organization}', organization&.real_name) url = notification_url.gsub('{login}', organization&.name) return receivers_string(receivers), content, url rescue => e diff --git a/app/models/message_template/organization_role.rb b/app/models/message_template/organization_role.rb index 223ecf8bb..33c326514 100644 --- a/app/models/message_template/organization_role.rb +++ b/app/models/message_template/organization_role.rb @@ -16,7 +16,7 @@ class MessageTemplate::OrganizationRole < MessageTemplate # MessageTemplate::OrganizationRole.get_message_content(User.where(login: 'yystopf'), Organization.last, '管理员') def self.get_message_content(receivers, organization, role) - content = sys_notice.gsub('{organization}', organization&.name).gsub('{role}', role) + content = sys_notice.gsub('{organization}', organization&.real_name).gsub('{role}', role) url = notification_url.gsub('{login}', organization&.login) return receivers_string(receivers), content, url rescue => e diff --git a/app/models/message_template/project_issue.rb b/app/models/message_template/project_issue.rb index 81904f230..700932ad6 100644 --- a/app/models/message_template/project_issue.rb +++ b/app/models/message_template/project_issue.rb @@ -14,8 +14,14 @@ # TODO 我管理/关注的仓库有新的易修 class MessageTemplate::ProjectIssue < MessageTemplate - # MessageTemplate::ProjectIssue.get_message_content(User.where(login: 'yystopf')) - def self.get_message_content(receivers) + # MessageTemplate::ProjectIssue.get_message_content(User.where(login: 'yystopf'), User.where(login: 'forgetest1'), User.last, Issue.last) + def self.get_message_content(managers, followers, operator, issue) + project = issue&.project + owner = project&.owner + receivers = managers + followers + content = sys_notice.gsub('{nickname1}', operator&.real_name).gsub('{nickname2}', owner&.real_name).gsub('{repository}', project&.name).gsub('{title}', issue&.subject) + url = notification_url.gsub('{owner}', owner&.login).gsub('{identifier}', project&.identifier).gsub('{id}', issue&.id.to_s) + return receivers_string(receivers), content, url rescue => e Rails.logger.info("MessageTemplate::ProjectIssue.get_message_content [ERROR] #{e}") diff --git a/app/models/message_template/project_member_joined.rb b/app/models/message_template/project_member_joined.rb index c10edb596..a510265bc 100644 --- a/app/models/message_template/project_member_joined.rb +++ b/app/models/message_template/project_member_joined.rb @@ -11,11 +11,13 @@ # notification_url :string(255) # -# TODO 我管理的仓库有成员加入 +# 我管理的仓库有成员加入 class MessageTemplate::ProjectMemberJoined < MessageTemplate # MessageTemplate::ProjectMemberJoined.get_message_content(User.where(login: 'yystopf')) - def self.get_message_content(receivers) + def self.get_message_content(receivers, user, project) + content = sys_notice.gsub('{nickname1}', user&.real_name).gsub('{nickname2}', project&.owner&.real_name).gsub('{repository}', project&.name) + url = notification_url.gsub('{owner}', project&.owner&.login).gsub('{identifier}', project&.identifier) return receivers_string(receivers), content, url rescue => e Rails.logger.info("MessageTemplate::ProjectMemberJoined.get_message_content [ERROR] #{e}") diff --git a/app/models/message_template/project_member_left.rb b/app/models/message_template/project_member_left.rb index b7133e052..9d26e1027 100644 --- a/app/models/message_template/project_member_left.rb +++ b/app/models/message_template/project_member_left.rb @@ -11,11 +11,13 @@ # notification_url :string(255) # -# TODO 我管理的仓库有成员移出 +# 我管理的仓库有成员移出 class MessageTemplate::ProjectMemberLeft < MessageTemplate - # MessageTemplate::ProjectMemberLeft.get_message_content(User.where(login: 'yystopf')) - def self.get_message_content(receivers) + # MessageTemplate::ProjectMemberLeft.get_message_content(User.where(login: 'yystopf'), User.last, Project.last) + def self.get_message_content(receivers, user, project) + content = sys_notice.gsub('{nickname1}', user&.real_name).gsub('{nickname2}', project&.owner&.real_name).gsub('{repository}', project&.name) + url = notification_url.gsub('{owner}', project&.owner&.login).gsub('{identifier}', project&.identifier) return receivers_string(receivers), content, url rescue => e Rails.logger.info("MessageTemplate::ProjectMemberLeft.get_message_content [ERROR] #{e}") diff --git a/app/models/message_template/project_pull_request.rb b/app/models/message_template/project_pull_request.rb index f0c642d19..2db1021ad 100644 --- a/app/models/message_template/project_pull_request.rb +++ b/app/models/message_template/project_pull_request.rb @@ -14,8 +14,14 @@ # TODO 我管理/关注的仓库有新的合并请求 class MessageTemplate::ProjectPullRequest < MessageTemplate - # MessageTemplate::ProjectPullRequest.get_message_content(User.where(login: 'yystopf')) - def self.get_message_content(receivers) + # MessageTemplate::ProjectPullRequest.get_message_content(User.where(login: 'yystopf'), User.where(login: 'testforge2'), User.last, PullRequest.last) + def self.get_message_content(managers, followers, operator, pull_request) + project = pull_request&.project + owner = project&.owner + receivers = managers + followers + content = sys_notice.gsub('{nickname1}', operator&.real_name).gsub('{nickname2}', owner&.real_name).gsub('{repository}', project&.name).gsub('{title}', pull_request&.title) + url = notification_url.gsub('{owner}', owner&.login).gsub('{identifier}', project&.identifier).gsub('{id}', pull_request&.id.to_s) + return receivers_string(receivers), content, url rescue => e Rails.logger.info("MessageTemplate::ProjectPullRequest.get_message_content [ERROR] #{e}") diff --git a/app/models/message_template/project_setting_changed.rb b/app/models/message_template/project_setting_changed.rb index 8c272f65d..f973f99d5 100644 --- a/app/models/message_template/project_setting_changed.rb +++ b/app/models/message_template/project_setting_changed.rb @@ -18,11 +18,16 @@ class MessageTemplate::ProjectSettingChanged < MessageTemplate def self.get_message_content(receivers, operator, project, change_params) return '', '', '' if change_params.blank? owner = project&.owner - content = sys_notice.gsub('{nickname1}', operator&.nickname).gsub('{nickname2}', owner&.nickname).gsub('{repository}', project&.name) + content = sys_notice.gsub('{nickname1}', operator&.real_name).gsub('{nickname2}', owner&.real_name).gsub('{repository}', project&.name) url = notification_url.gsub('{owner}', owner&.login).gsub('{identifier}', project&.identifier) + change_count = change_params.keys.size # 项目名称更改 if change_params[:name].present? - content.sub!('{ifname}', '') + if change_count > 1 + content.sub!('{ifname}', '
') + else + content.sub!('{ifname}', '') + end content.sub!('{endname}', '') content.gsub!('{name}', change_params[:name][1]) else @@ -30,7 +35,11 @@ class MessageTemplate::ProjectSettingChanged < MessageTemplate end # 项目简介更改 if change_params[:description].present? - content.sub!('{ifdescription}', '') + if change_count > 1 + content.sub!('{ifdescription}', '
') + else + content.sub!('{ifdescription}', '') + end content.sub!('{enddescription}', '') content.gsub!('{description}', change_params[:description][1]) else @@ -39,7 +48,11 @@ class MessageTemplate::ProjectSettingChanged < MessageTemplate # 项目类别更改 if change_params[:project_category_id].present? category = ProjectCategory.find_by_id(change_params[:project_category_id][1]) - content.sub!('{ifcategory}', '') + if change_count > 1 + content.sub!('{ifcategory}', '
') + else + content.sub!('{ifcategory}', '') + end content.sub!('{endcategory}', '') content.gsub!('{category}', category&.name) else @@ -48,7 +61,11 @@ class MessageTemplate::ProjectSettingChanged < MessageTemplate # 项目语言更改 if change_params[:project_language_id].present? language = ProjectLanguage.find_by_id(change_params[:project_language_id][1]) - content.sub!('{iflanguage}', '') + if change_count > 1 + content.sub!('{iflanguage}', '
') + else + content.sub!('{iflanguage}', '') + end content.sub!('{endlanguage}', '') content.gsub!('{language}', language&.name) else @@ -57,7 +74,11 @@ class MessageTemplate::ProjectSettingChanged < MessageTemplate # 项目公私有更改 if change_params[:is_public].present? permission = change_params[:is_public][1] ? '公有' : '私有' - content.sub!('{ifpermission}', '') + if change_count > 1 + content.sub!('{ifpermission}', '
') + else + content.sub!('{ifpermission}', '') + end content.sub!('{endpermission}', '') content.gsub!('{permission}', permission) else @@ -73,16 +94,20 @@ class MessageTemplate::ProjectSettingChanged < MessageTemplate navbar.gsub!('devops', '工作流') navbar.gsub!('versions', '里程碑') navbar.gsub!('resources', '资源库') - content.sub!('{ifnavbar}', '') + if change_count > 1 + content.sub!('{ifnavbar}', '
') + else + content.sub!('{ifnavbar}', '') + end content.sub!('{endnavbar}', '') content.gsub!('{navbar}', navbar) else content.gsub!(/({ifnavbar})(.*)({endnavbar})/, '') end - return receivers_string(receivers.where.not(id: operator.id)), content, url - # rescue => e - # Rails.logger.info("MessageTemplate::ProjectSettingChanged.get_message_content [ERROR] #{e}") - # return '', '', '' + return receivers_string(receivers), content, url + rescue => e + Rails.logger.info("MessageTemplate::ProjectSettingChanged.get_message_content [ERROR] #{e}") + return '', '', '' end end diff --git a/app/models/message_template/pull_request_assigned.rb b/app/models/message_template/pull_request_assigned.rb index 132a36154..5b3e6538d 100644 --- a/app/models/message_template/pull_request_assigned.rb +++ b/app/models/message_template/pull_request_assigned.rb @@ -18,7 +18,7 @@ class MessageTemplate::PullRequestAssigned < MessageTemplate def self.get_message_content(receivers, operator, pull_request) project = pull_request&.project owner = project&.owner - content = sys_notice.gsub('{nickname1}', operator&.nickname).gsub('{nickname2}', owner&.nickname).gsub('{repository}', project&.name).gsub('{title}', pull_request&.title) + content = sys_notice.gsub('{nickname1}', operator&.real_name).gsub('{nickname2}', owner&.real_name).gsub('{repository}', project&.name).gsub('{title}', pull_request&.title) url = notification_url.gsub('{owner}', owner&.login).gsub('{identifier}', project&.identifier).gsub('{id}', pull_request&.id.to_s) return receivers_string(receivers), content, url rescue => e diff --git a/app/models/message_template/pull_request_atme.rb b/app/models/message_template/pull_request_atme.rb index d940b2358..b9764e2be 100644 --- a/app/models/message_template/pull_request_atme.rb +++ b/app/models/message_template/pull_request_atme.rb @@ -17,7 +17,7 @@ class MessageTemplate::PullRequestAtme < MessageTemplate def self.get_message_content(receivers, operator, pull_request) project = pull_request&.project owner = project&.owner - content = sys_notice.gsub('{nickname}', operator&.nickname).gsub('{title}', pull_request&.title) + content = sys_notice.gsub('{nickname}', operator&.real_name).gsub('{title}', pull_request&.title) url = notification_url.gsub('{owner}', owner&.login).gsub('{identifier}', project&.identifier).gsub('{id}', pull_request&.id.to_s) return receivers_string(receivers), content, url rescue => e diff --git a/app/models/message_template/pull_request_changed.rb b/app/models/message_template/pull_request_changed.rb index 6107a9691..1f34f2d0e 100644 --- a/app/models/message_template/pull_request_changed.rb +++ b/app/models/message_template/pull_request_changed.rb @@ -20,16 +20,21 @@ class MessageTemplate::PullRequestChanged < MessageTemplate project = pull_request&.project owner = project&.owner issue = pull_request&.issue - content = sys_notice.gsub('{nickname1}', operator&.nickname).gsub('{nickname2}', owner&.nickname).gsub('{repository}', project&.name).gsub("{title}", pull_request&.title) + content = sys_notice.gsub('{nickname1}', operator&.real_name).gsub('{nickname2}', owner&.real_name).gsub('{repository}', project&.name).gsub("{title}", pull_request&.title) url = notification_url.gsub('{owner}', owner&.login).gsub('{identifier}', project&.identifier).gsub('{id}', pull_request&.id.to_s) + change_count = change_params.keys.size # 合并请求审查成员修改 if change_params[:assigned_to_id].present? assigner1 = User.find_by_id(change_params[:assigned_to_id][0]) assigner2 = User.find_by_id(change_params[:assigned_to_id][1]) - content.sub!('{ifassigner}', '') + if change_count > 1 + content.sub!('{ifassigner}', '
') + else + content.sub!('{ifassigner}', '') + end content.sub!('{endassigner}', '') - content.gsub!('{assigner1}', assigner1.present? ? assigner1&.nickname || assigner1.login : '未指派成员') - content.gsub!('{assigner2}', assigner2.present? ? assigner2&.nickname || assigner2.login : '未指派成员') + content.gsub!('{assigner1}', assigner1.present? ? assigner1&.real_name : '未指派成员') + content.gsub!('{assigner2}', assigner2.present? ? assigner2&.real_name : '未指派成员') else content.gsub!(/({ifassigner})(.*)({endassigner})/, '') end @@ -37,7 +42,11 @@ class MessageTemplate::PullRequestChanged < MessageTemplate if change_params[:fixed_version_id].present? fix_version1 = Version.find_by_id(change_params[:fixed_version_id][0]) fix_version2 = Version.find_by_id(change_params[:fixed_version_id][1]) - content.sub!('{ifmilestone}', '') + if change_count > 1 + content.sub!('{ifmilestone}', '
') + else + content.sub!('{ifmilestone}', '') + end content.sub!('{endmilestone}', '') content.gsub!('{milestone1}', fix_version1.present? ? fix_version1&.name : '未选择里程碑') content.gsub!('{milestone2}', fix_version2.present? ? fix_version2&.name : '未选择里程碑') @@ -50,7 +59,11 @@ class MessageTemplate::PullRequestChanged < MessageTemplate issue_tags2 = IssueTag.where(id: change_params[:issue_tags_value][1]).distinct tag1 = issue_tags1.pluck(:name).join(",").blank? ? '未选择标签' : issue_tags1.pluck(:name).join(",") tag2 = issue_tags2.pluck(:name).join(",").blank? ? '未选择标签' : issue_tags2.pluck(:name).join(",") - content.sub!('{iftag}', '') + if change_count > 1 + content.sub!('{iftag}', '
') + else + content.sub!('{iftag}', '') + end content.sub!('{endtag}', '') content.gsub!('{tag1}', tag1) content.gsub!('{tag2}', tag2) @@ -61,6 +74,11 @@ class MessageTemplate::PullRequestChanged < MessageTemplate if change_params[:priority_id].present? priority1 = IssuePriority.find_by_id(change_params[:priority_id][0]) priority2 = IssuePriority.find_by_id(change_params[:priority_id][1]) + if change_count > 1 + content.sub!('{ifpriority}', '
') + else + content.sub!('{ifpriority}', '') + end content.sub!('{ifpriority}', '') content.sub!('{endpriority}', '') content.gsub!('{priority1}', priority1&.name) diff --git a/app/services/projects/accept_join_service.rb b/app/services/projects/accept_join_service.rb index 69cb97603..b1a996fd8 100644 --- a/app/services/projects/accept_join_service.rb +++ b/app/services/projects/accept_join_service.rb @@ -53,6 +53,8 @@ class Projects::AcceptJoinService < ApplicationService def operate_project_member Projects::AddMemberInteractor.call(@project.owner, @project, @applied_project.user, permission) + SendTemplateMessageJob.perform_later('ProjectJoined', @user.id, @applied_project.user_id, @project.id) + SendTemplateMessageJob.perform_later('ProjectMemberJoined', @user.id, @applied_project.user_id, @project.id) end def send_apply_message