mirror of
https://gitlink.org.cn/Gitlink/forgeplus.git
synced 2026-05-22 12:45:46 +08:00
merge from develop
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
class Api::V1::Projects::Pulls::Journals::CreateService < ApplicationService
|
||||
include ActiveModel::Model
|
||||
|
||||
attr_reader :project, :pull_request, :issue, :parent_id, :line_code, :note, :commit_id, :path, :type, :diff, :review_id, :user
|
||||
attr_accessor :journal
|
||||
|
||||
validates :type, inclusion: {in: %w(comment problem), message: '请输入正确的Type'}
|
||||
|
||||
def initialize(project, pull_request, params, user)
|
||||
@project = project
|
||||
@pull_request = pull_request
|
||||
@issue = pull_request&.issue
|
||||
@parent_id = params[:parent_id]
|
||||
@line_code = params[:line_code]
|
||||
@note = params[:note]
|
||||
@commit_id = params[:commit_id]
|
||||
@path = params[:path]
|
||||
@type = params[:type]
|
||||
@diff = params[:diff]
|
||||
@review_id = params[:review_id]
|
||||
@user = user
|
||||
end
|
||||
|
||||
def call
|
||||
raise Error, errors.full_messages.join(", ") unless valid?
|
||||
check_review_is_exists
|
||||
if type == 'problem'
|
||||
create_problem_journal
|
||||
else
|
||||
create_comment_journal
|
||||
end
|
||||
|
||||
journal
|
||||
end
|
||||
|
||||
private
|
||||
def create_comment_journal
|
||||
@journal = pull_request.journals.create!(user_id: user&.id, notes: note, parent_id: parent_id, review_id: review_id, commit_id: commit_id, diff: diff, line_code: line_code, path: path)
|
||||
end
|
||||
|
||||
def check_review_is_exists
|
||||
raise Error, '合并请求审查不存在!' unless @pull_request.reviews.exists?(review_id)
|
||||
end
|
||||
|
||||
def create_problem_journal
|
||||
@journal = pull_request.journals.create!(user_id: user&.id, notes: note, parent_id: parent_id, review_id: review_id, commit_id: commit_id, diff: diff, line_code: line_code, path: path, need_respond: true)
|
||||
end
|
||||
end
|
||||
51
app/services/api/v1/projects/pulls/journals/list_service.rb
Normal file
51
app/services/api/v1/projects/pulls/journals/list_service.rb
Normal file
@@ -0,0 +1,51 @@
|
||||
class Api::V1::Projects::Pulls::Journals::ListService < ApplicationService
|
||||
include ActiveModel::Model
|
||||
|
||||
attr_reader :project, :pull_request, :keyword, :review_id, :need_respond, :state, :parent_id, :sort_by, :sort_direction, :user
|
||||
attr_accessor :queried_journals
|
||||
|
||||
validates :sort_by, inclusion: {in: Journal.column_names, message: '请输入正确的SortBy'}
|
||||
validates :sort_direction, inclusion: {in: %w(asc desc), message: '请输入正确的SortDirection'}
|
||||
validates :need_respond, inclusion: {in: [true, false], message: '请输入正确的NeedRespond'}, allow_nil: true
|
||||
validates :state, inclusion: {in: %w(opened resolved disabled)}, allow_nil: true
|
||||
|
||||
def initialize(project, pull_request, params, user)
|
||||
@project = project
|
||||
@pull_request = pull_request
|
||||
@keyword = params[:keyword]
|
||||
@review_id = params[:review_id]
|
||||
@need_respond = ActiveModel::Type::Boolean.new.cast(params[:need_respond])
|
||||
@state = params[:state]
|
||||
@parent_id = params[:parent_id]
|
||||
@sort_by = params[:sort_by] || 'created_on'
|
||||
@sort_direction = params[:sort_direction] || 'asc'
|
||||
@user = user
|
||||
end
|
||||
|
||||
def call
|
||||
raise Error, errors.full_messages.join(",") unless valid?
|
||||
journal_query_data
|
||||
|
||||
queried_journals
|
||||
end
|
||||
|
||||
private
|
||||
def journal_query_data
|
||||
journals = @pull_request.journals
|
||||
if parent_id.present?
|
||||
journals = journals.where(parent_id: parent_id)
|
||||
else
|
||||
journals = journals.parent_journals
|
||||
end
|
||||
|
||||
journals = journals.where(review_id: review_id) if review_id.present?
|
||||
journals = journals.where(need_respond: need_respond) if need_respond.present?
|
||||
journals = journals.where(state: state) if state.present?
|
||||
|
||||
q = journals.ransack(notes_cont: keyword)
|
||||
scope = q.result.includes(:user, :resolveer, review: [:reviewer, pull_request: :issue])
|
||||
scope = scope.order("journals.#{sort_by} #{sort_direction}")
|
||||
|
||||
@queried_journals = scope
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,38 @@
|
||||
class Api::V1::Projects::Pulls::Journals::UpdateService < ApplicationService
|
||||
include ActiveModel::Model
|
||||
|
||||
attr_reader :project, :pull_request, :journal, :note, :commit_id, :state, :user
|
||||
attr_accessor :updated_journal
|
||||
|
||||
validates :state, inclusion: {in: %w(opened resolved disabled)}
|
||||
|
||||
def initialize(project, pull_request, journal, params, user)
|
||||
@project = project
|
||||
@pull_request = pull_request
|
||||
@journal = journal
|
||||
@note = params[:note]
|
||||
@commit_id = params[:commit_id]
|
||||
@state = params[:state]
|
||||
@user = user
|
||||
end
|
||||
|
||||
def call
|
||||
raise Error, errors.full_messages.join(", ") unless valid?
|
||||
|
||||
update_journal
|
||||
|
||||
updated_journal
|
||||
end
|
||||
|
||||
private
|
||||
def update_journal
|
||||
journal.attributes = {notes: note, commit_id: commit_id, state: state}
|
||||
if state == 'resolved'
|
||||
journal.resolve_at = Time.now
|
||||
journal.resolveer_id = user.id
|
||||
end
|
||||
return Error, '保存评论失败!' unless journal.save
|
||||
|
||||
@updated_journal = journal.reload
|
||||
end
|
||||
end
|
||||
@@ -1,7 +1,7 @@
|
||||
class Api::V1::Projects::Pulls::ListService < ApplicationService
|
||||
include ActiveModel::Model
|
||||
|
||||
attr_reader :project, :keyword, :status, :priority_id, :issue_tag_id, :version_id, :reviewer_id, :sort_by, :sort_direction
|
||||
attr_reader :project, :keyword, :status, :priority_id, :issue_tag_id, :version_id, :reviewer_id, :assign_user_id, :sort_by, :sort_direction
|
||||
attr_accessor :queried_pull_requests
|
||||
|
||||
validates :status, inclusion: {in: [0, 1, 2], message: "请输入正确的Status"}, allow_nil: true
|
||||
@@ -16,6 +16,7 @@ class Api::V1::Projects::Pulls::ListService < ApplicationService
|
||||
@issue_tag_id = params[:issue_tag_id]
|
||||
@version_id = params[:version_id]
|
||||
@reviewer_id = params[:reviewer_id]
|
||||
@assign_user_id = params[:assign_user_id]
|
||||
@sort_by = params[:sort_by] || 'created_at'
|
||||
@sort_direction = params[:sort_direction] || 'desc'
|
||||
end
|
||||
@@ -36,6 +37,7 @@ class Api::V1::Projects::Pulls::ListService < ApplicationService
|
||||
pull_requests = pull_requests.where(issue_tags: {id: issue_tag_id}) if issue_tag_id.present?
|
||||
pull_requests = pull_requests.where(issues: {fixed_version_id: version_id}) if version_id.present?
|
||||
pull_requests = pull_requests.where(users: {id: reviewer_id}) if reviewer_id.present?
|
||||
pull_requests = pull_requests.where(issues: {assigned_to_id: assign_user_id}) if assign_user_id.present?
|
||||
|
||||
q = pull_requests.ransack(title_or_body_cont: keyword)
|
||||
scope = q.result.includes(:fork_project, :journals, :reviews, :reviewers, issue: [:journals, :priority, :version, :issue_tags])
|
||||
|
||||
@@ -20,10 +20,10 @@ class Api::V1::Projects::Pulls::Reviews::CreateService < ApplicationService
|
||||
raise Error, errors.full_messages.join(", ") unless valid?
|
||||
ActiveRecord::Base.transaction do
|
||||
create_review
|
||||
create_journal
|
||||
# create_journal
|
||||
end
|
||||
|
||||
return @journal, @review
|
||||
@review
|
||||
# rescue
|
||||
# raise Error, '服务器错误,请联系系统管理员!'
|
||||
end
|
||||
@@ -33,8 +33,5 @@ class Api::V1::Projects::Pulls::Reviews::CreateService < ApplicationService
|
||||
@review = pull_request.reviews.create!(status: status, content: content, commit_id: commit_id, reviewer_id: @current_user.id)
|
||||
end
|
||||
|
||||
def create_journal
|
||||
@journal = pull_request.journals.create!(notes: content, user_id: @current_user.id, review_id: @review.id)
|
||||
end
|
||||
|
||||
end
|
||||
@@ -13,7 +13,7 @@ class Api::V1::Users::Projects::ListService < ApplicationService
|
||||
def initialize(observe_user, params, current_user=nil)
|
||||
@observe_user = observe_user
|
||||
@category = params[:category] || 'all'
|
||||
@is_public = params[:is_public]
|
||||
@is_public = ActiveModel::Type::Boolean.new.cast(params[:is_public])
|
||||
@project_type = params[:project_type]
|
||||
@sort_by = params[:sort_by] || 'updated_on'
|
||||
@sort_direction = params[:sort_direction] || 'desc'
|
||||
|
||||
@@ -15,6 +15,7 @@ class Issues::ListQueryService < ApplicationService
|
||||
end_time = params[:due_date]
|
||||
|
||||
issues = all_issues.issue_index_includes
|
||||
issues = issues.includes(pull_request: :reviewers)
|
||||
if status_type.to_s == "2" #表示关闭中的
|
||||
issues = issues.where(status_id: 5)
|
||||
elsif status_type.to_s == "1"
|
||||
|
||||
Reference in New Issue
Block a user