From 0229d99e74a5455427b95b06b33676c2ec930b7a Mon Sep 17 00:00:00 2001 From: yystopf Date: Wed, 1 Feb 2023 14:25:55 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E5=90=8E=E5=8F=B0?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E6=8E=92=E8=A1=8C=E6=A6=9C=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admins/projects_rank_controller.rb | 14 ++++ .../admins/users_rank_controller.rb | 15 ++++ .../cache/v2/project_date_rank_service.rb | 11 +++ app/views/admins/projects_rank/index.html.erb | 74 +++++++++++++++++++ app/views/admins/shared/_sidebar.html.erb | 6 ++ app/views/admins/users_rank/index.html.erb | 74 +++++++++++++++++++ config/routes.rb | 2 + 7 files changed, 196 insertions(+) create mode 100644 app/controllers/admins/projects_rank_controller.rb create mode 100644 app/controllers/admins/users_rank_controller.rb create mode 100644 app/views/admins/projects_rank/index.html.erb create mode 100644 app/views/admins/users_rank/index.html.erb diff --git a/app/controllers/admins/projects_rank_controller.rb b/app/controllers/admins/projects_rank_controller.rb new file mode 100644 index 000000000..b92037caa --- /dev/null +++ b/app/controllers/admins/projects_rank_controller.rb @@ -0,0 +1,14 @@ +class Admins::ProjectsRankController < Admins::BaseController + + def index + @rank_date = rank_date + @date_rank = $redis_cache.zrevrange("v2-project-rank-#{rank_date}", 0, -1, withscores: true) + end + + private + + def rank_date + params.fetch(:date, Date.today.to_s) + end + +end \ No newline at end of file diff --git a/app/controllers/admins/users_rank_controller.rb b/app/controllers/admins/users_rank_controller.rb new file mode 100644 index 000000000..2c7a62ae5 --- /dev/null +++ b/app/controllers/admins/users_rank_controller.rb @@ -0,0 +1,15 @@ +class Admins::UsersRankController < Admins::BaseController + + def index + @rank_date = rank_date + @date_rank = $redis_cache.zrevrange("v2-user-rank-#{rank_date}", 0, -1, withscores: true) + end + + private + + def rank_date + params.fetch(:date, Date.today.to_s) + end + + +end \ No newline at end of file diff --git a/app/services/cache/v2/project_date_rank_service.rb b/app/services/cache/v2/project_date_rank_service.rb index 9d8ffca90..2ada442a8 100644 --- a/app/services/cache/v2/project_date_rank_service.rb +++ b/app/services/cache/v2/project_date_rank_service.rb @@ -28,6 +28,10 @@ class Cache::V2::ProjectDateRankService < ApplicationService "v2-project-rank-#{@rank_date.to_s}" end + def project_rank_statistic_key + "v2-project-statistic:#{@project_id}-#{@rank_date.to_s}" + end + def project_rank $redis_cache.zscore(project_rank_key, @project_id) end @@ -35,24 +39,31 @@ class Cache::V2::ProjectDateRankService < ApplicationService def set_project_rank if @visits.present? $redis_cache.zincrby(project_rank_key, @visits.to_i * 1, @project_id) + $redis_cache.hincrby(project_rank_statistic_key, "visits", @visits.to_i) end if @watchers.present? $redis_cache.zincrby(project_rank_key, @watchers.to_i * 5, @project_id) + $redis_cache.hincrby(project_rank_statistic_key, "watchers", @watchers.to_i) end if @praises.present? $redis_cache.zincrby(project_rank_key, @praises.to_i * 5, @project_id) + $redis_cache.hincrby(project_rank_statistic_key, "praises", @praises.to_i) end if @forks.present? $redis_cache.zincrby(project_rank_key, @forks.to_i * 10, @project_id) + $redis_cache.hincrby(project_rank_statistic_key, "forks", @forks.to_i) end if @issues.present? $redis_cache.zincrby(project_rank_key, @issues.to_i * 5, @project_id) + $redis_cache.hincrby(project_rank_statistic_key, "issues", @issues.to_i) end if @pullrequests.present? $redis_cache.zincrby(project_rank_key, @pullrequests.to_i * 10, @project_id) + $redis_cache.hincrby(project_rank_statistic_key, "pullrequests", @pullrequests.to_i) end if @commits.present? $redis_cache.zincrby(project_rank_key, @commits.to_i * 5, @project_id) + $redis_cache.hincrby(project_rank_statistic_key, "commits", @commits.to_i) end $redis_cache.zscore(project_rank_key, @project_id) diff --git a/app/views/admins/projects_rank/index.html.erb b/app/views/admins/projects_rank/index.html.erb new file mode 100644 index 000000000..056e0a0da --- /dev/null +++ b/app/views/admins/projects_rank/index.html.erb @@ -0,0 +1,74 @@ +<% define_admin_breadcrumbs do %> + <% add_admin_breadcrumb('项目排行榜', admins_path) %> +<% end %> + + +
+ <%= form_tag(admins_projects_rank_index_path, method: :get, class: 'form-inline search-form flex-1', id: 'project-rank-date-form') do %> +
+ + <% dates_array = (0..30).to_a.map { |item| [(Date.today-item.days).to_s, (Date.today-item.days).to_s] } %> + <%= select_tag(:date, options_for_select(dates_array, params[:date]), class:"form-control",id: "project-rank-date-select")%> +
+ <% end %> + +
+ +
+ + + + + + + + + + + + + + + + + <% @date_rank.each_with_index do |item, index| %> + + + <% project_common = $redis_cache.hgetall("v2-project-common:#{item[0]}") %> + <% owner_common = $redis_cache.hgetall("v2-owner-common:#{project_common["owner_id"]}")%> + + + + <% project_date_statistic_key = "v2-project-statistic:#{item[0]}-#{@rank_date}"%> + <% if $redis_cache.exists(project_date_statistic_key)%> + <% visits = $redis_cache.hget(project_date_statistic_key, "visits") %> + + <% watchers = $redis_cache.hget(project_date_statistic_key, "watchers") %> + + <% praises = $redis_cache.hget(project_date_statistic_key, "praises") %> + + <% forks = $redis_cache.hget(project_date_statistic_key, "forks") %> + + <% issues = $redis_cache.hget(project_date_statistic_key, "issues") %> + + <% pullrequests = $redis_cache.hget(project_date_statistic_key, "pullrequests") %> + + <% commits = $redis_cache.hget(project_date_statistic_key, "commits") %> + + <% else %> + + <% end %> + + <% end %> + +
排名项目得分访问数关注数点赞数fork数疑修数合并请求数提交数
<%= index + 1%> + /<%= project_common["identifier"]%>"> + <%= project_common["name"] %> + + <%= item[1] %><%= visits || 0 %><%= watchers || 0 %><%= praises || 0 %><%= forks || 0 %><%= issues || 0 %><%= pullrequests || 0 %><%= commits || 0 %>暂无数据
+
+ \ No newline at end of file diff --git a/app/views/admins/shared/_sidebar.html.erb b/app/views/admins/shared/_sidebar.html.erb index d3a752909..88ba91205 100644 --- a/app/views/admins/shared/_sidebar.html.erb +++ b/app/views/admins/shared/_sidebar.html.erb @@ -14,6 +14,12 @@