From 1fc9ff448f6f6b4e699007a2fbf74afe6b9cd427 Mon Sep 17 00:00:00 2001 From: jingquan huang Date: Fri, 31 May 2019 14:16:14 +0800 Subject: [PATCH 01/12] =?UTF-8?q?=E5=8E=BB=E6=8E=89=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E5=88=86=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/cnmoocs_service.rb | 31 ++++++++++--------------------- 1 file changed, 10 insertions(+), 21 deletions(-) diff --git a/app/services/cnmoocs_service.rb b/app/services/cnmoocs_service.rb index 72318905..bce54650 100644 --- a/app/services/cnmoocs_service.rb +++ b/app/services/cnmoocs_service.rb @@ -3,60 +3,49 @@ class CnmoocsService include GamesHelper def get_resources_data params - page = params[:pageNo].to_i - limit = params[:pageSize] || 16 - offset = page * limit.to_i + resources = [] if params[:level].to_s == "1" subjects = Subject.find_by_sql("SELECT subjects.id, subjects.name, subjects.status, COUNT(myshixuns.id) AS myshixun_member_count FROM myshixuns, stage_shixuns, subjects WHERE myshixuns.shixun_id = stage_shixuns.shixun_id AND stage_shixuns.subject_id = subjects.id AND `subjects`.`hidden` = 0 AND `subjects`.`status` = 2 - GROUP BY subjects.id ORDER BY myshixun_member_count DESC limit #{offset},#{limit}") + GROUP BY subjects.id ORDER BY myshixun_member_count DESC") + subjects.each do |subject| resources << {resourceId: subject.id, parentId: nil, resourceName: subject.name, accessType: 0, nodeType: 0, resourceType: 2} end - totalCount = Subject.where(:status => 2, :hidden => 0).count - count = subjects.count + elsif params[:level].to_s == "2" return {error: -1, messages: "请求二级及其更高目录时,parentId不能为空"} if params[:parentId].blank? - stages = Stage.where(:subject_id => params[:parentId]).offset(offset).limit(limit) + stages = Stage.where(:subject_id => params[:parentId]) stages.each do |stage| resources << {resourceId: stage.id, parentId: params[:parentId], resourceName: stage.name, accessType: 0, nodeType: 0, resourceType: 2} end - totalCount = Stage.where(:subject_id => params[:parentId]).count - count = stages.count + elsif params[:level].to_s == "3" return {error: -1, messages: "请求二级及其更高目录时,parentId不能为空"} if params[:parentId].blank? shixun_ids = StageShixun.where(:stage_id => params[:parentId]).pluck(:shixun_id) - shixuns = Shixun.where(:id => shixun_ids).offset(offset).limit(limit) + shixuns = Shixun.where(:id => shixun_ids) shixuns.each do |shixun| resources << {resourceId: shixun.id, parentId: params[:parentId], resourceName: shixun.name, accessType: 2, nodeType: 1, resourceType: 1} end - totalCount = Shixun.where(:id => shixun_ids).count - count = shixuns.count + end - pageCount = ((totalCount / limit.to_f) == (totalCount / limit)) ? (totalCount / limit) : ((totalCount / limit) + 1) {error: 0, messages: "请求成功", - page: {count: count, totalCount: totalCount, pageNo: page, pageSize: limit, pageCount: pageCount}, data: {resources: resources} } end def search_resources params - page = params[:pageNo].to_i - limit = params[:pageSize] || 16 - offset = page * limit.to_i shixuns = Shixun.select([:id, :identifier, :name, :myshixuns_count, :averge_star, :challenges_count, :trainee]). where(status: 2, hidden: 0).where("name like ?", "%#{params[:name]}%") - shixun_count = shixuns.count - pageCount = ((shixun_count / limit.to_f) == (shixun_count / limit)) ? (shixun_count / limit) : ((shixun_count / limit) + 1) - shixuns = shixuns.order("myshixuns_count desc").offset(offset).limit(limit) + + shixuns = shixuns.order("myshixuns_count desc") shixun_list = shixun_data shixuns {error: 0, messages: "请求成功", - page: {count: shixuns.count, totalCount: shixun_count, pageNo: page, pageSize: limit, pageCount: pageCount}, data: shixun_list } end From f1c0c402ebc757f82bcc854eafccc47c62e48087 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Fri, 31 May 2019 16:49:45 +0800 Subject: [PATCH 02/12] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/zip_service.rb | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/app/services/zip_service.rb b/app/services/zip_service.rb index 759c7afa..8864999d 100644 --- a/app/services/zip_service.rb +++ b/app/services/zip_service.rb @@ -50,10 +50,11 @@ module ZipService bid_homework_path = [] digests = [] members = exercise.course.members - exercise_users.each do |exercise_user| + exercise_users.each_with_index do |exercise_user, index| member = members.where(:user_id => exercise_user.user_id).first group_name = member.try(:course_group_id).to_i == 0 ? '未分班' : member.course_group.name - export_file_name = "#{group_name}-#{exercise.course_id}-#{exercise.exercise_name}-#{exercise_user.user.user_extensions.student_id}-#{exercise_user.user.show_real_name}" + ".pdf" + # export_file_name = "#{group_name}-#{exercise.course_id}-#{exercise.exercise_name}-#{exercise_user.user.user_extensions.student_id}-#{exercise_user.user.show_real_name}" + ".pdf" + export_file_name = "#{exercise.course_id}-#{index+1}" + ".pdf" out_file = export_user_exercise(exercise, exercise_user, export_file_name) file_name = File::expand_path(out_file) From bf178e6647cc61b38cec807a2205427b3f4445b7 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Fri, 31 May 2019 16:52:56 +0800 Subject: [PATCH 03/12] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/zip_service.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/services/zip_service.rb b/app/services/zip_service.rb index 8864999d..ef71063e 100644 --- a/app/services/zip_service.rb +++ b/app/services/zip_service.rb @@ -52,7 +52,7 @@ module ZipService members = exercise.course.members exercise_users.each_with_index do |exercise_user, index| member = members.where(:user_id => exercise_user.user_id).first - group_name = member.try(:course_group_id).to_i == 0 ? '未分班' : member.course_group.name + group_name = member.try(:course_group_id).to_i == 0 ? '未分班' : member.course_group.try(:name) # export_file_name = "#{group_name}-#{exercise.course_id}-#{exercise.exercise_name}-#{exercise_user.user.user_extensions.student_id}-#{exercise_user.user.show_real_name}" + ".pdf" export_file_name = "#{exercise.course_id}-#{index+1}" + ".pdf" out_file = export_user_exercise(exercise, exercise_user, export_file_name) From 1f3cf342bad46378897b30f69e4047522aa92550 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Fri, 31 May 2019 17:02:09 +0800 Subject: [PATCH 04/12] =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/zip_service.rb | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/app/services/zip_service.rb b/app/services/zip_service.rb index ef71063e..cb278e98 100644 --- a/app/services/zip_service.rb +++ b/app/services/zip_service.rb @@ -50,11 +50,10 @@ module ZipService bid_homework_path = [] digests = [] members = exercise.course.members - exercise_users.each_with_index do |exercise_user, index| + exercise_users.each do |exercise_user| member = members.where(:user_id => exercise_user.user_id).first group_name = member.try(:course_group_id).to_i == 0 ? '未分班' : member.course_group.try(:name) - # export_file_name = "#{group_name}-#{exercise.course_id}-#{exercise.exercise_name}-#{exercise_user.user.user_extensions.student_id}-#{exercise_user.user.show_real_name}" + ".pdf" - export_file_name = "#{exercise.course_id}-#{index+1}" + ".pdf" + export_file_name = "#{group_name}-#{exercise.course_id}-#{exercise.exercise_name}-#{exercise_user.user.user_extensions.student_id}-#{exercise_user.user.show_real_name}" + ".pdf" out_file = export_user_exercise(exercise, exercise_user, export_file_name) file_name = File::expand_path(out_file) From 39c07c7b300fa8bd6a6133765e20141b91da7c35 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Fri, 31 May 2019 19:09:12 +0800 Subject: [PATCH 05/12] ttt --- app/api/mobile/apis/cnmooc.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/api/mobile/apis/cnmooc.rb b/app/api/mobile/apis/cnmooc.rb index 7745cf8e..fb736737 100644 --- a/app/api/mobile/apis/cnmooc.rb +++ b/app/api/mobile/apis/cnmooc.rb @@ -3,7 +3,7 @@ module Mobile module Apis class Cnmooc < Grape::API - before {cnmooc_access_key!} + # before {cnmooc_access_key!} content_type :json, 'application/json;charset=UTF-8' resources :cnmoocs do From c1f6890f2898369d1ec15b18d5559ed3597c7da6 Mon Sep 17 00:00:00 2001 From: daiao <358551898@qq.com> Date: Fri, 31 May 2019 19:37:40 +0800 Subject: [PATCH 06/12] =?UTF-8?q?=E5=8F=82=E6=95=B0=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/cnmooc.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/api/mobile/apis/cnmooc.rb b/app/api/mobile/apis/cnmooc.rb index 7745cf8e..a5540327 100644 --- a/app/api/mobile/apis/cnmooc.rb +++ b/app/api/mobile/apis/cnmooc.rb @@ -39,7 +39,7 @@ module Mobile desc "获取资源访问地址" params do requires :userId, type: Integer, desc: "用户ID" - requires :resouceId, type: String, desc: "资源唯一标示" + requires :resourceId, type: String, desc: "资源唯一标示" requires :accessType, type: Integer, desc: "资源类型" end get "source_url" do @@ -72,7 +72,7 @@ module Mobile desc "资源学习情况查询" params do requires :userId, type: Integer, desc: "用户ID" - requires :resouceId, type: String, desc: "资源唯一标示" + requires :resourceId, type: String, desc: "资源唯一标示" end get 'get_students_data' do CnmoocsService.new.get_students_data params From f1e83edd0b77db8bc3bb420a6a5e1f0fbc689d01 Mon Sep 17 00:00:00 2001 From: jingquan huang Date: Sat, 1 Jun 2019 08:01:51 +0800 Subject: [PATCH 07/12] =?UTF-8?q?mooc=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/services/cnmoocs_service.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/services/cnmoocs_service.rb b/app/services/cnmoocs_service.rb index bce54650..3f28a0ef 100644 --- a/app/services/cnmoocs_service.rb +++ b/app/services/cnmoocs_service.rb @@ -108,7 +108,7 @@ class CnmoocsService if shixun.blank? return { error: -1, messages: '资源不存在' } end - { error: 0, messages: '成功', accessUrl: "#{Redmine::Configuration['educoder_domain']}/shixuns/#{shixun.identifier}/challenges?authToken=#{token.value}" } + { error: 0, messages: '成功', data: {accessUrl: "#{Redmine::Configuration['educoder_domain']}/shixuns/#{shixun.identifier}/challenges?authToken=#{token.value}" }} end def get_students_data params @@ -121,7 +121,7 @@ class CnmoocsService myshixun.games.each do |game| time += game.consumes_time_int end - {error: 0, messages: '成功', data: {time: time, score: score * 10}} + {error: 0, messages: '成功', data: {experiment: {time: time, score: score * 10}}} else {error: -1, messages: '用户还未开始学习此资源'} end From 808779e9bf22aa3c6b6cce3e9da57794896de484 Mon Sep 17 00:00:00 2001 From: jingquan huang Date: Sat, 1 Jun 2019 08:08:21 +0800 Subject: [PATCH 08/12] mooc --- app/services/cnmoocs_service.rb | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/app/services/cnmoocs_service.rb b/app/services/cnmoocs_service.rb index 3f28a0ef..d380e9d6 100644 --- a/app/services/cnmoocs_service.rb +++ b/app/services/cnmoocs_service.rb @@ -121,14 +121,12 @@ class CnmoocsService myshixun.games.each do |game| time += game.consumes_time_int end - {error: 0, messages: '成功', data: {experiment: {time: time, score: score * 10}}} + {error: 0, messages: '成功', data: {experiment: {time: time, totalTime: score * 10}}} else {error: -1, messages: '用户还未开始学习此资源'} end - end - private def shixun_data shixuns shixun_list = [] From ce480703f469c7517bd55929c6d78b2e3e57adbf Mon Sep 17 00:00:00 2001 From: jingquan huang Date: Sat, 1 Jun 2019 09:11:49 +0800 Subject: [PATCH 09/12] .. --- app/views/common/index.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/common/index.html.erb b/app/views/common/index.html.erb index e833bafa..48dc96a1 100644 --- a/app/views/common/index.html.erb +++ b/app/views/common/index.html.erb @@ -1 +1 @@ -Educoder
\ No newline at end of file +Educoder
\ No newline at end of file From a2de61dc23b14dcd2765de64019eb9e76c7ca04d Mon Sep 17 00:00:00 2001 From: jingquan huang Date: Sat, 1 Jun 2019 09:15:21 +0800 Subject: [PATCH 10/12] .. --- app/views/common/index.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/common/index.html.erb b/app/views/common/index.html.erb index 48dc96a1..35c63ca6 100644 --- a/app/views/common/index.html.erb +++ b/app/views/common/index.html.erb @@ -1 +1 @@ -Educoder
\ No newline at end of file +Educoder
\ No newline at end of file From 5f59d710d1bd6a03d0ea91f0c96c21de793b254a Mon Sep 17 00:00:00 2001 From: jingquan huang Date: Sat, 1 Jun 2019 09:32:35 +0800 Subject: [PATCH 11/12] 500 --- app/services/games_service.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/app/services/games_service.rb b/app/services/games_service.rb index 253b5bcd..9c2dc93f 100644 --- a/app/services/games_service.rb +++ b/app/services/games_service.rb @@ -599,9 +599,9 @@ class GamesService return {:result => "success", :resubmit => resubmit, :ableToCreate => res['ableToCreate'], :waitNum => res['waitNum'], :waitingTime => res['waitingTime'], :position => game_challenge.position, :port => res['port'], :had_done => game.had_done} - rescue Exception => e - Rails.logger.error("评测出错,详情:" + e.message) - return {:result => 'fail', :contents =>"实训云平台繁忙(繁忙等级:502),请稍后刷新并重试", :position => game_challenge.position, :had_done => game.had_done} + # rescue Exception => e + # Rails.logger.error("评测出错,详情:" + e.message) + # return {:result => 'fail', :contents =>"实训云平台繁忙(繁忙等级:502),请稍后刷新并重试", :position => game_challenge.position, :had_done => game.had_done} end # 单评测类型(比较快的类型,实时返回结果,即不用中间层再回调trainint_task_status) From b1551c994023a0832b1e92658e27304f21de910d Mon Sep 17 00:00:00 2001 From: jingquan huang Date: Sat, 1 Jun 2019 09:36:23 +0800 Subject: [PATCH 12/12] 500 --- app/services/games_service.rb | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/app/services/games_service.rb b/app/services/games_service.rb index 9c2dc93f..500e6e83 100644 --- a/app/services/games_service.rb +++ b/app/services/games_service.rb @@ -115,7 +115,7 @@ class GamesService # 区分评测过未评测过,未评测过按需求取数据 sql = if max_query_index > 0 - "SELECT + "SELECT b.code, b.actual_output, b.out_put, b.result, b.compile_success, a.is_public, a.input, a.output FROM (SELECT position, input, output, challenge_id, is_public FROM test_sets where challenge_id=#{game_challenge.id}) a @@ -154,7 +154,7 @@ class GamesService Rails.logger.warn(latest_output) output_hash = {:test_sets => test_sets}.merge(:had_test_count => had_test_count, :test_sets_count => test_sets_count, - :had_passed_testsests_error_count => had_passed_testsests_error_count) + :had_passed_testsests_error_count => had_passed_testsests_error_count) multi_webssh = shixun.webssh == 2 && shixun.multi_webssh result = {:tpm_modified => tpm_modified, :tpm_cases_modified => tpm_cases_modified, :hide_code => shixun.hide_code, :forbid_copy => shixun.forbid_copy, :output_sets => output_hash, :latest_output => latest_output, :mirror_name => mirror_name, :multi_webssh => multi_webssh, @@ -533,6 +533,7 @@ class GamesService # 更新评测次数 game.update_column(:evaluate_count, (game.evaluate_count.to_i + 1)) + shixun.increment!(:evaluate_count) # 清空代码评测信息 msg = game.run_code_message msg.update_attributes(:status => 0, :message => nil) if msg.present? @@ -599,9 +600,9 @@ class GamesService return {:result => "success", :resubmit => resubmit, :ableToCreate => res['ableToCreate'], :waitNum => res['waitNum'], :waitingTime => res['waitingTime'], :position => game_challenge.position, :port => res['port'], :had_done => game.had_done} - # rescue Exception => e - # Rails.logger.error("评测出错,详情:" + e.message) - # return {:result => 'fail', :contents =>"实训云平台繁忙(繁忙等级:502),请稍后刷新并重试", :position => game_challenge.position, :had_done => game.had_done} + rescue Exception => e + Rails.logger.error("评测出错,详情:" + e.message) + return {:result => 'fail', :contents =>"实训云平台繁忙(繁忙等级:502),请稍后刷新并重试", :position => game_challenge.position, :had_done => game.had_done} end # 单评测类型(比较快的类型,实时返回结果,即不用中间层再回调trainint_task_status) @@ -693,6 +694,7 @@ class GamesService :evaluate_count]).find_by_identifier(params[:identifier]) # 更新评测次数 game.update_column(:evaluate_count, (game.evaluate_count.to_i + 1)) + game.challenge.shixun.increment!(:evaluate_count) # 选择题如果通关了,则不让再评测 if game.status == 2