diff --git a/app/controllers/owners_controller.rb b/app/controllers/owners_controller.rb index 97444f7a..8a6c7256 100644 --- a/app/controllers/owners_controller.rb +++ b/app/controllers/owners_controller.rb @@ -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 \ No newline at end of file diff --git a/app/views/owners/show.json.jbuilder b/app/views/owners/show.json.jbuilder new file mode 100644 index 00000000..ad6e5589 --- /dev/null +++ b/app/views/owners/show.json.jbuilder @@ -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 \ No newline at end of file diff --git a/app/views/users/_user.json.jbuilder b/app/views/users/_user.json.jbuilder index dc43d6bc..a3744ab6 100644 --- a/app/views/users/_user.json.jbuilder +++ b/app/views/users/_user.json.jbuilder @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index a3cc196e..b9471b5a 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -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