From fa476732e500ddbb37d9396c62e23faa6df037fe Mon Sep 17 00:00:00 2001 From: yystopf Date: Mon, 25 Oct 2021 17:23:17 +0800 Subject: [PATCH] add: user common info cache service --- app/controllers/users_controller.rb | 2 ++ app/jobs/cache_async_reset_job.rb | 4 +--- app/jobs/cache_async_set_job.rb | 2 -- app/services/cache/v2/owner_common_service.rb | 14 +++++++++----- app/views/users/_cache_simple_user.json.jbuilder | 16 ++++++++++++++++ 5 files changed, 28 insertions(+), 10 deletions(-) create mode 100644 app/views/users/_cache_simple_user.json.jbuilder diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index b80827efa..697835b0e 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -51,6 +51,8 @@ class UsersController < ApplicationController @projects_common_count = user_projects.common.size @projects_mirrior_count = user_projects.mirror.size @projects_sync_mirrior_count = user_projects.sync_mirror.size + # 为了缓存活跃用户的基本信息,后续删除 + Cache::V2::OwnerCommonService.new(@user.login, @user.mail).read end def watch_users diff --git a/app/jobs/cache_async_reset_job.rb b/app/jobs/cache_async_reset_job.rb index a7da3f80e..3b7810918 100644 --- a/app/jobs/cache_async_reset_job.rb +++ b/app/jobs/cache_async_reset_job.rb @@ -1,10 +1,8 @@ class CacheAsyncResetJob < ApplicationJob queue_as :cache - def perform(type, id, params={}) + def perform(type, id) case type - when "owner_common_service" - Cache::V2::OwnerCommonService.new(id).reset when "platform_statistic_service" Cache::V2::PlatformStatisticService.new.reset when "project_common_service" diff --git a/app/jobs/cache_async_set_job.rb b/app/jobs/cache_async_set_job.rb index d4f641e19..5a0eb4d83 100644 --- a/app/jobs/cache_async_set_job.rb +++ b/app/jobs/cache_async_set_job.rb @@ -3,8 +3,6 @@ class CacheAsyncResetJob < ApplicationJob def perform(type, id, params={}) case type - when "owner_common_service" - Cache::V2::OwnerCommonService.new(id, params).call when "platform_statistic_service" Cache::V2::PlatformStatisticService.new(params).call when "project_common_service" diff --git a/app/services/cache/v2/owner_common_service.rb b/app/services/cache/v2/owner_common_service.rb index d65a60749..07183f811 100644 --- a/app/services/cache/v2/owner_common_service.rb +++ b/app/services/cache/v2/owner_common_service.rb @@ -3,10 +3,10 @@ class Cache::V2::OwnerCommonService < ApplicationService attr_reader :owner_id, :login, :name, :avatar_url, :email attr_accessor :owner - def initialize(owner_id, params={}) - @owner_id = owner_id + def initialize(login, email, params={}) + @login = login + @email = email @name = params[:name] - @email = params[:email] end def read @@ -24,11 +24,11 @@ class Cache::V2::OwnerCommonService < ApplicationService private def load_owner - @owner = User.find_by_id(@owner_id) + @owner = User.find_by(login: @login) end def owner_common_key - "v2-owner-common:#{@owner_id}" + "v2-owner-common:#{@login}-#{@email.to_s}" end def owner_common @@ -58,6 +58,9 @@ class Cache::V2::OwnerCommonService < ApplicationService $redis_cache.hgetall(owner_common_key) end + def reset_owner_id + $redis_cache.hset(owner_common_key, "id", owner&.id) + end def reset_owner_type $redis_cache.hset(owner_common_key, "type", owner&.type) @@ -79,6 +82,7 @@ class Cache::V2::OwnerCommonService < ApplicationService def reset_owner_common load_owner $redis_cache.del(owner_common_key) + reset_owner_id reset_owner_type reset_owner_login reset_owner_email diff --git a/app/views/users/_cache_simple_user.json.jbuilder b/app/views/users/_cache_simple_user.json.jbuilder new file mode 100644 index 000000000..60536e071 --- /dev/null +++ b/app/views/users/_cache_simple_user.json.jbuilder @@ -0,0 +1,16 @@ +user = $redis_cache.hgetall("v2-owner-common:#{name}-#{email}") +if user.blank? + json.id nil + json.type nil + json.login name + json.name name + json.email email + json.image_url User::Avatar.get_letter_avatar_url(name) +else + json.id user["id"] + json.type user["type"] + json.login user["login"] + json.name user["name"] + json.email user["email"] + json.image_url user["avatar_url"] +end \ No newline at end of file