Merge branch 'develop' of https://git.trustie.net/jasder/forgeplus into develop

This commit is contained in:
jasder 2021-04-28 21:16:52 +08:00
commit 8bf02b1ee5
6 changed files with 29 additions and 17 deletions

View File

@ -215,7 +215,7 @@ class PullRequestsController < ApplicationController
def get_relatived
@project_tags = @project.issue_tags&.select(:id,:name, :color).as_json
@project_versions = @project.versions&.select(:id,:name, :status).as_json
@project_members = @project.members_user_infos
@project_members = @project.all_managers
@project_priories = IssuePriority&.select(:id,:name, :position).as_json
end

View File

@ -124,14 +124,13 @@ module TagChosenHelper
end
def render_cache_collaborators(project)
cache_key = "all_collaborators/#{project.members.maximum('created_on')}"
cache_key = "all_collaborators/#{project.all_collaborators.maximum('created_on')}"
Rails.cache.fetch(cache_key) do
project.members.includes(:user).collect do |event|
project.all_collaborators.order(created_on: :desc).collect do |user|
{
id: event.user&.id,
name: event.user&.show_real_name,
avatar_url: url_to_avatar(event.user),
id: user&.id,
name: user&.show_real_name,
avatar_url: url_to_avatar(user),
is_chosen: '0'
}
end
@ -171,10 +170,8 @@ module TagChosenHelper
# depended_issues_id = @depended_issues_id
end
project_members = project.members_user_infos
project_members_info = [] #指派给
project_members.includes(user: :user_extension).each do |member|
user = member&.user
project.all_collaborators.includes(:user_extension).each do |user|
if user
real_name = user.try(:show_real_name)
user_id = user.id

View File

@ -92,4 +92,16 @@ module ProjectOperable
def has_menu_permission(unit_type)
self.project_units.where(unit_type: unit_type).exists?
end
def all_collaborators
member_sql = User.joins(members: :roles).where(members: {project_id: self.id}, roles: {name: %w(Manager Developer Reporter)}).to_sql
team_user_sql = User.joins(teams: :team_projects).where(team_projects: {project_id: self.id}).to_sql
return User.from("( #{ member_sql } UNION #{ team_user_sql } ) AS users").distinct
end
def all_managers
member_sql = User.joins(members: :roles).where(members: {project_id: self.id}, roles: {name: %w(Manager)}).to_sql
team_user_sql = User.joins(teams: :team_projects).where(teams: {authorize: %w(owner admin)},team_projects: {project_id: self.id}).to_sql
return User.from("( #{ member_sql} UNION #{ team_user_sql } ) AS users").distinct
end
end

View File

@ -152,6 +152,9 @@ class User < Owner
# 项目
has_many :applied_projects, dependent: :destroy
has_many :operate_applied_transfer_projects, class_name: 'AppliedTransferProject', dependent: :destroy
has_many :members, dependent: :destroy
has_many :team_users, dependent: :destroy
has_many :teams, through: :team_users
# 教学案例
# has_many :libraries, dependent: :destroy

View File

@ -4,7 +4,7 @@ json.commits do
json.array! @compare_result['Commits'] do |commit|
json.author do
# TODO: 获取头像地址待优化
forge_user = User.includes(:user_extension).select(:id, :login).find_by(login: commit['Author']['Name'])
forge_user = User.includes(:user_extension).find_by(login: commit['Author']['Name'])
json.login commit['Author']['Name']
json.name commit['Author']['Name']
json.image_url forge_user.nil? ? '' : url_to_avatar(forge_user)
@ -12,7 +12,7 @@ json.commits do
json.committer do
# TODO: 获取头像地址待优化
forge_user = User.includes(:user_extension).select(:id, :login).find_by(login: commit['Committer']['Name'])
forge_user = User.includes(:user_extension).find_by(login: commit['Committer']['Name'])
json.login commit['Committer']['Name']
json.name commit['Committer']['Name']
json.image_url forge_user.nil? ? '' : url_to_avatar(forge_user)

View File

@ -5,10 +5,10 @@ json.issue_priories @project_priories
json.project_author @project.owner.try(:show_real_name)
json.project_name @project.try(:name)
json.members do
json.array! @project_members.to_a.each do |member|
json.id member.user_id
json.login member.user.try(:login)
json.name member.user.try(:show_real_name)
json.avatar_url url_to_avatar(member.user)
json.array! @project_members.to_a.each do |user|
json.id user.id
json.login user.try(:login)
json.name user.try(:show_real_name)
json.avatar_url url_to_avatar(user)
end
end