Merge remote-tracking branch 'origin/trustie_server' into trustie_server

This commit is contained in:
xxq250 2023-03-25 10:22:05 +08:00
commit fe4751c2f5
12 changed files with 46 additions and 31 deletions

View File

@ -680,6 +680,14 @@ class ApplicationController < ActionController::Base
relation.page(page).per(limit)
end
def kaminari_unlimit_paginate(relation)
limit = params[:limit] || params[:per_page]
limit = (limit.to_i.zero? || limit.to_i > 9999) ? 9999 : limit.to_i
page = params[:page].to_i.zero? ? 1 : params[:page].to_i
relation.page(page).per(limit)
end
def kaminari_array_paginate(relation)
limit = params[:limit] || params[:per_page]
limit = (limit.to_i.zero? || limit.to_i > 20) ? 20 : limit.to_i

View File

@ -169,18 +169,12 @@ class RepositoriesController < ApplicationController
end
def contributors
@cache_result = $redis_cache.get("ProjectSpecialCommit:#{@project.id}")
if @cache_result.present?
@total_count = Project.mindspore_contributors.size
@contributors = kaminari_array_paginate(Project.mindspore_contributors)
else
if params[:filepath].present? || @project.educoder?
@contributors = []
else
result = Gitea::Repository::Contributors::GetService.call(@owner, @repository.identifier, {page: params[:page], limit: params[:limit]})
@total_count = result[:total_count]
@contributors = result.is_a?(Hash) ? result[:body] : []
end
if params[:filepath].present? || @project.educoder?
@contributors = []
else
result = Gitea::Repository::Contributors::GetService.call(@owner, @repository.identifier, {page: params[:page], limit: params[:limit]})
@total_count = result[:total_count]
@contributors = result.is_a?(Hash) ? result[:body] : []
end
rescue
@contributors = []

View File

@ -406,7 +406,7 @@ class UsersController < ApplicationController
is_current_admin_user = User.current.logged? && (current_user&.admin? || current_user.id == @user.id)
scope = Projects::ListMyQuery.call(params, @user,is_current_admin_user)
@total_count = scope.size
@projects = paginate(scope)
@projects = kaminari_unlimit_paginate(scope)
end

View File

@ -31,7 +31,7 @@ module Watchable
following.size
end
def mindspore_contribution_perc(project)
def simple_contribution_perc(project)
@project = project
@user = self
@ -39,15 +39,19 @@ module Watchable
(count_user * 1.0 / (count_all + 0.000000001)).round(5)
end
if @project['use_blockchain'] == true or @project['use_blockchain'] == 1
if (@project['use_blockchain'] == true or @project['use_blockchain'] == 1) && @user.id.present?
balance_user = Blockchain::BalanceQueryOneProject.call({"user_id": @user.id, "project_id": @project.id})
balance_all = Blockchain::RepoBasicInfo.call({"project_id": @project.id})["cur_supply"]
score = cal_perc(balance_user, balance_all)
else
commits_all = Project.mindspore_contributors.map{|i| i['contributions']}.sum
commit_user = Project.mindspore_contributors.select{|i| i['login'] == @user.login}.map{|i| i['contributions']}.sum
score = cal_perc(commit_user, commits_all)
contributors = []
result = Gitea::Repository::Contributors::GetService.call(@project.owner, @project.identifier,{q_name: @user.login, q_email: @user.mail})
user_contribution = result[:body][0]
commits_all = result[:total_contributions]
score = cal_perc(user_contribution["contributions"], commits_all)
end
(score * 100).round(1).to_s + "%"
end
def contribution_perc(project)

View File

@ -25,10 +25,12 @@ class ForkUser < ApplicationRecord
def incre_project_common
CacheAsyncSetJob.perform_later("project_common_service", {forks: 1}, self.project_id)
self.project.update_column(:updated_on, Time.now)
end
def decre_project_common
CacheAsyncSetJob.perform_later("project_common_service", {forks: -1}, self.project_id)
self.project.update_column(:updated_on, Time.now)
end
def incre_user_statistic

View File

@ -26,10 +26,12 @@ class PraiseTread < ApplicationRecord
def incre_project_common
CacheAsyncSetJob.perform_later("project_common_service", {praises: 1}, self.praise_tread_object_id) if self.praise_tread_object_type == "Project"
self.praise_tread_object.update_column(:updated_on, Time.now) if self.praise_tread_object_type == "Project"
end
def decre_project_common
CacheAsyncSetJob.perform_later("project_common_service", {praises: -1}, self.praise_tread_object_id) if self.praise_tread_object_type == "Project"
self.praise_tread_object.update_column(:updated_on, Time.now) if self.praise_tread_object_type == "Project"
end
def incre_user_statistic

View File

