|
|
|
@ -101,8 +101,9 @@ class SubjectsController < ApplicationController
|
|
|
|
|
@tags = ChallengeTag.where(challenge_id: challenge_ids).pluck(:name).uniq
|
|
|
|
|
# 用户获取的实训标签
|
|
|
|
|
# @user_tags = @subject.shixuns.map(&:user_tags_name).flatten.uniq
|
|
|
|
|
@user_tags = user_shixun_tags challenge_ids, @user.id
|
|
|
|
|
@my_subject_progress = @subject.my_subject_progress
|
|
|
|
|
|
|
|
|
|
# 用户进展
|
|
|
|
|
user_subject_progress(challenge_ids)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
def new
|
|
|
|
@ -436,4 +437,33 @@ class SubjectsController < ApplicationController
|
|
|
|
|
tip_exception("403", "")
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
# 用户进展和获取的标签
|
|
|
|
|
def user_subject_progress challenge_ids
|
|
|
|
|
pass_games = Game.select(:id, :cost_time, :challenge_id).where(status: 2, user_id: current_user.id, challenge_id: challenge_ids)
|
|
|
|
|
@all_score = Challenge.where(id: challenge_ids).sum(:score)
|
|
|
|
|
|
|
|
|
|
# 如果没有通关的,没必要再继续统计了
|
|
|
|
|
if pass_games.blank?
|
|
|
|
|
@my_score = 0
|
|
|
|
|
@learned = 0
|
|
|
|
|
@time = 0
|
|
|
|
|
@user_tags = []
|
|
|
|
|
else
|
|
|
|
|
pass_challenge_ids = pass_games.map(&:challenge_id)
|
|
|
|
|
subject_challenge_count = @subject.shixuns.sum(:challenges_count)
|
|
|
|
|
# 用户通关获得的标签
|
|
|
|
|
@user_tags = ChallengeTag.where(challenge_id: pass_challenge_ids).pluck(:name)
|
|
|
|
|
# 用户学习进度
|
|
|
|
|
@learned =
|
|
|
|
|
subject_challenge_count == 0 ? 0 :
|
|
|
|
|
((pass_challenge_ids.size.to_f / subject_challenge_count).round(2) * 100).to_i
|
|
|
|
|
# 用户通关分数
|
|
|
|
|
@my_score = Challenge.where(id: pass_challenge_ids).pluck(:score).sum
|
|
|
|
|
@time = pass_games.map(&:cost_time).sum
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
end
|
|
|
|
|