From ee1b7c8f57109da737b98db48b3cdfe64395c75e Mon Sep 17 00:00:00 2001 From: yystopf Date: Sat, 19 Oct 2024 10:48:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9Acommit=E5=85=B3?= =?UTF-8?q?=E8=81=94issue=E6=93=8D=E4=BD=9C=E8=80=85=E5=8F=98=E6=9B=B4?= =?UTF-8?q?=E4=B8=BA=E6=8F=90=E4=BA=A4=E8=80=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/commit_logs_controller.rb | 8 ++++++-- app/jobs/change_issue_status_by_message_job.rb | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/app/controllers/commit_logs_controller.rb b/app/controllers/commit_logs_controller.rb index fc97182e3..e32844994 100644 --- a/app/controllers/commit_logs_controller.rb +++ b/app/controllers/commit_logs_controller.rb @@ -26,11 +26,15 @@ class CommitLogsController < ApplicationController # 统计数据新增 CacheAsyncSetJob.perform_later("project_common_service", {commits: 1}, project.id) + commit_user = User.find_by(mail: commit[:committer][:email]) rescue nil + commit_user = User.find_by(login: commit[:committer][:name]) if commit_user.blank? rescue nil + next if commit_user.blank? + # 触发变更issue状态的job close_issue_content = message.to_s.scan(/\b(Close|Closes|Closed|Closing|close|closes|closed|closing)\s*(#\d+(,\s*#\d+)*)?\b/) - ChangeIssueStatusByMessageJob.perform_later(project, user, close_issue_content[0][1], 5) if close_issue_content[0].present? && close_issue_content[0][1].present? + ChangeIssueStatusByMessageJob.perform_later(project, commit_user, close_issue_content[0][1], 5) if close_issue_content[0].present? && close_issue_content[0][1].present? solve_issue_content = message.to_s.scan(/\b(Fix|Fixes|Fixed|Fixing|fix|fixes|fixed|fixing|Resolve|Resolves|Resolved|Resolving|resolve|resolves|resolved|resolving|Implement|Implements|Implemented|Implementing|implement|implements|implemented|implementing)\s*(#\d+(,\s*#\d+)*)?\b/) - ChangeIssueStatusByMessageJob.perform_later(project, user, solve_issue_content[0][1], 3) if solve_issue_content[0].present? && solve_issue_content[0][1].present? + ChangeIssueStatusByMessageJob.perform_later(project, commit_user, solve_issue_content[0][1], 3) if solve_issue_content[0].present? && solve_issue_content[0][1].present? end end diff --git a/app/jobs/change_issue_status_by_message_job.rb b/app/jobs/change_issue_status_by_message_job.rb index 03b0fccec..0e456b7cb 100644 --- a/app/jobs/change_issue_status_by_message_job.rb +++ b/app/jobs/change_issue_status_by_message_job.rb @@ -14,7 +14,7 @@ class ChangeIssueStatusByMessageJob < ApplicationJob issue_id = tag_issue.gsub('#', '') issue = project.issues.issue_issue.where(project_issues_index: issue_id).where.not(id: issue_id).take || Issue.issue_issue.find_by_id(issue_id) next unless issue.present? # issue不存在 跳过 - next if issue.project.present? && !user.admin? && !project.member?(user) # issue归属项目,用户没有修改issue的权限,跳过 + next if issue.project.present? && !user.admin? && !issue.project.member?(user) # issue归属项目,用户没有修改issue的权限,跳过 next if issue.pm_project_id.present? && project.owner.is_a?(Organization) && !project.owner.is_member?(user.id) # issue是组织下工作项,不具备组织的访问权限,跳过 issue_project = issue.project || Project.new(id: 0, user_id: 0, name: 'pm_mm', identifier: 'pm_mm', is_public:true) if issue.pm_project_id.present?