From 48d1e13e9d84943886dce827bfaf1e5fd54995fd Mon Sep 17 00:00:00 2001 From: daiao <358551898@qq.com> Date: Tue, 27 Aug 2019 11:21:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E8=B7=B5=E8=AF=BE=E7=A8=8B=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/challenges_controller.rb | 2 ++ app/controllers/subjects_controller.rb | 34 +++++++++++++++++-- app/views/subjects/right_banner.json.jbuilder | 8 ++--- 3 files changed, 38 insertions(+), 6 deletions(-) diff --git a/app/controllers/challenges_controller.rb b/app/controllers/challenges_controller.rb index 9e87d3799..dc47b6562 100644 --- a/app/controllers/challenges_controller.rb +++ b/app/controllers/challenges_controller.rb @@ -74,6 +74,7 @@ class ChallengesController < ApplicationController ChallengeTag.create(:name => tag, :challenge_choose_id => @challenge_choose.id, :challenge_id => @challenge.id) end end + @challenge.update_column(:score, @challenge.challenge_chooses.sum(:score)) end rescue Exception => e raise ActiveRecord::Rollback @@ -95,6 +96,7 @@ class ChallengesController < ApplicationController @challenge.update_column(:modify_time, Time.now) end @challenge_choose.update_attributes(chooce_params) + @challenge.update_column(:score, @challenge.challenge_chooses.sum(:score)) # 单选多选题的更新 category = @challenge_choose.standard_answer.length > 1 ? 2 : 1 @challenge_choose.update_column(:category, category) diff --git a/app/controllers/subjects_controller.rb b/app/controllers/subjects_controller.rb index a62707536..f7dd520f6 100644 --- a/app/controllers/subjects_controller.rb +++ b/app/controllers/subjects_controller.rb @@ -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 diff --git a/app/views/subjects/right_banner.json.jbuilder b/app/views/subjects/right_banner.json.jbuilder index 9ca42c5bc..a289ad0a9 100644 --- a/app/views/subjects/right_banner.json.jbuilder +++ b/app/views/subjects/right_banner.json.jbuilder @@ -14,8 +14,8 @@ end # 我的进展 json.progress do - json.my_score @subject.my_subject_score - json.all_score @subject.all_score - json.learned @subject.my_subject_progress - json.time @subject.my_consume_time + json.my_score @my_score + json.all_score @all_score + json.learned @learned + json.time @time end \ No newline at end of file