|
|
|
@@ -3,7 +3,7 @@ class Api::Pm::Issues::UpdateService < ApplicationService |
|
|
|
include Api::V1::Issues::Concerns::Checkable |
|
|
|
include Api::V1::Issues::Concerns::Loadable |
|
|
|
|
|
|
|
attr_reader :project, :issue, :current_user |
|
|
|
attr_reader :project, :issue, :current_user, :operate_by |
|
|
|
attr_reader :status_id, :priority_id, :milestone_id, :branch_name, :start_date, :due_date, :subject, :description, :blockchain_token_num |
|
|
|
attr_reader :target_pm_project_id, :pm_sprint_id, :pm_issue_type, :root_id, :time_scale |
|
|
|
attr_reader :issue_tag_ids, :assigner_ids, :attachment_ids, :receivers_login, :before_issue_tag_ids, :before_assigner_ids, :project_id |
|
|
|
@@ -12,10 +12,11 @@ class Api::Pm::Issues::UpdateService < ApplicationService |
|
|
|
validates :project, :issue, :current_user, presence: true |
|
|
|
validates :blockchain_token_num, numericality: {greater_than: 0}, allow_blank: true |
|
|
|
|
|
|
|
def initialize(project, issue, params, current_user = nil) |
|
|
|
def initialize(project, issue, params, current_user = nil, operate_by='Issue') |
|
|
|
@project = project |
|
|
|
@issue = issue |
|
|
|
@current_user = current_user |
|
|
|
@operate_by = operate_by |
|
|
|
@status_id = params[:status_id] |
|
|
|
@priority_id = params[:priority_id] |
|
|
|
@milestone_id = params[:milestone_id] |
|
|
|
@@ -183,91 +184,91 @@ class Api::Pm::Issues::UpdateService < ApplicationService |
|
|
|
begin |
|
|
|
# 更改标题 |
|
|
|
if @updated_issue.previous_changes["subject"].present? |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id}) |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id, operate_by: @operate_by}) |
|
|
|
journal.journal_details.create!({property: "attr", prop_key: "subject", old_value: @updated_issue.previous_changes["subject"][0], value: @updated_issue.previous_changes["subject"][1]}) |
|
|
|
end |
|
|
|
|
|
|
|
# 更改描述 |
|
|
|
if @updated_issue.previous_changes["description"].present? |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id}) |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id, operate_by: @operate_by}) |
|
|
|
journal.journal_details.create!({property: "attr", prop_key: "description", old_value: @updated_issue.previous_changes["description"][0], value: @updated_issue.previous_changes["description"][1]}) |
|
|
|
end |
|
|
|
|
|
|
|
# 修改状态 |
|
|
|
if @updated_issue.previous_changes["status_id"].present? |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id}) |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id, operate_by: @operate_by}) |
|
|
|
journal.journal_details.create!({property: @updated_issue.pm_issue_type_string, prop_key: "status_id", old_value: @updated_issue.previous_changes["status_id"][0], value: @updated_issue.previous_changes["status_id"][1]}) |
|
|
|
end |
|
|
|
|
|
|
|
# 修改优先级 |
|
|
|
if @updated_issue.previous_changes["priority_id"].present? |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id}) |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id, operate_by: @operate_by}) |
|
|
|
journal.journal_details.create!({property: "attr", prop_key: "priority_id", old_value: @updated_issue.previous_changes["priority_id"][0], value: @updated_issue.previous_changes["priority_id"][1]}) |
|
|
|
end |
|
|
|
|
|
|
|
# 修改工作项类型 |
|
|
|
if @updated_issue.previous_changes["pm_issue_type"].present? |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id}) |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id, operate_by: @operate_by}) |
|
|
|
journal.journal_details.create!({property: "attr", prop_key: "pm_issue_type", old_value: @updated_issue.previous_changes["pm_issue_type"][0], value: @updated_issue.previous_changes["pm_issue_type"][1]}) |
|
|
|
end |
|
|
|
|
|
|
|
# 修改迭代 |
|
|
|
if @updated_issue.previous_changes["pm_sprint_id"].present? |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id}) |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id, operate_by: @operate_by}) |
|
|
|
journal.journal_details.create!({property: "attr", prop_key: "pm_sprint_id", old_value: @updated_issue.previous_changes["pm_sprint_id"][0], value: @updated_issue.previous_changes["pm_sprint_id"][1]}) |
|
|
|
end |
|
|
|
|
|
|
|
# 修改代码库 |
|
|
|
if @updated_issue.previous_changes["project_id"].present? |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id}) |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id, operate_by: @operate_by}) |
|
|
|
journal.journal_details.create!({property: "attr", prop_key: "project_id", old_value: @updated_issue.previous_changes["project_id"][0], value: @updated_issue.previous_changes["project_id"][1]}) |
|
|
|
end |
|
|
|
|
|
|
|
# 修改里程碑 |
|
|
|
if @updated_issue.previous_changes["fixed_version_id"].present? |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id}) |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id, operate_by: @operate_by}) |
|
|
|
journal.journal_details.create!({property: "attr", prop_key: "fixed_version_id", old_value: @updated_issue.previous_changes["fixed_version_id"][0], value: @updated_issue.previous_changes["fixed_version_id"][1]}) |
|
|
|
end |
|
|
|
|
|
|
|
# 更改分支 |
|
|
|
if @updated_issue.previous_changes["branch_name"].present? |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id}) |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id, operate_by: @operate_by}) |
|
|
|
journal.journal_details.create!({property: "attr", prop_key: "branch_name", old_value: @updated_issue.previous_changes["branch_name"][0], value: @updated_issue.previous_changes["branch_name"][1]}) |
|
|
|
end |
|
|
|
|
|
|
|
# 更改开始时间 |
|
|
|
if @updated_issue.previous_changes["start_date"].present? |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id}) |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id, operate_by: @operate_by}) |
|
|
|
journal.journal_details.create!({property: "attr", prop_key: "start_date", old_value: @updated_issue.previous_changes["start_date"][0], value: @updated_issue.previous_changes["start_date"][1]}) |
|
|
|
end |
|
|
|
|
|
|
|
# 更改结束时间 |
|
|
|
if @updated_issue.previous_changes["due_date"].present? |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id}) |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id, operate_by: @operate_by}) |
|
|
|
journal.journal_details.create!({property: "attr", prop_key: "due_date", old_value: @updated_issue.previous_changes["due_date"][0], value: @updated_issue.previous_changes["due_date"][1]}) |
|
|
|
end |
|
|
|
|
|
|
|
# 更改预估工时 |
|
|
|
if @updated_issue.previous_changes["time_scale"].present? |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id}) |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id, operate_by: @operate_by}) |
|
|
|
journal.journal_details.create!({property: "attr", prop_key: "time_scale", old_value: @updated_issue.previous_changes["time_scale"][0], value: @updated_issue.previous_changes["time_scale"][1]}) |
|
|
|
end |
|
|
|
|
|
|
|
# 更改父工作项 |
|
|
|
if @updated_issue.previous_changes["root_id"].present? |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id}) |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id, operate_by: @operate_by}) |
|
|
|
journal.journal_details.create!({property: @updated_issue.pm_issue_type_string, prop_key: "root_id", old_value: @updated_issue.previous_changes["root_id"][0], value: @updated_issue.previous_changes["root_id"][1]}) |
|
|
|
|
|
|
|
# 更改子工作项 |
|
|
|
before_parent_issue = Issue.find_by_id(@updated_issue.previous_changes["root_id"][0]) |
|
|
|
if before_parent_issue.present? |
|
|
|
journal = before_parent_issue.journals.create!({user_id: current_user.id}) |
|
|
|
journal = before_parent_issue.journals.create!({user_id: current_user.id, operate_by: @operate_by}) |
|
|
|
journal.journal_details.create!({property: @updated_issue.pm_issue_type_string, prop_key: "tag_leaf_issue", old_value: @updated_issue.id.to_s}) |
|
|
|
end |
|
|
|
|
|
|
|
after_parent_issue = Issue.find_by_id(@updated_issue.previous_changes["root_id"][1]) |
|
|
|
if after_parent_issue.present? |
|
|
|
journal = after_parent_issue.journals.create!({user_id: current_user.id}) |
|
|
|
journal = after_parent_issue.journals.create!({user_id: current_user.id, operate_by: @operate_by}) |
|
|
|
journal.journal_details.create!({property: @updated_issue.pm_issue_type_string, prop_key: "tag_leaf_issue", value: @updated_issue.id.to_s}) |
|
|
|
end |
|
|
|
end |
|
|
|
@@ -283,7 +284,7 @@ class Api::Pm::Issues::UpdateService < ApplicationService |
|
|
|
new_assigner_ids = [] if @assigner_ids.nil? |
|
|
|
now_assigner_ids = @updated_issue.assigners.pluck(:id) |
|
|
|
if !(now_assigner_ids.sort == new_assigner_ids.sort) |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id}) |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id, operate_by: @operate_by}) |
|
|
|
journal.journal_details.create!({property: "assigner", prop_key: "#{new_assigner_ids.size}", old_value: now_assigner_ids.join(","), value: new_assigner_ids.join(",")}) |
|
|
|
end |
|
|
|
|
|
|
|
@@ -299,7 +300,7 @@ class Api::Pm::Issues::UpdateService < ApplicationService |
|
|
|
new_issue_tag_ids = [] if @issue_tag_ids.nil? |
|
|
|
now_issue_tag_ids = @updated_issue.issue_tags.pluck(:id) |
|
|
|
if !(now_issue_tag_ids.sort == new_issue_tag_ids.sort) |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id}) |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id, operate_by: @operate_by}) |
|
|
|
journal.journal_details.create!({property: "issue_tag", prop_key: "#{new_issue_tag_ids.size}", old_value: now_issue_tag_ids.join(","), value: new_issue_tag_ids.join(",")}) |
|
|
|
end |
|
|
|
rescue |
|
|
|
@@ -315,7 +316,7 @@ class Api::Pm::Issues::UpdateService < ApplicationService |
|
|
|
new_attachment_ids = [] if @attachment_ids.nil? |
|
|
|
now_attachment_ids = @updated_issue.attachments.pluck(:id) |
|
|
|
if !(now_attachment_ids.sort == new_attachment_ids.sort) |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id}) |
|
|
|
journal = @updated_issue.journals.create!({user_id: current_user.id, operate_by: @operate_by}) |
|
|
|
journal.journal_details.create!({property: "attachment", prop_key: "#{new_attachment_ids.size}", old_value: now_attachment_ids.join(","), value: new_attachment_ids.join(",")}) |
|
|
|
end |
|
|
|
rescue |
|
|
|
|