Browse Source

Merge branch 'standalone_develop' of https://gitlink.org.cn/Trustie/forgeplus into standalone_develop

pull/347/head
xxq250 1 year ago
parent
commit
463a0393eb
3 changed files with 47 additions and 0 deletions
  1. +35
    -0
      app/controllers/api/pm/issues_controller.rb
  2. +11
    -0
      app/views/api/pm/issues/link_issues.json.jbuilder
  3. +1
    -0
      config/routes/api.rb

+ 35
- 0
app/controllers/api/pm/issues_controller.rb View File

@@ -237,7 +237,42 @@ class Api::Pm::IssuesController < Api::Pm::BaseController
end
end

def link_issues
children_issues = Issue.where(root_id: @issue.id)
linkable_issues = Issue.where(id: PmLink.where(linkable_type: "Issue", linkable_id: @issue.id).pluck(:be_linkable_id))
belinkable_issues = Issue.where(id: PmLink.where(be_linkable_type: "Issue", be_linkable_id: @issue.id).pluck(:linkable_id))

full_link_issues_ids = children_issues.pluck(:id) | linkable_issues.pluck(:id) | belinkable_issues.pluck(:id)
compare_link_issues_ids = children_issues.pluck(:id) | linkable_issues.pluck(:id) | belinkable_issues.pluck(:id)
i = compare_link_issues_ids.count
while i > 0 do
children_issues = Issue.where(root_id: compare_link_issues_ids)
linkable_issues = Issue.where(id: PmLink.where(linkable_type: "Issue", linkable_id: compare_link_issues_ids).pluck(:be_linkable_id))
belinkable_issues = Issue.where(id: PmLink.where(be_linkable_type: "Issue", be_linkable_id: compare_link_issues_ids).pluck(:linkable_id))

compare_link_issues_ids = children_issues.pluck(:id) | linkable_issues.pluck(:id) | belinkable_issues.pluck(:id)
full_link_issues_ids = full_link_issues_ids | compare_link_issues_ids
i = compare_link_issues_ids.count
end

@requirement_issues = Issue.where(id:full_link_issues_ids, pm_issue_type:1)
@task_issues = Issue.where(id:full_link_issues_ids, pm_issue_type:2)
@bug_issues = Issue.where(id:full_link_issues_ids, pm_issue_type:3)
end

private
def circle_link_issues(issue_ids)
if issue_ids.present?
children_issues = Issue.joins(:parent_issue).where(issues: {id: issue_ids})
linkable_issues = Issue.where(id: PmLink.where(linkable_type: "Issue", linkable_id: issue_ids))
belinkable_issues = Issue.where(id: PmLink.where(be_linkable_type: "Issue", be_linkable_id: issue_ids))

return circle_link_issues(children_issues.pluck(:id))
else
return []
end
end

def check_issue_operate_permission
return if params[:project_id].to_i.zero?
render_forbidden('您没有操作权限!') unless @project.member?(current_user) || current_user.admin? || @issue.user == current_user


+ 11
- 0
app/views/api/pm/issues/link_issues.json.jbuilder View File

@@ -0,0 +1,11 @@
json.requirement_issues @requirement_issues.each do |issue|
json.partial! "api/v1/issues/simple_detail", locals: {issue: issue}
end

json.task_issues @task_issues.each do |issue|
json.partial! "api/v1/issues/simple_detail", locals: {issue: issue}
end

json.bug_issues @bug_issues.each do |issue|
json.partial! "api/v1/issues/simple_detail", locals: {issue: issue}
end

+ 1
- 0
config/routes/api.rb View File

@@ -14,6 +14,7 @@ defaults format: :json do
member do
get :link_index
get :parent_issues
get :link_issues
end
resources :issue_links



Loading…
Cancel
Save