@ -28,10 +28,12 @@ class Watcher < ApplicationRecord
def incre_project_common
CacheAsyncSetJob.perform_later("project_common_service", {watchers: 1}, self.watchable_id) if self.watchable_type == "Project"
self.watchable.update_column(:updated_on, Time.now) if self.watchable_type == "Project"
end
def decre_project_common
CacheAsyncSetJob.perform_later("project_common_service", {watchers: -1}, self.watchable_id) if self.watchable_type == "Project"
self.watchable.update_column(:updated_on, Time.now) if self.watchable_type == "Project"
end
def incre_user_statistic

View File

@ -34,6 +34,10 @@ class Projects::ListMyQuery < ApplicationQuery
elsif params[:category].to_s == "forked" #我fork的
fork_ids = user.fork_users.select(:id, :fork_project_id).pluck(:fork_project_id)
projects = projects.where(id: fork_ids)
elsif params[:category].to_s == "admin"
normal_projects = projects.joins(members: :roles).where(members: {user_id: user.id}, roles: {name: %w(Manager)}).to_sql
org_projects = projects.joins(team_projects: [team: :team_users]).where(teams: {authorize: "owner"},team_users: {user_id: user.id}).to_sql
projects = Project.from("( #{ normal_projects} UNION #{ org_projects } ) AS projects").distinct
# elsif params[:category].to_s == "public"
# projects = projects.visible.joins(:members).where(members: { user_id: user.id })
# elsif params[:category].to_s == "private"

View File

@ -69,7 +69,7 @@ class Api::V1::Issues::ListService < ApplicationService
issues = issues.joins(:assigners).where(users: {id: assigner_id}) if assigner_id.present?
# status_id
issues = issues.where(status_id: status_id) if status_id.present?
issues = issues.where(status_id: status_id) if status_id.present? && category != 'closed'
if begin_date&.present? || end_date&.present?
issues = issues.where("issues.created_on between ? and ?", begin_date&.present? ? begin_date.to_time : Time.now.beginning_of_day, end_date&.present? ? end_date.to_time.end_of_day : Time.now.end_of_day)

View File

@ -1,11 +1,13 @@
class Gitea::Repository::Contributors::GetService < Gitea::ClientService
attr_reader :owner, :repo_name, :page, :limit
attr_reader :owner, :repo_name, :page, :limit, :q_name, :q_email
def initialize(owner, repo_name, params)
@owner = owner
@repo_name = repo_name
@page = params[:page] || 1
@limit = params[:limit] || 20
@q_name = params[:q_name] || ""
@q_email = params[:q_email] || ""
end
def call
@ -15,7 +17,7 @@ class Gitea::Repository::Contributors::GetService < Gitea::ClientService
private
def params
Hash.new.merge(token: owner.gitea_token, page: page, limit: limit)
Hash.new.merge(token: owner.gitea_token, page: page, limit: limit, q_name: q_name, q_email: q_email)
end
def url
@ -29,7 +31,8 @@ class Gitea::Repository::Contributors::GetService < Gitea::ClientService
headers = response.headers.to_hash
body = JSON.parse(response.body)
total_count = headers["x-total"]
result.merge(total_count: total_count.to_i, body: body)
total_contributions = headers["x-total-contributions"]
result.merge(total_count: total_count.to_i, total_contributions: total_contributions.to_i, body: body)
else
nil
# {status: -1, message: "#{body['message']}"}

View File

@ -8,6 +8,7 @@ end
json.status_name issue.issue_status&.name
json.priority_name issue.priority&.name
json.milestone_name issue.version&.name
json.milestone_id issue.fixed_version_id
json.author do
if issue.user.present?
json.partial! "api/v1/users/simple_user", locals: {user: issue.user}

View File

@ -2,16 +2,11 @@ user = $redis_cache.hgetall("v2-owner-common:#{contributor["login"]}-#{contribut
if user.blank?
json.contributions contributor["contributions"]
# json.gid contributor["id"]
json.login contributor["login"]
json.login contributor["login"].downcase
json.type nil
json.name contributor["login"]
json.name contributor["login"].downcase
json.image_url User::Avatar.get_letter_avatar_url(contributor["login"])
if @cache_result.present?
db_user = User.find_by_id(contributor["id"])
if db_user.present?
json.contribution_perc db_user.contribution_perc(project)
end
end
json.contribution_perc User.new(login: contributor["login"], mail: contributor["email"]).simple_contribution_perc(project)
else
json.contributions contributor["contributions"]
# json.gid contributor["id"]
@ -21,6 +16,6 @@ else
json.image_url user["avatar_url"]
db_user = User.find_by_id(user["id"])
if db_user.present?
json.contribution_perc db_user.contribution_perc(project)
json.contribution_perc db_user.simple_contribution_perc(project)
end
end