class ProjectRankController < ApplicationController # 根据时间获取热门项目 def index limit = 9 limit = params[:limit].to_i - 1 if params[:limit].present? limit = 99 if limit > 99 $redis_cache.zunionstore("recent-days-project-rank-#{time}", get_timeable_key_names) deleted_data = $redis_cache.smembers("v2-project-rank-deleted") $redis_cache.zrem("recent-days-project-rank-#{time}", deleted_data) unless deleted_data.blank? @project_rank = $redis_cache.zrevrange("recent-days-project-rank-#{time}", 0, limit, withscores: true) rescue Exception => e @project_rank = [] end private # 默认显示7天的 def time params.fetch(:time, 7).to_i end def get_timeable_key_names names_array = [] (0...time).to_a.each do |i| date_time_string = (Date.today - i.days).to_s names_array << "v2-project-rank-#{date_time_string}" end names_array end end