From d5049dfc74eb0edadeacbc617f82bb3ab04e8bbc Mon Sep 17 00:00:00 2001 From: SylorHuang Date: Thu, 4 Jul 2019 15:11:10 +0800 Subject: [PATCH 1/7] fix bug --- app/views/graduation_topics/export.xlsx.axlsx | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/views/graduation_topics/export.xlsx.axlsx b/app/views/graduation_topics/export.xlsx.axlsx index ff5b58b11..77e9bec5a 100644 --- a/app/views/graduation_topics/export.xlsx.axlsx +++ b/app/views/graduation_topics/export.xlsx.axlsx @@ -1,5 +1,5 @@ wb = xlsx_package.workbook -wb.use_autowidth = false +# wb.use_autowidth = false wb.use_shared_strings = true wb.styles do |s| @@ -9,13 +9,13 @@ wb.styles do |s| bg_cc = s.add_style :bg_color=> "CCC1DA",:border => { :style => :thick, :color =>"000000" },:alignment => {wrap_text: true,:horizontal => :center,:vertical => :center } bg_ff = s.add_style :bg_color=> "FFC000",:border => { :style => :thick, :color =>"000000" },:alignment => {wrap_text: true,:horizontal => :center,:vertical => :center } bg_bb = s.add_style :bg_color=> "9BBB59",:border => { :style => :thick, :color =>"000000" },:alignment => {wrap_text: true,:horizontal => :center,:vertical => :center } - bg_cell = s.add_style :bg_color => "FAEBDC", :sz => 10,:height => 20,:b => true, :border => { :style => :thin, :color =>"000000" },:alignment => {wrap_text: true,:horizontal => :center,:vertical => :center } + bg_cell = s.add_style :bg_color => "FAEBDC", :sz => 10,:b => true, :border => { :style => :thin, :color =>"000000" },:alignment => {wrap_text: true,:horizontal => :center,:vertical => :center } wb.add_worksheet(:name => "毕设选题情况汇总") do |sheet| sheet.sheet_view.show_grid_lines = false sheet_title = table_columns sheet_title_c = sheet_title.count - sheet.add_row sheet_title, :style => bg_cell,:height => 15 + sheet.add_row sheet_title,:height => 30, :style => bg_cell sheet["J1:L1"].each { |c| c.style = bg_db } sheet["M1:O1"].each { |c| c.style = bg_cc } sheet["P1:Q1"].each { |c| c.style = bg_d2 } @@ -23,10 +23,10 @@ wb.styles do |s| sheet["U1:W1"].each { |c| c.style = bg_bb } if topic_users.count > 0 topic_users.each do |user| - sheet.add_row user, :style => sz_all + sheet.add_row user,:height => 18, :style => sz_all end #each_widh_index else - sheet.add_row ["--"]*sheet_title_c + sheet.add_row ["--"]*sheet_title_c,:height => 18 end sheet.column_widths *([15]*sheet.column_info.count) From d27bb78d32b989017468852b3b685c492869693b Mon Sep 17 00:00:00 2001 From: SylorHuang Date: Thu, 4 Jul 2019 15:14:00 +0800 Subject: [PATCH 2/7] fix bug --- app/views/graduation_topics/export.xlsx.axlsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/graduation_topics/export.xlsx.axlsx b/app/views/graduation_topics/export.xlsx.axlsx index 77e9bec5a..2da608f6a 100644 --- a/app/views/graduation_topics/export.xlsx.axlsx +++ b/app/views/graduation_topics/export.xlsx.axlsx @@ -15,7 +15,7 @@ wb.styles do |s| sheet.sheet_view.show_grid_lines = false sheet_title = table_columns sheet_title_c = sheet_title.count - sheet.add_row sheet_title,:height => 30, :style => bg_cell + sheet.add_row sheet_title,:height => 32, :style => bg_cell sheet["J1:L1"].each { |c| c.style = bg_db } sheet["M1:O1"].each { |c| c.style = bg_cc } sheet["P1:Q1"].each { |c| c.style = bg_d2 } From b990d6b74ea956dbb59efdf4d52ca8d0ca7b1fd0 Mon Sep 17 00:00:00 2001 From: daiao <358551898@qq.com> Date: Thu, 4 Jul 2019 16:14:03 +0800 Subject: [PATCH 3/7] =?UTF-8?q?=E9=80=89=E6=8B=A9=E9=A2=98=E6=9F=A5?= =?UTF-8?q?=E7=9C=8B=E5=8F=82=E8=80=83=E7=AD=94=E6=A1=88=E5=8F=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/games_controller.rb | 13 +++++++-- app/views/games/get_answer_info.json.jbuilder | 28 +++++++++++++------ 2 files changed, 30 insertions(+), 11 deletions(-) diff --git a/app/controllers/games_controller.rb b/app/controllers/games_controller.rb index 56c1d9347..b490352bb 100644 --- a/app/controllers/games_controller.rb +++ b/app/controllers/games_controller.rb @@ -225,8 +225,17 @@ class GamesController < ApplicationController # GET: /tasks/:identifier/get_answer_info # 0 直接查看答案, 1 查看答案弹框, 2 答案详情弹框 def get_answer_info - challenge = @game.challenge - @challenge_answers = challenge.challenge_answers + @challenge = @game.challenge + @challenge_answers = if @challenge.st == 0 + @challenge.challenge_answers + else + result = [] + @challenge.challenge_chooses.each do |choose| + result << {:position => choose.position, :answer => (choose.answer.blank? ? choose.standard_answer : choose.answer)} + end + end + + # 平台已认证的老师需要控制 @power = (@identity < User::EDU_GAME_MANAGER) if !@power diff --git a/app/views/games/get_answer_info.json.jbuilder b/app/views/games/get_answer_info.json.jbuilder index 7620a991a..4cfebd856 100644 --- a/app/views/games/get_answer_info.json.jbuilder +++ b/app/views/games/get_answer_info.json.jbuilder @@ -1,15 +1,25 @@ index = 0 json.status 3 -json.message do - json.array! @challenge_answers do |answer| - index += 1 - json.answer_id answer.id - json.answer_name answer.name - json.answer_score answer.score - # 高层级不给答案 - if @power || @game.answer_open >= index - json.answer_contents answer.contents +if @challenge.st == 0 + json.message do + json.array! @challenge_answers do |answer| + index += 1 + json.answer_id answer.id + json.answer_name answer.name + json.answer_score answer.score + # 高层级不给答案 + if @power || @game.answer_open >= index + json.answer_contents answer.contents + end + end + end +else + json.message do + json.array! @challenge_answers do |answer| + json.position answer[:postion] + json.answer_contents answer[:answer] end end end + From 716b5af39fd8be91981344492f328d18390c488f Mon Sep 17 00:00:00 2001 From: daiao <358551898@qq.com> Date: Thu, 4 Jul 2019 16:14:56 +0800 Subject: [PATCH 4/7] =?UTF-8?q?=E9=80=89=E6=8B=A9=E9=A2=98=E7=AD=94?= =?UTF-8?q?=E6=A1=88=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/games_controller.rb | 17 +++++++++-------- app/views/games/get_answer_info.json.jbuilder | 1 + 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/app/controllers/games_controller.rb b/app/controllers/games_controller.rb index b490352bb..0142ef2ba 100644 --- a/app/controllers/games_controller.rb +++ b/app/controllers/games_controller.rb @@ -226,14 +226,15 @@ class GamesController < ApplicationController # 0 直接查看答案, 1 查看答案弹框, 2 答案详情弹框 def get_answer_info @challenge = @game.challenge - @challenge_answers = if @challenge.st == 0 - @challenge.challenge_answers - else - result = [] - @challenge.challenge_chooses.each do |choose| - result << {:position => choose.position, :answer => (choose.answer.blank? ? choose.standard_answer : choose.answer)} - end - end + if @challenge.st == 0 + @challenge_answers = @challenge.challenge_answers + else + result = [] + @challenge.challenge_chooses.each do |choose| + result << {:position => choose.position, :answer => (choose.answer.blank? ? choose.standard_answer : choose.answer)} + end + @challenge_answers = result + end # 平台已认证的老师需要控制 diff --git a/app/views/games/get_answer_info.json.jbuilder b/app/views/games/get_answer_info.json.jbuilder index 4cfebd856..57b180816 100644 --- a/app/views/games/get_answer_info.json.jbuilder +++ b/app/views/games/get_answer_info.json.jbuilder @@ -1,5 +1,6 @@ index = 0 json.status 3 +# st: 0 实践题 1 选择题 if @challenge.st == 0 json.message do json.array! @challenge_answers do |answer| From b6ccd6562cc18fb81e3405541ebfb7c375d9fcf3 Mon Sep 17 00:00:00 2001 From: daiao <358551898@qq.com> Date: Thu, 4 Jul 2019 16:27:04 +0800 Subject: [PATCH 5/7] =?UTF-8?q?=E9=80=89=E6=8B=A9=E9=A2=98=E6=9F=A5?= =?UTF-8?q?=E7=9C=8B=E5=AE=9E=E8=AE=AD=E7=AD=94=E6=A1=88=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/games_controller.rb | 38 +++++++++---------- app/views/games/get_answer_info.json.jbuilder | 28 +++++--------- app/views/games/unlock_answer.json.jbuilder | 6 ++- 3 files changed, 33 insertions(+), 39 deletions(-) diff --git a/app/controllers/games_controller.rb b/app/controllers/games_controller.rb index 0142ef2ba..eea4e4dc0 100644 --- a/app/controllers/games_controller.rb +++ b/app/controllers/games_controller.rb @@ -225,18 +225,8 @@ class GamesController < ApplicationController # GET: /tasks/:identifier/get_answer_info # 0 直接查看答案, 1 查看答案弹框, 2 答案详情弹框 def get_answer_info - @challenge = @game.challenge - if @challenge.st == 0 - @challenge_answers = @challenge.challenge_answers - else - result = [] - @challenge.challenge_chooses.each do |choose| - result << {:position => choose.position, :answer => (choose.answer.blank? ? choose.standard_answer : choose.answer)} - end - @challenge_answers = result - end - - + challenge = @game.challenge + @challenge_answers = challenge.challenge_answers # 平台已认证的老师需要控制 @power = (@identity < User::EDU_GAME_MANAGER) if !@power @@ -259,14 +249,22 @@ class GamesController < ApplicationController # 解锁答案 # GET: /tasks/:identifier/get_answer_info?answer_id=? def unlock_answer - @answer = ChallengeAnswer.find(params[:answer_id]) - challenge = @answer.challenge - # 解锁需要本层级的答案是否需要扣分 - points = challenge.challenge_answers.where(level: @game.answer_open+1..@answer.level).sum(:score) - deduct_score = ((points / 100.0) * challenge.score).to_i - uid_logger("############金币数目: #{current_user.grade}") - unless current_user.grade.to_i - deduct_score > 0 - tip_exception("您没有足够的金币") + @challenge = @game.challenge + if @challenge.st == 0 + @answer = ChallengeAnswer.find(params[:answer_id]) + challenge = @answer.challenge + # 解锁需要本层级的答案是否需要扣分 + points = challenge.challenge_answers.where(level: @game.answer_open+1..@answer.level).sum(:score) + deduct_score = ((points / 100.0) * challenge.score).to_i + uid_logger("############金币数目: #{current_user.grade}") + unless current_user.grade.to_i - deduct_score > 0 + tip_exception("您没有足够的金币") + end + else + @answer = [] + @challenge.challenge_chooses.each do |choose| + @answer << {:position => choose.position, :answer => (choose.answer.blank? ? choose.standard_answer : choose.answer)} + end end ActiveRecord::Base.transaction do diff --git a/app/views/games/get_answer_info.json.jbuilder b/app/views/games/get_answer_info.json.jbuilder index 57b180816..0f150d500 100644 --- a/app/views/games/get_answer_info.json.jbuilder +++ b/app/views/games/get_answer_info.json.jbuilder @@ -1,26 +1,18 @@ index = 0 json.status 3 # st: 0 实践题 1 选择题 -if @challenge.st == 0 - json.message do - json.array! @challenge_answers do |answer| - index += 1 - json.answer_id answer.id - json.answer_name answer.name - json.answer_score answer.score - # 高层级不给答案 - if @power || @game.answer_open >= index - json.answer_contents answer.contents - end - end - end -else - json.message do - json.array! @challenge_answers do |answer| - json.position answer[:postion] - json.answer_contents answer[:answer] +json.message do + json.array! @challenge_answers do |answer| + index += 1 + json.answer_id answer.id + json.answer_name answer.name + json.answer_score answer.score + # 高层级不给答案 + if @power || @game.answer_open >= index + json.answer_contents answer.contents end end end + diff --git a/app/views/games/unlock_answer.json.jbuilder b/app/views/games/unlock_answer.json.jbuilder index 71018c7be..9776fde46 100644 --- a/app/views/games/unlock_answer.json.jbuilder +++ b/app/views/games/unlock_answer.json.jbuilder @@ -1 +1,5 @@ -json.contents @answer.contents \ No newline at end of file +if @challenge.st == 0 + json.contents @answer.contents +else + json.contents @answer +end From 1730552269ea552aef42f67acd45496bc7f93338 Mon Sep 17 00:00:00 2001 From: SylorHuang Date: Thu, 4 Jul 2019 17:21:32 +0800 Subject: [PATCH 6/7] fix bug --- app/controllers/polls_controller.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/controllers/polls_controller.rb b/app/controllers/polls_controller.rb index ee2b061ba..57bbc9769 100644 --- a/app/controllers/polls_controller.rb +++ b/app/controllers/polls_controller.rb @@ -1302,7 +1302,7 @@ class PollsController < ApplicationController sub_commit = [] user_commit = [] poll_users_info = %w(序号) - poll_ques_titles = poll_questions.pluck(:question_title).map {|k| k.strip if k.present?} + poll_ques_titles = poll_questions.pluck(:question_title).map {|k| ActionController::Base.helpers.strip_tags(k) if k.present?} poll_un_anony = poll.un_anonymous if poll_un_anony #是否匿名,默认为false user_info = %w(登陆名 真实姓名 邮箱 学号) From eb5cf9f75957910e232397c97f2f2ec6dcdbd45f Mon Sep 17 00:00:00 2001 From: daiao <358551898@qq.com> Date: Thu, 4 Jul 2019 17:38:04 +0800 Subject: [PATCH 7/7] =?UTF-8?q?=E9=80=89=E6=8B=A9=E9=A2=98=E7=AD=94?= =?UTF-8?q?=E6=A1=88=E8=8E=B7=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/games_controller.rb | 75 +++++++++++++------ .../games/get_choose_answer.json.jbuilder | 6 ++ app/views/games/unlock_answer.json.jbuilder | 6 +- .../games/unlock_choose_answer.json.jbuilder | 6 ++ config/routes.rb | 2 + 5 files changed, 68 insertions(+), 27 deletions(-) create mode 100644 app/views/games/get_choose_answer.json.jbuilder create mode 100644 app/views/games/unlock_choose_answer.json.jbuilder diff --git a/app/controllers/games_controller.rb b/app/controllers/games_controller.rb index eea4e4dc0..ea09b9003 100644 --- a/app/controllers/games_controller.rb +++ b/app/controllers/games_controller.rb @@ -221,12 +221,12 @@ class GamesController < ApplicationController @result = challenge.st == 0 ? challenge.try(:answer) : challenge.choose_answer end - # 获取答案 + # 获取实践题答案 # GET: /tasks/:identifier/get_answer_info # 0 直接查看答案, 1 查看答案弹框, 2 答案详情弹框 def get_answer_info - challenge = @game.challenge - @challenge_answers = challenge.challenge_answers + @challenge = @game.challenge + @challenge_answers = @challenge.challenge_answers # 平台已认证的老师需要控制 @power = (@identity < User::EDU_GAME_MANAGER) if !@power @@ -243,43 +243,49 @@ class GamesController < ApplicationController end end end + end + # 获取选择题答案 + def get_choose_answer + @challenge = @game.challenge + tip_exception("本接口只能获取选择题答案") if @challenge.st != 1 + @power = (@identity < User::EDU_GAME_MANAGER) + # 如果没权限,也没看过答案,则需要解锁 + if @game.answer_open == 0 && !@power + tip_exception(1, @challenge.choose_score) + else + @challenge_chooses = @challenge.challenge_chooses + end end - # 解锁答案 + # 解锁实践题答案 # GET: /tasks/:identifier/get_answer_info?answer_id=? def unlock_answer @challenge = @game.challenge - if @challenge.st == 0 - @answer = ChallengeAnswer.find(params[:answer_id]) - challenge = @answer.challenge - # 解锁需要本层级的答案是否需要扣分 - points = challenge.challenge_answers.where(level: @game.answer_open+1..@answer.level).sum(:score) - deduct_score = ((points / 100.0) * challenge.score).to_i - uid_logger("############金币数目: #{current_user.grade}") - unless current_user.grade.to_i - deduct_score > 0 - tip_exception("您没有足够的金币") - end - else - @answer = [] - @challenge.challenge_chooses.each do |choose| - @answer << {:position => choose.position, :answer => (choose.answer.blank? ? choose.standard_answer : choose.answer)} - end + @answer = ChallengeAnswer.find(params[:answer_id]) + challenge = @answer.challenge + # 解锁需要本层级的答案是否需要扣分 + points = challenge.challenge_answers.where(level: @game.answer_open + 1..@answer.level).sum(:score) + deduct_score = ((points / 100.0) * challenge.score).to_i + uid_logger("############金币数目: #{current_user.grade}") + unless current_user.grade.to_i - deduct_score > 0 + tip_exception("您没有足够的金币") end ActiveRecord::Base.transaction do begin # 积分消耗情况记录 score = challenge.st.zero? ? -deduct_score : -challenge.choose_score.to_i - RewardGradeService.call(current_user, container_id: @answer.id, container_type: 'Answer', score: score) + RewardGradeService.call(current_user, container_id: @game.id, container_type: 'Answer', score: score) # 通关查看答案 不扣 得分 + answer_open = @challenge.st == 1 ? 1 : @answer.level if @game.status == 2 - @game.update_attributes!(:answer_open => @answer.level) + @game.update_attributes!(:answer_open =>answer_open) else # 扣除总分计算 answer_deduction = challenge.challenge_answers.where("level <= #{@answer.level}").sum(:score) - @game.update_attributes!(:answer_open => @answer.level, :answer_deduction => answer_deduction) + @game.update_attributes!(:answer_open => answer_open, :answer_deduction => answer_deduction) end rescue Exception => e @@ -287,7 +293,32 @@ class GamesController < ApplicationController raise ActiveRecord::Rollback end end + end + # 解锁选择题答案 + def unlock_choose_answer + @challenge = @game.challenge + score = @challenge.choose_score + unless current_user.grade.to_i - score > 0 + tip_exception("您没有足够的金币") + end + ActiveRecord::Base.transaction do + begin + # 积分消耗情况记录 + RewardGradeService.call(current_user, container_id: @game.id, container_type: 'Answer', score: -score) + # 通关查看答案 不扣 得分 + if @game.status == 2 + @game.update_attributes!(:answer_open => 1) + else + # 扣除总分计算 + @game.update_attributes!(:answer_open => 1, :answer_deduction => 100) + end + @challenge_answers = @challenge.challenge_chooses + rescue Exception => e + uid_logger_error("#######金币扣除异常: #{e.message}") + raise ActiveRecord::Rollback + end + end end # 查看答案需要扣取金币 diff --git a/app/views/games/get_choose_answer.json.jbuilder b/app/views/games/get_choose_answer.json.jbuilder new file mode 100644 index 000000000..15586de13 --- /dev/null +++ b/app/views/games/get_choose_answer.json.jbuilder @@ -0,0 +1,6 @@ +json.choose_answers do + json.array! @challenge_chooses do |choose| + json.position choose.position + json.answer choose.answer.blank? ? choose.standard_answer : choose.answer + end +end diff --git a/app/views/games/unlock_answer.json.jbuilder b/app/views/games/unlock_answer.json.jbuilder index 9776fde46..322536c2b 100644 --- a/app/views/games/unlock_answer.json.jbuilder +++ b/app/views/games/unlock_answer.json.jbuilder @@ -1,5 +1 @@ -if @challenge.st == 0 - json.contents @answer.contents -else - json.contents @answer -end +json.contents @answer.contents diff --git a/app/views/games/unlock_choose_answer.json.jbuilder b/app/views/games/unlock_choose_answer.json.jbuilder new file mode 100644 index 000000000..15586de13 --- /dev/null +++ b/app/views/games/unlock_choose_answer.json.jbuilder @@ -0,0 +1,6 @@ +json.choose_answers do + json.array! @challenge_chooses do |choose| + json.position choose.position + json.answer choose.answer.blank? ? choose.standard_answer : choose.answer + end +end diff --git a/config/routes.rb b/config/routes.rb index e09808f6c..cf5bad608 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -124,6 +124,8 @@ Rails.application.routes.draw do get :get_answer_info get :unlock_answer get :check_test_sets + get :unlock_choose_answer + get :get_choose_answer end collection do