forked from Trustie/forgeplus
add: user and organization merge show api
This commit is contained in:
parent
40c6425aee
commit
039779339a
|
@ -1,5 +1,5 @@
|
|||
class OwnersController < ApplicationController
|
||||
before_action :require_login
|
||||
before_action :require_login, only: [:index]
|
||||
|
||||
def index
|
||||
@owners = []
|
||||
|
@ -9,4 +9,42 @@ class OwnersController < ApplicationController
|
|||
teams: {can_create_org_project: true})
|
||||
.distinct
|
||||
end
|
||||
|
||||
def show
|
||||
@owner = Owner.find_by(login: params[:id]) || Owner.find_by(id: params[:id])
|
||||
# 组织
|
||||
if @owner.is_a?(Organization)
|
||||
@can_create_project = @owner.can_create_project?(current_user.id)
|
||||
@is_admin = current_user.admin? || @owner.is_owner?(current_user.id)
|
||||
@is_member = @owner.is_member?(current_user.id)
|
||||
# 用户
|
||||
else
|
||||
#待办事项,现在未做
|
||||
if User.current.admin? || User.current.login == @owner.login
|
||||
@waiting_applied_messages = @owner.applied_messages.waiting
|
||||
@common_applied_transfer_projects = AppliedTransferProject.where(owner_id: @owner.id).common + AppliedTransferProject.where(owner_id: Organization.joins(team_users: :team).where(team_users: {user_id: @owner.id}, teams: {authorize: %w(admin owner)} )).common
|
||||
@common_applied_projects = AppliedProject.where(project_id: @owner.full_admin_projects).common
|
||||
@undo_events = @waiting_applied_messages.size + @common_applied_transfer_projects.size + @common_applied_projects.size
|
||||
else
|
||||
@waiting_applied_messages = AppliedMessage.none
|
||||
@common_applied_transfer_projects = AppliedTransferProject.none
|
||||
@common_applied_projects = AppliedProject.none
|
||||
@undo_events = 0
|
||||
end
|
||||
#用户的组织数量
|
||||
# @user_composes_count = @user.composes.size
|
||||
@user_composes_count = 0
|
||||
user_organizations = User.current.logged? ? @owner.organizations.with_visibility(%w(common limited)) + @owner.organizations.with_visibility("privacy").joins(:team_users).where(team_users: {user_id: current_user.id}) : @owner.organizations.with_visibility("common")
|
||||
@user_org_count = user_organizations.size
|
||||
normal_projects = Project.members_projects(@owner.id).to_sql
|
||||
org_projects = Project.joins(team_projects: [team: :team_users]).where(team_users: {user_id: @owner.id}).to_sql
|
||||
projects = Project.from("( #{ normal_projects} UNION #{ org_projects } ) AS projects").distinct
|
||||
user_projects = User.current.logged? && (User.current.admin? || User.current.login == @owner.login) ? projects : projects.visible
|
||||
@projects_common_count = user_projects.common.size
|
||||
@projects_mirrior_count = user_projects.mirror.size
|
||||
@projects_sync_mirrior_count = user_projects.sync_mirror.size
|
||||
puts @owner.as_json
|
||||
end
|
||||
end
|
||||
|
||||
end
|
|
@ -0,0 +1,24 @@
|
|||
json.type @owner.type
|
||||
if @owner.is_a?(Organization)
|
||||
json.partial! "organizations/detail", organization: @owner
|
||||
json.can_create_project @can_create_project
|
||||
json.is_admin @is_admin
|
||||
json.is_member @is_member
|
||||
else
|
||||
json.partial! 'users/user', locals: { user: @owner }
|
||||
json.undo_messages @waiting_applied_messages.size
|
||||
json.undo_transfer_projects @common_applied_transfer_projects.size
|
||||
json.undo_join_projects @common_applied_projects.size
|
||||
json.undo_events @undo_events
|
||||
json.user_composes_count @user_composes_count
|
||||
json.user_org_count @user_org_count
|
||||
json.common_projects_count @projects_common_count
|
||||
json.mirror_projects_count @projects_mirrior_count
|
||||
json.sync_mirror_projects_count @projects_sync_mirrior_count
|
||||
json.created_time format_time(@owner.created_on)
|
||||
json.email @owner.show_email ? @owner.mail : nil
|
||||
json.province @owner.show_location ? @owner.province : nil
|
||||
json.city @owner.show_location ? @owner.city : nil
|
||||
json.custom_department @owner.show_department ? @owner.custom_department : nil
|
||||
json.description @owner.description
|
||||
end
|
|
@ -1,20 +1,20 @@
|
|||
json.user_id user.id
|
||||
json.name user.full_name
|
||||
json.username @user.full_name
|
||||
json.real_name @user.real_name
|
||||
json.username user.full_name
|
||||
json.real_name user.real_name
|
||||
json.grade user.grade
|
||||
json.gender @user.gender
|
||||
json.login @user.login
|
||||
json.user_id @user.id
|
||||
json.image_url url_to_avatar(@user)
|
||||
json.admin @user.admin?
|
||||
json.user_identity @user.identity
|
||||
json.is_watch current_user&.watched?(@user)
|
||||
json.watched_count @user.fan_count #粉丝
|
||||
json.watching_count @user.follow_count #关注数
|
||||
json.created_time format_time(@user.created_on)
|
||||
json.email @user.show_email ? @user.mail : nil
|
||||
json.province @user.show_location ? @user.province : nil
|
||||
json.city @user.show_location ? @user.city : nil
|
||||
json.custom_department @user.show_department ? @user.custom_department : nil
|
||||
json.description @user.description
|
||||
json.gender user.gender
|
||||
json.login user.login
|
||||
json.user_id user.id
|
||||
json.image_url url_to_avatar(user)
|
||||
json.admin user.admin?
|
||||
json.user_identity user.identity
|
||||
json.is_watch current_user&.watched?(user)
|
||||
json.watched_count user.fan_count #粉丝
|
||||
json.watching_count user.follow_count #关注数
|
||||
json.created_time format_time(user.created_on)
|
||||
json.email user.show_email ? user.mail : nil
|
||||
json.province user.show_location ? user.province : nil
|
||||
json.city user.show_location ? user.city : nil
|
||||
json.custom_department user.show_department ? user.custom_department : nil
|
||||
json.description user.description
|
|
@ -107,7 +107,7 @@ Rails.application.routes.draw do
|
|||
put 'commons/unhidden', to: 'commons#unhidden'
|
||||
delete 'commons/delete', to: 'commons#delete'
|
||||
|
||||
resources :owners, only: [:index]
|
||||
resources :owners, only: [:index, :show]
|
||||
|
||||
scope module: :organizations do
|
||||
resources :organizations, except: [:edit, :new] do
|
||||
|
|
Loading…
Reference in New Issue