From fdbc75b4bedf036389fbc6e1d7e034161c83d15a Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 17 Jul 2025 14:45:15 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=94=B9=EF=BC=9A=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E6=96=B0=E5=A2=9Eno=5Ftouching?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/api/pm/issues/delete_service.rb | 32 +++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/app/services/api/pm/issues/delete_service.rb b/app/services/api/pm/issues/delete_service.rb index 0a04094c3..6ec4f51f0 100644 --- a/app/services/api/pm/issues/delete_service.rb +++ b/app/services/api/pm/issues/delete_service.rb @@ -14,25 +14,27 @@ class Api::Pm::Issues::DeleteService < ApplicationService def call raise Error, errors.full_messages.join(", ") unless valid? try_lock("Api::V1::Issues::DeleteService:#{project.id}") # 开始写数据,加锁 - ActiveRecord::Base.transaction do - parent_issue = @issue.parent_issue - if @issue.root_id.present? && parent_issue.present? - journal = parent_issue.journals.create!({user_id: current_user.id}) - journal.journal_details.create!({property: @issue.pm_issue_type_string, prop_key: 'leaf_issue', old_value: @issue.id.to_s}) - end + ActiveRecord::Base.transaction do + Issue.no_touching do + parent_issue = @issue.parent_issue + if @issue.root_id.present? && parent_issue.present? + journal = parent_issue.journals.create!({user_id: current_user.id}) + journal.journal_details.create!({property: @issue.pm_issue_type_string, prop_key: 'leaf_issue', old_value: @issue.id.to_s}) + end - delete_issue - #删除双向关联 - PmLink.where(be_linkable_id: @issue.id, be_linkable_type: 'Issue').or(PmLink.where(linkable_id: @issue.id, linkable_type: 'Issue')).map(&:destroy) + delete_issue + #删除双向关联 + PmLink.where(be_linkable_id: @issue.id, be_linkable_type: 'Issue').or(PmLink.where(linkable_id: @issue.id, linkable_type: 'Issue')).map(&:destroy) - project.incre_project_issue_cache_delete_count + project.incre_project_issue_cache_delete_count - if Site.has_blockchain? && @project.use_blockchain && !project.id.zero? - unlock_balance_on_blockchain(@issue.author_id.to_s, @project.id.to_s, @issue.blockchain_token_num.to_i) if @issue.blockchain_token_num.present? - end + if Site.has_blockchain? && @project.use_blockchain && !project.id.zero? + unlock_balance_on_blockchain(@issue.author_id.to_s, @project.id.to_s, @issue.blockchain_token_num.to_i) if @issue.blockchain_token_num.present? + end - if Site.has_notice_menu? && !project.id.zero? - SendTemplateMessageJob.perform_later('IssueDeleted', current_user.id, @issue&.subject, @issue.assigners.pluck(:id), @issue.author_id) + if Site.has_notice_menu? && !project.id.zero? + SendTemplateMessageJob.perform_later('IssueDeleted', current_user.id, @issue&.subject, @issue.assigners.pluck(:id), @issue.author_id) + end end end unlock("Api::V1::Issues::DeleteService:#{project.id}")