diff --git a/app/controllers/api/v1/issues/assigners_controller.rb b/app/controllers/api/v1/issues/assigners_controller.rb index b2b15a90a..84476138f 100644 --- a/app/controllers/api/v1/issues/assigners_controller.rb +++ b/app/controllers/api/v1/issues/assigners_controller.rb @@ -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 \ No newline at end of file diff --git a/app/controllers/api/v1/issues/authors_controller.rb b/app/controllers/api/v1/issues/authors_controller.rb index 8a5dbcdce..d0242a517 100644 --- a/app/controllers/api/v1/issues/authors_controller.rb +++ b/app/controllers/api/v1/issues/authors_controller.rb @@ -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 \ No newline at end of file diff --git a/app/controllers/api/v1/issues/issue_priorities_controller.rb b/app/controllers/api/v1/issues/issue_priorities_controller.rb index d26d8f3a8..319994a28 100644 --- a/app/controllers/api/v1/issues/issue_priorities_controller.rb +++ b/app/controllers/api/v1/issues/issue_priorities_controller.rb @@ -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 \ No newline at end of file diff --git a/app/controllers/api/v1/issues/issue_tags_controller.rb b/app/controllers/api/v1/issues/issue_tags_controller.rb index 3fa46a4da..63d8fb605 100644 --- a/app/controllers/api/v1/issues/issue_tags_controller.rb +++ b/app/controllers/api/v1/issues/issue_tags_controller.rb @@ -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 \ No newline at end of file diff --git a/app/controllers/api/v1/issues/milestones_controller.rb b/app/controllers/api/v1/issues/milestones_controller.rb index f25ec498c..bb5033904 100644 --- a/app/controllers/api/v1/issues/milestones_controller.rb +++ b/app/controllers/api/v1/issues/milestones_controller.rb @@ -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 diff --git a/app/controllers/api/v1/issues/statues_controller.rb b/app/controllers/api/v1/issues/statues_controller.rb index 0e9eff43f..5a7fbc338 100644 --- a/app/controllers/api/v1/issues/statues_controller.rb +++ b/app/controllers/api/v1/issues/statues_controller.rb @@ -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 \ No newline at end of file diff --git a/app/models/issue_tag.rb b/app/models/issue_tag.rb index bf2368654..2c62117d0 100644 --- a/app/models/issue_tag.rb +++ b/app/models/issue_tag.rb @@ -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 diff --git a/app/services/users/register_service.rb b/app/services/users/register_service.rb index bb984477f..bb3b3ada1 100644 --- a/app/services/users/register_service.rb +++ b/app/services/users/register_service.rb @@ -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 diff --git a/app/views/api/v1/issues/issue_tags/_detail.json.jbuilder b/app/views/api/v1/issues/issue_tags/_detail.json.jbuilder new file mode 100644 index 000000000..644badf3e --- /dev/null +++ b/app/views/api/v1/issues/issue_tags/_detail.json.jbuilder @@ -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") \ No newline at end of file diff --git a/app/views/api/v1/issues/issue_tags/index.json.jbuilder b/app/views/api/v1/issues/issue_tags/index.json.jbuilder index 548cd1b40..0bd055b57 100644 --- a/app/views/api/v1/issues/issue_tags/index.json.jbuilder +++ b/app/views/api/v1/issues/issue_tags/index.json.jbuilder @@ -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 \ No newline at end of file diff --git a/config/routes/api.rb b/config/routes/api.rb index bf79cb16c..15ebc44f1 100644 --- a/config/routes/api.rb +++ b/config/routes/api.rb @@ -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'