fix:some bug

This commit is contained in:
vilet.yy 2021-04-26 16:50:50 +08:00
parent 13768f9778
commit 0d828ead1f
5 changed files with 30 additions and 8 deletions

View File

@ -7,7 +7,7 @@ class Users::AppliedTransferProjectsController < Users::BaseController
user_collection_sql = AppliedTransferProject.where(owner_id: @_observed_user.id).to_sql user_collection_sql = AppliedTransferProject.where(owner_id: @_observed_user.id).to_sql
org_collection_sql = AppliedTransferProject.where(owner_id: Organization.joins(team_users: :team).where(team_users: {user_id: @_observed_user.id}, teams: {authorize: %w(admin owner)} )).to_sql org_collection_sql = AppliedTransferProject.where(owner_id: Organization.joins(team_users: :team).where(team_users: {user_id: @_observed_user.id}, teams: {authorize: %w(admin owner)} )).to_sql
@applied_transfer_projects = AppliedTransferProject.from("( #{ user_collection_sql } UNION #{ org_collection_sql } ) AS applied_transfer_projects") @applied_transfer_projects = AppliedTransferProject.from("( #{ user_collection_sql } UNION #{ org_collection_sql } ) AS applied_transfer_projects")
@applied_transfer_projects = paginate @applied_transfer_projects @applied_transfer_projects = paginate @applied_transfer_projects.order("created_at desc")
end end
# 接受迁移 # 接受迁移

View File

@ -3,7 +3,7 @@ class SendTransferProjectAppliedMessageJob < ApplicationJob
def perform(applied_transfer_project, applied_user, message_status) def perform(applied_transfer_project, applied_user, message_status)
project = applied_transfer_project.project project = applied_transfer_project.project
owner = applied_transfer_project.owner owner = project.owner
return unless project.present? return unless project.present?
return unless owner.present? return unless owner.present?
if owner.is_a?(Organization) if owner.is_a?(Organization)
@ -12,13 +12,22 @@ class SendTransferProjectAppliedMessageJob < ApplicationJob
receivers = project.managers receivers = project.managers
end end
receivers.each do |rec| receivers.each do |rec|
next if applied_user.id == rec.user_id # 自己不要给自己发通知
AppliedMessage.create!(user_id: rec.user_id, AppliedMessage.create!(user_id: rec.user_id,
applied: applied_transfer_project, applied: applied_transfer_project,
status: message_status, status: message_status,
name: build_name(project.name, owner.real_name, message_status), name: build_name(project.name, applied_transfer_project&.owner&.real_name, message_status),
applied_user_id: applied_user.id, applied_user_id: applied_user.id,
project_id: project.id) project_id: project.id)
end end
if message_status == 'successed' # 如果转移成功,给转移发起者发通知已转移成功
AppliedMessage.find_or_create_by!(user_id: applied_transfer_project.user_id,
applied: applied_transfer_project,
status: message_status,
name: build_name(project.name, applied_transfer_project&.owner&.real_name, message_status),
applied_user_id: applied_user.id,
project_id: project.id)
end
end end
private private

View File

@ -1,11 +1,12 @@
class Projects::AcceptTransferService < ApplicationService class Projects::AcceptTransferService < ApplicationService
attr_accessor :applied_transfer_project attr_accessor :applied_transfer_project, :owner
attr_reader :user, :project attr_reader :user, :project
def initialize(user, project) def initialize(user, project)
@user = user @user = user
@project = project @project = project
@applied_transfer_project = project.applied_transfer_project @applied_transfer_project = project.applied_transfer_project
@owner = @applied_transfer_project.owner
end end
def call def call
@ -26,7 +27,12 @@ class Projects::AcceptTransferService < ApplicationService
private private
def validate! def validate!
raise Error, '该仓库未在迁移' unless @applied_transfer_project.present? && @project.is_transfering raise Error, '该仓库未在迁移' unless @applied_transfer_project.present? && @project.is_transfering
raise Error, '未拥有接受转移权限' unless @user.admin? || @project.manager?(@user) raise Error, '未拥有接受转移权限' unless is_permit_operator
end
def is_permit_operator
return true if @user == @owner
return @owner.is_a?(Organization) && @owner.is_admin?(@user)
end end
def update_apply def update_apply
@ -34,7 +40,7 @@ class Projects::AcceptTransferService < ApplicationService
end end
def operate_project def operate_project
@project = Projects::TransferService.call(@project, @applied_transfer_project.owner) @project = Projects::TransferService.call(@project, @owner)
end end
def send_apply_message def send_apply_message

View File

@ -1,11 +1,12 @@
class Projects::RefuseTransferService < ApplicationService class Projects::RefuseTransferService < ApplicationService
attr_accessor :applied_transfer_project attr_accessor :applied_transfer_project, :owner
attr_reader :user, :project attr_reader :user, :project
def initialize(user, project) def initialize(user, project)
@user = user @user = user
@project = project @project = project
@applied_transfer_project = project.applied_transfer_project @applied_transfer_project = project.applied_transfer_project
@owner = @applied_transfer_project.owner
end end
def call def call
@ -21,7 +22,12 @@ class Projects::RefuseTransferService < ApplicationService
private private
def validate! def validate!
raise Error, '该仓库未在迁移' unless @applied_transfer_project.present? && @project.is_transfering raise Error, '该仓库未在迁移' unless @applied_transfer_project.present? && @project.is_transfering
raise Error, '未拥有拒绝转移权限' unless @user.admin? || @project.manager?(@user) raise Error, '未拥有拒绝转移权限' unless is_permit_operator
end
def is_permit_operator
return true if @user == @owner
return @owner.is_a?(Organization) && @owner.is_admin?(@user)
end end
def update_apply def update_apply

View File

@ -23,6 +23,7 @@ class Projects::TransferService < ApplicationService
private private
def update_owner def update_owner
project.members.find_by(user_id: owner.id).destroy! if owner.is_a?(User)
project.update!(user_id: new_owner.id) project.update!(user_id: new_owner.id)
end end