|
|
@@ -237,7 +237,42 @@ class Api::Pm::IssuesController < Api::Pm::BaseController |
|
|
end |
|
|
end |
|
|
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 |
|
|
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 |
|
|
def check_issue_operate_permission |
|
|
return if params[:project_id].to_i.zero? |
|
|
return if params[:project_id].to_i.zero? |
|
|
render_forbidden('您没有操作权限!') unless @project.member?(current_user) || current_user.admin? || @issue.user == current_user |
|
|
render_forbidden('您没有操作权限!') unless @project.member?(current_user) || current_user.admin? || @issue.user == current_user |
|
|
|