From d0791ee6539781e79c054d87e6d36d974441ea7a Mon Sep 17 00:00:00 2001 From: yystopf Date: Wed, 27 Oct 2021 09:48:23 +0800 Subject: [PATCH] fix: privacy project not use cache --- app/models/project.rb | 8 ++++++++ app/services/cache/v2/project_common_service.rb | 3 +++ app/views/project_rank/_detail.json.jbuilder | 1 + 3 files changed, 12 insertions(+) diff --git a/app/models/project.rb b/app/models/project.rb index c4c085096..03cad7ca7 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -190,6 +190,14 @@ class Project < ApplicationRecord CacheAsyncSetJob.perform_later("platform_statistic_service", {project_count: -1, project_language_count_key: self.project_language&.name, project_language_count: -1}) end + def is_full_public + owner = self.owner + if owner.is_a?(Organization) + return self.is_public && owner&.visibility == "common" + else + return self.is_public + end + end def reset_unmember_followed if changes[:is_public].present? && changes[:is_public] == [true, false] diff --git a/app/services/cache/v2/project_common_service.rb b/app/services/cache/v2/project_common_service.rb index 841a0bb55..77a7d27b7 100644 --- a/app/services/cache/v2/project_common_service.rb +++ b/app/services/cache/v2/project_common_service.rb @@ -86,6 +86,8 @@ class Cache::V2::ProjectCommonService < ApplicationService reset_project_common return end + load_project + return unless @project.is_full_public if @owner_id.present? if $redis_cache.hget(project_common_key, owner_id_key).nil? reset_project_owner_id @@ -224,6 +226,7 @@ class Cache::V2::ProjectCommonService < ApplicationService def reset_project_common load_project + return unless @project.is_full_public $redis_cache.del(project_common_key) reset_project_owner_id reset_project_name diff --git a/app/views/project_rank/_detail.json.jbuilder b/app/views/project_rank/_detail.json.jbuilder index 454aee2cb..ce703e77a 100644 --- a/app/views/project_rank/_detail.json.jbuilder +++ b/app/views/project_rank/_detail.json.jbuilder @@ -7,6 +7,7 @@ json.identifier project_common["identifier"] json.description project_common["description"] json.owner do json.id project_common["owner_id"] + json type owner_common["type"] json.name owner_common["name"] json.login owner_common["login"] json.avatar_url owner_common["avatar_url"]