fix: avatar to get by forge url

This commit is contained in:
yystopf 2022-04-18 14:23:51 +08:00
parent fb5179523f
commit 142bf6ff92
3 changed files with 20 additions and 24 deletions

View File

@ -26,7 +26,7 @@ module ApiIndexHelper
{username: user.show_real_name,
user_id: user.id,
login: user.login,
image_url: "/images/#{forge_user_url_avatar(user)}?#{Time.now.to_i}",
image_url: "/images/#{url_to_avatar(user)}?#{Time.now.to_i}",
admin: user.admin?,
user_url: "/users/#{user.try(:login)}"
}

View File

@ -141,30 +141,26 @@ module ApplicationHelper
# 用户图像url如果不存在的话source为匿名用户即默认使用匿名用户图像
def url_to_avatar(source)
return "" if source&.id.blank?
if File.exist?(disk_filename(source&.class, source&.id))
ctime = File.ctime(disk_filename(source.class, source.id)).to_i
if source.class.to_s == 'User'
File.join(relative_path, ["#{source.class}", "#{source.id}"]) + "?t=#{ctime}"
else
File.join("images/avatars", ["#{source.class}", "#{source.id}"]) + "?t=#{ctime}"
end
elsif source.class.to_s == 'User'
str = source.user_extension.try(:gender).to_i == 0 ? "b" : "g"
File.join(relative_path, "#{source.class}", str)
elsif source.class.to_s == 'Subject'
File.join("images","educoder", "index", "subject", "subject#{rand(17)}.jpg")
elsif source.class.to_s == 'Shixun'
File.join("images","educoder", "index", "shixun", "shixun#{rand(23)}.jpg")
end
end
def forge_user_url_avatar(source)
platform_url = Rails.application.config_for(:configuration)['forge_platform_url']
if platform_url
return Rails.application.config_for(:configuration)['forge_platform_url'] + "/api/users/#{source&.login}/get_image" if source.class.to_s == 'User'
if platform_url && source.class.to_s == 'User'
return platform_url + "/api/users/#{source&.login}/get_image"
else
return url_to_avatar(source)
return "" if source&.id.blank?
if File.exist?(disk_filename(source&.class, source&.id))
ctime = File.ctime(disk_filename(source.class, source.id)).to_i
if source.class.to_s == 'User'
File.join(relative_path, ["#{source.class}", "#{source.id}"]) + "?t=#{ctime}"
else
File.join("images/avatars", ["#{source.class}", "#{source.id}"]) + "?t=#{ctime}"
end
elsif source.class.to_s == 'User'
str = source.user_extension.try(:gender).to_i == 0 ? "b" : "g"
File.join(relative_path, "#{source.class}", str)
elsif source.class.to_s == 'Subject'
File.join("images","educoder", "index", "subject", "subject#{rand(17)}.jpg")
elsif source.class.to_s == 'Shixun'
File.join("images","educoder", "index", "shixun", "shixun#{rand(23)}.jpg")
end
end
end

View File

@ -2,7 +2,7 @@ json.username @user.full_name
json.real_name @user.real_name
json.login @user.login
json.user_id @user.id
json.image_url forge_user_url_avatar(@user)
json.image_url url_to_avatar(@user)
json.admin @user.admin?
json.is_teacher @user.user_extension&.teacher?
json.user_identity @user.identity