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
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 = paginate @applied_transfer_projects
@applied_transfer_projects = paginate @applied_transfer_projects.order("created_at desc")
end
# 接受迁移

View File

@ -3,7 +3,7 @@ class SendTransferProjectAppliedMessageJob < ApplicationJob
def perform(applied_transfer_project, applied_user, message_status)
project = applied_transfer_project.project
owner = applied_transfer_project.owner
owner = project.owner
return unless project.present?
return unless owner.present?
if owner.is_a?(Organization)
@ -12,13 +12,22 @@ class SendTransferProjectAppliedMessageJob < ApplicationJob
receivers = project.managers
end
receivers.each do |rec|
next if applied_user.id == rec.user_id # 自己不要给自己发通知
AppliedMessage.create!(user_id: rec.user_id,
applied: applied_transfer_project,
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,
project_id: project.id)
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
private

View File

@ -1,11 +1,12 @@
class Projects::AcceptTransferService < ApplicationService
attr_accessor :applied_transfer_project
attr_accessor :applied_transfer_project, :owner
attr_reader :user, :project
def initialize(user, project)
@user = user
@project = project
@applied_transfer_project = project.applied_transfer_project
@owner = @applied_transfer_project.owner
end
def call
@ -26,7 +27,12 @@ class Projects::AcceptTransferService < ApplicationService
private
def validate!
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
def update_apply
@ -34,7 +40,7 @@ class Projects::AcceptTransferService < ApplicationService
end
def operate_project
@project = Projects::TransferService.call(@project, @applied_transfer_project.owner)
@project = Projects::TransferService.call(@project, @owner)
end
def send_apply_message

View File

@ -1,11 +1,12 @@
class Projects::RefuseTransferService < ApplicationService
attr_accessor :applied_transfer_project
attr_accessor :applied_transfer_project, :owner
attr_reader :user, :project
def initialize(user, project)
@user = user
@project = project
@applied_transfer_project = project.applied_transfer_project
@owner = @applied_transfer_project.owner
end
def call
@ -21,7 +22,12 @@ class Projects::RefuseTransferService < ApplicationService
private
def validate!
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
def update_apply

View File

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