diff --git a/app/controllers/project_categories_controller.rb b/app/controllers/project_categories_controller.rb index 116a79281..f468cc067 100644 --- a/app/controllers/project_categories_controller.rb +++ b/app/controllers/project_categories_controller.rb @@ -6,12 +6,8 @@ class ProjectCategoriesController < ApplicationController end def group_list - # if current_user&.logged? - # projects = Project.list_user_projects(current_user.id) - # else - # projects = Project.visible - # end - projects = Project.no_anomory_projects.visible - @category_group_list = projects.joins(:project_category).group("project_categories.id", "project_categories.name").size + @project_categories = ProjectCategory.where('projects_count > 0') + # projects = Project.no_anomory_projects.visible + # @category_group_list = projects.joins(:project_category).group("project_categories.id", "project_categories.name").size end end diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 9bfc60437..eba2ad1b0 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -38,13 +38,23 @@ class ProjectsController < ApplicationController end def group_type_list - # if current_user&.logged? - # projects = Project.list_user_projects(current_user.id) - # else - # projects = Project.visible - # end - projects = Project.no_anomory_projects.visible - @project_group_list = projects.group(:project_type).size + project_statics = ProjectStatistic.first + + @project_statics_list = [ + { + project_type: 'common', + name: '开源托管项目', + projects_count: project_statics&.common_projects_count || 0 + }, + { + project_type: 'mirror', + name: '开源镜像项目', + projects_count: project_statics&.mirror_projects_count || 0 + } + ] + + # projects = Project.no_anomory_projects.visible + # @project_group_list = projects.group(:project_type).size end def update diff --git a/app/models/project.rb b/app/models/project.rb index 755e81b7d..83c48a6dd 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -193,4 +193,15 @@ class Project < ApplicationRecord update_column(:open_devops, true) increment!(:open_devops_count) end + + def self.update_common_projects_count! + ps = ProjectStatistic.first + ps.increment!(:common_projects_count) unless ps.blank? + end + + def self.update_mirror_projects_count! + ps = ProjectStatistic.first + ps.increment!(:mirror_projects_count) unless ps.blank? + end + end diff --git a/app/models/project_statistic.rb b/app/models/project_statistic.rb new file mode 100644 index 000000000..3dbbf36de --- /dev/null +++ b/app/models/project_statistic.rb @@ -0,0 +1,2 @@ +class ProjectStatistic < ApplicationRecord +end diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb index f4297acfe..dc14d10d0 100644 --- a/app/services/projects/create_service.rb +++ b/app/services/projects/create_service.rb @@ -12,6 +12,7 @@ class Projects::CreateService < ApplicationService @project = Project.new(project_params) ActiveRecord::Base.transaction do if @project.save! + Project.update_common_projects_count! Repositories::CreateService.new(user, @project, repository_params).call else Rails.logger.info("#############___________create_project_erros______###########{@project.errors.messages}") diff --git a/app/services/projects/migrate_service.rb b/app/services/projects/migrate_service.rb index 2eb9172cb..ff0c0643d 100644 --- a/app/services/projects/migrate_service.rb +++ b/app/services/projects/migrate_service.rb @@ -9,6 +9,7 @@ class Projects::MigrateService < ApplicationService def call @project = Project.new(project_params) if @project.save! + Project.update_mirror_projects_count! Repositories::MigrateService.new(user, @project, repository_params).call else # diff --git a/app/views/project_categories/group_list.json.jbuilder b/app/views/project_categories/group_list.json.jbuilder index 07ce8834c..f13d6ecff 100644 --- a/app/views/project_categories/group_list.json.jbuilder +++ b/app/views/project_categories/group_list.json.jbuilder @@ -1,5 +1,5 @@ -json.array! @category_group_list do |category,v| - json.id category[0] - json.name category[1] - json.projects_count v -end \ No newline at end of file +json.array! @project_categories do |category| + json.id category.id + json.name category.name + json.projects_count category.projects_count +end diff --git a/app/views/projects/group_type_list.json.jbuilder b/app/views/projects/group_type_list.json.jbuilder index 34d46894c..542c3eff0 100644 --- a/app/views/projects/group_type_list.json.jbuilder +++ b/app/views/projects/group_type_list.json.jbuilder @@ -1,5 +1,5 @@ -json.array! @project_group_list do |type,v| - json.project_type type - json.name render_zh_project_type(type) - json.projects_count v -end \ No newline at end of file +json.array! @project_statics_list do |static| + json.project_type static[:project_type] + json.name static[:name] + json.projects_count static[:projects_count] +end diff --git a/db/migrate/20201021031915_create_project_statistics.rb b/db/migrate/20201021031915_create_project_statistics.rb new file mode 100644 index 000000000..c266816d7 --- /dev/null +++ b/db/migrate/20201021031915_create_project_statistics.rb @@ -0,0 +1,12 @@ +class CreateProjectStatistics < ActiveRecord::Migration[5.2] + def change + create_table :project_statistics do |t| + t.integer :common_projects_count, :default => 0 + t.integer :mirror_projects_count, :default => 0 + t.integer :sync_mirror_projects_count, :default => 0 + t.integer :commits_total_count, :default => 0 + + t.timestamps + end + end +end diff --git a/db/migrate/20201021033117_add_index_for_project_type_to_projects.rb b/db/migrate/20201021033117_add_index_for_project_type_to_projects.rb new file mode 100644 index 000000000..f86edc38a --- /dev/null +++ b/db/migrate/20201021033117_add_index_for_project_type_to_projects.rb @@ -0,0 +1,5 @@ +class AddIndexForProjectTypeToProjects < ActiveRecord::Migration[5.2] + def change + add_index :projects, :project_type + end +end