From c977b9350c8dd0777a577585e56b0643561bbb0b Mon Sep 17 00:00:00 2001 From: "sylor_huang@126.com" Date: Wed, 3 Jun 2020 18:23:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=AA=E4=BA=BA=E4=B8=BB?= =?UTF-8?q?=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/users_controller.rb | 38 +++++++++++-- app/models/user.rb | 6 ++- app/models/watcher.rb | 3 ++ app/queries/projects/list_my_query.rb | 50 ++++++++++++------ .../projects/_project_detail.json.jbuilder | 39 ++++++++++++++ app/views/projects/index.json.jbuilder | 38 +------------ .../users/_watch_user_detail.json.jbuilder | 8 +++ app/views/users/fan_users.json.jbuilder | 4 ++ app/views/users/get_user_info.json.jbuilder | 1 - app/views/users/projects.json.jbuilder | 20 +------ app/views/users/show.json.jbuilder | 17 +++++- app/views/users/watch_users.json.jbuilder | 4 ++ config/routes.rb | 2 + dump.rdb | Bin 768913 -> 769764 bytes 14 files changed, 148 insertions(+), 82 deletions(-) create mode 100644 app/views/projects/_project_detail.json.jbuilder create mode 100644 app/views/users/_watch_user_detail.json.jbuilder create mode 100644 app/views/users/fan_users.json.jbuilder create mode 100644 app/views/users/watch_users.json.jbuilder diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index 86e8d5e2a..b957a98d4 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -1,7 +1,7 @@ class UsersController < ApplicationController - before_action :load_user, only: [:show, :homepage_info, :sync_token, :sync_gitea_pwd, :projects] - before_action :check_user_exist, only: [:show, :homepage_info] + before_action :load_user, only: [:show, :homepage_info, :sync_token, :sync_gitea_pwd, :projects, :watch_users, :fan_users] + before_action :check_user_exist, only: [:show, :homepage_info,:projects, :watch_users, :fan_users] before_action :require_login, only: %i[me list projects] skip_before_action :check_sign, only: [:attachment_show] @@ -11,7 +11,34 @@ class UsersController < ApplicationController @users = paginate(scope) end - def show;end + def show + #待办事项,现在未做 + @undo_events = 0 + #用户的组织数量 + # @user_composes_count = @user.composes.size + @user_composes_count = 0 + user_projects = User.current.logged? && (User.current.admin? || User.current.login == @user.login) ? @user.projects : @user.projects.visible + @projects_common_count = user_projects.common.size + @projects_mirrior_count = user_projects.mirror.size + end + + def watch_users + watchers = Watcher.watching_users(@user.id).includes(:user).order("watchers.created_at asc") + if params[:search].present? + search_user_ids = User.where(id: watchers.pluck(:watchable_id)).like(params[:search]).pluck(:id) + watchers = watchers.where(watchable_id: search_user_ids) + end + @watchers_count = watchers.size + @watchers = paginate(watchers) + end + + def fan_users + watchers = @user.watchers.includes(:user).order("watchers.created_at asc") + watchers = watchers.joins(:user).where("LOWER(concat(users.lastname, users.firstname, users.login)) LIKE ?", "%#{params[:search].split(" ").join('|')}%") if params[:search].present? + + @watchers_count = watchers.size + @watchers = paginate(watchers) + end def update @user = User.find params[:id] @@ -85,7 +112,7 @@ class UsersController < ApplicationController @projects = projects.select(:id, :name) end - # 个人主页信息 + #TODO 个人主页信息,forge上弃用-hs, 0602 def homepage_info #待办事项,现在未做 @undo_events = 10 @@ -119,7 +146,8 @@ class UsersController < ApplicationController end def projects - scope = Projects::ListMyQuery.call(params.merge(category: params[:category],is_public: params[:status]), @user) + is_current_admin_user = User.current.logged? && (current_user&.admin? || current_user.id == @user.id) + scope = Projects::ListMyQuery.call(params, @user,is_current_admin_user) @total_count = scope.size @projects = paginate(scope) end diff --git a/app/models/user.rb b/app/models/user.rb index f37e61923..2d2e2ce26 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -70,6 +70,8 @@ class User < ApplicationRecord # 关注 has_many :be_watchers, foreign_key: :user_id, dependent: :destroy # 我的关注 has_many :be_watcher_users, through: :be_watchers, dependent: :destroy # 我关注的用户 + + has_many :watchers, as: :watchable, dependent: :destroy # 认证 has_many :apply_user_authentication @@ -143,13 +145,13 @@ class User < ApplicationRecord # 关注数 def follow_count - Watcher.where(user_id: id, watchable_type: %w(Principal User)).count + Watcher.where(user_id: 1, watchable_type: %w(User)).count # User.watched_by(id).count end # 粉丝数 def fan_count - Watcher.where(watchable_type: %w(Principal User), watchable_id: id).count + Watcher.where(watchable_type: %w(User), watchable_id: id).count # watchers.count end diff --git a/app/models/watcher.rb b/app/models/watcher.rb index 3b613b9f0..50bd75809 100644 --- a/app/models/watcher.rb +++ b/app/models/watcher.rb @@ -1,4 +1,7 @@ class Watcher < ApplicationRecord belongs_to :user + belongs_to :watchable, polymorphic: true, counter_cache: :watchers_count + + scope :watching_users, ->(watchable_id){ where("watchable_type = ? and user_id = ?",'User',watchable_id)} end diff --git a/app/queries/projects/list_my_query.rb b/app/queries/projects/list_my_query.rb index 69cd8a9fe..e69280bb3 100644 --- a/app/queries/projects/list_my_query.rb +++ b/app/queries/projects/list_my_query.rb @@ -1,32 +1,48 @@ class Projects::ListMyQuery < ApplicationQuery - attr_reader :params, :user + attr_reader :params, :user, :is_current_admin_user # sort_columns :updated_on, :created_on, :forked_count, :praises_count, default_by: :updated_on, default_direction: :desc - def initialize(params,user) + def initialize(params,user,is_current_admin_user) @params = params @user = user + @is_current_admin_user = is_current_admin_user end def call - if params[:category].blank? - projects = Project.joins(:members).where(members: { user_id: user.id }) - elsif params[:category].to_s == "manage" - projects = Project.where(user_id: user.id) - elsif params[:category].to_s == "watched" #我关注的 - projects = Project.joins(:watchers).where("watchable_type = ? and user_id = ?", "Project", user.id) - elsif params[:category].to_s == "forked" #我fork的 - fork_ids = user.fork_users.select(:id, :fork_project_id).pluck(:fork_project_id) - projects = Project.where(id: fork_ids) - else - projects = Project.where.not(user_id: user.id).joins(:members).where(members: { user_id: user.id }) - end - unless params[:is_public].blank? - projects = projects.where(is_public: (params[:is_public].to_s == "publicly")) + if is_current_admin_user + projects = Project + else + projects = Project.visible end - scope = projects.includes(:project_category,:project_score, :project_language,:owner) + if params[:category].blank? + projects = projects.joins(:members).where(members: { user_id: user.id }) + elsif params[:category].to_s == "join" + projects = projects.where.not(user_id: user.id).joins(:members).where(members: { user_id: user.id }) + elsif params[:category].to_s == "manage" + projects = projects.where(user_id: user.id) + elsif params[:category].to_s == "watched" #我关注的 + projects = projects.where.not(user_id: user.id).joins(:watchers).where(watchers: {watchable_type: "Project", user_id: user.id}) + elsif params[:category].to_s == "forked" #我fork的 + fork_ids = user.fork_users.select(:id, :fork_project_id).pluck(:fork_project_id) + projects = projects.where(id: fork_ids) + elsif params[:category].to_s == "public" + projects = projects.visible.joins(:members).where(members: { user_id: user.id }) + elsif params[:category].to_s == "private" + projects = projects.is_private.joins(:members).where(members: { user_id: user.id }) + end + + if params[:project_type].to_s === "common" + projects = projects.common + elsif params[:project_type].to_s === "mirror" + projects = projects.mirror + end + + q = projects.ransack(name_or_identifier_cont: params[:search]) + + scope = q.result.includes(:project_category, :project_language,:owner, :repository) sort = params[:sort_by] || "updated_on" sort_direction = params[:sort_direction] || "desc" diff --git a/app/views/projects/_project_detail.json.jbuilder b/app/views/projects/_project_detail.json.jbuilder new file mode 100644 index 000000000..f3a54a32a --- /dev/null +++ b/app/views/projects/_project_detail.json.jbuilder @@ -0,0 +1,39 @@ +user = project.owner +if user.blank? + nil +else + json.id project.id +json.repo_id project&.repository&.id +json.identifier project.identifier +json.name project.name +json.description Nokogiri::HTML(project.description).text +json.visits project.visits +json.praises_count project.praises_count.to_i +json.forked_count project.forked_count.to_i +json.is_public project.is_public +json.mirror_url project.repository&.mirror_url +json.last_update_time render_unix_time(project.updated_on) +json.time_ago time_from_now(project.updated_on) +json.forked_from_project_id project.forked_from_project_id +json.author do + json.name user.try(:show_real_name) + json.login user.login + json.image_url url_to_avatar(project.owner) +end +json.category do + if project.project_category.blank? + json.nil! + else + json.id project.project_category.id + json.name project.project_category.name + end +end +json.language do + if project.project_language.blank? + json.nil! + else + json.id project.project_language.id + json.name project.project_language.name + end +end +end diff --git a/app/views/projects/index.json.jbuilder b/app/views/projects/index.json.jbuilder index 446b622d4..28b7df1b3 100644 --- a/app/views/projects/index.json.jbuilder +++ b/app/views/projects/index.json.jbuilder @@ -1,40 +1,4 @@ json.total_count @total_count json.projects @projects do |project| - user = project.owner - next if user.blank? - - json.id project.id - json.repo_id project&.repository.id - json.identifier project.identifier - json.name project.name - json.description Nokogiri::HTML(project.description).text - json.visits project.visits - json.praises_count project.praises_count.to_i - json.forked_count project.forked_count.to_i - json.is_public project.is_public - json.mirror_url project.repository&.mirror_url - json.last_update_time render_unix_time(project.updated_on) - json.time_ago time_from_now(project.updated_on) - json.forked_from_project_id project.forked_from_project_id - json.author do - json.name user.try(:show_real_name) - json.login user.login - json.image_url url_to_avatar(project.owner) - end - json.category do - if project.project_category.blank? - json.nil! - else - json.id project.project_category.id - json.name project.project_category.name - end - end - json.language do - if project.project_language.blank? - json.nil! - else - json.id project.project_language.id - json.name project.project_language.name - end - end + json.partial! "/projects/project_detail", project: project end diff --git a/app/views/users/_watch_user_detail.json.jbuilder b/app/views/users/_watch_user_detail.json.jbuilder new file mode 100644 index 000000000..5f292f720 --- /dev/null +++ b/app/views/users/_watch_user_detail.json.jbuilder @@ -0,0 +1,8 @@ +user = target.watchable + +json.format_time target.created_at.strftime("%Y-%m-%d") +json.name user.try(:show_real_name) +json.login user.try(:login) +json.image_url url_to_avatar(user) +json.is_current_user current_user.try(:id) == target.user_id +json.is_watch current_user&.watched?(user) diff --git a/app/views/users/fan_users.json.jbuilder b/app/views/users/fan_users.json.jbuilder new file mode 100644 index 000000000..b23006d6a --- /dev/null +++ b/app/views/users/fan_users.json.jbuilder @@ -0,0 +1,4 @@ +json.count @watchers_count +json.users do + json.partial! "/users/watch_user_detail", collection: @watchers, as: :target +end \ No newline at end of file diff --git a/app/views/users/get_user_info.json.jbuilder b/app/views/users/get_user_info.json.jbuilder index 5ce471c12..1c83716bd 100644 --- a/app/views/users/get_user_info.json.jbuilder +++ b/app/views/users/get_user_info.json.jbuilder @@ -12,6 +12,5 @@ json.user_phone_binded @user.phone.present? # json.email @user.mail json.profile_completed @user.profile_completed? json.professional_certification @user.professional_certification -json.is_watch current_user&.watched?(@user) diff --git a/app/views/users/projects.json.jbuilder b/app/views/users/projects.json.jbuilder index 01c334acd..822402a23 100644 --- a/app/views/users/projects.json.jbuilder +++ b/app/views/users/projects.json.jbuilder @@ -1,24 +1,6 @@ json.count @total_count json.projects do json.array! @projects do |project| - user = project&.owner - json.members_count project.members_count - json.issues_count project.issues_count - json.changesets_count project&.project_score&.changeset_num.to_i - json.can_visited project.can_visited? - json.id project.id - json.identifier project.identifier - json.name project.name - json.is_public project.is_public - json.owner do - json.real_name user.present? ? user.try(:real_name) : "未知用户" - json.avatar_url user.present? ? url_to_avatar(user) : "avatars/User/b" - end - json.category do - json.name project&.project_category&.name - end - json.language do - json.name project&.project_language&.name - end + json.partial! "/projects/project_detail", project: project end end diff --git a/app/views/users/show.json.jbuilder b/app/views/users/show.json.jbuilder index 09fef7e2f..502234316 100644 --- a/app/views/users/show.json.jbuilder +++ b/app/views/users/show.json.jbuilder @@ -1 +1,16 @@ -json.partial! 'users/user', locals: { user: @user } \ No newline at end of file +# json.partial! 'users/user', locals: { user: @user } + +json.username @user.full_name +json.real_name @user.real_name +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.undo_events @undo_events +json.user_composes_count @user_composes_count +json.common_projects_count @projects_common_count +json.mirror_projects_count @projects_mirrior_count \ No newline at end of file diff --git a/app/views/users/watch_users.json.jbuilder b/app/views/users/watch_users.json.jbuilder new file mode 100644 index 000000000..b23006d6a --- /dev/null +++ b/app/views/users/watch_users.json.jbuilder @@ -0,0 +1,4 @@ +json.count @watchers_count +json.users do + json.partial! "/users/watch_user_detail", collection: @watchers, as: :target +end \ No newline at end of file diff --git a/config/routes.rb b/config/routes.rb index a5be9be67..3ff0d0dd7 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -140,6 +140,8 @@ Rails.application.routes.draw do member do get :homepage_info get :projects + get :watch_users + get :fan_users end collection do post :following diff --git a/dump.rdb b/dump.rdb index 6d64e28279a0f5838827816cff26d22892396b02..64f9e1903583c996bff2774a63afbdca44f7245f 100644 GIT binary patch delta 40334 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 NBKM86@*chE{{haCmuvt4