class Cache::V2::OwnerCommonService < ApplicationService include AvatarHelper attr_reader :owner_id, :name attr_accessor :owner, :login, :email def initialize(owner_id, params={}) @owner_id = owner_id @email = params[:email] @name = params[:name] @avatar_url = params[:avatar_url] end def read owner_common end def call set_owner_common end def reset reset_owner_common end def clear clear_owner_common end private def load_owner @owner = Owner.find_by_id @owner_id @login = @owner&.login @email ||= @owner&.mail end def owner_common_key "v2-owner-common:#{@login}-#{@email.to_s}" end def owner_common_key_by_id "v2-owner-common:#{@owner&.id}" end def owner_common result = $redis_cache.hgetall(owner_common_key_by_id) result.blank? ? reset_owner_common : result end def set_owner_common if $redis_cache.hgetall(owner_common_key_by_id).blank? reset_owner_common return else load_owner return if @owner.nil? if @name.present? if $redis_cache.hget(owner_common_key, "name").nil? reset_owner_name else $redis_cache.hset(owner_common_key, "name", @name) $redis_cache.hset(owner_common_key_by_id, "name", @name) end end if @email.present? if $redis_cache.hget(owner_common_key, "email").nil? reset_owner_email else # 更改邮箱这里把旧数据删除 $redis_cache.del("v2-owner-common:#{@login}-*") $redis_cache.hset(owner_common_key, "email", @email) $redis_cache.hset(owner_common_key_by_id, "email", @email) end end if @avatar_url.present? if $redis_cache.hget(owner_common_key, "avatar_url").nil? reset_owner_avatar_url else $redis_cache.hset(owner_common_key, "avatar_url", @avatar_url) $redis_cache.hset(owner_common_key_by_id, "avatar_url", @avatar_url) end end end $redis_cache.hgetall(owner_common_key) end def reset_owner_id $redis_cache.hset(owner_common_key, "id", owner&.id) $redis_cache.hset(owner_common_key_by_id, "id", owner&.id) end def reset_owner_type $redis_cache.hset(owner_common_key, "type", owner&.type) $redis_cache.hset(owner_common_key_by_id, "type", owner&.type) end def reset_owner_login $redis_cache.hset(owner_common_key, "login", owner&.login) $redis_cache.hset(owner_common_key_by_id, "login", owner&.login) end def reset_owner_email $redis_cache.hset(owner_common_key, "email", owner&.mail) $redis_cache.hset(owner_common_key_by_id, "email", owner&.mail) end def reset_owner_name $redis_cache.hset(owner_common_key, "name", owner&.real_name) $redis_cache.hset(owner_common_key_by_id, "name", owner&.real_name) end def reset_owner_avatar_url $redis_cache.hset(owner_common_key, "avatar_url", url_to_avatar(owner)) $redis_cache.hset(owner_common_key_by_id, "avatar_url", url_to_avatar(owner)) end def reset_owner_common clear_owner_common reset_owner_id reset_owner_type reset_owner_login reset_owner_email reset_owner_name reset_owner_avatar_url $redis_cache.hgetall(owner_common_key) end def clear_owner_common load_owner return if @owner.nil? $redis_cache.del(owner_common_key) $redis_cache.del(owner_common_key_by_id) end end