diff --git a/app/controllers/api/pm/issues_controller.rb b/app/controllers/api/pm/issues_controller.rb index f6dfd39b3..a10a70bce 100644 --- a/app/controllers/api/pm/issues_controller.rb +++ b/app/controllers/api/pm/issues_controller.rb @@ -145,7 +145,7 @@ class Api::Pm::IssuesController < Api::Pm::BaseController end p.workbook.add_worksheet(:name => 'link_relations') do |sheet| # links = PmLink.joins(:linkable_issue).where(issues: {pm_project_id: params[:pm_project_id]}) - links = PmLink.find_by_sql("SELECT `pm_links`.* FROM `pm_links` INNER JOIN `issues` ON `issues`.`id` = `pm_links`.`linkable_id` AND `pm_links`.`linkable_type` = 'Issue' WHERE `issues`.`pm_project_id` = #{params[pm_project_id]}") + links = PmLink.find_by_sql("SELECT `pm_links`.* FROM `pm_links` INNER JOIN `issues` ON `issues`.`id` = `pm_links`.`linkable_id` AND `pm_links`.`linkable_type` = 'Issue' WHERE `issues`.`pm_project_id` = #{params[:pm_project_id]}") sheet.add_row ["ID", "被关联工作项ID"] links.each do |link| sheet.add_row [link.linkable_id, link.be_linkable_id] diff --git a/app/models/concerns/matchable.rb b/app/models/concerns/matchable.rb index 27e5a0dda..3ada903af 100644 --- a/app/models/concerns/matchable.rb +++ b/app/models/concerns/matchable.rb @@ -6,8 +6,8 @@ module Matchable scope :with_project_language, ->(language_id) { where(project_language_id: language_id) unless language_id.blank? } scope :with_project_type, ->(project_type) { where(project_type: project_type) if Project.project_types.include?(project_type) } scope :by_name_or_identifier, ->(search) { where("name like :search or identifier LIKE :search", :search => "%#{search.split(" ").join('|')}%") unless search.blank? } - scope :with_project_topic, ->(topic_id) {joins(:project_topics).where(project_topics: {id: topic_id}) unless topic_id.blank?} - scope :with_project_topic_name, ->(topic_name) {joins(:project_topics).where(project_topics: {name: topic_name}) unless topic_name.blank?} + scope :with_project_topic, ->(topic_id) {left_outer_joins(:project_topics).where(project_topics: {id: topic_id}) unless topic_id.blank?} + scope :with_project_topic_name, ->(topic_name) {left_outer_joins(:project_topics).where(project_topics: {name: topic_name}) unless topic_name.blank?} end end diff --git a/app/services/api/v1/issues/list_service.rb b/app/services/api/v1/issues/list_service.rb index 2286b0cb0..951c4f463 100644 --- a/app/services/api/v1/issues/list_service.rb +++ b/app/services/api/v1/issues/list_service.rb @@ -64,7 +64,7 @@ class Api::V1::Issues::ListService < ApplicationService private def issue_query_data issues = @project&.id.zero? ? Issue.issue_issue : @project.issues.issue_issue - @total_issues_count = issues.where(pm_issue_type:[1, 2, 3]).distinct.size + @total_issues_count = pm_project_id.present? ? issues.where(pm_issue_type:[1, 2, 3]).count : issues.count case participant_category when 'aboutme' # 关于我的 issues = issues.joins(:issue_participants).where(issue_participants: {participant_type: %w[authored assigned atme], participant_id: participator&.id})