新增:标记管理接口,以及列表下拉框搜索参数

This commit is contained in:
yystopf 2023-02-15 17:24:36 +08:00
parent 2899f3b18e
commit 2a8e0d2be8
11 changed files with 67 additions and 5 deletions

View File

@ -5,7 +5,8 @@ class Api::V1::Issues::AssignersController < Api::V1::BaseController
# 负责人列表
def index
@assigners = User.joins(assigned_issues: :project).where(projects: {id: @project&.id})
@assigners = @assigners.order("users.id=#{current_user.id} desc, issue_assigners.created_at desc").distinct
@assigners = @assigners.order("users.id=#{current_user.id} desc").distinct
@assigners = @assigners.ransack(login_or_nickname_cont: params[:keyword]).result if params[:keyword].present?
@assigners = kaminary_select_paginate(@assigners)
end
end

View File

@ -5,6 +5,7 @@ class Api::V1::Issues::AuthorsController < Api::V1::BaseController
def index
@authors = User.joins(issues: :project).where(projects: {id: @project&.id})
@authors = @authors.order("users.id=#{current_user.id} desc").distinct
@authors = @authors.ransack(login_or_nickname_cont: params[:keyword]).result if params[:keyword].present?
@authors = kaminary_select_paginate(@authors)
end
end

View File

@ -4,6 +4,7 @@ class Api::V1::Issues::IssuePrioritiesController < Api::V1::BaseController
def index
@priorities = IssuePriority.order(position: :asc)
@priorities = @priorities.ransack(name_cont: params[:keyword]).result if params[:keyword]
@priorities = kaminary_select_paginate(@priorities)
end
end

View File

@ -1,13 +1,42 @@
class Api::V1::Issues::IssueTagsController < Api::V1::BaseController
before_action :require_public_and_member_above, only: [:index]
before_action :require_public_and_member_above, only: [:index, :create, :update, :destroy]
def index
@issue_tags = @project.issue_tags.order("#{order_by} #{order_direction}")
@issue_tags = @issue_tags.ransack(name_cont: params[:keyword]).result if params[:keyword].present?
if params[:only_name]
@issue_tags = kaminary_select_paginate(@issue_tags.select(:id, :name, :color))
else
@issue_tags = kaminari_paginate(@issue_tags)
@issue_tags = kaminari_paginate(@issue_tags.includes(:project, :user))
end
end
def create
@issue_tag = @project.issue_tags.new(issue_tag_params)
if @issue_tag.save!
render_ok
else
render_error("创建标记失败!")
end
end
before_action :load_issue_tag, only: [:update, :destroy]
def update
@issue_tag.attributes = issue_tag_params
if @issue_tag.save!
render_ok
else
render_error("更新标记失败!")
end
end
def destroy
if @issue_tag.destroy!
render_ok
else
render_error("删除标记失败!")
end
end
@ -24,4 +53,12 @@ class Api::V1::Issues::IssueTagsController < Api::V1::BaseController
order_direction = %w(desc asc).include?(order_direction) ? order_direction : "desc"
order_direction
end
def issue_tag_params
params.permit(:name, :description, :color)
end
def load_issue_tag
@issue_tag = @project.issue_tags.find_by_id(params[:id])
end
end

View File

@ -8,6 +8,7 @@ class Api::V1::Issues::MilestonesController < Api::V1::BaseController
else
@milestones = @project.versions.includes(:issues)
end
@milestones = @milestones.ransack(name_or_description_cont: params[:keyword]).result if params[:keyword].present?
@milestones = kaminary_select_paginate(@milestones)
end

View File

@ -5,6 +5,7 @@ class Api::V1::Issues::StatuesController < Api::V1::BaseController
# 状态列表
def index
@statues = IssueStatus.order("position asc")
@statues = @statues.ransack(name_cont: params[:keyword]).result if params[:keyword].present?
@statues = kaminary_select_paginate(@statues)
end
end

View File

@ -24,5 +24,6 @@ class IssueTag < ApplicationRecord
has_many :issue_tags_relates, dependent: :destroy
has_many :issues, through: :issue_tags_relates
belongs_to :project, optional: true, counter_cache: true
belongs_to :user, optional: true
end

View File

@ -12,7 +12,7 @@ class Users::RegisterService < ApplicationService
namespace = strip(@namespace)
password = strip(@password)
# Rails.logger.info "Users::RegisterService params: ##### #{params} "
Rails.logger.info "Users::RegisterService params: ##### #{params} "
email, phone =
if register_type == 1

View File

@ -0,0 +1,17 @@
json.(tag, :name, :description, :color, :issues_count)
json.project do
if tag.project.present?
json.partial! "api/v1/projects/simple_detail", project: tag.project
else
json.nil!
end
end
json.user do
if tag.user.present?
json.partial! "api/v1/users/simple_user", user: tag.user
else
json.nil!
end
end
json.created_at tag.created_at.strftime("%Y-%m-%d %H:%M")
json.updated_at tag.updated_at.strftime("%Y-%m-%d %H:%M")

View File

@ -2,5 +2,7 @@ json.total_count @issue_tags.total_count
json.issue_tags @issue_tags.each do |tag|
if params[:only_name]
json.partial! "simple_detail", locals: {tag: tag}
else
json.partial! "detail", locals: {tag: tag}
end
end

View File

@ -32,7 +32,7 @@ defaults format: :json do
end
end
scope module: :issues do
resources :issue_tags, only: [:index]
resources :issue_tags, except: [:new, :edit]
resources :milestones, except: [:new, :edit]
resources :issue_statues, only: [:index], controller: '/api/v1/issues/statues'
resources :issue_authors, only: [:index], controller: '/api/v1/issues/authors'