diff --git a/app/controllers/api/pm/issues_controller.rb b/app/controllers/api/pm/issues_controller.rb index 74cd1c144..0af8e60cc 100644 --- a/app/controllers/api/pm/issues_controller.rb +++ b/app/controllers/api/pm/issues_controller.rb @@ -64,6 +64,7 @@ class Api::Pm::IssuesController < Api::Pm::BaseController end def batch_destroy + return render_ok if params[:ids].is_a?(Array) && params[:ids].blank? @object_result = Api::V1::Issues::BatchDeleteService.call(@project, @issues, current_user) if @object_result render_ok diff --git a/app/services/api/v1/issues/delete_service.rb b/app/services/api/v1/issues/delete_service.rb index 952f6a404..7210c0eb7 100644 --- a/app/services/api/v1/issues/delete_service.rb +++ b/app/services/api/v1/issues/delete_service.rb @@ -15,6 +15,8 @@ class Api::V1::Issues::DeleteService < ApplicationService raise Error, errors.full_messages.join(", ") unless valid? try_lock("Api::V1::Issues::DeleteService:#{project.id}") # 开始写数据,加锁 + delete_be_linkable_issues + delete_issue project.incre_project_issue_cache_delete_count @@ -38,4 +40,10 @@ class Api::V1::Issues::DeleteService < ApplicationService raise Error, "删除疑修失败!" unless issue.destroy! end + def delete_be_linkable_issues + pmlink_ids = PmLink.where(linkable: issue).pluck(:be_linkable_id) + linkable_issues = Issue.where(id: pmlink_ids) + raise Error, "删除疑修关联项失败!" unless linkable_issues.destroy_all + end + end \ No newline at end of file