diff --git a/app/controllers/api/pm/sprint_issues_controller.rb b/app/controllers/api/pm/sprint_issues_controller.rb index a1f4281c5..6251690b4 100644 --- a/app/controllers/api/pm/sprint_issues_controller.rb +++ b/app/controllers/api/pm/sprint_issues_controller.rb @@ -1,11 +1,44 @@ class Api::Pm::SprintIssuesController < Api::Pm::BaseController before_action :require_login, except: [:index] + def index @issues = Api::Pm::SprintIssues::ListService.call(query_params, current_user) @issues = kaminari_paginate(@issues) render 'api/v1/issues/index' end + + def count + pm_sprint_ids = params[:pm_sprint_ids].split(",") rescue [] + return tip_exception '参数错误' if pm_sprint_ids.blank? + @issues = Issue.where(pm_sprint_id: pm_sprint_ids) + data = {} + @issues_count = @issues.group(:pm_sprint_id).count + @issues_type_count = @issues.group(:pm_sprint_id, :status_id).count + pm_sprint_ids.map(&:to_i).map do |sprint_id| + data[sprint_id] = { + total: @issues_count[sprint_id] || 0, + closed: @issues_type_count[[sprint_id, 5]] || 0 + } + end + render_ok(data: data) + end + + def hour + pm_sprint_ids = params[:pm_sprint_ids].split(",") rescue [] + return tip_exception '参数错误' if pm_sprint_ids.blank? + @issues = Issue.where(pm_sprint_id: pm_sprint_ids) + data = {} + @issues_count = @issues.group(:pm_sprint_id).sum(:time_scale) + @issues_type_count = @issues.group(:pm_sprint_id, :status_id).sum(:time_scale) + pm_sprint_ids.map(&:to_i).map do |sprint_id| + data[sprint_id] = { + total: @issues_count[sprint_id] || 0, + closed: @issues_type_count[[sprint_id, 5]] || 0 + } + end + render_ok(data: data) + end def query_params params.permit( diff --git a/config/routes/api.rb b/config/routes/api.rb index 3901112df..487a2abfd 100644 --- a/config/routes/api.rb +++ b/config/routes/api.rb @@ -21,7 +21,12 @@ defaults format: :json do end end end - resources :sprint_issues, only: [:index] + resources :sprint_issues, only: [:index] do + collection do + get :count + get :hour + end + end resources :projects do collection do get :convert