diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index 586644179..074fd596e 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -421,24 +421,6 @@ class ApplicationController < ActionController::Base "#{edu_setting('git_address_domain')}/#{repo_path}" end - # 通关后,把最后一次成功的代码存到数据库 - # type 0 创始内容, 1 最新内容 - # def game_passed_code(path, myshixun, game_id) - # # 如果代码窗口是隐藏的,则不用保存代码 - # return if myshixun.shixun.hide_code || myshixun.shixun.vnc - # file_content = git_fle_content myshixun.repo_path, path - # #unless file_content.present? - # # raise("获取文件代码异常") - # #end - # logger.info("#######game_id:#{game_id}, file_content:#{file_content}") - # game_code = GameCode.where(:game_id => game_id, :path => path).first - # if game_code.nil? - # GameCode.create!(:game_id => game_id, :new_code => file_content, :path => path) - # else - # game_code.update_attributes!(:new_code => file_content) - # end - # end - # Post请求 def uri_post(uri, params) begin @@ -530,112 +512,6 @@ class ApplicationController < ActionController::Base end - # 实训主类别列表,自带描述 - def shixun_main_type - list = [] - mirrors = MirrorRepository.select([:id, :type_name, :description, :name]).published_main_mirror - mirrors.try(:each) do |mirror| - list << {id: mirror.id, type_name: mirror.type_name, description: mirror.try(:description), mirror_name: mirror.name} - end - list - end - - # 小类别列表 - def shixun_small_type - list = [] - mirrors = MirrorRepository.select([:id, :type_name, :description, :name]).published_small_mirror - mirrors.try(:each) do |mirror| - list << {id: mirror.id, type_name: mirror.type_name, description: mirror.description, mirror_name: mirror.name} - end - list - end - - def container_limit(mirror_repositories) - container = [] - mirror_repositories.each do |mr| - if mr.name.present? - container << {:image => mr.name, :cpuLimit => mr.cpu_limit, :memoryLimit => "#{mr.memory_limit}M", :type => mr.try(:main_type) == "1" ? "main" : "sub"} - end - end - container.to_json - end - - # 实训中间层pod配置 - def shixun_container_limit shixun - container = [] - shixun.shixun_service_configs.each do |config| - mirror = config.mirror_repository - if mirror.name.present? - # 资源限制没有就传默认值。 - cpu_limit = config.cpu_limit.presence || 1 - cpu_request = config.lower_cpu_limit.presence || 0.1 - memory_limit = config.memory_limit.presence || 1024 - request_limit = config.request_limit.presence || 10 - resource_limit = config.resource_limit.presence || 10000 - container << {:image => mirror.name, - :cpuLimit => cpu_limit, - :cpuRequest => cpu_request, - :memoryLimit => "#{memory_limit}M", - :memoryRequest => "#{request_limit}M", - :resourceLimit => "#{resource_limit}K", - :type => mirror.try(:main_type) == "1" ? "main" : "sub"} - end - end - container.to_json - end - - # 毕设任务列表的赛选 - def course_work(task, **option) - logger.info("#############{option}") - course = task.course - work_list = task.graduation_works.includes(user: [:user_extension]) - # 教师评阅搜索 0: 未评, 1 已评 - if option[:teacher_comment] - graduation_work_ids = GraduationWorkScore.where(graduation_work_id: work_list.map(&:id)).pluck(:graduation_work_id) - if option[:teacher_comment].zero? - work_list = work_list.where.not(id: graduation_work_ids) - elsif option[:teacher_comment] == 1 - work_list = work_list.where(id: graduation_work_ids).where.not(work_status: 0) - end - end - - # 作品状态 0: 未提交, 1 按时提交, 2 延迟提交 - if option[:task_status] - work_list = work_list.where(work_status: option[:task_status]) - end - - # 分班情况 - if option[:course_group] - group_user_ids = course.course_members.where(course_group_id: option[:course_group]).pluck(:user_id) - # 有分组只可能是老师身份查看列表 - work_list = work_list.where(user_id: group_user_ids) - end - - # 只看我的交叉评阅 - if option[:cross_comment] - graduation_work_id = task.graduation_work_comment_assignations.where(:user_id => current_user.id) - .pluck(:graduation_work_id).uniq if task.graduation_work_comment_assignations - work_list = work_list.where(id: graduation_work_id) - end - - # 输入姓名和学号搜索 - # TODO user_extension 如果修改 请调整 - if option[:search] - work_list = work_list.joins(user: :user_extension).where("concat(lastname, firstname) like ? - or student_id like ?", "%#{option[:search]}%", "%#{option[:search]}%") - end - - # 排序 - rorder = UserExtension.column_names.include?(option[:order]) ? option[:order] : "updated_at" - b_order = %w(desc asc).include?(option[:b_order]) ? option[:b_order] : "desc" - if rorder == "created_at" || rorder == "work_score" - work_list = work_list.order("graduation_works.#{rorder} #{b_order}") - elsif rorder == "student_id" - work_list = work_list.joins(user: :user_extension).order("user_extensions.#{rorder} #{b_order}") - end - work_list - end - def strip_html(text, len=0, endss="...") ss = "" if !text.nil? && text.length>0 @@ -1176,16 +1052,19 @@ class ApplicationController < ActionController::Base # 接口限流,请求量大有性能问题 def request_limit - record_count = Rails.cache.read("request/#{controller_name}/#{Time.now.strftime('%Y%m%d%H')}/#{request.remote_ip}") - if record_count.present? - record_count = record_count + 1 - else - record_count = 1 - end - Rails.logger.info("请求太快,请稍后再试。#{controller_name}::#{request.remote_ip}") if record_count > 100 - tip_exception("请求太快,请稍后再试。") if record_count > 100 + white_list_ip = ["106.75.110.152"] + unless white_list_ip.include?(request.remote_ip) + record_count = Rails.cache.read("request/#{controller_name}/#{Time.now.strftime('%Y%m%d%H')}/#{request.remote_ip}") + if record_count.present? + record_count = record_count + 1 + else + record_count = 1 + end + Rails.logger.info("请求太快,请稍后再试。#{controller_name}::#{request.remote_ip}") if record_count > 200 + tip_exception("请求太快,请稍后再试。") if record_count > 200 - Rails.cache.write("request/#{controller_name}/#{Time.now.strftime('%Y%m%d%H')}/#{request.remote_ip}", record_count, expires_in: 1.hour) + Rails.cache.write("request/#{controller_name}/#{Time.now.strftime('%Y%m%d%H')}/#{request.remote_ip}", record_count, expires_in: 1.hour) + end end def check_batch_requests