|  |  | # encoding: utf-8
 | 
						
						
						
							|  |  | class ManagementsController < ApplicationController
 | 
						
						
						
							|  |  |   before_filter :require_admin
 | 
						
						
						
							|  |  |   layout 'base_management'
 | 
						
						
						
							|  |  |   include ManagementsHelper
 | 
						
						
						
							|  |  |   include SortHelper
 | 
						
						
						
							|  |  |   include UsersHelper
 | 
						
						
						
							|  |  |   include ApplicationHelper
 | 
						
						
						
							|  |  |   include AvatarHelper
 | 
						
						
						
							|  |  |   include ShixunsHelper
 | 
						
						
						
							|  |  |   helper :files
 | 
						
						
						
							|  |  |   if RUBY_PLATFORM =~ /linux/
 | 
						
						
						
							|  |  |     require 'simple_xlsx_reader'
 | 
						
						
						
							|  |  |     require 'roo-xls'
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   CODES = %W(2 3 4 5 6 7 8 9 A B C D E F G H J K L N M O P Q R S T U V W X Y Z)
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 更新实训课程的等级
 | 
						
						
						
							|  |  |   def update_level_for_subject
 | 
						
						
						
							|  |  |     subject = Subject.find params[:subject_id]
 | 
						
						
						
							|  |  |     subject.update_attribute(:subject_level_system_id, params[:level_id])
 | 
						
						
						
							|  |  |     render :json => {status: 1}
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 实训课程等级体系
 | 
						
						
						
							|  |  |   def subject_level_system
 | 
						
						
						
							|  |  |     @levels = SubjectLevelSystem.all
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 创建课程等级体系
 | 
						
						
						
							|  |  |   def create_subject_level
 | 
						
						
						
							|  |  |     raise("名称不能为空") if params[:name].blank?
 | 
						
						
						
							|  |  |     repeat_name = SubjectLevelSystem.where(name: params[:name]).count
 | 
						
						
						
							|  |  |     raise("名称不能重复") if repeat_name > 0
 | 
						
						
						
							|  |  |     level = SubjectLevelSystem.pluck(:level).max.to_i + 1
 | 
						
						
						
							|  |  |     SubjectLevelSystem.create(name: params[:name], level: level)
 | 
						
						
						
							|  |  |     redirect_to subject_level_system_managements_path(:format => "js")
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 重命名课程等级
 | 
						
						
						
							|  |  |   def rename_subject_level
 | 
						
						
						
							|  |  |     raise("名称不能为空!") if params[:name].blank?
 | 
						
						
						
							|  |  |     repeat_name = SubjectLevelSystem.where("name = ? and id != ?", params[:name], params[:id]).count
 | 
						
						
						
							|  |  |     raise("名称不能重复") if repeat_name > 0
 | 
						
						
						
							|  |  |     level = SubjectLevelSystem.find params[:id]
 | 
						
						
						
							|  |  |     level.update_attribute(:name, params[:name])
 | 
						
						
						
							|  |  |     redirect_to subject_level_system_managements_path(:format => "js")
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 删除课程等级
 | 
						
						
						
							|  |  |   def delete_subject_level
 | 
						
						
						
							|  |  |     level = SubjectLevelSystem.find params[:id]
 | 
						
						
						
							|  |  |     Subject.where(:subject_level_system_id => level).update_all(:subject_level_system_id => nil)
 | 
						
						
						
							|  |  |     levels = SubjectLevelSystem.where("level > ?", level.level)
 | 
						
						
						
							|  |  |     levels.each do |l|
 | 
						
						
						
							|  |  |       l.update_attribute(:level, l.level-1)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     level.delete
 | 
						
						
						
							|  |  |     redirect_to subject_level_system_managements_path(:format => "js")
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 工程认证视频导入模板
 | 
						
						
						
							|  |  |   def ec_template
 | 
						
						
						
							|  |  |     @template = EcTemplate.where(nil)
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def add_template
 | 
						
						
						
							|  |  |     logger.info("#############################{params}")
 | 
						
						
						
							|  |  |     EcTemplate.create(:name => params[:name].strip)
 | 
						
						
						
							|  |  |     @template = EcTemplate.where(nil)
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def training_2018
 | 
						
						
						
							|  |  |     @search = params[:search]
 | 
						
						
						
							|  |  |     @training_type = params[:training_type]
 | 
						
						
						
							|  |  |     @pay_type = params[:pay_type]
 | 
						
						
						
							|  |  |     @page = params[:page] || 1
 | 
						
						
						
							|  |  |     @status = params[:status]
 | 
						
						
						
							|  |  |     if User.current.admin?
 | 
						
						
						
							|  |  |       @trainings = Training.includes(:training_payinfo)
 | 
						
						
						
							|  |  |       if params[:search] && params[:search].strip != ""
 | 
						
						
						
							|  |  |         @trainings = @trainings.where("trainings.name like '%#{params[:search]}%'")
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |       if params[:training_type] && params[:training_type].to_i != -1
 | 
						
						
						
							|  |  |         @trainings = @trainings.where("training_type = #{params[:training_type]}")
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |       if params[:pay_type] && params[:pay_type].to_i != -1
 | 
						
						
						
							|  |  |         @trainings = @trainings.where("training_payinfos.pay_type = #{params[:pay_type]}")
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |       if params[:status] && params[:status].to_i != -1
 | 
						
						
						
							|  |  |         @trainings = @trainings.where("training_payinfos.status = #{params[:status]}")
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |       @page = params[:page] || 1
 | 
						
						
						
							|  |  |       @all_trainings = @trainings.reorder("trainings.created_at desc")
 | 
						
						
						
							|  |  |       @trainings = paginateHelper @trainings.reorder("trainings.created_at desc"), 50
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       render_403
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |       format.xls{
 | 
						
						
						
							|  |  |         time = Time.now.strftime("%Y%m%d")
 | 
						
						
						
							|  |  |         filename = "#{time}培训会报名列表.xls"
 | 
						
						
						
							|  |  |         send_data(training_2018_xls(@all_trainings), :type => 'application/octet-stream', :filename => filename_for_content_disposition(filename))
 | 
						
						
						
							|  |  |       }
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def update_pay_status
 | 
						
						
						
							|  |  |     if User.current.admin? || User.current.id == 1
 | 
						
						
						
							|  |  |       @training = Training.where(:id => params[:training]).first
 | 
						
						
						
							|  |  |       if @training
 | 
						
						
						
							|  |  |         @training.training_payinfo.update_attributes(:status => TrainingPayinfo::Status_Payed)
 | 
						
						
						
							|  |  |         if @training.phone.present?
 | 
						
						
						
							|  |  |           Trustie::Sms.send(mobile: @training.phone.to_s, send_type: "training_pay", user_name: @training.name)
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       render_403
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def mul_test
 | 
						
						
						
							|  |  |     @menu_type = 3
 | 
						
						
						
							|  |  |     @sub_type = 9
 | 
						
						
						
							|  |  |     @m_tests = MulTest.where(nil)
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     @m_tests_count = @m_tests.count
 | 
						
						
						
							|  |  |     @m_tests_pages = Paginator.new @m_tests_count, 20, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||= @m_tests_pages.offset
 | 
						
						
						
							|  |  |     @m_tests = paginateHelper @m_tests, 20
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def mul_statics
 | 
						
						
						
							|  |  |     @m_tests = MulTest.all.group_by{|o|[o.num, o.shixun_id]}
 | 
						
						
						
							|  |  |     # @m_tests_count = @m_tests.count
 | 
						
						
						
							|  |  |     # @m_tests_pages = Paginator.new @m_tests_count, 20, params['page'] || 1
 | 
						
						
						
							|  |  |     # @offset ||= @m_tests_pages.offset
 | 
						
						
						
							|  |  |     # @m_tests = paginateHelper @m_tests, 20
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def update_shixun_usescope
 | 
						
						
						
							|  |  |     shixun = Shixun.where(:id => params[:shixun_id]).first
 | 
						
						
						
							|  |  |     shixun.update_column(:use_scope, params[:use_scope].to_i)
 | 
						
						
						
							|  |  |     render :json => {status: "success"}
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   #用户修改
 | 
						
						
						
							|  |  |   def myshixuns
 | 
						
						
						
							|  |  |     @menu_type = 3
 | 
						
						
						
							|  |  |     @sub_type = 8
 | 
						
						
						
							|  |  |     @g = Gitlab.client
 | 
						
						
						
							|  |  |     if params[:search]
 | 
						
						
						
							|  |  |       if params[:search].to_i.to_s == params[:search].to_s
 | 
						
						
						
							|  |  |         myshixun_id = Game.where(:myshixun_id => params[:search].to_i).pluck(:myshixun_id)
 | 
						
						
						
							|  |  |       else
 | 
						
						
						
							|  |  |         myshixun_id = Game.where(:identifier => params[:search]).pluck(:myshixun_id)
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |       @myshixuns = Myshixun.where(:id => myshixun_id).includes(:shixun)
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       @myshixuns = Myshixun.where("0=0").includes(:shixun)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     @myshixuns_count = @myshixuns.count
 | 
						
						
						
							|  |  |     limit = 20
 | 
						
						
						
							|  |  |     @myshixuns_pages = Paginator.new @myshixuns_count, limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||= @myshixuns_pages.offset
 | 
						
						
						
							|  |  |     @myshixuns = paginateHelper @myshixuns, limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def myshixun_info
 | 
						
						
						
							|  |  |     user_id = User.where(:login => params[:login].strip).pluck(:id).first
 | 
						
						
						
							|  |  |     shixun_id = Shixun.where(:identifier => params[:shixun_id].strip).pluck(:id).first
 | 
						
						
						
							|  |  |     myshixun = Myshixun.where(:user_id => user_id, :shixun_id => shixun_id).first
 | 
						
						
						
							|  |  |     game = myshixun.current_task
 | 
						
						
						
							|  |  |     @game_url = Setting.protocol + "://" + Setting.host_name + "/tasks/#{game.identifier}"
 | 
						
						
						
							|  |  |     @git_url = Redmine::Configuration['gitlab_address']+"/"+myshixun.git_url
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def anomaly_detection
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def account
 | 
						
						
						
							|  |  |     @user =  User.find(params[:user_id])
 | 
						
						
						
							|  |  |     begin
 | 
						
						
						
							|  |  |       if request.post?
 | 
						
						
						
							|  |  |         @user.nickname = params[:nickname]
 | 
						
						
						
							|  |  |         @user.lastname = params[:lastname]
 | 
						
						
						
							|  |  |         @user.firstname = ""
 | 
						
						
						
							|  |  |         @user.mail = params[:mail].strip == "" ? nil : params[:mail]
 | 
						
						
						
							|  |  |         @user.phone = params[:phone].strip == "" ? nil : params[:phone]
 | 
						
						
						
							|  |  |         #@user.password = params[:new_password]
 | 
						
						
						
							|  |  |         # if params[:new_password].strip != "" && params[:new_password_confirmation].strip != ""
 | 
						
						
						
							|  |  |         #   @user.password, @user.password_confirmation = params[:new_password], params[:new_password_confirmation]
 | 
						
						
						
							|  |  |         # end
 | 
						
						
						
							|  |  |         @se = @user.extensions
 | 
						
						
						
							|  |  |         @se.school_id = params[:occupation]
 | 
						
						
						
							|  |  |         @se.department_id = params[:department_id]
 | 
						
						
						
							|  |  |         @se.gender = params[:sex]
 | 
						
						
						
							|  |  |         @se.location = params[:province] if params[:province]
 | 
						
						
						
							|  |  |         @se.location_city = params[:city] if params[:city]
 | 
						
						
						
							|  |  |         @se.identity = params[:identity].to_i if params[:identity]
 | 
						
						
						
							|  |  |         if @se.identity == 0
 | 
						
						
						
							|  |  |           @se.technical_title = params[:te_technical_title] if params[:te_technical_title]
 | 
						
						
						
							|  |  |           @se.student_id = nil
 | 
						
						
						
							|  |  |         elsif @se.identity == 1
 | 
						
						
						
							|  |  |           @se.student_id = params[:no] if params[:no]
 | 
						
						
						
							|  |  |           @se.technical_title = nil
 | 
						
						
						
							|  |  |         elsif @se.identity == 2
 | 
						
						
						
							|  |  |           @se.technical_title = params[:pro_technical_title] if params[:pro_technical_title]
 | 
						
						
						
							|  |  |           @se.student_id = nil
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |         @se.brief_introduction = params[:brief_introduction]
 | 
						
						
						
							|  |  |         @user.save
 | 
						
						
						
							|  |  |         @se.save
 | 
						
						
						
							|  |  |         us = UsersService.new
 | 
						
						
						
							|  |  |         @user = us.change_password params.merge(:current_user_id => @user.id)
 | 
						
						
						
							|  |  |         # if @user.save && @se.save
 | 
						
						
						
							|  |  |         #   reward_grade(@user, @user.id, 'Account', 500)
 | 
						
						
						
							|  |  |         #   # 头像保存
 | 
						
						
						
							|  |  |         #   FileUtils.mv diskfile1, diskfile, force: true if File.exist? diskfile1
 | 
						
						
						
							|  |  |         #   @user.pref.save
 | 
						
						
						
							|  |  |         #   @user.notified_project_ids = (@user.mail_notification == 'selected' ? params[:notified_project_ids] : [])
 | 
						
						
						
							|  |  |         #   set_language_if_valid @user.language
 | 
						
						
						
							|  |  |         #   flash[:notice] = l(:notice_account_updated)
 | 
						
						
						
							|  |  |         #   return
 | 
						
						
						
							|  |  |         # else
 | 
						
						
						
							|  |  |         #   # @user.login = lg
 | 
						
						
						
							|  |  |         # end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |         # 不管前面是否有异常,如果文件已存在就删除
 | 
						
						
						
							|  |  |     ensure
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     # @setting_type = 1
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     redirect_to update_user_managements_path(:user => @user)
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 获取镜像
 | 
						
						
						
							|  |  |   def pull_mirror
 | 
						
						
						
							|  |  |     #params[:jsonMirrorDetails] = '{"images":[{"imageID":"2367ee7a7d4c","name":"octave-novnc:v1.0"}, {"imageID":"1b9cfba2c4dd","name":"jfinal-mysql55:v1.0"}]}'
 | 
						
						
						
							|  |  |     ActiveRecord::Base.transaction do
 | 
						
						
						
							|  |  |       begin
 | 
						
						
						
							|  |  |         shixun_tomcat = Redmine::Configuration['shixun_tomcat']
 | 
						
						
						
							|  |  |         params = {}
 | 
						
						
						
							|  |  |         uri = "#{shixun_tomcat}/bridge/docker/images"
 | 
						
						
						
							|  |  |         res = uri_exec uri, params
 | 
						
						
						
							|  |  |         if (res && res['code'] != 0)
 | 
						
						
						
							|  |  |           raise("Pull mirror the repository exception")
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |         mirrors = res["images"]
 | 
						
						
						
							|  |  |         images = [] # 中间层镜像名称的数组
 | 
						
						
						
							|  |  |         if mirrors.present?
 | 
						
						
						
							|  |  |           mirrors.each do |mirror|
 | 
						
						
						
							|  |  |             mirror = JSON.parse(mirror)
 | 
						
						
						
							|  |  |             match_rep_mirror_name = MirrorRepository.where(:name => mirror['imageName']).first
 | 
						
						
						
							|  |  |             match_rep_mirror_id = MirrorRepository.where(:mirrorID => mirror['imageID']).first
 | 
						
						
						
							|  |  |             images << mirror['imageName']
 | 
						
						
						
							|  |  |             if match_rep_mirror_name.blank? && match_rep_mirror_id.blank?
 | 
						
						
						
							|  |  |               # 镜像不存在、创建镜像
 | 
						
						
						
							|  |  |               new_mirror = MirrorRepository.create!(:mirrorID => mirror['imageID'], :name => mirror['imageName'])
 | 
						
						
						
							|  |  |               MirrorOperationRecord.create!(:mirror_repository_id => new_mirror.id, :mirror_id => mirror['imageID'], :mirror_name => mirror['imageName'], :status => 0, :user_id => -1)
 | 
						
						
						
							|  |  |             elsif match_rep_mirror_name.present? && match_rep_mirror_id.blank?
 | 
						
						
						
							|  |  |               # 镜像ID被修改
 | 
						
						
						
							|  |  |               match_rep_mirror_name.update_attributes(:status => 2)
 | 
						
						
						
							|  |  |               MirrorOperationRecord.create!(:mirror_repository_id => match_rep_mirror_name.id, :mirror_id => mirror['imageID'], :mirror_name => mirror['imageName'], :status => 1, :user_id => -1)
 | 
						
						
						
							|  |  |             elsif match_rep_mirror_name.blank? && match_rep_mirror_id.present?
 | 
						
						
						
							|  |  |               # 镜像名称被修改
 | 
						
						
						
							|  |  |               match_rep_mirror_id.update_attribute(:status, 3)
 | 
						
						
						
							|  |  |               MirrorOperationRecord.create!(:mirror_repository_id => match_rep_mirror_id.id, :mirror_id => mirror['imageID'], :mirror_name => mirror['imageName'], :status => 2, :user_id => -1)
 | 
						
						
						
							|  |  |             end
 | 
						
						
						
							|  |  |           end
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |         # 判断中间层镜像是否被删除
 | 
						
						
						
							|  |  |         edu_mirrors = MirrorRepository.all
 | 
						
						
						
							|  |  |         edu_mirrors.each do |mirror|
 | 
						
						
						
							|  |  |           if(images.index(mirror.try(:name)).nil? && mirror.try(:name).present?)
 | 
						
						
						
							|  |  |             mirror.update_attribute(:status, 4)
 | 
						
						
						
							|  |  |             MirrorOperationRecord.create!(:mirror_repository_id => mirror.id, :mirror_id => mirror.try(:mirrorID), :mirror_name => mirror.name, :status => 3, :user_id => -1)
 | 
						
						
						
							|  |  |           end
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |         # end
 | 
						
						
						
							|  |  |         redirect_to mirror_repository_managements_path
 | 
						
						
						
							|  |  |       rescue Exception => e
 | 
						
						
						
							|  |  |         logger.error("pull_mirror error: #{e}")
 | 
						
						
						
							|  |  |         raise ActiveRecord::Rollback
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 验证镜像名是否重复
 | 
						
						
						
							|  |  |   # 判断依据:主类别和小类别可以同名;主类别和小类别各自之间
 | 
						
						
						
							|  |  |   def check_mirror_name
 | 
						
						
						
							|  |  |     random = CODES.sample(8).join
 | 
						
						
						
							|  |  |     mirror_count = MirrorRepository.where("type_name = ? and id != ? and main_type =?", params[:type_name], params[:mirror_id], params[:main_type].to_i).count
 | 
						
						
						
							|  |  |     check = (mirror_count > 0 ? true : false)
 | 
						
						
						
							|  |  |     render :json => {check: check, random: random}
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 中间层与edu镜像不一致时,选择镜像一个可用的版本
 | 
						
						
						
							|  |  |   def choose_mirror
 | 
						
						
						
							|  |  |     @mirror = MirrorRepository.find(params[:mirror_id])
 | 
						
						
						
							|  |  |     @new_mirror = MirrorOperationRecord.where(:mirror_repository_id => @mirror.id, :status => 1, :user_id => -1).first
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # flag: 0 更新新ID,1 回退
 | 
						
						
						
							|  |  |   # old_id: 平台保存的ID
 | 
						
						
						
							|  |  |   # change_id: 用户修改的新ID
 | 
						
						
						
							|  |  |   # 选择镜像后,向中间层updateImage  flag: 0 更新新ID,1 回退镜像
 | 
						
						
						
							|  |  |   def choose_update_mirror
 | 
						
						
						
							|  |  |     old_id = params[:id]
 | 
						
						
						
							|  |  |     change_id = params[:mirror_id]
 | 
						
						
						
							|  |  |     flag = (old_id == change_id ? 1 : 0)
 | 
						
						
						
							|  |  |     ActiveRecord::Base.transaction do
 | 
						
						
						
							|  |  |       begin
 | 
						
						
						
							|  |  |         mirror = MirrorRepository.where(:mirrorID => old_id).first
 | 
						
						
						
							|  |  |         if mirror.blank?
 | 
						
						
						
							|  |  |           raise("choose_update_mirror exception")
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |         shixun_tomcat = Redmine::Configuration['shixun_tomcat']
 | 
						
						
						
							|  |  |         params = {imageName: mirror.name, imageID: old_id, flag: flag}
 | 
						
						
						
							|  |  |         uri = "#{shixun_tomcat}/bridge/docker/updateImage"
 | 
						
						
						
							|  |  |         res = uri_exec uri, params
 | 
						
						
						
							|  |  |         if (res && res['code'] != 0)
 | 
						
						
						
							|  |  |           raise("choose_update_mirror exception")
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |         if flag == 0
 | 
						
						
						
							|  |  |           mirror.update_attributes(:mirrorID => change_id, :status => 0)
 | 
						
						
						
							|  |  |           # 用户操作的的行为需要记录 user_id, 中间层操作的行为user_id = -1
 | 
						
						
						
							|  |  |           MirrorOperationRecord.create!(:mirror_repository_id => mirror.id, :mirror_id => change_id, :mirror_name => mirror.name, :status => 1, :user_id => User.current.id, :old_tag => old_id, :new_tag => change_id)
 | 
						
						
						
							|  |  |         else
 | 
						
						
						
							|  |  |           mirror.update_attribute(:status, 0)
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |         respond_to do |format|
 | 
						
						
						
							|  |  |           format.js{ redirect_to mirror_repository_managements_path(:reaction => "choose_update_mirror")}
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |         #format.js{ redirect_to mirror_repository_managements_path(:reaction => "choose_update_mirror")}
 | 
						
						
						
							|  |  |       rescue Exception => e
 | 
						
						
						
							|  |  |         logger.error("choose_update_mirror error: #{e}")
 | 
						
						
						
							|  |  |         raise ActiveRecord::Rollback
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 搜索镜像
 | 
						
						
						
							|  |  |   def mirror_search
 | 
						
						
						
							|  |  |     @scope = []
 | 
						
						
						
							|  |  |     if params[:q] && params[:q].lstrip.rstrip != ""
 | 
						
						
						
							|  |  |       @scope = MirrorRepository.where("name like ?", "%#{params[:q]}%").map(&:name)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 镜像管理
 | 
						
						
						
							|  |  |   # REDO: images Get请求不能用Post
 | 
						
						
						
							|  |  |   def mirror_repository
 | 
						
						
						
							|  |  |     @menu_type = 3
 | 
						
						
						
							|  |  |     @sub_type = 5
 | 
						
						
						
							|  |  |     @reaction =  params[:reaction] # 如果是局部刷新调用,不需要拉取镜像
 | 
						
						
						
							|  |  |     ActiveRecord::Base.transaction do
 | 
						
						
						
							|  |  |       begin
 | 
						
						
						
							|  |  |         # 重新定向或翻页不需要拉取镜像
 | 
						
						
						
							|  |  |         if @reaction.nil? && @_params['page'].nil?
 | 
						
						
						
							|  |  |           shixun_tomcat = Redmine::Configuration['shixun_tomcat']
 | 
						
						
						
							|  |  |           uri = "#{shixun_tomcat}/bridge/docker/images"
 | 
						
						
						
							|  |  |           res = get_url_exec uri
 | 
						
						
						
							|  |  |           if (res && res['code'] != 0)
 | 
						
						
						
							|  |  |             raise("Pull mirror the repository exception")
 | 
						
						
						
							|  |  |           end
 | 
						
						
						
							|  |  |           mirrors = res["images"] # 主节点的所有镜像
 | 
						
						
						
							|  |  |           sync_mirrors = res['imagesNotSync'] # 子节点镜像异常(主节点有,而子节点却没同步/异常)
 | 
						
						
						
							|  |  |           images = [] # 中间层镜像名称的数组
 | 
						
						
						
							|  |  |           if sync_mirrors.present?
 | 
						
						
						
							|  |  |             sync_mirrors.each do |mirror|
 | 
						
						
						
							|  |  |               mirror = JSON.parse(mirror)
 | 
						
						
						
							|  |  |               match_rep_mirror_name = MirrorRepository.where(:name => mirror['imageName']).first
 | 
						
						
						
							|  |  |              # match_rep_mirror_id = MirrorRepository.where(:mirrorID => mirror['imageID']).first
 | 
						
						
						
							|  |  |               if match_rep_mirror_name.present? && match_rep_mirror_name.status == 1
 | 
						
						
						
							|  |  |                 match_rep_mirror_name.update_attribute(:status, 5)
 | 
						
						
						
							|  |  |                 MirrorOperationRecord.create!(:mirror_repository_id => match_rep_mirror_name.id, :mirror_id => mirror['imageID'], :mirror_name => mirror['imageName'], :status => 4, :user_id => -1)
 | 
						
						
						
							|  |  |               end
 | 
						
						
						
							|  |  |             end
 | 
						
						
						
							|  |  |           end
 | 
						
						
						
							|  |  |           if mirrors.present?
 | 
						
						
						
							|  |  |             mirrors.each do |mirror|
 | 
						
						
						
							|  |  |               mirror = JSON.parse(mirror)
 | 
						
						
						
							|  |  |               match_rep_mirror_name = MirrorRepository.where(:name => mirror['imageName']).first
 | 
						
						
						
							|  |  |               match_rep_mirror_id = MirrorRepository.where(:mirrorID => mirror['imageID']).first
 | 
						
						
						
							|  |  |               images << mirror['imageName']
 | 
						
						
						
							|  |  |               if match_rep_mirror_name.blank?
 | 
						
						
						
							|  |  |                 # 镜像不存在、创建镜像
 | 
						
						
						
							|  |  |                 new_mirror = MirrorRepository.create!(:mirrorID => mirror['imageID'], :name => mirror['imageName'])
 | 
						
						
						
							|  |  |                 MirrorOperationRecord.create!(:mirror_repository_id => new_mirror.id, :mirror_id => mirror['imageID'], :mirror_name => mirror['imageName'], :status => 0, :user_id => -1)
 | 
						
						
						
							|  |  |               elsif (match_rep_mirror_name.present? && (mirror['imageID'] != match_rep_mirror_name.mirrorID))
 | 
						
						
						
							|  |  |                 # 镜像ID被修改
 | 
						
						
						
							|  |  |                 match_rep_mirror_name.update_attributes(:status => 2)
 | 
						
						
						
							|  |  |                 MirrorOperationRecord.create!(:mirror_repository_id => match_rep_mirror_name.id, :mirror_id => mirror['imageID'], :mirror_name => mirror['imageName'], :status => 1, :user_id => -1)
 | 
						
						
						
							|  |  |               elsif match_rep_mirror_name.blank? && match_rep_mirror_id.present?
 | 
						
						
						
							|  |  |                 # 镜像名称被修改
 | 
						
						
						
							|  |  |                 match_rep_mirror_id.update_attribute(:status, 3)
 | 
						
						
						
							|  |  |                 MirrorOperationRecord.create!(:mirror_repository_id => match_rep_mirror_id.id, :mirror_id => mirror['imageID'], :mirror_name => mirror['imageName'], :status => 2, :user_id => -1)
 | 
						
						
						
							|  |  |               end
 | 
						
						
						
							|  |  |             end
 | 
						
						
						
							|  |  |           end
 | 
						
						
						
							|  |  |           # 判断中间层镜像是否被删除
 | 
						
						
						
							|  |  |           edu_mirrors = MirrorRepository.all
 | 
						
						
						
							|  |  |           edu_mirrors.each do |mirror|
 | 
						
						
						
							|  |  |             if(images.index(mirror.try(:name)).nil? && mirror.try(:name).present?)
 | 
						
						
						
							|  |  |               mirror.update_attribute(:status, 4)
 | 
						
						
						
							|  |  |               MirrorOperationRecord.create!(:mirror_repository_id => mirror.id, :mirror_id => mirror.try(:mirrorID), :mirror_name => mirror.name, :status => 3, :user_id => -1)
 | 
						
						
						
							|  |  |             end
 | 
						
						
						
							|  |  |           end
 | 
						
						
						
							|  |  |           # end
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |         @error_mirrors = MirrorRepository.where(:status => 5)
 | 
						
						
						
							|  |  |         @menu_type = 3
 | 
						
						
						
							|  |  |         @sub_type = 4
 | 
						
						
						
							|  |  |         @mirrors = MirrorRepository.reorder("status desc, main_type desc, type_name asc")
 | 
						
						
						
							|  |  |         @mirrors_count = @mirrors.count
 | 
						
						
						
							|  |  |         @limit = 20
 | 
						
						
						
							|  |  |         @page = (@_params['page'] || 1).to_i
 | 
						
						
						
							|  |  |         @mirrors_pages = Paginator.new @mirrors_count, @limit, @page
 | 
						
						
						
							|  |  |         @offset ||= @mirrors_pages.offset
 | 
						
						
						
							|  |  |         @mirrors = paginateHelper @mirrors, @limit
 | 
						
						
						
							|  |  |         respond_to do |format|
 | 
						
						
						
							|  |  |           format.js
 | 
						
						
						
							|  |  |           format.html
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |       rescue Exception => e
 | 
						
						
						
							|  |  |         logger.error("pull_mirror error: #{e}")
 | 
						
						
						
							|  |  |         raise ActiveRecord::Rollback
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 迁移数据与脚本
 | 
						
						
						
							|  |  |   # eg: shixun_id 字符类型。eg:shixun_id=61,71
 | 
						
						
						
							|  |  |   # res['script'] tpm的模板
 | 
						
						
						
							|  |  |   # res['template'] 标准模板
 | 
						
						
						
							|  |  |   def migrate_data_and_script
 | 
						
						
						
							|  |  |     ActiveRecord::Base.transaction do
 | 
						
						
						
							|  |  |       begin
 | 
						
						
						
							|  |  |         if params[:shixun_id]
 | 
						
						
						
							|  |  |           shixuns = Shixun.where(:id => params[:shixun_id].split(","))
 | 
						
						
						
							|  |  |         else
 | 
						
						
						
							|  |  |           shixuns = Shixun.where(nil)
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |         shixuns.find_each do |shixun|
 | 
						
						
						
							|  |  |           main_miiror_name, child_miiror_name, secend_miiror_name = "", "", ""
 | 
						
						
						
							|  |  |           case shixun.language
 | 
						
						
						
							|  |  |             when 'C', 'C++'
 | 
						
						
						
							|  |  |               main_miiror_name = 'C/C++'
 | 
						
						
						
							|  |  |             when 'MySQL/Java'
 | 
						
						
						
							|  |  |               main_miiror_name = 'Java'
 | 
						
						
						
							|  |  |               child_miiror_name = 'Mysql'
 | 
						
						
						
							|  |  |             when 'MySQL/Python3.6'
 | 
						
						
						
							|  |  |               main_miiror_name = 'Python3.6'
 | 
						
						
						
							|  |  |               child_miiror_name = 'Mysql'
 | 
						
						
						
							|  |  |             when 'PHP/Web'
 | 
						
						
						
							|  |  |               main_miiror_name = 'PHP'
 | 
						
						
						
							|  |  |               child_miiror_name = 'Mysql'
 | 
						
						
						
							|  |  |               secend_miiror_name = 'Web'
 | 
						
						
						
							|  |  |             when 'Golang'
 | 
						
						
						
							|  |  |               main_miiror_name ='Go'
 | 
						
						
						
							|  |  |             when 'Html'
 | 
						
						
						
							|  |  |               main_miiror_name = 'Python3.6'
 | 
						
						
						
							|  |  |               child_miiror_name = 'Html'
 | 
						
						
						
							|  |  |             else
 | 
						
						
						
							|  |  |               main_miiror_name = shixun.language
 | 
						
						
						
							|  |  |           end
 | 
						
						
						
							|  |  |           main_miiror = MirrorRepository.where(:type_name => main_miiror_name).first
 | 
						
						
						
							|  |  |           child_miiror = MirrorRepository.where(:type_name => child_miiror_name).first if child_miiror_name.present?
 | 
						
						
						
							|  |  |           secend_miiror = MirrorRepository.where(:type_name => secend_miiror_name).first if child_miiror_name.present?
 | 
						
						
						
							|  |  |           # 删除实训的关联,重新迁移
 | 
						
						
						
							|  |  |           shixun.shixun_mirror_repositories.delete_all if shixun.mirror_repositories.present?
 | 
						
						
						
							|  |  |           if main_miiror.present?
 | 
						
						
						
							|  |  |             ShixunMirrorRepository.create!(:shixun_id => shixun.id, :mirror_repository_id => main_miiror.id)
 | 
						
						
						
							|  |  |           else
 | 
						
						
						
							|  |  |             MirrorMigrateError.create(:shixun_id => shixun.id, :game_info => "MainMirror")
 | 
						
						
						
							|  |  |             logger.error("main_miiror is miss,shixun_id:#{shixun.id}")
 | 
						
						
						
							|  |  |           end
 | 
						
						
						
							|  |  |           ShixunMirrorRepository.create!(:shixun_id => shixun.id, :mirror_repository_id => child_miiror.id) if child_miiror.present?
 | 
						
						
						
							|  |  |           ShixunMirrorRepository.create!(:shixun_id => shixun.id, :mirror_repository_id => secend_miiror.id) if secend_miiror.present?
 | 
						
						
						
							|  |  |           params = {gameInfo: shixun.gameInfo}
 | 
						
						
						
							|  |  |           # 根据旧版代码生成新的脚本
 | 
						
						
						
							|  |  |           uri = "http://106.75.96.108:8890/bridge/dataTransfer/transferTPMScript"
 | 
						
						
						
							|  |  |           res = uri_exec uri, params
 | 
						
						
						
							|  |  |           if (res && res['code'] != 0)
 | 
						
						
						
							|  |  |             logger.error("migrate_data_and_script 8890 exception;tpmID:#{shixun.id}")
 | 
						
						
						
							|  |  |             MirrorMigrateError.create!(:shixun_id => shixun.id, :game_info => shixun.gameInfo)
 | 
						
						
						
							|  |  |           end
 | 
						
						
						
							|  |  |           template_script = tran_base64_decode64(res['template']) # 标准模板,一类语言一种
 | 
						
						
						
							|  |  |           logger.error("##################################game_info: #{shixun.gameInfo}") if template_script.blank?
 | 
						
						
						
							|  |  |           shixun.update_column(:evaluate_script, template_script)
 | 
						
						
						
							|  |  |           main_miiror.update_column(:script_template, template_script) if main_miiror.present?
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |         # 监测同步失败的实训
 | 
						
						
						
							|  |  |         @ids = Shixun.all.map(&:id) - ShixunMirrorRepository.all.map(&:shixun_id)
 | 
						
						
						
							|  |  |         respond_to do |format|
 | 
						
						
						
							|  |  |           format.js
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |       rescue Exception => e
 | 
						
						
						
							|  |  |         render :json => {:data => "#{e}"}
 | 
						
						
						
							|  |  |         logger.error("migrate_data_and_script error: #{e}")
 | 
						
						
						
							|  |  |         raise ActiveRecord::Rollback
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def modify_script
 | 
						
						
						
							|  |  |     @mirror = MirrorRepository.find(params[:mirror_id])
 | 
						
						
						
							|  |  |     if params[:script_template].present?
 | 
						
						
						
							|  |  |       @mirror.update_attribute(:script_template, params[:script_template])
 | 
						
						
						
							|  |  |       redirect_to mirror_repository_managements_path
 | 
						
						
						
							|  |  |       return
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.html{render :layout => "base_edu"}
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def mirror_replace
 | 
						
						
						
							|  |  |     @mirror_id = params[:id]
 | 
						
						
						
							|  |  |     @mirror_name = params[:name]
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 修改此方法慎重:此方法只针对同一镜像出现两条记录,最终需要合并成一条
 | 
						
						
						
							|  |  |   # 合并原则:把新的记录合并到老的记录中
 | 
						
						
						
							|  |  |   # original_mirror:表示被更新对象即历史老记录
 | 
						
						
						
							|  |  |   # current_mirror:表示新增镜像,一般需要被替换掉,替换成功后删除,删除完成后,
 | 
						
						
						
							|  |  |   # 后台人员需要删除对应的镜像记录
 | 
						
						
						
							|  |  |   def mirror_replace_update
 | 
						
						
						
							|  |  |     begin
 | 
						
						
						
							|  |  |       original_mirror = MirrorRepository.find(params[:original_mirror_id])
 | 
						
						
						
							|  |  |       current_mirror = MirrorRepository.where(:name => params[:mirror_name]).first
 | 
						
						
						
							|  |  |       original_mirror.update_attributes!(:name => params[:mirror_name], :mirrorID => current_mirror.mirrorID)
 | 
						
						
						
							|  |  |       current_mirror.delete!
 | 
						
						
						
							|  |  |     rescue Exception => e
 | 
						
						
						
							|  |  |       logger.error(e)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 职业路径列表
 | 
						
						
						
							|  |  |   def career_list
 | 
						
						
						
							|  |  |     @menu_type = 13
 | 
						
						
						
							|  |  |     @careers =
 | 
						
						
						
							|  |  |         if params[:search]
 | 
						
						
						
							|  |  |           Career.includes(career_stages: [career_stage_subjects: :subject]).where("careers.name like '%#{params[:search]}%'").order("created_at desc")
 | 
						
						
						
							|  |  |         else
 | 
						
						
						
							|  |  |           Career.includes(career_stages: [career_stage_subjects: :subject]).order("created_at desc")
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 发布职业路径
 | 
						
						
						
							|  |  |   def published_career
 | 
						
						
						
							|  |  |     career = Career.find(params[:id])
 | 
						
						
						
							|  |  |     career.update_attribute(:status, true)
 | 
						
						
						
							|  |  |     @careers = Career.includes(career_stages: [career_stage_subjects: :subject]).order("created_at desc")
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 删除职业路径
 | 
						
						
						
							|  |  |   def delete_career
 | 
						
						
						
							|  |  |     career = Career.find params[:id]
 | 
						
						
						
							|  |  |     career.destroy
 | 
						
						
						
							|  |  |     @careers = Career.includes(career_stages: [career_stage_subjects: :subject]).order("created_at desc")
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 工程认证专业信息目录
 | 
						
						
						
							|  |  |   def major_information
 | 
						
						
						
							|  |  |     @disciplines = EcDiscipline.includes(ec_discipline_firsts: [:ec_majors]).order("ec_disciplines.code asc")
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 认证单位列表
 | 
						
						
						
							|  |  |   def auth_school
 | 
						
						
						
							|  |  |     @schools = School.where(:ec_auth => 1).order("updated_at desc")
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 工程认证单位列表搜索学校
 | 
						
						
						
							|  |  |   def search_school
 | 
						
						
						
							|  |  |     @schools = School.where("ec_auth != 1 and name like '%#{params[:name]}%'").limit(10)
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 添加认证学校
 | 
						
						
						
							|  |  |   def add_school
 | 
						
						
						
							|  |  |     School.where(:id => params[:school_ids]).update_all(:ec_auth => 1)
 | 
						
						
						
							|  |  |     render :json => {status: 1}
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 搜索用户
 | 
						
						
						
							|  |  |   def search_manager
 | 
						
						
						
							|  |  |     user_ids = EcSchoolUser.where(:school_id => params[:school_id]).pluck(:user_id)
 | 
						
						
						
							|  |  |     user_ids = user_ids.present? ? user_ids.join(",") : -1
 | 
						
						
						
							|  |  |     @users = User.where("concat(lastname, firstname) like '%#{params[:name]}%' and id not in(#{user_ids})").limit(10)
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 添加认证学校管理员
 | 
						
						
						
							|  |  |   def add_manager
 | 
						
						
						
							|  |  |     user_ids = params[:user_ids]
 | 
						
						
						
							|  |  |     school_id = params[:school_id]
 | 
						
						
						
							|  |  |     user_ids.each do |id|
 | 
						
						
						
							|  |  |       EcSchoolUser.create(:user_id => id, :school_id => school_id)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     render :json => {status: 1}
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 删除学校管理员
 | 
						
						
						
							|  |  |   def remove_manager
 | 
						
						
						
							|  |  |     manager = EcSchoolUser.where(:school_id => params[:school_id], :user_id => params[:user_id]).first
 | 
						
						
						
							|  |  |     manager.destroy
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 删除认证学校
 | 
						
						
						
							|  |  |   def remove_auth_school
 | 
						
						
						
							|  |  |     school = School.find params[:school_id]
 | 
						
						
						
							|  |  |     school.update_column(:ec_auth, 0)
 | 
						
						
						
							|  |  |     school.ec_school_users.delete_all
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 工程认证: 毕业要求通用标准
 | 
						
						
						
							|  |  |   def graduation_standard
 | 
						
						
						
							|  |  |     @standards = EcGraduationStandard.all
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 创建通用标准
 | 
						
						
						
							|  |  |   def create_standard
 | 
						
						
						
							|  |  |     id = params[:id].to_i
 | 
						
						
						
							|  |  |     content = params[:content]
 | 
						
						
						
							|  |  |     if id == -1
 | 
						
						
						
							|  |  |       EcGraduationStandard.create(:content => content)
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       standard = EcGraduationStandard.find params[:id]
 | 
						
						
						
							|  |  |       standard.update_attribute(:content, content)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     @standards = EcGraduationStandard.all
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def add_mirror_type
 | 
						
						
						
							|  |  |     data = {result: 0}
 | 
						
						
						
							|  |  |     if params[:name]
 | 
						
						
						
							|  |  |       if MirrorType.where(:name => params[:name]).count == 0
 | 
						
						
						
							|  |  |         new_type = MirrorType.new(:user_id => User.current.id, :name => params[:name])
 | 
						
						
						
							|  |  |         if new_type.save
 | 
						
						
						
							|  |  |           data[:result] = 1
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |       else
 | 
						
						
						
							|  |  |         data[:result] = 2
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     render :json => data
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def modify_mirror
 | 
						
						
						
							|  |  |     @mirror = MirrorRepository.find params[:mirror_id]
 | 
						
						
						
							|  |  |     @mirror_types = MirrorType.where(nil)
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def search_mirror_type
 | 
						
						
						
							|  |  |     data = {mirror_types: []}
 | 
						
						
						
							|  |  |     search = params[:search]
 | 
						
						
						
							|  |  |     MirrorType.where("name like '%#{search}%'").each do |mirror_type|
 | 
						
						
						
							|  |  |       option = []
 | 
						
						
						
							|  |  |       option << mirror_type.name.to_s
 | 
						
						
						
							|  |  |       option << mirror_type.id
 | 
						
						
						
							|  |  |       data[:mirror_types] << option
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     render :json => data
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def create_mirror
 | 
						
						
						
							|  |  |     MirrorRepository.create(:type_name => params[:type_name], :main_type => params[:mirror_type], :description => params[:description], :status => params[:status].to_i)
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js{redirect_to mirror_repository_managements_path(:reaction => "create_mirror")}
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 更新实训,从未发布到发布需要syncImage同步镜像
 | 
						
						
						
							|  |  |   def update_mirror
 | 
						
						
						
							|  |  |     ActiveRecord::Base.transaction do
 | 
						
						
						
							|  |  |       begin
 | 
						
						
						
							|  |  |         @mirror = MirrorRepository.find(@_params[:mirror_id])
 | 
						
						
						
							|  |  |         if @_params[:status].to_i == 1 && @mirror.status != 1
 | 
						
						
						
							|  |  |           shixun_tomcat = Redmine::Configuration['shixun_tomcat']
 | 
						
						
						
							|  |  |           params = {imageName: @mirror.name}
 | 
						
						
						
							|  |  |           # 主从节点同步镜像
 | 
						
						
						
							|  |  |           uri = "#{shixun_tomcat}/bridge/docker/syncImage"
 | 
						
						
						
							|  |  |           res = uri_exec uri, params
 | 
						
						
						
							|  |  |           if (res && res['code'] != 0)
 | 
						
						
						
							|  |  |             raise("Synchronize Mirror exception")
 | 
						
						
						
							|  |  |           end
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |         if @_params[:type_name] != @mirror.type_name
 | 
						
						
						
							|  |  |           MirrorOperationRecord.create!(:mirror_repository_id => @mirror.id, :status => 5, :user_id => User.current.id, :old_tag => @mirror.type_name, :new_tag => @_params[:type_name])
 | 
						
						
						
							|  |  |         elsif @_params[:status].to_i != @mirror.status
 | 
						
						
						
							|  |  |           MirrorOperationRecord.create!(:mirror_repository_id => @mirror.id, :status => 6, :user_id => User.current.id, :old_tag => @mirror.status, :new_tag => @_params[:status])
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |         @mirror.update_attributes(:description => @_params[:description], :status => @_params[:status], :main_type => @_params[:mirror_type],
 | 
						
						
						
							|  |  |                                    :type_name => @_params[:type_name], :resource_limit => @_params[:mirror_resource_limit], :cpu_limit => @_params[:mirror_cpu_limit],
 | 
						
						
						
							|  |  |                                    :memory_limit => @_params[:mirror_memory_limit], :time_limit => @_params[:mirror_time_limit])
 | 
						
						
						
							|  |  |         @index = MirrorRepository.order("created_at desc").map(&:id).index(@mirror.id)
 | 
						
						
						
							|  |  |         respond_to do |format|
 | 
						
						
						
							|  |  |           format.js
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |       rescue Exception => e
 | 
						
						
						
							|  |  |         logger.error("update_mirror error: #{e}")
 | 
						
						
						
							|  |  |         raise ActiveRecord::Rollback
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def delete_mirror
 | 
						
						
						
							|  |  |     mirror = MirrorRepository.find params[:mirror_id]
 | 
						
						
						
							|  |  |     mirror.destroy
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js{redirect_to mirror_repository_managements_path(:reaction => "delete_mirror")}
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 用户修改界面
 | 
						
						
						
							|  |  |   def update_user
 | 
						
						
						
							|  |  |     @menu_type = 7
 | 
						
						
						
							|  |  |     @sub_type = 1
 | 
						
						
						
							|  |  |     # @next_type = 1
 | 
						
						
						
							|  |  |     if params[:flag]
 | 
						
						
						
							|  |  |       applied_message = AppliedMessage.where(:id => params[:applied_message_id]).first
 | 
						
						
						
							|  |  |       applied_message.update_attribute(:viewed, true)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     @user = User.find(params[:user])
 | 
						
						
						
							|  |  |     # 创建实训
 | 
						
						
						
							|  |  |     @create_num = (@user == User.current ? Shixun.where(:user_id => @user).count : Shixun.where(:user_id => @user).visible.count)
 | 
						
						
						
							|  |  |     # 创建课堂
 | 
						
						
						
							|  |  |     @create_courses_count = @user.courses.not_deleted_not_end.select{ |course| @user.has_teacher_role(course)}.count
 | 
						
						
						
							|  |  |     # 我的所有课程数
 | 
						
						
						
							|  |  |     @all_courses_count = @user.courses.not_deleted_not_end.count
 | 
						
						
						
							|  |  |     # 参与课堂
 | 
						
						
						
							|  |  |     @join_courses_count = @all_courses_count - @create_courses_count
 | 
						
						
						
							|  |  |     # 我合作的实训数
 | 
						
						
						
							|  |  |     coop_id = Shixun.find_by_sql("select shixun_id from shixun_members where user_id=#{@user.id} and role = 2").map(&:shixun_id)   # 合作者的实训id
 | 
						
						
						
							|  |  |     @cooperative_num =  Shixun.where(:id => coop_id).count
 | 
						
						
						
							|  |  |     # 我挑战的实训数
 | 
						
						
						
							|  |  |     ch_id = Shixun.find_by_sql("select id from shixuns where id in (select shixun_id from myshixuns where user_id = #{@user.id})")
 | 
						
						
						
							|  |  |     @challenge_num = Shixun.where(:id => ch_id).count
 | 
						
						
						
							|  |  |     #参与实训
 | 
						
						
						
							|  |  |     @join_shixuns = @cooperative_num + @challenge_num
 | 
						
						
						
							|  |  |     # 我的关注
 | 
						
						
						
							|  |  |     watch_query = User.watched_by(@user.id)
 | 
						
						
						
							|  |  |     @user_watchlist_count = watch_query.count()
 | 
						
						
						
							|  |  |     # 我的粉丝
 | 
						
						
						
							|  |  |     fan_query = @user.watcher_users
 | 
						
						
						
							|  |  |     @user_fanlist_count = fan_query.count()
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 实训留言
 | 
						
						
						
							|  |  |   def shixun_feedback
 | 
						
						
						
							|  |  |     @menu_type = 9
 | 
						
						
						
							|  |  |     @sub_type = 1
 | 
						
						
						
							|  |  |     @discusses = Discuss.where(:dis_type => "Shixun").reorder("created_at desc")
 | 
						
						
						
							|  |  |     @discusses_count =   @discusses.count
 | 
						
						
						
							|  |  |     @limit = 20
 | 
						
						
						
							|  |  |     @is_remote = true
 | 
						
						
						
							|  |  |     @page = (params['page'] || 1).to_i
 | 
						
						
						
							|  |  |     @discusses_pages = Paginator.new @discusses_count, @limit, @page
 | 
						
						
						
							|  |  |     @offset ||=  @discusses_pages.offset
 | 
						
						
						
							|  |  |     @discusses = paginateHelper @discusses, @limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 实训反馈
 | 
						
						
						
							|  |  |   def shixun_feedback_message
 | 
						
						
						
							|  |  |     @menu_type = 8
 | 
						
						
						
							|  |  |     @sub_type = 2
 | 
						
						
						
							|  |  |     @search = params[:search]
 | 
						
						
						
							|  |  |     @beginTime = params[:beginTime]
 | 
						
						
						
							|  |  |     @endTime = params[:endTime]
 | 
						
						
						
							|  |  |     if @search.present?
 | 
						
						
						
							|  |  |       shixun_ids = Shixun.where("name like ?", "%#{params[:search]}%").pluck(:id)
 | 
						
						
						
							|  |  |       @discusses = Discuss.where(:dis_type => "Shixun", :dis_id => shixun_ids).reorder("created_at desc")
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       @discusses = Discuss.where(:dis_type => "Shixun").reorder("created_at desc")
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if params[:beginTime] && params[:beginTime].strip != ""
 | 
						
						
						
							|  |  |       @discusses = @discusses.where("created_at >= '#{Time.parse(params[:beginTime])}'")
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     if params[:endTime] && params[:endTime].strip != ""
 | 
						
						
						
							|  |  |       @discusses = @discusses.where("created_at <= '#{Time.parse(params[:endTime])}'")
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     @all_discusses = @discusses
 | 
						
						
						
							|  |  |     @discusses_count =  @discusses.count
 | 
						
						
						
							|  |  |     @limit = 20
 | 
						
						
						
							|  |  |     @is_remote = true
 | 
						
						
						
							|  |  |     @page = (params['page'] || 1).to_i
 | 
						
						
						
							|  |  |     @discusses_pages = Paginator.new @discusses_count, @limit, @page
 | 
						
						
						
							|  |  |     @offset ||=  @discusses_pages.offset
 | 
						
						
						
							|  |  |     @discusses = paginateHelper @discusses, @limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |       format.xls{
 | 
						
						
						
							|  |  |         shixun_ids = @all_discusses.pluck(:dis_id).uniq
 | 
						
						
						
							|  |  |         filename = "#{Time.now.strftime("%Y%m%d")}-实训反馈.xls"
 | 
						
						
						
							|  |  |         send_data(shixun_feedback_xls(shixun_ids, @beginTime, @endTime), :type => "text/excel;charset=utf-8; header=present", :filename => filename_for_content_disposition(filename))
 | 
						
						
						
							|  |  |       }
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def evaluate_recod_time
 | 
						
						
						
							|  |  |     eva = EvaluateRecord.find(params[:record_id])
 | 
						
						
						
							|  |  |     @consume_time = eva.consume_time
 | 
						
						
						
							|  |  |     @student_work = eva.student_work
 | 
						
						
						
							|  |  |     @file_update = eva.file_update
 | 
						
						
						
							|  |  |     @git_pull = eva.git_pull
 | 
						
						
						
							|  |  |     @create_pod = eva.create_pod
 | 
						
						
						
							|  |  |     @pod_execute = eva.pod_execute
 | 
						
						
						
							|  |  |     @test_cases = eva.test_cases
 | 
						
						
						
							|  |  |     @return_back = eva.return_back
 | 
						
						
						
							|  |  |     @brige = eva.brige
 | 
						
						
						
							|  |  |     @front_js = eva.front_js
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 评测时间列表
 | 
						
						
						
							|  |  |   def evaluate_records
 | 
						
						
						
							|  |  |     shixun_tomcat = Redmine::Configuration['shixun_tomcat']
 | 
						
						
						
							|  |  |     uri = "#{shixun_tomcat}/bridge/monitor/getPodsInfo"
 | 
						
						
						
							|  |  |     res = uri_exec uri, params
 | 
						
						
						
							|  |  |     if res['code'] == 0
 | 
						
						
						
							|  |  |       @pod_num = res['sum']
 | 
						
						
						
							|  |  |       @pod_dis = JSON.parse(res['distr']) if res['distr'].present?
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     page = (params['page'] || 1).to_i
 | 
						
						
						
							|  |  |     search = params[:search]
 | 
						
						
						
							|  |  |     keyword = params[:keyword]
 | 
						
						
						
							|  |  |     limit = 20
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if search
 | 
						
						
						
							|  |  |       if "u_name" == keyword
 | 
						
						
						
							|  |  |         @evaluate_recods = EvaluateRecord.joins("join users u on evaluate_records.user_id = u.id").where("concat(u.lastname, u.firstname) like '%#{search}%'")
 | 
						
						
						
							|  |  |         # @evaluate_recods = EvaluateRecord.where(user_id: User.where("concat(lastname, firstname) like '%#{search}%'").pluck(:id))
 | 
						
						
						
							|  |  |       else
 | 
						
						
						
							|  |  |         @evaluate_recods = EvaluateRecord.joins("join user_extensions ue on evaluate_records.user_id = ue.user_id").where("ue.school_id in (select id from schools where name like '%#{search}%')")
 | 
						
						
						
							|  |  |         # @evaluate_recods = EvaluateRecord.where(user_id: UserExtensions.where(school_id: School.where("name like '%#{search}%'").pluck(:id)).pluck(:user_id))
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       @evaluate_recods = EvaluateRecord.where("0=0")
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     @evaluate_recods_count = @evaluate_recods.count
 | 
						
						
						
							|  |  |     @evaluate_recods_pages = Paginator.new @evaluate_recods_count, limit, page
 | 
						
						
						
							|  |  |     @evaluate_recods = @evaluate_recods.page(page).per(limit)
 | 
						
						
						
							|  |  |     @evaluate_recods = @evaluate_recods.includes(:shixun, :user)
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 作业回复
 | 
						
						
						
							|  |  |   def leave_message
 | 
						
						
						
							|  |  |     @menu_type = 8
 | 
						
						
						
							|  |  |     @sub_type = 1
 | 
						
						
						
							|  |  |     @jour = JournalsForMessage.where(:jour_type => 'HomeworkCommon').order("created_on desc")
 | 
						
						
						
							|  |  |     @jour_count =   @jour.count
 | 
						
						
						
							|  |  |     @page = (params['page'] || 1).to_i
 | 
						
						
						
							|  |  |     @limit = 20
 | 
						
						
						
							|  |  |     @is_remote = true
 | 
						
						
						
							|  |  |     @jour_pages = Paginator.new @jour_count, @limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||=  @jour_pages.offset
 | 
						
						
						
							|  |  |     @jour = paginateHelper  @jour, @limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 讨论区
 | 
						
						
						
							|  |  |   def messages_list
 | 
						
						
						
							|  |  |     @menu_type = 8
 | 
						
						
						
							|  |  |     @sub_type = 3
 | 
						
						
						
							|  |  |     @memo = Memo.where("0=0").order("created_at desc")
 | 
						
						
						
							|  |  |     @page = (params['page'] || 1).to_i
 | 
						
						
						
							|  |  |     @memo_count = @memo.count
 | 
						
						
						
							|  |  |     @limit = 20
 | 
						
						
						
							|  |  |     @is_remote = true
 | 
						
						
						
							|  |  |     @memo_pages = Paginator.new @memo_count, @limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||=  @memo_pages.offset
 | 
						
						
						
							|  |  |     @memo = paginateHelper  @memo, @limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def course_messages_list
 | 
						
						
						
							|  |  |     @menu_type = 8
 | 
						
						
						
							|  |  |     @sub_type = 4
 | 
						
						
						
							|  |  |     @sx_order  = params[:sx_order].blank? ? "desc" : params[:sx_order]
 | 
						
						
						
							|  |  |     # @message = Message.find_by_sql("SELECT * FROM messages WHERE board_id IN (SELECT id FROM boards WHERE course_id IS NOT NULL) order by created_on #{@sx_order}")
 | 
						
						
						
							|  |  |     @message = Message.includes(:board).where("boards.course_id is not null").order("created_on #{@sx_order}")
 | 
						
						
						
							|  |  |     @page = (params['page'] || 1).to_i
 | 
						
						
						
							|  |  |     @message_count = @message.count
 | 
						
						
						
							|  |  |     @limit = 20
 | 
						
						
						
							|  |  |     @is_remote = true
 | 
						
						
						
							|  |  |     @message_pages = Paginator.new @message_count, @limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||=  @message_pages.offset
 | 
						
						
						
							|  |  |     @message = paginateHelper @message, @limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  |   # 专业列表
 | 
						
						
						
							|  |  |   def profession
 | 
						
						
						
							|  |  |     @major=Major.where("0=0")
 | 
						
						
						
							|  |  |     # @menu_type = 12
 | 
						
						
						
							|  |  |     @sub_type = 1
 | 
						
						
						
							|  |  |     @sx_order  = params[:sx_order].blank? ? "desc" : params[:sx_order]
 | 
						
						
						
							|  |  |     major_level_option = params[:major_level] if params[:major_level]
 | 
						
						
						
							|  |  |     discipline_category_option = params[:discipline_category_id] if params[:discipline_category_id]
 | 
						
						
						
							|  |  |     first_level_discipline_option = params[:first_level_discipline_id] if params[:first_level_discipline_id]
 | 
						
						
						
							|  |  |     if major_level_option && major_level_option != '0'
 | 
						
						
						
							|  |  |       @major = @major.where(:major_level => major_level_option)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     if discipline_category_option && discipline_category_option != '0'
 | 
						
						
						
							|  |  |       @major=@major.where(:discipline_category_id => discipline_category_option)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     if first_level_discipline_option && first_level_discipline_option != '0'
 | 
						
						
						
							|  |  |       @major=@major.where(:first_level_discipline_id => first_level_discipline_option)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if params[:support_shixuns]
 | 
						
						
						
							|  |  |       @major = @major.where(:support_shixuns => params[:support_shixuns].to_i,:major_level=> 2)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     @major = @major.order("created_at #{@sx_order}")
 | 
						
						
						
							|  |  |     @major_count =   @major.count
 | 
						
						
						
							|  |  |     limit = 20
 | 
						
						
						
							|  |  |     @is_remote = true
 | 
						
						
						
							|  |  |     @major_pages = Paginator.new @major_count, limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||=  @major_pages.offset
 | 
						
						
						
							|  |  |     @major = paginateHelper  @major, limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 新增专业页面
 | 
						
						
						
							|  |  |   def new_major
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 新增专业
 | 
						
						
						
							|  |  |   def insert_major
 | 
						
						
						
							|  |  |     major_list = Major.create(:name=>params[:major],:first_level_discipline_id=>params[:first_level_discipline_id],:major_level=>params[:major_level],:discipline_category_id=>params[:discipline_category_id],:major_code=>params[:major_code])
 | 
						
						
						
							|  |  |     redirect_to profession_managements_path
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 支撑实训
 | 
						
						
						
							|  |  |   def support_shixun
 | 
						
						
						
							|  |  |     if params[:syllabus_id]
 | 
						
						
						
							|  |  |       major = Major.find params[:syllabus_id]
 | 
						
						
						
							|  |  |       major.update_attributes(:support_shixuns => !major.support_shixuns)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 实训适用课程
 | 
						
						
						
							|  |  |   def applicable_course
 | 
						
						
						
							|  |  |     # @menu_type = 12
 | 
						
						
						
							|  |  |     @sub_type = 2
 | 
						
						
						
							|  |  |     @major = Major.where(:major_level => 2,:support_shixuns => 1)
 | 
						
						
						
							|  |  |     @courselist = CourseList.where("0=0")
 | 
						
						
						
							|  |  |     search=params[:search]
 | 
						
						
						
							|  |  |     unless search.blank?
 | 
						
						
						
							|  |  |       @courselist = @courselist.where("name like '%#{search}%'")
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     @courselist = @courselist.reorder("created_at desc")
 | 
						
						
						
							|  |  |     @courselist_count = @courselist.count
 | 
						
						
						
							|  |  |     
 | 
						
						
						
							|  |  |     @limit = 15
 | 
						
						
						
							|  |  |     @is_remote = true
 | 
						
						
						
							|  |  |     @page = params['page'] ? params['page'].to_i : 1
 | 
						
						
						
							|  |  |     @courselist_pages = Paginator.new @courselist_count, @limit, @page
 | 
						
						
						
							|  |  |     @offset ||=@courselist_pages.offset
 | 
						
						
						
							|  |  |     @courselist = paginateHelper @courselist, @limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 增加课程
 | 
						
						
						
							|  |  |   def add_course
 | 
						
						
						
							|  |  |     courselist= CourseList.create(:name => params[:course])
 | 
						
						
						
							|  |  |     redirect_to applicable_course_managements_path
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 增加课程所属专业
 | 
						
						
						
							|  |  |   def add_major
 | 
						
						
						
							|  |  |     data = {result: 0}
 | 
						
						
						
							|  |  |     id = MajorCourse.where(:course_list_id => params[:course_list_id]).first
 | 
						
						
						
							|  |  |     if (id.nil?) || (params[:major_id].to_i != '0' && params[:major_id].to_i != id.major_id)
 | 
						
						
						
							|  |  |       MajorCourse.create(:course_list_id => params[:course_list_id],:major_id=>params[:major_id])
 | 
						
						
						
							|  |  |       data[:result] = 1
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     render :json => data
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 竞赛列表
 | 
						
						
						
							|  |  |   def competition
 | 
						
						
						
							|  |  |     @menu_type = 5
 | 
						
						
						
							|  |  |     @sub_type = 1
 | 
						
						
						
							|  |  |     @competitions = Competition.order("created_at desc")
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 竞赛报名列表
 | 
						
						
						
							|  |  |   def enroll_list
 | 
						
						
						
							|  |  |     @order = params[:order].blank? ? "desc" : params[:order]
 | 
						
						
						
							|  |  |     @competition = Competition.where(:id => params[:competition]).first
 | 
						
						
						
							|  |  |     @team_members = @competition.team_members.includes(:user => [:user_extensions => [:school]])
 | 
						
						
						
							|  |  |     if params[:school] || params[:location]
 | 
						
						
						
							|  |  |       school_ids = School.where("schools.name like '%#{params[:school]}%'").pluck(:id)
 | 
						
						
						
							|  |  |       school_ids = school_ids.size == 0 ? "(-1)" : "(" + school_ids.join(",") + ")"
 | 
						
						
						
							|  |  |       location = params[:location] && params[:location] != "0" ? params[:location] : ""
 | 
						
						
						
							|  |  |       @team_members = @team_members.where("user_extensions.school_id in #{school_ids} and schools.province like '%#{location}%'")
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     @page = params[:page] || 1
 | 
						
						
						
							|  |  |     @team_members = @team_members.reorder("team_members.created_at #{@order}")
 | 
						
						
						
							|  |  |     all_members = @team_members
 | 
						
						
						
							|  |  |     @team_members = paginateHelper @team_members, 50
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |       format.xls{
 | 
						
						
						
							|  |  |         filename = "#{Time.now.strftime("%Y%m%d")}-#{@competition.name}.xls"
 | 
						
						
						
							|  |  |         send_data(competition_member_xls(all_members, @competition), :type => 'application/octet-stream', :filename => filename_for_content_disposition(filename))
 | 
						
						
						
							|  |  |       }
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def competition_setting
 | 
						
						
						
							|  |  |     @menu_type = 5
 | 
						
						
						
							|  |  |     @sub_type = 1
 | 
						
						
						
							|  |  |     if Competition.where(:identifier => params[:com_id]).blank?
 | 
						
						
						
							|  |  |       @competition = Competition.where(:id => params[:com_id]).first
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       @competition = Competition.where(:identifier => params[:com_id]).first
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def create_competition_text
 | 
						
						
						
							|  |  |     CompetitionTextConfig.create(:name => params[:name], :description => params[:description], :competition_id => params[:competition_id])
 | 
						
						
						
							|  |  |     render :json => {:status => 1}
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def delete_competition_text
 | 
						
						
						
							|  |  |     ctc = CompetitionTextConfig.find params[:id]
 | 
						
						
						
							|  |  |     ctc.destroy
 | 
						
						
						
							|  |  |     render :json => {:status => 1}
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 导入单位部门
 | 
						
						
						
							|  |  |   def import_departments
 | 
						
						
						
							|  |  |     attachments = params[:attachments]
 | 
						
						
						
							|  |  |     attachments.each do |attachment|
 | 
						
						
						
							|  |  |       attachment = Attachment.find_by_token_only(attachment[1]['token'])
 | 
						
						
						
							|  |  |       if attachment.present?
 | 
						
						
						
							|  |  |         attachment.container_id = 1
 | 
						
						
						
							|  |  |         attachment.container_type = "ImportDepartment"
 | 
						
						
						
							|  |  |         attachment.save
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     new_atta = Attachment.where(:container_id => 1, :container_type => "ImportDepartment").last
 | 
						
						
						
							|  |  |     if new_atta.present?
 | 
						
						
						
							|  |  |       Rails.logger.info("---------------------attachment_id: #{new_atta.id}")
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |       path = new_atta.disk_directory
 | 
						
						
						
							|  |  |       name = new_atta.disk_filename
 | 
						
						
						
							|  |  |       if name.split(".").last == "xls"
 | 
						
						
						
							|  |  |         begin
 | 
						
						
						
							|  |  |           xls = Roo::Spreadsheet.open("files/#{path}/#{name}",extension: :xls)
 | 
						
						
						
							|  |  |           worksheet = xls.sheet(0)
 | 
						
						
						
							|  |  |           n2 = worksheet.last_row   #最后一行数
 | 
						
						
						
							|  |  |           rows = n2 - 1
 | 
						
						
						
							|  |  |           count = 0
 | 
						
						
						
							|  |  |           rows.times do |r|  #行数
 | 
						
						
						
							|  |  |             school_id = worksheet.cell(r+2, 1)
 | 
						
						
						
							|  |  |             if school_id.present?
 | 
						
						
						
							|  |  |               school = School.where(:id => school_id).first
 | 
						
						
						
							|  |  |               if school.present?
 | 
						
						
						
							|  |  |                 if school.departments.where(:name => worksheet.cell(r+2, 2)).count == 0
 | 
						
						
						
							|  |  |                   school.departments << Department.new(:name => worksheet.cell(r+2, 2), :is_auth => 1)
 | 
						
						
						
							|  |  |                   count = count + 1
 | 
						
						
						
							|  |  |                 end
 | 
						
						
						
							|  |  |               end
 | 
						
						
						
							|  |  |             end
 | 
						
						
						
							|  |  |           end
 | 
						
						
						
							|  |  |           @status = "已导入#{count}个部门"
 | 
						
						
						
							|  |  |         rescue
 | 
						
						
						
							|  |  |           @status = "无法完成导入,原因:文件内容无法读取"
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |       else
 | 
						
						
						
							|  |  |         @status = "无法完成导入,原因:文件类型错误(只支持.xls文件)"
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |       new_atta.destroy
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       @status = "无法完成导入,原因:文件不存在"
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 单位部门列表
 | 
						
						
						
							|  |  |   def departments
 | 
						
						
						
							|  |  |     @menu_type = 6
 | 
						
						
						
							|  |  |     @sub_type = 2
 | 
						
						
						
							|  |  |     @sx_order  = params[:sx_order].blank? ? "desc" : params[:sx_order]
 | 
						
						
						
							|  |  |     @department = Department.where(:is_auth => 1).is_active
 | 
						
						
						
							|  |  |     search = params[:search]
 | 
						
						
						
							|  |  |     admin = params[:admin].to_i
 | 
						
						
						
							|  |  |     url = params[:url].to_i
 | 
						
						
						
							|  |  |     if search.blank?
 | 
						
						
						
							|  |  |         @department = @department
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |         apply = School.where("name like '%#{search}%'").map(&:id)
 | 
						
						
						
							|  |  |         @department = @department.where(:school_id => apply)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     if admin == 0
 | 
						
						
						
							|  |  |       @department = @department
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       department_ids = DepartmentMember.pluck(:department_id).uniq
 | 
						
						
						
							|  |  |       @department = @department.where(:id => department_ids)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if url == 1
 | 
						
						
						
							|  |  |       @department = @department.where("identifier is not null and identifier != ''")
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     @department = @department.reorder("created_at #{@sx_order}")
 | 
						
						
						
							|  |  |     @page = (params['page'] || 1).to_i
 | 
						
						
						
							|  |  |     @department_count =@department.count
 | 
						
						
						
							|  |  |     @limit = 20
 | 
						
						
						
							|  |  |     @is_remote = true
 | 
						
						
						
							|  |  |     @department_pages = Paginator.new @department_count, @limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||=@department_pages.offset
 | 
						
						
						
							|  |  |     @department = paginateHelper @department, @limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def partners
 | 
						
						
						
							|  |  |     @menu_type = 6
 | 
						
						
						
							|  |  |     @sub_type = 3
 | 
						
						
						
							|  |  |     if params[:search].blank?
 | 
						
						
						
							|  |  |       @partners = Partner.includes(:school).order("partners.created_at desc")
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       @partners = Partner.where("name like ? ", "%#{params[:search]}%").includes(:school).order("partners.created_at desc")
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     @current_partner = nil
 | 
						
						
						
							|  |  |     if params[:partner]
 | 
						
						
						
							|  |  |       @current_partner =  @partners.find params[:partner]
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       @current_partner =  @partners[0] if @partners.size > 0
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def get_partner
 | 
						
						
						
							|  |  |     @partner = Partner.find partner
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 添加客户
 | 
						
						
						
							|  |  |   def customers_list
 | 
						
						
						
							|  |  |     @search = params[:search]
 | 
						
						
						
							|  |  |     @province = params[:province]
 | 
						
						
						
							|  |  |     partner_id = params[:partner_id]
 | 
						
						
						
							|  |  |     @partner = Partner.find partner_id
 | 
						
						
						
							|  |  |     @customers = @partner.customers
 | 
						
						
						
							|  |  |     if @customers.present?
 | 
						
						
						
							|  |  |       @schools = School.where("(partner_id != ? or partner_id is NULL) and customer_id is NULL", @partner.id)
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       @schools = School.where("customer_id is null and (partner_id != ? or partner_id is NULL)", @partner.id)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     if params[:search]
 | 
						
						
						
							|  |  |       @schools = @schools.where("name like ?", "%#{@search}%")
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if params[:province] && params[:province] != '0'
 | 
						
						
						
							|  |  |       @schools = @schools.where("province like ?", "%#{@province}%")
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     @limit = 10
 | 
						
						
						
							|  |  |     @page = params[:page] || 1
 | 
						
						
						
							|  |  |     @schools_count = @schools.count
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     @total_pages = (@schools_count / 10.0).ceil
 | 
						
						
						
							|  |  |     @schools = paginateHelper @schools, @limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.json {
 | 
						
						
						
							|  |  |         render json: @schools
 | 
						
						
						
							|  |  |       }
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def add_customers
 | 
						
						
						
							|  |  |     school_ids = params[:school_ids]
 | 
						
						
						
							|  |  |     if school_ids.length > 0
 | 
						
						
						
							|  |  |       school_ids.each do |s|
 | 
						
						
						
							|  |  |         school = School.where("id = ?",s).first
 | 
						
						
						
							|  |  |         if school.present?
 | 
						
						
						
							|  |  |           customer = Customer.new(partner_id: params[:partner_id])
 | 
						
						
						
							|  |  |           customer.save!
 | 
						
						
						
							|  |  |           school.update_attributes(:customer_id => customer.id)
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |       render :json => {status: 1, message: "创建成功!"}
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def delete_customers
 | 
						
						
						
							|  |  |     if params[:customer]
 | 
						
						
						
							|  |  |       customer = Customer.where(id: params[:customer]).first
 | 
						
						
						
							|  |  |       @current_partner = customer.partner
 | 
						
						
						
							|  |  |       customer.school.update_attributes(:customer_id => nil)
 | 
						
						
						
							|  |  |       customer.destroy
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def all_partners
 | 
						
						
						
							|  |  |     @search = params[:search]
 | 
						
						
						
							|  |  |     @province = params[:province]
 | 
						
						
						
							|  |  |     @schools = School.where("partner_id IS NULL")
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if params[:search]
 | 
						
						
						
							|  |  |       @schools = @schools.where("name like ?", "%#{@search}%")
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if params[:province] && params[:province] != '0'
 | 
						
						
						
							|  |  |       @schools = @schools.where("province like ?", "%#{@province}%")
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     @limit = 10
 | 
						
						
						
							|  |  |     @page = params[:page] || 1
 | 
						
						
						
							|  |  |     @schools_count = @schools.count
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     @total_pages = (@schools_count / 10.0).ceil
 | 
						
						
						
							|  |  |     @schools = paginateHelper @schools, @limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.json {
 | 
						
						
						
							|  |  |         render json: @schools
 | 
						
						
						
							|  |  |       }
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def add_partner
 | 
						
						
						
							|  |  |     school_ids = params[:school_ids]
 | 
						
						
						
							|  |  |     if school_ids.length > 0
 | 
						
						
						
							|  |  |       school_ids.each do |s|
 | 
						
						
						
							|  |  |         school = School.where("id = ?",s).first
 | 
						
						
						
							|  |  |         if school.present? && school.partner_id.nil?
 | 
						
						
						
							|  |  |           partner = Partner.new(name: school.name)
 | 
						
						
						
							|  |  |           partner.save
 | 
						
						
						
							|  |  |           school.update_attributes(:partner_id => partner.id)
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     render :json => {status: 1, message: "创建成功!"}
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 删除部门管理员
 | 
						
						
						
							|  |  |   def delete_depart_member
 | 
						
						
						
							|  |  |     DepartmentMember.where(:department_id => params[:depart], :user_id => params[:user_id]).destroy_all
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 添加部门管理员-弹框
 | 
						
						
						
							|  |  |   def add_depart_member_box
 | 
						
						
						
							|  |  |     @department = Department.where(:id => params[:depart]).first
 | 
						
						
						
							|  |  |     #@members = User.where(:id => UserExtensions.where(:school_id => @department.try(:school_id)).map(&:user_id), :certification => 1)
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     @members =
 | 
						
						
						
							|  |  |         if params[:search]
 | 
						
						
						
							|  |  |           User.where("LOWER(concat(lastname, firstname, nickname, mail)) LIKE '%#{params[:search]}%'")
 | 
						
						
						
							|  |  |         else
 | 
						
						
						
							|  |  |           User.where(:certification => 1)
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |     @members = paginateHelper @members, 8
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 添加部门管理员
 | 
						
						
						
							|  |  |   def add_depart_member
 | 
						
						
						
							|  |  |     if params[:depart] && params[:depart_member]
 | 
						
						
						
							|  |  |       @department = Department.where(:id => params[:depart]).first
 | 
						
						
						
							|  |  |       params[:depart_member].each do |member|
 | 
						
						
						
							|  |  |         @department.department_members << DepartmentMember.new(:user_id => member)
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     redirect_to partners_managments_path
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     # respond_to do |format|
 | 
						
						
						
							|  |  |     #   format.html {render :layout => "base_edu"}
 | 
						
						
						
							|  |  |     #   format.js
 | 
						
						
						
							|  |  |     # end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 添加合作伙伴管理员- 弹框
 | 
						
						
						
							|  |  |   def add_partner_member_box
 | 
						
						
						
							|  |  |     @partner = Partner.where(:id => params[:partner]).first
 | 
						
						
						
							|  |  |     @members =
 | 
						
						
						
							|  |  |         if params[:search]
 | 
						
						
						
							|  |  |           User.where("LOWER(concat(lastname, firstname, nickname, mail)) LIKE '%#{params[:search]}%' AND partner_id is NULL")
 | 
						
						
						
							|  |  |         else
 | 
						
						
						
							|  |  |           User.where(:certification => 1, :partner_id => nil )
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |     @total_pages = (@members.count / 10.0).ceil
 | 
						
						
						
							|  |  |     @members = paginateHelper @members, 10
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.json {
 | 
						
						
						
							|  |  |         render json: member_json_data(@members)
 | 
						
						
						
							|  |  |       }
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 合作伙伴添加管理员
 | 
						
						
						
							|  |  |   def add_partner_member
 | 
						
						
						
							|  |  |     if params[:partner] && params[:partner_member]
 | 
						
						
						
							|  |  |       @partner = Partner.find_by_id params[:partner]
 | 
						
						
						
							|  |  |       params[:partner_member].each do |member|
 | 
						
						
						
							|  |  |         user = User.find_by_id member
 | 
						
						
						
							|  |  |         user.update_attributes(partner_id: @partner.id) if !@partner.nil? && !user.nil?
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 合作伙伴删除管理员
 | 
						
						
						
							|  |  |   def delete_partner_member
 | 
						
						
						
							|  |  |     if params[:partner] && params[:partner_member]
 | 
						
						
						
							|  |  |       @partner = Partner.find_by_id params[:partner]
 | 
						
						
						
							|  |  |       user = User.find_by_id params[:partner_member]
 | 
						
						
						
							|  |  |       user.update_attributes(partner_id: nil) if !@partner.nil? && !user.nil?
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # check 部门 identifier是否重复
 | 
						
						
						
							|  |  |   def check_depart_identifier
 | 
						
						
						
							|  |  |     logger.info("###############{params}")
 | 
						
						
						
							|  |  |     if params[:depart]
 | 
						
						
						
							|  |  |       result = Department.where("id != #{params[:depart]} and identifier = '#{params[:identifier]}'").count == 0 || params[:identifier] == ""
 | 
						
						
						
							|  |  |       render :json => {result: result}
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 更新部门 identifier
 | 
						
						
						
							|  |  |   def update_depart_identifier
 | 
						
						
						
							|  |  |     if params[:depart] && params[:identifier]
 | 
						
						
						
							|  |  |       @department = Department.where(:id => params[:depart]).first
 | 
						
						
						
							|  |  |       @department.update_attributes(:identifier => params[:identifier]) if @department.present?
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 更新部门 host_count
 | 
						
						
						
							|  |  |   def update_host_count
 | 
						
						
						
							|  |  |     if params[:depart] && params[:host_count]
 | 
						
						
						
							|  |  |       @department = Department.where(:id => params[:depart]).first
 | 
						
						
						
							|  |  |       @department.update_attributes(:host_count => params[:host_count]) if @department.present?
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 新增
 | 
						
						
						
							|  |  |   def create_departments
 | 
						
						
						
							|  |  |     dep = Department.order("created_at desc").first
 | 
						
						
						
							|  |  |     @latest_school = School.find(dep.try(:school_id)).try(:name)
 | 
						
						
						
							|  |  |     @school_id = dep.try(:school_id)
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def add_department
 | 
						
						
						
							|  |  |     department = Department.where(:school_id => params[:school], :name => params[:department]).first
 | 
						
						
						
							|  |  |     if department.nil?
 | 
						
						
						
							|  |  |       department = Department.create(:school_id => params[:school],:name => params[:department],:is_auth => 1)
 | 
						
						
						
							|  |  |       ApplyAddDepartment.create(:school_id => params[:school],
 | 
						
						
						
							|  |  |                                 :status => 1,
 | 
						
						
						
							|  |  |                                 :name => params[:department],
 | 
						
						
						
							|  |  |                                 :department_id => department.id,
 | 
						
						
						
							|  |  |                                 :user_id => User.current.id)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     redirect_to departments_managements_path
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 修改单位部门列表
 | 
						
						
						
							|  |  |   def update_department
 | 
						
						
						
							|  |  |     dep = Department.find params[:department_id]
 | 
						
						
						
							|  |  |     @edit_id = params[:department_id]
 | 
						
						
						
							|  |  |     @search = params[:search]
 | 
						
						
						
							|  |  |     if !params[:search].nil?
 | 
						
						
						
							|  |  |       search = "%#{params[:search].to_s.strip.downcase}%"
 | 
						
						
						
							|  |  |       @departments = Department.where("school_id = #{dep.school_id} and is_auth = 1 and id != #{params[:department_id].to_i} and #{Department.table_name}.name like :p", :p => search)
 | 
						
						
						
							|  |  |       #@schools = School.all
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       @departments = Department.where("school_id = #{dep.school_id} and is_auth = 1 and id != #{params[:department_id].to_i}")
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def edit_departments_school
 | 
						
						
						
							|  |  |     begin
 | 
						
						
						
							|  |  |       dep = Department.find(params[:department_id])
 | 
						
						
						
							|  |  |       alter_dep = Department.find(params[:alter_dep_id])
 | 
						
						
						
							|  |  |       apply_dep = ApplyAddDepartment.where(:department_id => params[:alter_dep_id])
 | 
						
						
						
							|  |  |       if dep && alter_dep && dep != alter_dep
 | 
						
						
						
							|  |  |         # users = UserExtensions.where("department_id = #{dep.id}")
 | 
						
						
						
							|  |  |         # users.update_all(:department_id => params[:alter_dep_id])
 | 
						
						
						
							|  |  |         # dep.destroy
 | 
						
						
						
							|  |  |         # apply_dep.update_all(:status => 2)
 | 
						
						
						
							|  |  |         # ApplyAddDepartment.where(:department_id =>params[:departments]).update_all(:department_id=>department_id)
 | 
						
						
						
							|  |  |         # users = UserExtensions.where("department_id = #{alt_dep.department_id}")
 | 
						
						
						
							|  |  |         # users.update_all(:department_id => department.id)
 | 
						
						
						
							|  |  |         apply_dep.destroy_all;
 | 
						
						
						
							|  |  |         users = UserExtensions.where(:department_id =>  params[:alter_dep_id])
 | 
						
						
						
							|  |  |         users.update_all(:department_id => dep.id)
 | 
						
						
						
							|  |  |         alter_dep.destroy
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     rescue Exception => e
 | 
						
						
						
							|  |  |       puts e
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     redirect_to departments_managements_path
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 单位列表
 | 
						
						
						
							|  |  |   def departments_part
 | 
						
						
						
							|  |  |     @menu_type = 6
 | 
						
						
						
							|  |  |     @sub_type = 1
 | 
						
						
						
							|  |  |     @sx_order  = params[:sx_order].blank? ? "desc" : params[:sx_order]
 | 
						
						
						
							|  |  |     search = params[:search]
 | 
						
						
						
							|  |  |     if search.blank?
 | 
						
						
						
							|  |  |       @schools = School.where("0=0")
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       @schools = School.where("name like '%#{search}%'")
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     if params[:index] == '8'
 | 
						
						
						
							|  |  |       @schools = @schools.reorder("created_at #{@sx_order}")
 | 
						
						
						
							|  |  |       @order_type = "created_at"
 | 
						
						
						
							|  |  |     elsif params[:index] == '9'
 | 
						
						
						
							|  |  |       @schools = @schools.reorder("updated_at #{@sx_order}")
 | 
						
						
						
							|  |  |       @order_type = "updated_at"
 | 
						
						
						
							|  |  |     elsif params[:index] == "6"
 | 
						
						
						
							|  |  |       @order_type = "usercount"
 | 
						
						
						
							|  |  |       @schools.each do |school|
 | 
						
						
						
							|  |  |         school[:usercount] = UserExtensions.where(:school_id => school.id).count
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |       @sx_order == "desc" ?  @schools = @schools.sort{|x,y| y[:usercount] <=> x[:usercount]} : @schools = @schools.sort{|x,y| x[:usercount] <=> y[:usercount]}
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       @schools = @schools.reorder("created_at #{@sx_order}")
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     @page = (params['page'] || 1).to_i
 | 
						
						
						
							|  |  |     @schools_count = @schools.count
 | 
						
						
						
							|  |  |     @limit = 20
 | 
						
						
						
							|  |  |     @is_remote = true
 | 
						
						
						
							|  |  |     @schools_pages = Paginator.new @schools_count, @limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||= @schools_pages.offset
 | 
						
						
						
							|  |  |     @schools= paginateHelper @schools, @limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 新增部门名称
 | 
						
						
						
							|  |  |   def add_departments_part
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 修改单位名称
 | 
						
						
						
							|  |  |   def upload_logo
 | 
						
						
						
							|  |  |     @menu_type = 6
 | 
						
						
						
							|  |  |     @sub_type = 1
 | 
						
						
						
							|  |  |     @next_type = 1
 | 
						
						
						
							|  |  |     @school = School.find(params[:school])
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 添加学校视频描述
 | 
						
						
						
							|  |  |   def add_contents_for_school
 | 
						
						
						
							|  |  |     school = School.find params[:school_id]
 | 
						
						
						
							|  |  |     school.update_attributes(:video_desc => params[:video_desc], :video_name => params[:video_name])
 | 
						
						
						
							|  |  |     render :json => {status: 1, message: "创建成功!"}
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 添加学校课程信息
 | 
						
						
						
							|  |  |   def add_course_info_for_school
 | 
						
						
						
							|  |  |     school = School.find params[:school_id]
 | 
						
						
						
							|  |  |     school.update_attributes(:course_link => params[:course_link], :course_name => params[:course_name])
 | 
						
						
						
							|  |  |     render :json => {status: 1, message: "创建成功!"}
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 修改单位名称为其他
 | 
						
						
						
							|  |  |   def school_upload_logo
 | 
						
						
						
							|  |  |     school = School.where(:id => params[:applied_id]).first
 | 
						
						
						
							|  |  |     ApplyAddSchools.where(:school_id => params[:applied_id]).destroy_all
 | 
						
						
						
							|  |  |     before_apply_departments = Department.where(:school_id => params[:applied_id])
 | 
						
						
						
							|  |  |     before_apply_departments.each do |department|
 | 
						
						
						
							|  |  |       after_dep = Department.where(:school_id => params[:school_id], :name => department.name).first
 | 
						
						
						
							|  |  |       if after_dep
 | 
						
						
						
							|  |  |         UserExtensions.where(:school_id => params[:applied_id], :department_id => department.id).update_all(:department_id => after_dep.id)
 | 
						
						
						
							|  |  |         department.apply_add_departments.destroy_all
 | 
						
						
						
							|  |  |         department.destroy
 | 
						
						
						
							|  |  |       else
 | 
						
						
						
							|  |  |         department.apply_add_departments.update_all(:school_id => params[:school_id])
 | 
						
						
						
							|  |  |         department.update_attribute(:school_id, params[:school_id])
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     UserExtensions.where(:school_id => params[:applied_id]).update_all(:school_id => params[:school_id])
 | 
						
						
						
							|  |  |     school.destroy
 | 
						
						
						
							|  |  |     redirect_to departments_part_managements_path
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 修改单位信息
 | 
						
						
						
							|  |  |   def school_message_update
 | 
						
						
						
							|  |  |     school_name = params[:schoolname]
 | 
						
						
						
							|  |  |     school_id = params[:school_id]
 | 
						
						
						
							|  |  |     School.where(:id => school_id).update_all(:name => school_name,:province => params[:province],:city =>params[:city],:address => params[:address],:shool_code => params[:school_code], :identifier => params[:identifier])
 | 
						
						
						
							|  |  |     redirect_to departments_part_managements_path
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 删除单位
 | 
						
						
						
							|  |  |   def delete_school
 | 
						
						
						
							|  |  |     school = School.where(:id => params[:school]).first
 | 
						
						
						
							|  |  |     UserExtensions.where(:school_id => params[:school]).update_all(:school_id => nil, :department_id => nil)
 | 
						
						
						
							|  |  |     ApplyAddSchools.where(:school_id => params[:school]).destroy_all
 | 
						
						
						
							|  |  |     ApplyAddDepartment.where(:school_id => params[:school]).destroy_all
 | 
						
						
						
							|  |  |     school.destroy
 | 
						
						
						
							|  |  |     redirect_to departments_part_managements_path
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def save_school
 | 
						
						
						
							|  |  |     uploaded_io = params[:logo]
 | 
						
						
						
							|  |  |     school_pinyin = Pinyin.t(params[:schoolname].strip, splitter: '')
 | 
						
						
						
							|  |  |     sl = School.create(:name => params[:schoolname],:province => params[:province],:city => params[:city],:address => params[:address],:pinyin =>school_pinyin)
 | 
						
						
						
							|  |  |     # unless uploaded_io.nil?
 | 
						
						
						
							|  |  |     #   File.open(Rails.root.join('public', 'images', 'school', sl.id.to_s+'.png'), 'wb') do |file|
 | 
						
						
						
							|  |  |     #     file.write(uploaded_io.read)
 | 
						
						
						
							|  |  |     #   end
 | 
						
						
						
							|  |  |     #   sl.logo_link  = '/images/school/'+sl.id.to_s+'.png'
 | 
						
						
						
							|  |  |     #   sl.save
 | 
						
						
						
							|  |  |     # end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     @user = User.current
 | 
						
						
						
							|  |  |     @se = @user.extensions
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     # if @user.save && @se.save
 | 
						
						
						
							|  |  |     #   diskfile1 = disk_filename('school', sl.id , 'id')
 | 
						
						
						
							|  |  |     #   diskfileID = diskfile1 + 'temp'
 | 
						
						
						
							|  |  |     #   begin
 | 
						
						
						
							|  |  |     #     FileUtils.mv diskfileID, diskfile1, force: true if File.exist? diskfileID
 | 
						
						
						
							|  |  |     #   ensure
 | 
						
						
						
							|  |  |     #     File.delete(diskfileID) if File.exist?(diskfileID)
 | 
						
						
						
							|  |  |     #   end
 | 
						
						
						
							|  |  |     # end
 | 
						
						
						
							|  |  |     redirect_to departments_part_managements_path
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 部门审核
 | 
						
						
						
							|  |  |   def depart
 | 
						
						
						
							|  |  |     @menu_type = 10
 | 
						
						
						
							|  |  |     @sub_type = 3
 | 
						
						
						
							|  |  |     search = params[:search]
 | 
						
						
						
							|  |  |     @apply_status = ApplyAddDepartment.where(:status=>0)
 | 
						
						
						
							|  |  |     @sx_order  = params[:sx_order].blank? ? "desc" : params[:sx_order]
 | 
						
						
						
							|  |  |     if search.blank?
 | 
						
						
						
							|  |  |       @apply_status = @apply_status.where("0=0")
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       @apply_status= @apply_status.where("name like '%#{search}%'")
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     @apply_status = @apply_status.order("created_at #{@sx_order}")
 | 
						
						
						
							|  |  |     @apply_status_count = @apply_status.count
 | 
						
						
						
							|  |  |     limit = 20
 | 
						
						
						
							|  |  |     @is_remote = true
 | 
						
						
						
							|  |  |     @apply_status_pages = Paginator.new @apply_status_count, limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||=@apply_status_pages.offset
 | 
						
						
						
							|  |  |     @apply_status = paginateHelper @apply_status, limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 批准
 | 
						
						
						
							|  |  |   def approve_applied_departments
 | 
						
						
						
							|  |  |     applied_department = ApplyAddDepartment.find(params[:id])
 | 
						
						
						
							|  |  |     applied_message = AppliedMessage.where(:applied_id => applied_department.id, :applied_type => "ApplyAddDepartment")
 | 
						
						
						
							|  |  |     applied_message.update_all(:status => 1)
 | 
						
						
						
							|  |  |     if applied_department.department
 | 
						
						
						
							|  |  |       applied_department.department.update_attributes(:is_auth => 1)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     applied_department.update_attribute(:status, 1) unless applied_department.nil?
 | 
						
						
						
							|  |  |     # AppliedMessage.create(:user_id => applied_department.user_id, :status => 1, :viewed => 0, :applied_id => applied_department.id, :applied_type => "ApplyAddDepartment", :name => applied_department.name )
 | 
						
						
						
							|  |  |     UserExtensions.where(:user_id => applied_department.user_id).update_all(:department_id => applied_department.department_id)
 | 
						
						
						
							|  |  |     Tiding.where(:user_id => 1, :trigger_user_id => applied_department.user_id, :container_id => applied_department.id, :container_type => 'ApplyAddDepartment', :status => 0, :tiding_type => "Apply").update_all(:status => 1)
 | 
						
						
						
							|  |  |     Tiding.create(:user_id => applied_department.user_id, :trigger_user_id => 0, :container_id => applied_department.id, :container_type =>'ApplyAddDepartment', :belong_container_id => applied_department.department.school_id, :belong_container_type=> 'School', :tiding_type => "System", :status => 1)
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.html{ redirect_to depart_managements_path }
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 删除
 | 
						
						
						
							|  |  |   def delete_applied_departments
 | 
						
						
						
							|  |  |     applied_department = ApplyAddDepartment.find params[:depart_id]
 | 
						
						
						
							|  |  |     applied_message = AppliedMessage.where(:applied_id => applied_department.id, :applied_type => "ApplyAddDepartment")
 | 
						
						
						
							|  |  |     applied_message.update_all(:status => 3)
 | 
						
						
						
							|  |  |     applied_department.update_attribute(:status, 3)
 | 
						
						
						
							|  |  |     # 未审批删除
 | 
						
						
						
							|  |  |     if params[:tip] == "unapplied"
 | 
						
						
						
							|  |  |       # AppliedMessage.create(:user_id => applied_department.user_id, :status => 3, :viewed => 0, :applied_id => applied_department.id, :applied_type => "ApplyAddDepartment", :name => applied_department.name )
 | 
						
						
						
							|  |  |       Tiding.where(:user_id => 1, :trigger_user_id => applied_department.user_id, :container_id => applied_department.id, :container_type => 'ApplyAddDepartment', :status => 0, :tiding_type => "Apply").update_all(:status => 1)
 | 
						
						
						
							|  |  |       Tiding.create(:user_id => applied_department.user_id, :trigger_user_id => 0, :container_id => applied_department.id, :container_type =>'ApplyAddDepartment', :belong_container_id => applied_department.department.school_id, :belong_container_type=> 'School', :tiding_type => "System", :status => 2, :extra => params[:reason])
 | 
						
						
						
							|  |  |       # 删除学校的用户
 | 
						
						
						
							|  |  |       users = UserExtensions.where("department_id = #{applied_department.department_id}")
 | 
						
						
						
							|  |  |       users.update_all(:department_id => nil)
 | 
						
						
						
							|  |  |       applied_department.department.destroy
 | 
						
						
						
							|  |  |       # 已审批删除
 | 
						
						
						
							|  |  |     elsif params[:tip] == "applied"
 | 
						
						
						
							|  |  |       applied_department.destroy
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.html{ redirect_to depart_managements_path }
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 部门修改
 | 
						
						
						
							|  |  |   def all_department
 | 
						
						
						
							|  |  |     @edit_id = params[:department_id]
 | 
						
						
						
							|  |  |     @search = params[:search]
 | 
						
						
						
							|  |  |     dep = ApplyAddDepartment.where(:id => @edit_id).first
 | 
						
						
						
							|  |  |     if !params[:search].nil?
 | 
						
						
						
							|  |  |       search = "%#{params[:search].to_s.strip.downcase}%"
 | 
						
						
						
							|  |  |       @department = dep.school.departments.where("is_auth = 1 and #{Department.table_name}.name like :p", :p => search)
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       @department = dep.school.departments.where(:is_auth => 1)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     # redirect_to unit_managements_path
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 修改
 | 
						
						
						
							|  |  |   def edit_applied_department
 | 
						
						
						
							|  |  |     aas =ApplyAddDepartment.find(params[:applied_id])
 | 
						
						
						
							|  |  |     # aas.update_attribute(:name, params[:name])
 | 
						
						
						
							|  |  |     #applied_add_school = ApplyAddSchools.where(:name => aas.name)
 | 
						
						
						
							|  |  |     department =Department.find params[:department_id]
 | 
						
						
						
							|  |  |     begin
 | 
						
						
						
							|  |  |       #更新消息表的status
 | 
						
						
						
							|  |  |       if aas.department_id != department.id.to_i
 | 
						
						
						
							|  |  |         apply_depart_id = aas.department_id
 | 
						
						
						
							|  |  |         applied_message = AppliedMessage.where(:applied_id => apply_depart_id, :applied_type => "ApplyAddDepartment")
 | 
						
						
						
							|  |  |         applied_message.update_all(:status => 4)
 | 
						
						
						
							|  |  |         aas.update_attribute(:status, 2)
 | 
						
						
						
							|  |  |         aas.tidings.update_all(:status => 1)
 | 
						
						
						
							|  |  |         extra = department.name + "(#{department.school.try(:name)})"
 | 
						
						
						
							|  |  |         Tiding.create(:user_id => aas.user_id, :trigger_user_id => 0, :container_id => aas.id, :container_type =>'ApplyAddDepartment', :belong_container_id => department.school_id, :belong_container_type=> 'School', :tiding_type => "System", :status => 3, :extra => extra)
 | 
						
						
						
							|  |  |         # AppliedMessage.create(:user_id => aas.user_id, :status => 2, :viewed => 0, :applied_id => aas.id, :applied_type => "ApplyAddDepartment", :name =>department.name )
 | 
						
						
						
							|  |  |         users = UserExtensions.where("department_id = #{aas.department_id}")
 | 
						
						
						
							|  |  |         users.update_all(:department_id => department.id)
 | 
						
						
						
							|  |  |         aas.department.destroy
 | 
						
						
						
							|  |  |         ApplyAddDepartment.where(:department_id => aas.department_id).update_all(:department_id => department.id)
 | 
						
						
						
							|  |  |         Department.where(:department_id => aas.department_id).destroy_all
 | 
						
						
						
							|  |  |         aas.destroy_all
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     rescue Exception => e
 | 
						
						
						
							|  |  |       puts e
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     redirect_to depart_managements_path
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 单位审批
 | 
						
						
						
							|  |  |   def unit
 | 
						
						
						
							|  |  |     @menu_type = 10
 | 
						
						
						
							|  |  |     @sub_type = 4
 | 
						
						
						
							|  |  |     search = params[:search]
 | 
						
						
						
							|  |  |     @sx_order  = params[:sx_order].blank? ? "desc" : params[:sx_order]
 | 
						
						
						
							|  |  |     @apply_status = ApplyAddSchools.where(:status=>0)
 | 
						
						
						
							|  |  |     if search.blank?
 | 
						
						
						
							|  |  |       @apply_status = @apply_status.where("0=0")
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       @apply_status= @apply_status.where("name like '%#{search}%'")
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     @apply_status = @apply_status.order("created_at #{@sx_order}")
 | 
						
						
						
							|  |  |     @apply_status_count = @apply_status.count
 | 
						
						
						
							|  |  |     limit = 20
 | 
						
						
						
							|  |  |     @is_remote = true
 | 
						
						
						
							|  |  |     @apply_status_pages = Paginator.new @apply_status_count, limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||= @apply_status_pages.offset
 | 
						
						
						
							|  |  |     @apply_status = paginateHelper @apply_status, limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 单位审批批准
 | 
						
						
						
							|  |  |   def approve_applied_schools
 | 
						
						
						
							|  |  |     applied_school = ApplyAddSchools.where(:id =>params[:id]).first
 | 
						
						
						
							|  |  |     applied_message_id = applied_school.school_id
 | 
						
						
						
							|  |  |     applied_message = AppliedMessage.where(:applied_id => applied_message_id, :applied_type => "ApplyAddSchools")
 | 
						
						
						
							|  |  |     applied_message.update_all(:status => 1)
 | 
						
						
						
							|  |  |     unless applied_school.nil?
 | 
						
						
						
							|  |  |       applied_school.update_column('status', 1)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     school = applied_school.school
 | 
						
						
						
							|  |  |     school.update_attribute("province", applied_school.province)
 | 
						
						
						
							|  |  |     AppliedMessage.create(:user_id => applied_school.user_id, :status => 1, :viewed => 0, :applied_id => applied_school.id, :applied_type => "ApplyAddSchools", :name => applied_school.name )
 | 
						
						
						
							|  |  |     Tiding.where(:user_id => 1, :trigger_user_id => applied_school.user_id, :container_id => applied_school.id, :container_type => 'ApplyAddSchools', :status => 0, :tiding_type => "Apply").update_all(:status => 1)
 | 
						
						
						
							|  |  |     Tiding.create(:user_id => applied_school.user_id, :trigger_user_id => 0, :container_id => applied_school.id, :container_type =>'ApplyAddSchools', :belong_container_id => applied_school.school_id, :belong_container_type=> 'School', :tiding_type => "System", :status => 1)
 | 
						
						
						
							|  |  |     redirect_to unit_managements_path
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 删除
 | 
						
						
						
							|  |  |   def delete_applied_schools
 | 
						
						
						
							|  |  |     applied_school = ApplyAddSchools.find(params[:school_id])
 | 
						
						
						
							|  |  |     applied_message_id = applied_school.school_id
 | 
						
						
						
							|  |  |     applied_message = AppliedMessage.where(:applied_id => applied_message_id, :applied_type => "ApplyAddSchools")
 | 
						
						
						
							|  |  |     applied_message.update_all(:status => 3)
 | 
						
						
						
							|  |  |     applied_school.update_attribute(:status, 3)
 | 
						
						
						
							|  |  |     # 单位对应的部门审核也应做删除处理
 | 
						
						
						
							|  |  |     applied_departments = ApplyAddDepartment.where(:school_id => applied_school.school_id)
 | 
						
						
						
							|  |  |     applied_departments.update_all(:status => 3)
 | 
						
						
						
							|  |  |     AppliedMessage.where(:applied_id => applied_departments.map(&:id), :applied_type => "ApplyAddDepartment").update_all(:status => 3)
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     # 删除学校的用户
 | 
						
						
						
							|  |  |     users = UserExtensions.where("school_id = #{applied_school.school_id}")
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     # 申请了职业认证的用户撤销申请
 | 
						
						
						
							|  |  |     apply_user_auth = ApplyUserAuthentication.where(:user_id => users.map(&:user_id), :auth_type => 2, :status => 0)
 | 
						
						
						
							|  |  |     apply_user_auth.each do |apply|
 | 
						
						
						
							|  |  |       apply.tidings.destroy_all
 | 
						
						
						
							|  |  |       apply.update_attribute('status', 3)
 | 
						
						
						
							|  |  |       diskfile2 = disk_auth_filename('UserAuthentication', apply.user_id, 'PRO')
 | 
						
						
						
							|  |  |       diskfilePRO = diskfile2 + 'temp'
 | 
						
						
						
							|  |  |       File.delete(diskfilePRO) if File.exist?(diskfilePRO)
 | 
						
						
						
							|  |  |       File.delete(diskfile2) if File.exist?(diskfile2)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     users.update_all(:school_id => nil, :department_id => nil)
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     # 未审批删除
 | 
						
						
						
							|  |  |     if params[:tip] == "unapplied"
 | 
						
						
						
							|  |  |       # AppliedMessage.create(:user_id => applied_school.user_id, :status => 3, :viewed => 0, :applied_id => applied_school.id, :applied_type => "ApplyAddSchools", :name => applied_school.name )
 | 
						
						
						
							|  |  |       Tiding.where(:user_id => 1, :trigger_user_id => applied_school.user_id, :container_id => applied_school.id, :container_type => 'ApplyAddSchools', :status => 0, :tiding_type => "Apply").update_all(:status => 1)
 | 
						
						
						
							|  |  |       Tiding.create(:user_id => applied_school.user_id, :trigger_user_id => 0, :container_id => applied_school.id, :container_type =>'ApplyAddSchools', :belong_container_id => applied_school.school_id, :belong_container_type=> 'School', :tiding_type => "System", :status => 2, :extra => params[:reason])
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |       Tiding.where(:user_id => 1, :container_id => applied_departments.map(&:id), :container_type => 'ApplyAddDepartment', :status => 0, :tiding_type => "Apply").update_all(:status => 1)
 | 
						
						
						
							|  |  |       if applied_departments.first
 | 
						
						
						
							|  |  |         Tiding.create(:user_id => applied_departments.first.user_id, :trigger_user_id => 0, :container_id => applied_departments.first.id, :container_type =>'ApplyAddDepartment', :belong_container_id => applied_school.school_id, :belong_container_type=> 'School', :tiding_type => "System", :status => 2)
 | 
						
						
						
							|  |  |         AppliedMessage.create(:user_id => applied_departments.first.user_id, :status => 3, :viewed => 0, :applied_id => applied_departments.first.id, :applied_type => "ApplyAddDepartment", :name => applied_departments.first.name )
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |       applied_school.school.destroy
 | 
						
						
						
							|  |  |       applied_school.school.departments.destroy_all
 | 
						
						
						
							|  |  |       redirect_to unit_managements_path
 | 
						
						
						
							|  |  |       # 已审批删除
 | 
						
						
						
							|  |  |     elsif params[:tip] == "applied"
 | 
						
						
						
							|  |  |       applied_departments.destroy_all
 | 
						
						
						
							|  |  |       applied_school.destroy
 | 
						
						
						
							|  |  |       redirect_to unit_managements_path
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 单位审批修改
 | 
						
						
						
							|  |  |   def all_schools
 | 
						
						
						
							|  |  |     apply_schools = ApplyAddSchools.where("status = 0")
 | 
						
						
						
							|  |  |     apply_school_ids = apply_schools.empty? ? "(#{params[:school_id].to_i})" : "(" + apply_schools.map{|sc| sc.school_id}.join(',') + ")"
 | 
						
						
						
							|  |  |     if !params[:search].nil?
 | 
						
						
						
							|  |  |       search = "%#{params[:search].to_s.strip.downcase}%"
 | 
						
						
						
							|  |  |       @schools = School.where("id not in #{apply_school_ids} and id != #{params[:school_id].to_i} and #{School.table_name}.name like :p", :p => search)
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       @schools = School.where("id not in #{apply_school_ids} and id != #{params[:school_id].to_i}")
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     @edit_id = params[:school_id]
 | 
						
						
						
							|  |  |     @search = params[:search]
 | 
						
						
						
							|  |  |     @upload = params[:upload]
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 修改
 | 
						
						
						
							|  |  |   def edit_applied_schools
 | 
						
						
						
							|  |  |     aas = ApplyAddSchools.find(params[:applied_id])
 | 
						
						
						
							|  |  |     school = School.find params[:school_id]
 | 
						
						
						
							|  |  |     begin
 | 
						
						
						
							|  |  |       #更新消息表的status
 | 
						
						
						
							|  |  |       if aas.school_id != school.id.to_i
 | 
						
						
						
							|  |  |         applied_message_id = aas.school_id
 | 
						
						
						
							|  |  |         applied_message = AppliedMessage.where(:applied_id => applied_message_id, :applied_type => "ApplyAddSchools")
 | 
						
						
						
							|  |  |         applied_message.update_all(:status => 4)
 | 
						
						
						
							|  |  |         Tiding.where(:user_id => 1, :trigger_user_id => aas.user_id, :container_id => aas.id, :container_type => 'ApplyAddSchools', :status => 0, :tiding_type => "Apply").update_all(:status => 1)
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         aas.update_attribute(:status, 2)
 | 
						
						
						
							|  |  |         # AppliedMessage.create(:user_id => aas.user_id, :status => 2, :viewed => 0, :applied_id => aas.id, :applied_type => "ApplyAddSchools", :name => school.name )
 | 
						
						
						
							|  |  |         extra = school.try(:name).to_s
 | 
						
						
						
							|  |  |         Tiding.create(:user_id => aas.user_id, :trigger_user_id => 0, :container_id => aas.id, :container_type =>'ApplyAddSchools', :belong_container_id => school.id, :belong_container_type=> 'School', :tiding_type => "System", :status => 3, :extra => extra)
 | 
						
						
						
							|  |  |         users = UserExtensions.where("school_id = #{aas.school_id}")
 | 
						
						
						
							|  |  |         users.update_all(:school_id => school.id)
 | 
						
						
						
							|  |  |         ApplyAddDepartment.where(:school_id => aas.school_id).update_all(:school_id => school.id)
 | 
						
						
						
							|  |  |         # 判断重复
 | 
						
						
						
							|  |  |         before_apply_departments = Department.where(:school_id => aas.school_id)
 | 
						
						
						
							|  |  |         before_apply_departments.each do |department|
 | 
						
						
						
							|  |  |           after_dep = Department.where(:school_id => params[:school_id], :name => department.name).first
 | 
						
						
						
							|  |  |           if after_dep.present?
 | 
						
						
						
							|  |  |             UserExtensions.where(:school_id => aas.school_id, :department_id => department.id).update_all(:department_id => after_dep.id)
 | 
						
						
						
							|  |  |             department.destroy
 | 
						
						
						
							|  |  |             department.apply_add_departments.destroy_all
 | 
						
						
						
							|  |  |           else
 | 
						
						
						
							|  |  |             department.apply_add_departments.update_all(:school_id => school.id)
 | 
						
						
						
							|  |  |             department.update_attribute(:school_id, school.id)
 | 
						
						
						
							|  |  |           end
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |         UserExtensions.where(:school_id => aas.school_id).update_all(:school_id => params[:school_id])
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         # Department.where(:school_id => aas.school_id).update_all(:school_id => school.id)
 | 
						
						
						
							|  |  |         aas.school.destroy
 | 
						
						
						
							|  |  |         aas.update_attribute(:school_id, school.id)
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     rescue Exception => e
 | 
						
						
						
							|  |  |       puts e
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     redirect_to unit_managements_path
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 课程列表
 | 
						
						
						
							|  |  |   def classroom
 | 
						
						
						
							|  |  |     @menu_type = 2
 | 
						
						
						
							|  |  |     @sub_type = 1
 | 
						
						
						
							|  |  |     @courselist = CourseList.where("0=0")
 | 
						
						
						
							|  |  |     @sx_order  = params[:sx_order].blank? ? "desc" : params[:sx_order]
 | 
						
						
						
							|  |  |     keyword = params[:keyword]
 | 
						
						
						
							|  |  |     search = params[:search]
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if params[:support_shixuns_search_title]
 | 
						
						
						
							|  |  |       @courselist = @courselist.where(:support_shixuns_search => params[:support_shixuns_search_title].to_i)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     if search.blank?
 | 
						
						
						
							|  |  |       @courselist = @courselist
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |         if "u_name" == keyword
 | 
						
						
						
							|  |  |           # user_id = User.where("concat(lastname, firstname) like '%#{search}%'")
 | 
						
						
						
							|  |  |           @courselist  = @courselist.includes(:user).where("concat(users.lastname, users.firstname) like '%#{search}%'")
 | 
						
						
						
							|  |  |         else
 | 
						
						
						
							|  |  |           @courselist = @courselist.where("name like '%#{search}%'")
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     @courselist = @courselist.order("course_lists.id #{@sx_order}")
 | 
						
						
						
							|  |  |     @page = (params[:page] || 1).to_i
 | 
						
						
						
							|  |  |     @courselist_count = @courselist.count
 | 
						
						
						
							|  |  |     @limit = 20
 | 
						
						
						
							|  |  |     @courselist_pages = Paginator.new @courselist_count, @limit, @page
 | 
						
						
						
							|  |  |     @offset ||=  @courselist_pages.offset
 | 
						
						
						
							|  |  |     @courselist = paginateHelper @courselist,@limit
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     # @courselist = @courselist.order("courselist.created_at #{@sx_order}")
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def rename_class
 | 
						
						
						
							|  |  |     @page = params[:page]
 | 
						
						
						
							|  |  |     @courselist = CourseList.where(:id => params[:course_list]).first
 | 
						
						
						
							|  |  |     if request.get?
 | 
						
						
						
							|  |  |       respond_to do |format|
 | 
						
						
						
							|  |  |         format.js
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       if @courselist
 | 
						
						
						
							|  |  |         o_courselist = CourseList.where(:name => params[:name]).first
 | 
						
						
						
							|  |  |         if o_courselist
 | 
						
						
						
							|  |  |           @courselist.courses.each do |course|
 | 
						
						
						
							|  |  |             course.update_attributes(:name => course.name.sub(@courselist.name, params[:name]), :course_list_id => o_courselist.id)
 | 
						
						
						
							|  |  |           end
 | 
						
						
						
							|  |  |           @courselist.shixun_major_courses.update_all(:course_list_id => o_courselist.id, :major_id => @courselist.major_courses.first.try(:major_id))
 | 
						
						
						
							|  |  |           @courselist.destroy
 | 
						
						
						
							|  |  |         else
 | 
						
						
						
							|  |  |           @courselist.courses.each do |course|
 | 
						
						
						
							|  |  |             course.update_attribute(:name, course.name.sub(@courselist.name, params[:name]))
 | 
						
						
						
							|  |  |           end
 | 
						
						
						
							|  |  |           @courselist.update_attributes(:name => params[:name])
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |       redirect_to classroom_managements_path(:page => params[:page])
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def migrate_class
 | 
						
						
						
							|  |  |     @page = params[:page]
 | 
						
						
						
							|  |  |     @courselist = CourseList.where(:id => params[:course_list]).first
 | 
						
						
						
							|  |  |     if request.get?
 | 
						
						
						
							|  |  |       respond_to do |format|
 | 
						
						
						
							|  |  |         format.js
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       if @courselist
 | 
						
						
						
							|  |  |         o_courselist = CourseList.where(:name => params[:name]).first
 | 
						
						
						
							|  |  |         if o_courselist
 | 
						
						
						
							|  |  |           @courselist.courses.each do |course|
 | 
						
						
						
							|  |  |             course.update_column(:course_list_id, o_courselist.id)
 | 
						
						
						
							|  |  |           end
 | 
						
						
						
							|  |  |           @courselist.shixun_major_courses.update_all(:course_list_id => o_courselist.id, :major_id => @courselist.major_courses.first.try(:major_id))
 | 
						
						
						
							|  |  |           @courselist.destroy
 | 
						
						
						
							|  |  |         else
 | 
						
						
						
							|  |  |           @courselist.update_column(:name, params[:name])
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |       redirect_to classroom_managements_path(:page => params[:page])
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 支撑实训检索
 | 
						
						
						
							|  |  |   def support_shixuns_search
 | 
						
						
						
							|  |  |     if params[:shixun_id]
 | 
						
						
						
							|  |  |       courselist = CourseList.find params[:shixun_id]
 | 
						
						
						
							|  |  |       courselist.update_attributes(:support_shixuns_search => !courselist.support_shixuns_search)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 课堂列表
 | 
						
						
						
							|  |  |   def classroom_classment
 | 
						
						
						
							|  |  |     @menu_type = 2
 | 
						
						
						
							|  |  |     @sub_type = 2
 | 
						
						
						
							|  |  |     @sx_order  = params[:sx_order].blank? ? "desc" : params[:sx_order]
 | 
						
						
						
							|  |  |     @courses = Course.where(:is_delete => 0)
 | 
						
						
						
							|  |  |     @timing=Course.where(:is_end=>false).count
 | 
						
						
						
							|  |  |     @end=Course.where(:is_end=>true).count
 | 
						
						
						
							|  |  |     # unless params[:school_id] || params[:search] || params[:keyword] || params[:status]
 | 
						
						
						
							|  |  |     #   user_exs = UserExtensions.where(:school_id=> @courses.map(&:school_id))
 | 
						
						
						
							|  |  |     #   @schools = School.where(:id =>user_exs.map(&:school_id))
 | 
						
						
						
							|  |  |     # end
 | 
						
						
						
							|  |  |     @search  = params[:search]                                 # 搜索字
 | 
						
						
						
							|  |  |     @keyword = params[:keyword].blank? ? "u_name" : params[:keyword]    # 根据姓名/课程名搜索
 | 
						
						
						
							|  |  |     @status  = params[:status]
 | 
						
						
						
							|  |  |     @school_id = params[:school_id]
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if params[:school_id] && params[:school_id] != ''
 | 
						
						
						
							|  |  |       @courses = @courses.joins("join user_extensions ue on courses.tea_id = ue.user_id").where("ue.school_id = #{params[:school_id]}")
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if params[:homepage_show]
 | 
						
						
						
							|  |  |       @courses = @courses.where(:homepage_show => params[:homepage_show].to_i)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if params[:course_list] && params[:course_list] != ''
 | 
						
						
						
							|  |  |       course_name = "%#{params[:course_list].strip}%"
 | 
						
						
						
							|  |  |       course_lists = CourseList.where("name like '#{course_name}'").map(&:id)
 | 
						
						
						
							|  |  |       @courses = @courses.where(:course_list_id => course_lists)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if params[:status] && params[:status]!=''
 | 
						
						
						
							|  |  |       @courses = @courses.where(:is_end => @status.to_i)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     if "u_name" == @keyword
 | 
						
						
						
							|  |  |       if @search.blank?
 | 
						
						
						
							|  |  |         @courses = @courses
 | 
						
						
						
							|  |  |       else
 | 
						
						
						
							|  |  |         user_id = User.where("concat(lastname, firstname) like '%#{@search}%'")
 | 
						
						
						
							|  |  |         @courses = @courses.joins("join users u on courses.tea_id = u.id").where("concat(u.lastname, u.firstname) like '%#{@search}%'")
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     elsif "dep_name" == @keyword
 | 
						
						
						
							|  |  |       school = School.where("name like '%#{@search}%'").map(&:id)
 | 
						
						
						
							|  |  |       @courses = @courses.where(:school_id => school)
 | 
						
						
						
							|  |  |       # @courses= @courses.where("name like '%#{@search}%'")
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     @courses = @courses.select("courses.*,(SELECT MAX(updated_at)  FROM `course_activities` WHERE course_activities.course_id = courses.id) AS updatetime").order("updatetime desc")
 | 
						
						
						
							|  |  |     @page = (params['page'] || 1).to_i
 | 
						
						
						
							|  |  |     @export_courses = @courses
 | 
						
						
						
							|  |  |     @courses_count = @courses.count
 | 
						
						
						
							|  |  |     @limit = 20
 | 
						
						
						
							|  |  |     @is_remote = true
 | 
						
						
						
							|  |  |     @courses_pages = Paginator.new @courses_count, @limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||=  @courses_pages.offset
 | 
						
						
						
							|  |  |     @courses = paginateHelper @courses, @limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |       format.xls{
 | 
						
						
						
							|  |  |         @export_courses = @export_courses.all
 | 
						
						
						
							|  |  |         filename = "#{l(:label_course_list_xls)}.xls"
 | 
						
						
						
							|  |  |         send_data(course_list_xls(@export_courses), :type => 'application/octet-stream', :filename => filename_for_content_disposition(filename))
 | 
						
						
						
							|  |  |       }
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def hidden_course
 | 
						
						
						
							|  |  |     @course = Course.where(:id => params[:course_id]).first
 | 
						
						
						
							|  |  |     @course.update_attributes(:is_hidden => !@course.is_hidden) if @course.present?
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def shixun_task
 | 
						
						
						
							|  |  |     @menu_type = 2
 | 
						
						
						
							|  |  |     @sub_type = 3
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     homework_commons = HomeworkCommon.where(:homework_type => 4)
 | 
						
						
						
							|  |  |     @shixun_task = Course.where(:id => homework_commons.map(&:course_id))
 | 
						
						
						
							|  |  |     @keyword = params[:keyword]
 | 
						
						
						
							|  |  |     @search = params[:search]
 | 
						
						
						
							|  |  |     @school_id = params[:school_id]
 | 
						
						
						
							|  |  |     if params[:school_id] && params[:school_id] != ''
 | 
						
						
						
							|  |  |       @shixun_task = @shixun_task.joins("join users u on courses.tea_id = u.id").joins("join user_extensions ue on u.id = ue.user_id").where("ue.school_id = #{params[:school_id]}")
 | 
						
						
						
							|  |  |       # @shixun_task = @shixun_task.includes(:user => {:user_extensions => []}).where("user_extensions.school_id = #{params[:school_id]}")
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     unless @search.blank?
 | 
						
						
						
							|  |  |       if "u_name" == @keyword
 | 
						
						
						
							|  |  |         user_id = User.where("concat(lastname, firstname) like '%#{@search}%'")
 | 
						
						
						
							|  |  |         @shixun_task = @shixun_task.joins("join users u on courses.tea_id = u.id").where("concat(u.lastname, u.firstname) like '%#{@search}%'")
 | 
						
						
						
							|  |  |       else
 | 
						
						
						
							|  |  |         @shixun_task = @shixun_task.where("courses.name like '%#{@search}%'")
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |      # @shixun_task = @shixun_task.select("courses.*, (select h.publish_time from homework_commons h where h.course_id = courses.id group by courses.id) AS publish_time").reorder("publish_time desc")
 | 
						
						
						
							|  |  |     @page = (params['page'] || 1).to_i
 | 
						
						
						
							|  |  |     @shixun_task_count =  @shixun_task.size
 | 
						
						
						
							|  |  |     @export_shixun_task = @shixun_task
 | 
						
						
						
							|  |  |     @limit = 20
 | 
						
						
						
							|  |  |     @is_remote = true
 | 
						
						
						
							|  |  |     @shixun_task_pages = Paginator.new @shixun_task_count, @limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||= @shixun_task_pages.offset
 | 
						
						
						
							|  |  |     @shixun_task = paginateHelper @shixun_task, @limit
 | 
						
						
						
							|  |  |     @shixun_task = @shixun_task.includes(:homework_commons => {:student_works => [], :homework_detail_manual => [], :shixuns => []}, :teacher => {:user_extensions => []})
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |       format.xls{
 | 
						
						
						
							|  |  |         # @export_shixun_task = @export_shixun_task.all
 | 
						
						
						
							|  |  |         filename = "#{l(:label_shixun_task_xls)}.xls"
 | 
						
						
						
							|  |  |         send_data(shixun_task_xls(@export_shixun_task), :type => 'application/octet-stream', :filename => filename_for_content_disposition(filename))
 | 
						
						
						
							|  |  |       }
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def project_list
 | 
						
						
						
							|  |  |     @menu_type = 2
 | 
						
						
						
							|  |  |     @sub_type = 4
 | 
						
						
						
							|  |  |     @pr_order = params[:pr_order].blank? ? "desc" : params[:pr_order]
 | 
						
						
						
							|  |  |     @search  = params[:search].to_s
 | 
						
						
						
							|  |  |     @projects = Project.where("name like '%#{@search}%'").order("created_on #{@pr_order}")
 | 
						
						
						
							|  |  |     @limit = 20
 | 
						
						
						
							|  |  |     @page = (params['page'] || 1).to_i
 | 
						
						
						
							|  |  |     @projects = paginateHelper @projects, @limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 班级首页显示
 | 
						
						
						
							|  |  |   def course_homepage_show
 | 
						
						
						
							|  |  |     if params[:course_id]
 | 
						
						
						
							|  |  |       course = Course.find params[:course_id]
 | 
						
						
						
							|  |  |       course.update_attributes(:homepage_show => !course.homepage_show)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 课程实训
 | 
						
						
						
							|  |  |   def class_shixuns
 | 
						
						
						
							|  |  |     @menu_type = 4
 | 
						
						
						
							|  |  |     @sub_type = 1
 | 
						
						
						
							|  |  |     @sx_order  = params[:sx_order].blank? ? "desc" : params[:sx_order]
 | 
						
						
						
							|  |  |     @edit_class_sx_num=Subject.where(:status => 0).count
 | 
						
						
						
							|  |  |     @audit_class_sx_num=Subject.where(:status => 1).count
 | 
						
						
						
							|  |  |     @publish_class_sx_num=Subject.where(:status => 2).count
 | 
						
						
						
							|  |  |     @repertories = Repertoire.where(nil).order("CONVERT( name USING gbk ) COLLATE gbk_chinese_ci ASC")
 | 
						
						
						
							|  |  |     search  = params[:search]                                          # 搜索字
 | 
						
						
						
							|  |  |     keyword = params[:keyword].blank? ? "u_name" : params[:keyword]    # 根据姓名/课程名搜索
 | 
						
						
						
							|  |  |     status   = params[:status].to_i
 | 
						
						
						
							|  |  |     if params[:school_id] && params[:school_id] != '0'
 | 
						
						
						
							|  |  |       @c_shixuns = Subject.includes(:user => {:user_extensions => []}).where("user_extensions.school_id = #{params[:school_id]}")
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       @c_shixuns = Subject.where("0=0")
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     if params[:status] && params[:status]!=''
 | 
						
						
						
							|  |  |       @c_shixuns= @c_shixuns.where(:status =>status)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     if search.blank?
 | 
						
						
						
							|  |  |       @c_shixuns = @c_shixuns
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       if "u_name" == keyword
 | 
						
						
						
							|  |  |         # user_id = User.where("concat(lastname, firstname) like '%#{search}%'")
 | 
						
						
						
							|  |  |         @c_shixuns  = @c_shixuns.includes(:user).where("concat(users.lastname, users.firstname) like '%#{search}%'")
 | 
						
						
						
							|  |  |       else
 | 
						
						
						
							|  |  |         @c_shixuns= @c_shixuns.where("name like '%#{search}%'")
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     unless params[:school_id] || params[:search] || params[:keyword] || params[:status]
 | 
						
						
						
							|  |  |        user_exs = UserExtensions.where(:user_id => @c_shixuns.map(&:user_id))
 | 
						
						
						
							|  |  |        @schools = School.where(:id => user_exs.map(&:school_id))
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     @c_shixuns = @c_shixuns.order("subjects.created_at #{@sx_order}")
 | 
						
						
						
							|  |  |     @page = (params['page'] || 1).to_i
 | 
						
						
						
							|  |  |     @c_shixuns_count = @c_shixuns.count
 | 
						
						
						
							|  |  |     @limit = 20
 | 
						
						
						
							|  |  |     @c_shixuns_pages = Paginator.new @c_shixuns_count, @limit, @page
 | 
						
						
						
							|  |  |     @c_shixuns = paginateHelper @c_shixuns, @limit
 | 
						
						
						
							|  |  |     @offset ||= @c_shixuns_pages.offset
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def subject_setting_list
 | 
						
						
						
							|  |  |     @menu_type = 4
 | 
						
						
						
							|  |  |     @sub_type = 2
 | 
						
						
						
							|  |  |     @sx_order = params[:sx_order].blank? ? "desc" : params[:sx_order]
 | 
						
						
						
							|  |  |     @edit_class_sx_num=Subject.where(:status => 0).count
 | 
						
						
						
							|  |  |     @audit_class_sx_num=Subject.where(:status => 1).count
 | 
						
						
						
							|  |  |     @publish_class_sx_num=Subject.where(:status => 2).count
 | 
						
						
						
							|  |  |     @repertories = Repertoire.where(nil).order("CONVERT( name USING gbk ) COLLATE gbk_chinese_ci ASC")
 | 
						
						
						
							|  |  |     @levels = SubjectLevelSystem.all
 | 
						
						
						
							|  |  |     search  = params[:search]                                          # 搜索字
 | 
						
						
						
							|  |  |     keyword = params[:keyword].blank? ? "u_name" : params[:keyword]    # 根据姓名/课程名搜索
 | 
						
						
						
							|  |  |     status   = params[:status].to_i
 | 
						
						
						
							|  |  |     if params[:school_id] && params[:school_id] != '0'
 | 
						
						
						
							|  |  |       @c_shixuns = Subject.includes(:user => {:user_extensions => []}).where("user_extensions.school_id = #{params[:school_id]}")
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       @c_shixuns = Subject.where("0=0")
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     if params[:status] && params[:status]!=''
 | 
						
						
						
							|  |  |       @c_shixuns= @c_shixuns.where(:status =>status)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     if search.blank?
 | 
						
						
						
							|  |  |       @c_shixuns = @c_shixuns
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       if "u_name" == keyword
 | 
						
						
						
							|  |  |         # user_id = User.where("concat(lastname, firstname) like '%#{search}%'")
 | 
						
						
						
							|  |  |         @c_shixuns = @c_shixuns.includes(:user).where("concat(users.lastname, users.firstname) like '%#{search}%'")
 | 
						
						
						
							|  |  |       else
 | 
						
						
						
							|  |  |         @c_shixuns = @c_shixuns.where("name like '%#{search}%'")
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     unless params[:school_id] || params[:search] || params[:keyword] || params[:status]
 | 
						
						
						
							|  |  |       user_exs = UserExtensions.where(:user_id => @c_shixuns.map(&:user_id))
 | 
						
						
						
							|  |  |       @schools = School.where(:id => user_exs.map(&:school_id))
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     if params[:search_homepage_show]
 | 
						
						
						
							|  |  |       @c_shixuns = @c_shixuns.where(:homepage_show => params[:search_homepage_show].to_i)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     @c_shixuns = @c_shixuns.order("subjects.created_at #{@sx_order}")
 | 
						
						
						
							|  |  |     @page = (params['page'] || 1).to_i
 | 
						
						
						
							|  |  |     @c_shixuns_count = @c_shixuns.count
 | 
						
						
						
							|  |  |     @limit = 20
 | 
						
						
						
							|  |  |     @c_shixuns_pages = Paginator.new @c_shixuns_count, @limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @c_shixuns = paginateHelper @c_shixuns, @limit
 | 
						
						
						
							|  |  |     @offset ||= @c_shixuns_pages.offset
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def update_repertoire_of_subject
 | 
						
						
						
							|  |  |     subject = Subject.find(params[:subject_id])
 | 
						
						
						
							|  |  |     subject.update_attribute(:repertoire_id, params[:rep_id])
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     render :json =>{ :data => "success"}
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def update_subject_hidden
 | 
						
						
						
							|  |  |     @subject = Subject.find(params[:subject_id])
 | 
						
						
						
							|  |  |     @subject.update_column(:hidden, !@subject.hidden)
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 已发布课程实训
 | 
						
						
						
							|  |  |   def class_publish_shixuns
 | 
						
						
						
							|  |  |     @menu_type = 4
 | 
						
						
						
							|  |  |     @sub_type = 3
 | 
						
						
						
							|  |  |     @sx_order  = params[:sx_order].blank? ? "desc" : params[:sx_order]
 | 
						
						
						
							|  |  |     search  = params[:search]                                          # 搜索字
 | 
						
						
						
							|  |  |     keyword = params[:keyword].blank? ? "u_name" : params[:keyword]    # 根据姓名/课程名搜索
 | 
						
						
						
							|  |  |     if params[:school_id] && params[:school_id] != '0'
 | 
						
						
						
							|  |  |       @c_shixuns = Subject.includes(:user => {:user_extensions => []}).where("subjects.status = 2 and user_extensions.school_id = #{params[:school_id]}")
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       @c_shixuns = Subject.where(:status => 2)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     if params[:beginTime] && params[:beginTime].strip != ""
 | 
						
						
						
							|  |  |       @c_shixuns = @c_shixuns.where("publish_time >= '#{Time.parse(params[:beginTime])}'")
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     if params[:endTime] && params[:endTime].strip != ""
 | 
						
						
						
							|  |  |       @c_shixuns = @c_shixuns.where("publish_time <= '#{Time.parse(params[:endTime])}'")
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     if search.blank?
 | 
						
						
						
							|  |  |       elsif "u_name" == keyword
 | 
						
						
						
							|  |  |         # 如果用户搜索为空,不用遍历user表,直接查找所有实训, 有搜索时才查找user
 | 
						
						
						
							|  |  |          user_id = User.where("concat(lastname, firstname) like '%#{search}%'")
 | 
						
						
						
							|  |  |         @c_shixuns  = @c_shixuns.includes(:user).where("concat(users.lastname, users.firstname) like '%#{search}%'")
 | 
						
						
						
							|  |  |       else
 | 
						
						
						
							|  |  |         @c_shixuns= @c_shixuns.where("name like '%#{search}%'")
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     unless params[:school_id] || params[:search] || params[:keyword]
 | 
						
						
						
							|  |  |       user_exs = UserExtensions.where(:user_id => @c_shixuns.map(&:user_id))
 | 
						
						
						
							|  |  |       @schools = School.where(:id => user_exs.map(&:school_id))
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     @page = (params['page'] || 1).to_i
 | 
						
						
						
							|  |  |     @c_shixuns = @c_shixuns.order("subjects.publish_time #{@sx_order}")
 | 
						
						
						
							|  |  |     @c_shixuns_count = @c_shixuns.count
 | 
						
						
						
							|  |  |     all_subjects = @c_shixuns.includes(stages: [:stage_shixuns])
 | 
						
						
						
							|  |  |     Rails.logger.warn("##########all_subjects:#{all_subjects.count}")
 | 
						
						
						
							|  |  |     @limit = 20
 | 
						
						
						
							|  |  |     @c_shixuns_pages = Paginator.new @c_shixuns_count, @limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||= @c_shixuns_pages.offset
 | 
						
						
						
							|  |  |     @c_shixuns = paginateHelper @c_shixuns, @limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |       format.xls {
 | 
						
						
						
							|  |  |         filename = "已发布实训课程-#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}.xls"
 | 
						
						
						
							|  |  |         send_data(published_subject_xls(all_subjects), :type => 'application/octet-stream', :filename => filename_for_content_disposition(filename))
 | 
						
						
						
							|  |  |       }
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 已发布实训路径首页显示
 | 
						
						
						
							|  |  |   def subject_homepage_show
 | 
						
						
						
							|  |  |     if params[:subject_id]
 | 
						
						
						
							|  |  |       subject = Subject.find params[:subject_id]
 | 
						
						
						
							|  |  |       subject.update_attributes(:homepage_show => !subject.homepage_show)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 导出excel
 | 
						
						
						
							|  |  |   def export_excel
 | 
						
						
						
							|  |  |     @course = params[:course]
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.xls {
 | 
						
						
						
							|  |  |         @course = @course.reorder("#{Tracker.table_name}.position, #{Course.table_name}.id").all
 | 
						
						
						
							|  |  |         filename = "#{l(:label_course_list_xls)}.xls"
 | 
						
						
						
							|  |  |         send_data(course_list_xls(@course), :type => 'application/octet-stream', :filename => filename_for_content_disposition(filename))
 | 
						
						
						
							|  |  |       }
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 0 全部;1 活动的; 2 已注册; 3 锁定
 | 
						
						
						
							|  |  |   def users
 | 
						
						
						
							|  |  |     @menu_type = 7
 | 
						
						
						
							|  |  |     @sub_type = 1
 | 
						
						
						
							|  |  |     status     = params[:user_status].nil? ? 0 : params[:user_status].to_i
 | 
						
						
						
							|  |  |     @us_order  = params[:us_order].blank? ? "desc" : params[:us_order]         # 排序
 | 
						
						
						
							|  |  |     @order_key = params[:order_key].blank? ? "last_login_on" : params[:order_key] # 排序关键字
 | 
						
						
						
							|  |  |     condition  = (params[:research_condition].nil? || params[:research_condition] == "name") ? "concat(lastname, firstname)" : params[:research_condition]
 | 
						
						
						
							|  |  |     if 0 == status
 | 
						
						
						
							|  |  |       if params[:research_condition] == "phone" && params[:research_contents].blank?
 | 
						
						
						
							|  |  |         @users =  User.where(nil)
 | 
						
						
						
							|  |  |       else
 | 
						
						
						
							|  |  |         @users =  User.where("#{condition} like '%#{params[:research_contents]}%'")
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       if params[:research_condition] == "phone" && params[:research_contents].blank?
 | 
						
						
						
							|  |  |         @users =  User.where(:status => status)
 | 
						
						
						
							|  |  |       else
 | 
						
						
						
							|  |  |         @users = User.where("status = #{status} and #{condition} like '%#{params[:research_contents]}%'")
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if params[:identity] && params[:identity].to_i != -1
 | 
						
						
						
							|  |  |       @users = @users.includes(:user_extensions).where("user_extensions.identity = ?", params[:identity].to_i)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if params[:auto_school] && params[:auto_school].to_i != 0
 | 
						
						
						
							|  |  |       @users = @users.includes(:user_extensions => [:school]).where("schools.auto_users_trial = ?", params[:auto_school].to_i == 1 ? 1 : 0)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if params[:school] && params[:school] != ''
 | 
						
						
						
							|  |  |       school_name = params[:school]
 | 
						
						
						
							|  |  |       school = School.where("name like '%#{school_name}%'")
 | 
						
						
						
							|  |  |       school_id = school.map(&:id)
 | 
						
						
						
							|  |  |       user_id = UserExtensions.where(:school_id => school_id).map(&:user_id)
 | 
						
						
						
							|  |  |       @users = @users.where(:id => user_id)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     @users = @users.order("#{@order_key} #{@us_order}")
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     @page = (params['page'] || 1).to_i
 | 
						
						
						
							|  |  |     @users_count =  @users.count
 | 
						
						
						
							|  |  |     @limit = 20
 | 
						
						
						
							|  |  |     @is_remote = true
 | 
						
						
						
							|  |  |     @users_pages = Paginator.new @users_count, @limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||= @users_pages.offset
 | 
						
						
						
							|  |  |     @users = paginateHelper @users, @limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def shixuns
 | 
						
						
						
							|  |  |     @menu_type = 3
 | 
						
						
						
							|  |  |     @sub_type = 1
 | 
						
						
						
							|  |  |     @sx_status = (params[:status].blank? || params[:status].class == Array) ? [0, 1, 2, 3] : params[:status].to_i # 搜索实训的状态
 | 
						
						
						
							|  |  |     @keyword   = params[:keyword].blank? ? "u_name" : params[:keyword]        # 根据姓名/实训名搜索
 | 
						
						
						
							|  |  |     @search    = params[:search]                                              # 搜索的字
 | 
						
						
						
							|  |  |     @tech = params[:tech]
 | 
						
						
						
							|  |  |     @shixun_tag_id = params[:shixun_tag]
 | 
						
						
						
							|  |  |     @tech_system = MirrorRepository.where(nil).map(&:type_name).reject(&:blank?).sort()
 | 
						
						
						
							|  |  |     @sx_order  = params[:sx_order].blank? ? "desc" : params[:sx_order]       # 排序
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if "u_name" == @keyword
 | 
						
						
						
							|  |  |       # 如果用户搜索为空,不用遍历user表,直接查找所有实训, 有搜索时才查找user
 | 
						
						
						
							|  |  |       if @search.blank?
 | 
						
						
						
							|  |  |         @shixuns = Shixun.where(:status => @sx_status).order("created_at #{@sx_order}")
 | 
						
						
						
							|  |  |       else
 | 
						
						
						
							|  |  |         user_id = User.where("concat(lastname, firstname) like '%#{@search}%'")
 | 
						
						
						
							|  |  |         @shixuns = Shixun.where(:user_id => user_id, :status => @sx_status).order("created_at #{@sx_order}")
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       if params[:keyword]  == "sx_name"
 | 
						
						
						
							|  |  |         @shixuns = Shixun.where("name like '%#{@search}%'").where(:status => @sx_status).order("created_at #{@sx_order}")
 | 
						
						
						
							|  |  |       else
 | 
						
						
						
							|  |  |         school_id = School.where("name like '%#{@search}%'").map(&:id)
 | 
						
						
						
							|  |  |         user_id = UserExtensions.where(:school_id => school_id).map(&:user_id)
 | 
						
						
						
							|  |  |         @shixuns = Shixun.where(:user_id => user_id).where(:status => @sx_status).order("created_at #{@sx_order}")
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     #@shixuns = @shixuns.includes(:mirror_repositories).where("mirror_repositories.name like '%#{@tech}%'") if @tech.present?
 | 
						
						
						
							|  |  |     if @tech.present?
 | 
						
						
						
							|  |  |       shixuns_id = MirrorRepository.where(:type_name => @tech).first.try(:shixuns)
 | 
						
						
						
							|  |  |       @shixuns = @shixuns.where(:id => shixuns_id)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     # shixun_tag_id: -1时 搜索没有技术标签的实训
 | 
						
						
						
							|  |  |     if @shixun_tag_id.present?
 | 
						
						
						
							|  |  |       if @shixun_tag_id.to_i == -1
 | 
						
						
						
							|  |  |         shixuns_id = ShixunTagRepertoire.where(nil).map(&:shixun_id)
 | 
						
						
						
							|  |  |         if shixuns_id.present?
 | 
						
						
						
							|  |  |           shixuns_id = @shixuns.map(&:id) - shixuns_id
 | 
						
						
						
							|  |  |           @shixuns = @shixuns.where(:id => shixuns_id)
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |       else
 | 
						
						
						
							|  |  |         shixuns_id = ShixunTagRepertoire.where(:tag_repertoire_id => @shixun_tag_id).map(&:shixun_id)
 | 
						
						
						
							|  |  |         @shixuns = @shixuns.where(:id => shixuns_id)
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     @shixun_xls = @shixuns
 | 
						
						
						
							|  |  |     @edit_sx_num = Shixun.where(:status => 0).count
 | 
						
						
						
							|  |  |     @audit_sx_num = Shixun.where(:status => 1).count
 | 
						
						
						
							|  |  |     @publish_sx_num =Shixun.where(:status => 2).count
 | 
						
						
						
							|  |  |     @close_sx_num = Shixun.where(:status => 3).count
 | 
						
						
						
							|  |  |     @page = (params['page'] || 1).to_i
 | 
						
						
						
							|  |  |     @shixuns_count = @shixuns.count
 | 
						
						
						
							|  |  |     @limit = 20
 | 
						
						
						
							|  |  |     @shixuns_pages = Paginator.new @shixuns_count, @limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||= @shixuns_pages.offset
 | 
						
						
						
							|  |  |     @shixuns = paginateHelper @shixuns, @limit
 | 
						
						
						
							|  |  |     @shixun_tags = TagRepertoire.where(nil).order("name asc")
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |       format.xls{
 | 
						
						
						
							|  |  |         # @export_shixun_task = @export_shixun_task.all
 | 
						
						
						
							|  |  |         filename = "实训详情_#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}.xls"
 | 
						
						
						
							|  |  |         send_data(shixun_list_xls(@shixun_xls), :type => 'application/octet-stream', :filename => filename_for_content_disposition(filename))
 | 
						
						
						
							|  |  |       }
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def shixun_setting_list
 | 
						
						
						
							|  |  |     @menu_type = 3
 | 
						
						
						
							|  |  |     @sub_type = 2
 | 
						
						
						
							|  |  |     @sx_status = (params[:status].blank? || params[:status].class == Array) ? [0, 1, 2, 3] : params[:status].to_i # 搜索实训的状态
 | 
						
						
						
							|  |  |     @keyword   = params[:keyword].blank? ? "u_name" : params[:keyword]        # 根据姓名/实训名搜索
 | 
						
						
						
							|  |  |     @search    = params[:search]                                              # 搜索的字
 | 
						
						
						
							|  |  |     @tech = params[:tech]
 | 
						
						
						
							|  |  |     @shixun_tag_id = params[:shixun_tag]
 | 
						
						
						
							|  |  |     @tech_system = MirrorRepository.where(nil).map(&:type_name).reject(&:blank?).sort()
 | 
						
						
						
							|  |  |     @sx_order  = params[:sx_order].blank? ? "desc" : params[:sx_order]       # 排序
 | 
						
						
						
							|  |  |     close      = params[:close]                                           # 关闭实训,参数是实训的Id
 | 
						
						
						
							|  |  |     unless close.blank?
 | 
						
						
						
							|  |  |       Shixun.find(close).update_attributes(:status => 3, :closer_id => User.current.id, :end_time => Time.now)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     if "u_name" == @keyword
 | 
						
						
						
							|  |  |       # 如果用户搜索为空,不用遍历user表,直接查找所有实训, 有搜索时才查找user
 | 
						
						
						
							|  |  |       if @search.blank?
 | 
						
						
						
							|  |  |         @shixuns = Shixun.where(:status => @sx_status).order("created_at #{@sx_order}")
 | 
						
						
						
							|  |  |       else
 | 
						
						
						
							|  |  |         user_id = User.where("concat(lastname, firstname) like '%#{@search}%'")
 | 
						
						
						
							|  |  |         @shixuns = Shixun.where(:user_id => user_id, :status => @sx_status).order("created_at #{@sx_order}")
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       if params[:keyword]  == "sx_name"
 | 
						
						
						
							|  |  |         @shixuns = Shixun.where("name like '%#{@search}%'").where(:status => @sx_status).order("created_at #{@sx_order}")
 | 
						
						
						
							|  |  |       else
 | 
						
						
						
							|  |  |         school_id = School.where("name like '%#{@search}%'").map(&:id)
 | 
						
						
						
							|  |  |         user_id = UserExtensions.where(:school_id => school_id).map(&:user_id)
 | 
						
						
						
							|  |  |         @shixuns = Shixun.where(:user_id => user_id).where(:status => @sx_status).order("created_at #{@sx_order}")
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     #@shixuns = @shixuns.includes(:mirror_repositories).where("mirror_repositories.name like '%#{@tech}%'") if @tech.present?
 | 
						
						
						
							|  |  |     if @tech.present?
 | 
						
						
						
							|  |  |       shixuns_id = MirrorRepository.where(:type_name => @tech).first.try(:shixuns)
 | 
						
						
						
							|  |  |       @shixuns = @shixuns.where(:id => shixuns_id)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     # shixun_tag_id: -1时 搜索没有技术标签的实训
 | 
						
						
						
							|  |  |     if @shixun_tag_id.present?
 | 
						
						
						
							|  |  |       if @shixun_tag_id.to_i == -1
 | 
						
						
						
							|  |  |         shixuns_id = ShixunTagRepertoire.where(nil).map(&:shixun_id)
 | 
						
						
						
							|  |  |         if shixuns_id.present?
 | 
						
						
						
							|  |  |           shixuns_id = @shixuns.map(&:id) - shixuns_id
 | 
						
						
						
							|  |  |           @shixuns = @shixuns.where(:id => shixuns_id)
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |       else
 | 
						
						
						
							|  |  |         shixuns_id = ShixunTagRepertoire.where(:tag_repertoire_id => @shixun_tag_id).map(&:shixun_id)
 | 
						
						
						
							|  |  |         @shixuns = @shixuns.where(:id => shixuns_id)
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if params[:can_copy]
 | 
						
						
						
							|  |  |       @shixuns = @shixuns.where(:can_copy => params[:can_copy].to_i)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if params[:webssh]
 | 
						
						
						
							|  |  |       @shixuns = @shixuns.where(:webssh => params[:webssh].to_i)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if params[:hidden]
 | 
						
						
						
							|  |  |       @shixuns = @shixuns.where(:hidden => params[:hidden].to_i)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if params[:homepage_show]
 | 
						
						
						
							|  |  |       @shixuns = @shixuns.where(:homepage_show => params[:homepage_show].to_i)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if params[:task_pass]
 | 
						
						
						
							|  |  |       @shixuns = @shixuns.where(:task_pass => params[:task_pass].to_i)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if params[:code_hidden]
 | 
						
						
						
							|  |  |       @shixuns = @shixuns.where(:code_hidden => params[:code_hidden].to_i)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     @shixun_xls = @shixuns
 | 
						
						
						
							|  |  |     @edit_sx_num = Shixun.where(:status => 0).count
 | 
						
						
						
							|  |  |     @audit_sx_num = Shixun.where(:status => 1).count
 | 
						
						
						
							|  |  |     @publish_sx_num =Shixun.where(:status => 2).count
 | 
						
						
						
							|  |  |     @close_sx_num = Shixun.where(:status => 3).count
 | 
						
						
						
							|  |  |     @page = (params['page'] || 1).to_i
 | 
						
						
						
							|  |  |     @shixuns_count = @shixuns.count
 | 
						
						
						
							|  |  |     @limit = 20
 | 
						
						
						
							|  |  |     @shixuns_pages = Paginator.new @shixuns_count, @limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||= @shixuns_pages.offset
 | 
						
						
						
							|  |  |     @shixuns = paginateHelper @shixuns, @limit
 | 
						
						
						
							|  |  |     @shixun_tags = TagRepertoire.where(nil).order("name asc")
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |       format.xls{
 | 
						
						
						
							|  |  |         # @export_shixun_task = @export_shixun_task.all
 | 
						
						
						
							|  |  |         filename = "实训详情_#{Time.now}.xls"
 | 
						
						
						
							|  |  |         send_data(shixun_list_xls(@shixun_xls), :type => 'application/octet-stream', :filename => filename_for_content_disposition(filename))
 | 
						
						
						
							|  |  |       }
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def update_shixun_task_pass
 | 
						
						
						
							|  |  |     shixun = Shixun.find(params[:shixun_id])
 | 
						
						
						
							|  |  |     shixun.update_column(:task_pass, !shixun.task_pass)
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def update_shixun_code_hidden
 | 
						
						
						
							|  |  |     shixun = Shixun.find(params[:shixun_id])
 | 
						
						
						
							|  |  |     shixun.update_column(:code_hidden, !shixun.code_hidden)
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def update_shixun_excute_time
 | 
						
						
						
							|  |  |     shixun = Shixun.find(params[:shixun_id])
 | 
						
						
						
							|  |  |     shixun.update_column(:excute_time, params[:excute_time].strip == "" ? nil : params[:excute_time].strip)
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def shixun_update_image_text
 | 
						
						
						
							|  |  |     image_text = params[:values].strip
 | 
						
						
						
							|  |  |     shixun = Shixun.find params[:id]
 | 
						
						
						
							|  |  |     shixun.update_column(:image_text, image_text)
 | 
						
						
						
							|  |  |     render :json => {success: "true"}
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def build_shixun_and_repertore_relationship
 | 
						
						
						
							|  |  |     logger.info("#################{params}")
 | 
						
						
						
							|  |  |     tag_id = params[:tag_id].to_i
 | 
						
						
						
							|  |  |     shixun_id = params[:shixun_id]
 | 
						
						
						
							|  |  |     status = params[:status].to_i
 | 
						
						
						
							|  |  |     shixun_tags_count = ShixunTagRepertoire.where(:shixun_id => shixun_id).count
 | 
						
						
						
							|  |  |     logger.info("#################{shixun_tags_count}")
 | 
						
						
						
							|  |  |     if shixun_tags_count > 3
 | 
						
						
						
							|  |  |       render :json => {data: "error"}
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       shixun_tags = ShixunTagRepertoire.where(:shixun_id => shixun_id, :tag_repertoire_id => tag_id).first
 | 
						
						
						
							|  |  |       if status == 0
 | 
						
						
						
							|  |  |         shixun_tags.destroy if shixun_tags.present?
 | 
						
						
						
							|  |  |       else
 | 
						
						
						
							|  |  |         if shixun_tags.present?
 | 
						
						
						
							|  |  |           shixun_tags.update_attribute(:tag_repertoire_id, tag_id)
 | 
						
						
						
							|  |  |         else
 | 
						
						
						
							|  |  |           ShixunTagRepertoire.create!(:tag_repertoire_id => tag_id, :shixun_id => shixun_id)
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |       render :json => {data: "success"}
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def update_shixun_hidden
 | 
						
						
						
							|  |  |     @shixun = Shixun.find(params[:shixun_id])
 | 
						
						
						
							|  |  |     @shixun.update_column(:hidden, !@shixun.hidden)
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 已发布的实训
 | 
						
						
						
							|  |  |   def publish_shixuns
 | 
						
						
						
							|  |  |     logger.info("####################{params}")
 | 
						
						
						
							|  |  |     @menu_type = 3
 | 
						
						
						
							|  |  |     @sub_type = 3
 | 
						
						
						
							|  |  |     @sx_order  = params[:sx_order].blank? ? "desc" : params[:sx_order]    # 排序
 | 
						
						
						
							|  |  |     index = params[:index]   # 排序
 | 
						
						
						
							|  |  |     @search     = params[:search]                                          # 搜索字
 | 
						
						
						
							|  |  |     @keyword    = params[:keyword].blank? ? "u_name" : params[:keyword]    # 根据姓名/实训名搜索
 | 
						
						
						
							|  |  |     @tech = params[:tech]
 | 
						
						
						
							|  |  |     @beginTime = params[:beginTime]
 | 
						
						
						
							|  |  |     @endTime = params[:endTime]
 | 
						
						
						
							|  |  |     @tech_system = MirrorRepository.where(nil).map(&:type_name).reject(&:blank?).sort()
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if "u_name" == @keyword
 | 
						
						
						
							|  |  |       # 如果用户搜索为空,不用遍历user表,直接查找所有实训, 有搜索时才查找user
 | 
						
						
						
							|  |  |       if @search.blank?
 | 
						
						
						
							|  |  |         @shixuns = Shixun.where(:status => 2)
 | 
						
						
						
							|  |  |         @shixuns = sort_shixun index, @shixuns, @sx_order
 | 
						
						
						
							|  |  |       else
 | 
						
						
						
							|  |  |         user_id = User.where("concat(lastname, firstname) like '%#{@search}%'")
 | 
						
						
						
							|  |  |         @shixuns = Shixun.where(:user_id => user_id, :status => 2)
 | 
						
						
						
							|  |  |         @shixuns = sort_shixun index, @shixuns, @sx_order
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |         @shixuns = Shixun.where("name like '%#{@search}%'").where(:status => 2)
 | 
						
						
						
							|  |  |         @shixuns = sort_shixun index, @shixuns, @sx_order
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     if params[:homepage_show]
 | 
						
						
						
							|  |  |       @shixuns = @shixuns.where(:homepage_show => params[:homepage_show].to_i)
 | 
						
						
						
							|  |  |       @shixuns = sort_shixun index, @shixuns, @sx_order
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     if params[:tech] && params[:tech] !=''
 | 
						
						
						
							|  |  |       @shixuns = @shixuns.where("language like '#{@tech}'")
 | 
						
						
						
							|  |  |       @shixuns = sort_shixun index, @shixuns, @sx_order
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if @tech.present?
 | 
						
						
						
							|  |  |       shixuns_id = MirrorRepository.where(:type_name => @tech).first.try(:shixuns)
 | 
						
						
						
							|  |  |       @shixuns = @shixuns.where(:id => shixuns_id)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if params[:beginTime].present?
 | 
						
						
						
							|  |  |       logger.info("#############------------------")
 | 
						
						
						
							|  |  |       endTime = params[:endTime].present? ? params[:endTime] : Time.now
 | 
						
						
						
							|  |  |       @shixuns = @shixuns.where("publish_time >= ? and publish_time <= ?", params[:beginTime], endTime)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if index == '6'
 | 
						
						
						
							|  |  |       @op_order = @sx_order
 | 
						
						
						
							|  |  |       @sx_order = ""
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       @sx_order = @sx_order
 | 
						
						
						
							|  |  |       @op_order = ""
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     @page = (params['page'] || 1).to_i
 | 
						
						
						
							|  |  |     @shixuns_count = @shixuns.count
 | 
						
						
						
							|  |  |     @shixun_xls = @shixuns
 | 
						
						
						
							|  |  |     @limit = 20
 | 
						
						
						
							|  |  |     @shixuns_pages = Paginator.new @shixuns_count, @limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||= @shixuns_pages.offset
 | 
						
						
						
							|  |  |     @shixuns = paginateHelper @shixuns, @limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |       format.xls{
 | 
						
						
						
							|  |  |         filename = "已发布的实训_#{format_time Time.now}.xls"
 | 
						
						
						
							|  |  |         send_data(publish_shixun_list(@shixun_xls), :type => 'application/octet-stream', :filename => filename_for_content_disposition(filename))
 | 
						
						
						
							|  |  |       }
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  |   # 实训首页显示
 | 
						
						
						
							|  |  |   def shixun_homepage_show
 | 
						
						
						
							|  |  |     if params[:shixun_id]
 | 
						
						
						
							|  |  |       shixun = Shixun.find params[:shixun_id]
 | 
						
						
						
							|  |  |       shixun.update_attributes(:homepage_show => !shixun.homepage_show)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 允许复制
 | 
						
						
						
							|  |  |   def shixun_can_copy
 | 
						
						
						
							|  |  |     if params[:shixun_id]
 | 
						
						
						
							|  |  |       shixun = Shixun.find params[:shixun_id]
 | 
						
						
						
							|  |  |       shixun.update_attributes(:can_copy => !shixun.can_copy)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 已关闭的实训
 | 
						
						
						
							|  |  |   def close_shixuns
 | 
						
						
						
							|  |  |     @menu_type = 3
 | 
						
						
						
							|  |  |     @sub_type = 4
 | 
						
						
						
							|  |  |     @sx_order  = params[:sx_order].blank? ? "desc" : params[:sx_order]    # 排序
 | 
						
						
						
							|  |  |     search     = params[:search]                                          # 搜索字
 | 
						
						
						
							|  |  |     keyword    = params[:keyword].blank? ? "u_name" : params[:keyword]    # 根据姓名/实训名搜索
 | 
						
						
						
							|  |  |     reopen      = params[:reopen]                                         # 从新开启实训,参数是实训的Id
 | 
						
						
						
							|  |  |     tech = params[:tech]
 | 
						
						
						
							|  |  |     @tech_system = MirrorRepository.where(nil).map(&:type_name).reject(&:blank?).sort()
 | 
						
						
						
							|  |  |     unless reopen.blank?
 | 
						
						
						
							|  |  |       Shixun.find(reopen).update_attribute(:status, 2)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     if "u_name" == keyword
 | 
						
						
						
							|  |  |       # 如果用户搜索为空,不用遍历user表,直接查找所有实训, 有搜索时才查找user
 | 
						
						
						
							|  |  |       if search.blank?
 | 
						
						
						
							|  |  |         @shixuns = Shixun.where(:status => 3).order("updated_at #{@sx_order}")
 | 
						
						
						
							|  |  |       else
 | 
						
						
						
							|  |  |         user_id = User.where("concat(lastname, firstname) like '%#{search}%'")
 | 
						
						
						
							|  |  |         @shixuns = Shixun.where(:user_id => user_id, :status => 3).order("updated_at #{@sx_order}")
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       @shixuns = Shixun.where("name like '%#{search}%'").where(:status => 3).order("updated_at #{@sx_order}")
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     if params[:tech].present?
 | 
						
						
						
							|  |  |       shixuns_id = MirrorRepository.where(:type_name => tech).first.try(:shixuns)
 | 
						
						
						
							|  |  |       @shixuns = @shixuns.where(:id => shixuns_id)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     @page = (params['page'] || 1).to_i
 | 
						
						
						
							|  |  |     @shixuns_count = @shixuns.count
 | 
						
						
						
							|  |  |     @limit = 20
 | 
						
						
						
							|  |  |     @shixuns_pages = Paginator.new @shixuns_count, @limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||= @shixuns_pages.offset
 | 
						
						
						
							|  |  |     @shixuns = paginateHelper @shixuns, @limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 镜像类别图片
 | 
						
						
						
							|  |  |   def mirror_picture_shixuns
 | 
						
						
						
							|  |  |     @main_mirror = MirrorRepository.where(nil)
 | 
						
						
						
							|  |  |     @repertoire = Repertoire.where(nil)
 | 
						
						
						
							|  |  |     @menu_type = 3
 | 
						
						
						
							|  |  |     @sub_type = 7
 | 
						
						
						
							|  |  |     search = params[:search]
 | 
						
						
						
							|  |  |     if params[:search] && params[:search] != ''
 | 
						
						
						
							|  |  |       @main_mirror = @main_mirror.where("type_name like '%#{search}%'")
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     @page = (params['page'] || 1).to_i
 | 
						
						
						
							|  |  |     @main_mirror_count = @main_mirror.count
 | 
						
						
						
							|  |  |     @limit = 20
 | 
						
						
						
							|  |  |     @main_mirror_pages = Paginator.new @main_mirror_count, @limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||= @main_mirror_pages.offset
 | 
						
						
						
							|  |  |     @main_mirror = paginateHelper @main_mirror, @limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def update_mirror_picture
 | 
						
						
						
							|  |  |     if params[:res] == "1"
 | 
						
						
						
							|  |  |       mirror = MirrorRepository.where(:id => params[:mirror_id]).first
 | 
						
						
						
							|  |  |       MirrorRepository.where(:id => params[:mirror_id]).update_all(:repertoire_id => params[:use_scope], :sub_repertoire_id => nil)
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       MirrorRepository.where(:id => params[:mirror_id]).update_all(:sub_repertoire_id => params[:use_scope])
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     redirect_to mirror_picture_shixuns_managements_path(:page => params[:page])
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 实训成员列表
 | 
						
						
						
							|  |  |   def shixun_member
 | 
						
						
						
							|  |  |     @menu_type = 3
 | 
						
						
						
							|  |  |     @sub_type = 6
 | 
						
						
						
							|  |  |     @shixun_member = Myshixun.where("0=0").order("created_at desc")
 | 
						
						
						
							|  |  |     keyword = params[:keyword]
 | 
						
						
						
							|  |  |     search = params[:search]
 | 
						
						
						
							|  |  |     member = params[:member]
 | 
						
						
						
							|  |  |     if search.blank?
 | 
						
						
						
							|  |  |       @shixun_member = @shixun_member
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       if "u_name" == keyword
 | 
						
						
						
							|  |  |         user_id = User.where("concat(lastname, firstname) like '%#{search}%'")
 | 
						
						
						
							|  |  |         @shixun_member = @shixun_member.where(:user_id => user_id)
 | 
						
						
						
							|  |  |       elsif keyword == "u_id"
 | 
						
						
						
							|  |  |         user_id = User.where("login like '%#{search}%'")
 | 
						
						
						
							|  |  |         @shixun_member = @shixun_member.where(:user_id => user_id)
 | 
						
						
						
							|  |  |       elsif keyword == "sx_name"
 | 
						
						
						
							|  |  |         @shixun_member = @shixun_member.joins(:shixun).where("shixuns.name like '%#{search}%'")
 | 
						
						
						
							|  |  |       else
 | 
						
						
						
							|  |  |         school_id = School.where("name like '%#{search}%'").blank? ? "(-1)" : "(" + School.where("name like '%#{search}%'").map(&:id).join(",") + ")"
 | 
						
						
						
							|  |  |         user_id = UserExtensions.where("school_id in #{school_id}").blank? ? "(-1)" : "(" + UserExtensions.where("school_id in #{school_id}").map(&:user_id).join(",") + ")"
 | 
						
						
						
							|  |  |         @shixun_member = @shixun_member.where("user_id in #{user_id}")
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if member && member != ''
 | 
						
						
						
							|  |  |       user_id = User.where("concat(lastname, firstname) like '%#{member}%'").blank? ? "(-1)" : "(" + User.where("concat(lastname, firstname) like '%#{member}%'").map(&:id).join(",") + ")"
 | 
						
						
						
							|  |  |       @shixun_member = @shixun_member.joins(:shixun).where("shixuns.user_id in #{user_id}")
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     @page = (params['page'] || 1).to_i
 | 
						
						
						
							|  |  |     @shixun_member_count = @shixun_member.count
 | 
						
						
						
							|  |  |     @limit = 20
 | 
						
						
						
							|  |  |     @is_remote = true
 | 
						
						
						
							|  |  |     @shixun_member_pages = Paginator.new @shixun_member_count, @limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||= @shixun_member_pages.offset
 | 
						
						
						
							|  |  |     @shixun_member = paginateHelper @shixun_member, @limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def users_trial
 | 
						
						
						
							|  |  |     @menu_type = 7
 | 
						
						
						
							|  |  |     @sub_type = 2
 | 
						
						
						
							|  |  |     @sx_order  = params[:sx_order].blank? ? "desc" : params[:sx_order]
 | 
						
						
						
							|  |  |     sql =
 | 
						
						
						
							|  |  |         if params[:t].to_i == 1 && params[:e].to_i == 1
 | 
						
						
						
							|  |  |           "status = 1 and homepage_teacher = 1 and homepage_engineer = 1"
 | 
						
						
						
							|  |  |         elsif params[:t].to_i == 1
 | 
						
						
						
							|  |  |           "status = 1 and homepage_teacher = 1"
 | 
						
						
						
							|  |  |         elsif params[:e].to_i == 1
 | 
						
						
						
							|  |  |           "status = 1 and homepage_engineer = 1"
 | 
						
						
						
							|  |  |         else
 | 
						
						
						
							|  |  |           "status = 1"
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |     @users = User.where("#{sql}").includes(:apply_actions, user_extensions: [:department, :school]).order("last_login_on #{@sx_order}")
 | 
						
						
						
							|  |  |     @has_cer_count = User.where(:status => 1, :certification => 1).count
 | 
						
						
						
							|  |  |     @reject_cer_count = User.where(:status => 1, :certification => 2).count
 | 
						
						
						
							|  |  |     @deal_cer_count = ApplyAction.where(:status => 0).select("distinct user_id").count
 | 
						
						
						
							|  |  |     time = Time.at(Time.now.to_i - 86400)
 | 
						
						
						
							|  |  |     cer = UserDayCertification.where("created_at > '#{time}'").pluck(:user_id)
 | 
						
						
						
							|  |  |     cer_ids = cer.join(",")
 | 
						
						
						
							|  |  |     @trial_cer_count = cer.blank? ? 0 : User.where("status = 1 and certification != 1 and id in (#{cer_ids})").count
 | 
						
						
						
							|  |  |     apply = ApplyAction.where(:container_type => "TrialAuthorization").pluck(:user_id)
 | 
						
						
						
							|  |  |     apply_ids = apply.join(",")
 | 
						
						
						
							|  |  |     @nonn_cer_count = apply.blank? ? 0 : User.where("status = 1 and certification = 0 and id not in (#{apply_ids}) ").count
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     @page = (params['page'] || 1).to_i
 | 
						
						
						
							|  |  |     @users_count =  @users.count
 | 
						
						
						
							|  |  |     @limit = 20
 | 
						
						
						
							|  |  |     @users_pages = Paginator.new @users_count, @limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||= @users_pages.offset
 | 
						
						
						
							|  |  |     @users = paginateHelper @users, @limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def user_homepage_show
 | 
						
						
						
							|  |  |     user = User.find params[:user_id]
 | 
						
						
						
							|  |  |     if params[:homepage] == "homepage_teacher"
 | 
						
						
						
							|  |  |       user.update_attributes(:homepage_teacher => !user.homepage_teacher)
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       user.update_attributes(:homepage_engineer => !user.homepage_engineer)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def shixun_sigle_training
 | 
						
						
						
							|  |  |     begin
 | 
						
						
						
							|  |  |       shixun = Shixun.find(params[:shixun_id])
 | 
						
						
						
							|  |  |       shixun.update_column(:sigle_training, !shixun.sigle_training)
 | 
						
						
						
							|  |  |       render :json => {:status => 1}
 | 
						
						
						
							|  |  |     rescue Exception => e
 | 
						
						
						
							|  |  |       logger.error(e.message)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def import_course_members
 | 
						
						
						
							|  |  |     attachments = params[:attachments]
 | 
						
						
						
							|  |  |     @status = 0
 | 
						
						
						
							|  |  |     member_count = 0
 | 
						
						
						
							|  |  |     attachments.each do |attachment|
 | 
						
						
						
							|  |  |       attachment = Attachment.find_by_token_only(attachment[1]['token'])
 | 
						
						
						
							|  |  |       attachment.container_id = User.current.id
 | 
						
						
						
							|  |  |       attachment.container_type = "ImportCourseMember"
 | 
						
						
						
							|  |  |       attachment.save
 | 
						
						
						
							|  |  |       path = attachment.disk_directory
 | 
						
						
						
							|  |  |       name = attachment.disk_filename
 | 
						
						
						
							|  |  |       if name.split(".").last == "xls"
 | 
						
						
						
							|  |  |         begin
 | 
						
						
						
							|  |  |         xls = Roo::Spreadsheet.open("files/#{path}/#{name}",extension: :xls)
 | 
						
						
						
							|  |  |         worksheet = xls.sheet(0)
 | 
						
						
						
							|  |  |         rows = worksheet.last_row   #最后一行数
 | 
						
						
						
							|  |  |         if rows < 2
 | 
						
						
						
							|  |  |           @status = 0
 | 
						
						
						
							|  |  |           @message = "请按照模板格式导入"
 | 
						
						
						
							|  |  |         else
 | 
						
						
						
							|  |  |           for row in 2 .. rows
 | 
						
						
						
							|  |  |             student_id = worksheet.cell(row, 1)
 | 
						
						
						
							|  |  |             student_id = student_id.is_a?(Float) ? student_id.to_i : student_id
 | 
						
						
						
							|  |  |             member_role = worksheet.cell(row, 4).to_i
 | 
						
						
						
							|  |  |             course_id = worksheet.cell(row, 3)
 | 
						
						
						
							|  |  |             group_name = worksheet.cell(row, 5)
 | 
						
						
						
							|  |  |             school_id = worksheet.cell(row, 6).is_a?(Float) ? worksheet.cell(row, 6).to_i : worksheet.cell(row, 6)
 | 
						
						
						
							|  |  |             if student_id && member_role && [9, 7, 10].include?(member_role) && course_id && school_id
 | 
						
						
						
							|  |  |               user = User.find_by_sql("SELECT u.* FROM `users` u, `user_extensions` ue where u.id = ue.user_id and
 | 
						
						
						
							|  |  |                       ue.student_id = '#{student_id}' and ue.school_id= #{school_id}").first
 | 
						
						
						
							|  |  |               course = Course.where(:id => course_id).first
 | 
						
						
						
							|  |  |               # 判断用户和课堂是否都存在,存在则判断该用户是否已是课堂成员,不是则加入课堂
 | 
						
						
						
							|  |  |               if user.present? && course.present?
 | 
						
						
						
							|  |  |                 course_group = CourseGroup.where(:course_id => course.id, :name => group_name).first ||
 | 
						
						
						
							|  |  |                     CourseGroup.create(:name => group_name, :course_id => course.id) if group_name
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |                 member = course.members.where(:user_id => user.id).first
 | 
						
						
						
							|  |  |                 # 如果已是课堂成员且是学生身份and不在指定的分班则移动到该分班
 | 
						
						
						
							|  |  |                 if member.present? && member.member_roles.pluck(:role_id).include?(10) && member.course_group_id != course_group.try(:id).to_i
 | 
						
						
						
							|  |  |                   member.update_column("course_group_id", course_group.try(:id).to_i)
 | 
						
						
						
							|  |  |                   member_count += 1
 | 
						
						
						
							|  |  |                 elsif !member.present?
 | 
						
						
						
							|  |  |                   member = Member.new(:role_ids => [member_role], :user_id => user.id)
 | 
						
						
						
							|  |  |                   if member_role == 10
 | 
						
						
						
							|  |  |                     StudentsForCourse.create(:student_id => user.id, :course_id => course.id)
 | 
						
						
						
							|  |  |                   end
 | 
						
						
						
							|  |  |                   Tiding.create(:user_id => user.id, :trigger_user_id => course.tea_id, :container_id => course.id, :container_type => 'TeacherJoinCourse',
 | 
						
						
						
							|  |  |                                 :belong_container_id => course.id, :belong_container_type => "Course", :tiding_type => "System", :extra => member_role)
 | 
						
						
						
							|  |  |                   member.course_group_id = course_group.try(:id).to_i
 | 
						
						
						
							|  |  |                   course.members << member
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |                   member_count += 1
 | 
						
						
						
							|  |  |                 end
 | 
						
						
						
							|  |  |               end
 | 
						
						
						
							|  |  |             end
 | 
						
						
						
							|  |  |           end
 | 
						
						
						
							|  |  |           @status = 1
 | 
						
						
						
							|  |  |           @message = "已导入/更新#{member_count}个成员"
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |         rescue
 | 
						
						
						
							|  |  |           @status = 0
 | 
						
						
						
							|  |  |           @message = "文件内容无法读取"
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |       else
 | 
						
						
						
							|  |  |         @status = 0
 | 
						
						
						
							|  |  |         @message = "只支持xls文件的导入"
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |       attachment.destroy
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def import_student_accounts
 | 
						
						
						
							|  |  |     attachments = params[:attachments]
 | 
						
						
						
							|  |  |     @status = 0
 | 
						
						
						
							|  |  |     attachments.each do |attachment|
 | 
						
						
						
							|  |  |       attachment = Attachment.find_by_token_only(attachment[1]['token'])
 | 
						
						
						
							|  |  |       attachment.container_id = User.current.id
 | 
						
						
						
							|  |  |       attachment.container_type = "ImportStudentAccount"
 | 
						
						
						
							|  |  |       attachment.save
 | 
						
						
						
							|  |  |       path = attachment.disk_directory
 | 
						
						
						
							|  |  |       name = attachment.disk_filename
 | 
						
						
						
							|  |  |       if name.split(".").last == "xls" || name.split(".").last == "xlsx"
 | 
						
						
						
							|  |  |         # lists = readXlsData("files/baolong.xlsx")
 | 
						
						
						
							|  |  |         lists = readXlsData("files/#{path}/#{name}")
 | 
						
						
						
							|  |  |         school_id = nil
 | 
						
						
						
							|  |  |         prefix = ""
 | 
						
						
						
							|  |  |         lists.each_with_index do |list, index|
 | 
						
						
						
							|  |  |           if list[0]
 | 
						
						
						
							|  |  |             # logger.info("#{list[0]}---#{list[1]}---#{list[2]}")
 | 
						
						
						
							|  |  |             if index == 0
 | 
						
						
						
							|  |  |               school_id = list[0]
 | 
						
						
						
							|  |  |             elsif index == 1
 | 
						
						
						
							|  |  |               prefix = list[0]
 | 
						
						
						
							|  |  |             elsif index != 2 && list[3] && [0, 1, 2].include?(list[3].to_i)
 | 
						
						
						
							|  |  |               if list[3].to_i == 1
 | 
						
						
						
							|  |  |                 user = User.find_by_sql("SELECT u.* FROM `users` u, `user_extensions` ue where u.id = ue.user_id and ue.identity = 1 and ue.student_id = '#{list[0]}' and ue.school_id= #{school_id.to_i}").first
 | 
						
						
						
							|  |  |               else
 | 
						
						
						
							|  |  |                 user = User.find_by_sql("SELECT u.* FROM `users` u, `user_extensions` ue where u.id = ue.user_id and ue.identity = '#{list[3]}' and ue.technical_title = '#{list[4]}' and CONCAT(u.lastname,u.firstname) ='#{list[1]}' and ue.school_id= #{school_id.to_i}").first
 | 
						
						
						
							|  |  |               end
 | 
						
						
						
							|  |  |               school = School.where(:id => school_id).first
 | 
						
						
						
							|  |  |               # 用户不存在则创建账号
 | 
						
						
						
							|  |  |               if !user.present? && school.present?
 | 
						
						
						
							|  |  |                 department = school.departments.where(:name => list[2]).first
 | 
						
						
						
							|  |  |                 user = User.new
 | 
						
						
						
							|  |  |                 user.admin = false
 | 
						
						
						
							|  |  |                 user.activate
 | 
						
						
						
							|  |  |                 user.login = prefix + list[0]
 | 
						
						
						
							|  |  |                 user.lastname = list[1]
 | 
						
						
						
							|  |  |                 user.nickname = list[1]
 | 
						
						
						
							|  |  |                 user.professional_certification = 1
 | 
						
						
						
							|  |  |                 user.certification = 1
 | 
						
						
						
							|  |  |                 user.grade = 0
 | 
						
						
						
							|  |  |                 user.password = "12345678"
 | 
						
						
						
							|  |  |                 if user.save
 | 
						
						
						
							|  |  |                   ue = UserExtensions.new(:user_id => user.id, :gender => 0, :school_id => school_id, :location => school.province, :location_city => school.city, :identity => list[3], :student_id => list[0], :department_id => department.try(:id))
 | 
						
						
						
							|  |  |                   if list[3] && list[3].to_i == 0
 | 
						
						
						
							|  |  |                     ue.technical_title = ["教授", "副教授", "讲师", "助教"].include?(list[4]) ? list[4] : "讲师"
 | 
						
						
						
							|  |  |                   elsif list[3] && list[3].to_i == 2
 | 
						
						
						
							|  |  |                     ue.technical_title = ["企业管理者", "部门管理者", "高级工程师", "工程师", "助理工程师"].include?(list[4]) ? list[4] : "助理工程师"
 | 
						
						
						
							|  |  |                   end
 | 
						
						
						
							|  |  |                   ue.save
 | 
						
						
						
							|  |  |                 end
 | 
						
						
						
							|  |  |               elsif user.present?
 | 
						
						
						
							|  |  |                 user.update_column("certification", 1)
 | 
						
						
						
							|  |  |               end
 | 
						
						
						
							|  |  |             end
 | 
						
						
						
							|  |  |           end
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |         @status = 1
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 自动授权列表
 | 
						
						
						
							|  |  |   def auto_users_trial
 | 
						
						
						
							|  |  |     @menu_type = 7
 | 
						
						
						
							|  |  |     @sub_type = 3
 | 
						
						
						
							|  |  |     # @apply_action = School.where(:auto_users_trial => 1).order('authorization_time desc')
 | 
						
						
						
							|  |  |     @apply_action = School.find_by_sql("select s.*, count(ue.user_id) as user_count From schools s left join user_extensions ue on s.id = ue.school_id
 | 
						
						
						
							|  |  |                                         where s.auto_users_trial =1 group by s.id order by user_count desc;")
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     @auto_school_ids = @apply_action.empty? ? "(-1)" : "(" + @apply_action.map(&:id).join(",") + ")"
 | 
						
						
						
							|  |  |     @page = (params['page'] || 1).to_i
 | 
						
						
						
							|  |  |     @apply_action_count = @apply_action.count
 | 
						
						
						
							|  |  |     @limit = 20
 | 
						
						
						
							|  |  |     @is_remote = true
 | 
						
						
						
							|  |  |     @apply_action_pages = Paginator.new @apply_action_count, @limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||= @apply_action_pages.offset
 | 
						
						
						
							|  |  |     @apply_action = paginateHelper @apply_action, @limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def search_authorization_school
 | 
						
						
						
							|  |  |     school_name = params[:contents]
 | 
						
						
						
							|  |  |     @sx_order = params[:order]
 | 
						
						
						
							|  |  |     @apply_action = School.authorization.where("name like '%#{school_name}%'").order("authorization_time #{@sx_order}")
 | 
						
						
						
							|  |  |     @page = (params['page'] || 1).to_i
 | 
						
						
						
							|  |  |     @apply_action_count = @apply_action.count
 | 
						
						
						
							|  |  |     @limit = 20
 | 
						
						
						
							|  |  |     @is_remote = true
 | 
						
						
						
							|  |  |     @apply_action_pages = Paginator.new @apply_action_count, @limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||= @apply_action_pages.offset
 | 
						
						
						
							|  |  |     @apply_action = paginateHelper @apply_action, @limit
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 过关任务模板
 | 
						
						
						
							|  |  |   def editmd_template
 | 
						
						
						
							|  |  |     @menu_type = 3
 | 
						
						
						
							|  |  |     @samples_type = params[:samples_type]
 | 
						
						
						
							|  |  |     @samples_type == "taskPass" ? @sub_type = 1 : ( @samples_type == "introduction" ? @sub_type = 2 : @sub_type = 3 )
 | 
						
						
						
							|  |  |     @sample = PlatformSample.where(:samples_type => @samples_type).first
 | 
						
						
						
							|  |  |     unless params[:template].nil?
 | 
						
						
						
							|  |  |       if @sample.nil?
 | 
						
						
						
							|  |  |         @sample = PlatformSample.create(:samples_type => @samples_type, :contents => params[:template])
 | 
						
						
						
							|  |  |       else
 | 
						
						
						
							|  |  |         @sample.update_attribute(:contents, params[:template])
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   #  新课导语模板
 | 
						
						
						
							|  |  |   def course_guide_template
 | 
						
						
						
							|  |  |     @menu_type = 12
 | 
						
						
						
							|  |  |     @sub_type = 5
 | 
						
						
						
							|  |  |     @samples_type = params[:samples_type]
 | 
						
						
						
							|  |  |     @sample = PlatformSample.where(:samples_type => @samples_type).first
 | 
						
						
						
							|  |  |     if request.post?
 | 
						
						
						
							|  |  |       unless params[:platform_sample][:contents].nil?
 | 
						
						
						
							|  |  |         if @sample.nil?
 | 
						
						
						
							|  |  |           PlatformSample.create(:samples_type => @samples_type, :contents => params[:platform_sample][:contents])
 | 
						
						
						
							|  |  |         else
 | 
						
						
						
							|  |  |           @sample.update_attribute(:contents, params[:platform_sample][:contents])
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     @sample = @sample || PlatformSample.new
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 实训评分
 | 
						
						
						
							|  |  |   def shixun_quality_score
 | 
						
						
						
							|  |  |     @menu_type = 12
 | 
						
						
						
							|  |  |     @sub_type = 6
 | 
						
						
						
							|  |  |     @shixun_scores = ScoreSet.where(nil).order("created_at asc")
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def new_score_sets
 | 
						
						
						
							|  |  |     name = params[:type_name]
 | 
						
						
						
							|  |  |     level = params[:level]
 | 
						
						
						
							|  |  |     lower = params[:lower]
 | 
						
						
						
							|  |  |     upper = params[:upper]
 | 
						
						
						
							|  |  |     ActiveRecord::Base.transaction do
 | 
						
						
						
							|  |  |       begin
 | 
						
						
						
							|  |  |         score_set = ScoreSet.create!(:name => name)
 | 
						
						
						
							|  |  |         level.each_with_index do |l, index|
 | 
						
						
						
							|  |  |           ScoreIndicatorQuality.create!(:name => l, :upper_limit => upper[index], :lower_limit => lower[index], :score_set_id => score_set.id, :position => index+1) if l.present?
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |       rescue Exception => e
 | 
						
						
						
							|  |  |         logger.error("new_score_sets failed #{e}")
 | 
						
						
						
							|  |  |         raise ActiveRecord::Rollback
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     redirect_to shixun_quality_score_managements_path
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def new_score_indicator
 | 
						
						
						
							|  |  |     @shixun_scores = ScoreSet.find(params[:score_set_id])
 | 
						
						
						
							|  |  |     @score_qualities = @shixun_scores.score_indicator_qualities
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def edit_score_indicator
 | 
						
						
						
							|  |  |     @indicator = ScoreIndicator.find(params[:score_indicator_id])
 | 
						
						
						
							|  |  |     @shixun_scores = @indicator.score_set
 | 
						
						
						
							|  |  |     @score_qualities = @shixun_scores.score_indicator_qualities
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def create_score_indicator
 | 
						
						
						
							|  |  |     score_set_id = params[:score_set_id]
 | 
						
						
						
							|  |  |     name = params[:name]
 | 
						
						
						
							|  |  |     description = params[:description]
 | 
						
						
						
							|  |  |     desc_name = params[:description_name]
 | 
						
						
						
							|  |  |     scale = params[:scale]
 | 
						
						
						
							|  |  |     ActiveRecord::Base.transaction do
 | 
						
						
						
							|  |  |       begin
 | 
						
						
						
							|  |  |         indicator = ScoreIndicator.create!(:name => name, :score_set_id => score_set_id, :scale => scale, :description => description)
 | 
						
						
						
							|  |  |         desc_name.each_with_index do |name, index|
 | 
						
						
						
							|  |  |           ScoreQualityDescription.create!(:name => name, :score_indicator_id => indicator.id, :position => index+1)
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |       rescue Exception => e
 | 
						
						
						
							|  |  |         logger.error("create_score_indicator failed #{e}")
 | 
						
						
						
							|  |  |         raise ActiveRecord::Rollback
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     redirect_to shixun_quality_score_managements_path
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def update_score_indicator
 | 
						
						
						
							|  |  |     score_indicator_id = params[:score_indicator_id]
 | 
						
						
						
							|  |  |     name = params[:name]
 | 
						
						
						
							|  |  |     description = params[:description]
 | 
						
						
						
							|  |  |     scale = params[:scale]
 | 
						
						
						
							|  |  |     description_name = params[:description_name]
 | 
						
						
						
							|  |  |     @indicator = ScoreIndicator.find(score_indicator_id)
 | 
						
						
						
							|  |  |     ActiveRecord::Base.transaction do
 | 
						
						
						
							|  |  |       begin
 | 
						
						
						
							|  |  |         if name != @indicator.name || description != @indicator.description || scale != @indicator.scale
 | 
						
						
						
							|  |  |           @indicator.update_attributes(:name => name, :description => description, :scale => scale) if name.present?
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         description_name.each_with_index do |name, index|
 | 
						
						
						
							|  |  |           des = @indicator.score_quality_descriptions.where(:position => index+1).first
 | 
						
						
						
							|  |  |           if name != des.try(:name)
 | 
						
						
						
							|  |  |             if des.present?
 | 
						
						
						
							|  |  |               des.update_attribute(:name, name)
 | 
						
						
						
							|  |  |             else
 | 
						
						
						
							|  |  |               ScoreQualityDescription.create!(:name => name, :score_indicator_id => @indicator.id, :position => index+1)
 | 
						
						
						
							|  |  |             end
 | 
						
						
						
							|  |  |           end
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |         redirect_to shixun_quality_score_managements_path
 | 
						
						
						
							|  |  |       rescue Exception => e
 | 
						
						
						
							|  |  |         logger.error("update_score_indicator failed #{e}")
 | 
						
						
						
							|  |  |         raise ActiveRecord::Rollback
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def edit_score_set
 | 
						
						
						
							|  |  |     @shixun_score = ScoreSet.find(params[:score_set_id])
 | 
						
						
						
							|  |  |     @qualities = @shixun_score.score_indicator_qualities
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def update_score_sets
 | 
						
						
						
							|  |  |     score_set_name = params[:type_name]
 | 
						
						
						
							|  |  |     qualities_id = params[:quality]
 | 
						
						
						
							|  |  |     level = params[:level]
 | 
						
						
						
							|  |  |     create_level = params[:create_level]
 | 
						
						
						
							|  |  |     lower = params[:lower]
 | 
						
						
						
							|  |  |     create_lower = params[:create_lower]
 | 
						
						
						
							|  |  |     upper = params[:upper]
 | 
						
						
						
							|  |  |     create_upper = params[:create_upper]
 | 
						
						
						
							|  |  |     shixun_score = ScoreSet.find(params[:score_set_id])
 | 
						
						
						
							|  |  |     quality_id = shixun_score.score_indicator_qualities.map(&:id)
 | 
						
						
						
							|  |  |     delete_quality_id = quality_id - qualities_id.map(&:to_i)
 | 
						
						
						
							|  |  |     ActiveRecord::Base.transaction do
 | 
						
						
						
							|  |  |       begin
 | 
						
						
						
							|  |  |         # 更新Score_set
 | 
						
						
						
							|  |  |         if shixun_score.name != score_set_name && score_set_name.present?
 | 
						
						
						
							|  |  |           shixun_score.update_attribute(:name, score_set_name)
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         # 更新score_indicator_quality
 | 
						
						
						
							|  |  |         qualities_id.each_with_index do |id, index|
 | 
						
						
						
							|  |  |           quality = ScoreIndicatorQuality.find(id)
 | 
						
						
						
							|  |  |           quality.update_attributes(:name => level[index],
 | 
						
						
						
							|  |  |                                     :lower_limit => lower[index],
 | 
						
						
						
							|  |  |                                     :upper_limit => upper[index],
 | 
						
						
						
							|  |  |                                     :position => index + 1) if level[index].present?
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         # 删除score_indicator_quality
 | 
						
						
						
							|  |  |         delete_qualities = ScoreIndicatorQuality.where(:id => delete_quality_id)
 | 
						
						
						
							|  |  |         delete_qualities.destroy_all if delete_qualities.present?
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         # 创建新增score_indicator_quality
 | 
						
						
						
							|  |  |         index_count = qualities_id.size
 | 
						
						
						
							|  |  |         create_level.try(:each_with_index) do |name, index|
 | 
						
						
						
							|  |  |           ScoreIndicatorQuality.create!(:name => name,
 | 
						
						
						
							|  |  |                                         :lower_limit => create_lower[index],
 | 
						
						
						
							|  |  |                                         :upper_limit => create_upper[index],
 | 
						
						
						
							|  |  |                                         :position => index_count + index + 1, :score_set_id => shixun_score.id) if create_lower[index].present?
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         # 删除超出position的score_indicator_descrition
 | 
						
						
						
							|  |  |         max_position = shixun_score.score_indicator_qualities.maximum(:position)
 | 
						
						
						
							|  |  |         shixun_score.score_indicators.each do |indicator|
 | 
						
						
						
							|  |  |           description = ScoreQualityDescription.where("score_indicator_id = ? and position > ?", indicator.id, max_position)
 | 
						
						
						
							|  |  |           description.destroy_all if description.present?
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |         redirect_to shixun_quality_score_managements_path
 | 
						
						
						
							|  |  |       rescue Exception => e
 | 
						
						
						
							|  |  |         logger.error("update_score_sets failed #{e}")
 | 
						
						
						
							|  |  |         raise ActiveRecord::Rollback
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def delete_score_set
 | 
						
						
						
							|  |  |     score_set = ScoreSet.find(params[:score_set_id])
 | 
						
						
						
							|  |  |     score_set.destroy
 | 
						
						
						
							|  |  |     redirect_to shixun_quality_score_managements_path
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def delete_score_indicator
 | 
						
						
						
							|  |  |     indicator = ScoreIndicator.find(params[:score_indicator_id])
 | 
						
						
						
							|  |  |     indicator.destroy
 | 
						
						
						
							|  |  |     redirect_to shixun_quality_score_managements_path
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 添加
 | 
						
						
						
							|  |  |   def create_auto_users_trial
 | 
						
						
						
							|  |  |    school = School.find params[:school]
 | 
						
						
						
							|  |  |    school.update_attributes(:auto_users_trial => 1, :authorization_time => Time.now)
 | 
						
						
						
							|  |  |    user_exs = UserExtensions.where(:school_id => params[:school])
 | 
						
						
						
							|  |  |    day_cer = UserDayCertification.where(:user_id => user_exs.map(&:user_id))
 | 
						
						
						
							|  |  |    users = User.where(:id => day_cer.map(&:user_id))
 | 
						
						
						
							|  |  |    users.update_all("certification = 1")
 | 
						
						
						
							|  |  |    ApplyAction.where(:user_id => users.map(&:id), :container_type => "TrialAuthorization", :status => 0).update_all(:status => 1)
 | 
						
						
						
							|  |  |    redirect_to auto_users_trial_managements_path
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 删除
 | 
						
						
						
							|  |  |   def update_auto_users_trial
 | 
						
						
						
							|  |  |     School.where(:id => params[:school]).update_all(:auto_users_trial => 0)
 | 
						
						
						
							|  |  |     redirect_to auto_users_trial_managements_path
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def search_user
 | 
						
						
						
							|  |  |     if params[:member_ids] && params[:trial_whether] == "trial_agree"
 | 
						
						
						
							|  |  |       aUser = User.where(:id => params[:member_ids]).includes(:user_extensions)
 | 
						
						
						
							|  |  |       aUser.update_all(:certification => 1)
 | 
						
						
						
							|  |  |       # 授权的教师加入示例课堂
 | 
						
						
						
							|  |  |       aUser.each do |user|
 | 
						
						
						
							|  |  |         join_ex_course(user) if user.user_extensions.identity == 0
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |       apply_user = ApplyAction.where(:user_id => params[:member_ids], :container_type => "TrialAuthorization")
 | 
						
						
						
							|  |  |       apply_user.update_all(:status => 1) unless apply_user.blank?
 | 
						
						
						
							|  |  |     elsif params[:member_ids] && params[:trial_whether] == "trial_cancel"
 | 
						
						
						
							|  |  |       User.where(:id => params[:member_ids]).update_all(:certification => 0)
 | 
						
						
						
							|  |  |       apply_user = ApplyAction.where(:user_id => params[:member_ids], :container_type => "TrialAuthorization")
 | 
						
						
						
							|  |  |       apply_user.update_all(:status => 2) unless apply_user.blank?
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if params[:member_ids] && params[:occupation] == "occupation_agree"
 | 
						
						
						
							|  |  |       User.where(:id => params[:member_ids]).update_all(:professional_certification => true)
 | 
						
						
						
							|  |  |       apply_user = ApplyUserAuthentication.where(:user_id => params[:member_ids], :auth_type => 2)
 | 
						
						
						
							|  |  |       unless apply_user.blank?
 | 
						
						
						
							|  |  |         apply_user.update_all(:status => 1)
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     elsif params[:member_ids] && params[:realname] == "realname_agree"
 | 
						
						
						
							|  |  |       User.where(:id => params[:member_ids]).update_all(:authentication => true)
 | 
						
						
						
							|  |  |       apply_user = ApplyUserAuthentication.where(:user_id => params[:member_ids], :auth_type => 1)
 | 
						
						
						
							|  |  |       unless apply_user.blank?
 | 
						
						
						
							|  |  |         apply_user.update_all(:status => 1)
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     elsif params[:member_ids] && params[:occupation] == "occupation_cancel"
 | 
						
						
						
							|  |  |       users = User.where(:id => params[:member_ids])
 | 
						
						
						
							|  |  |       users.update_all(:professional_certification => false)
 | 
						
						
						
							|  |  |       # 取消了职业认证给用户发消息
 | 
						
						
						
							|  |  |       users.each do |user|
 | 
						
						
						
							|  |  |         Tiding.create(:user_id => user.id, :trigger_user_id => 0, :container_id => user.id, :container_type =>'CancelUserProCertification', :belong_container_id => user.id, :belong_container_type =>'User', :tiding_type => "System")
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |       apply_user = ApplyUserAuthentication.where(:user_id => params[:member_ids], :auth_type => 2)
 | 
						
						
						
							|  |  |       unless apply_user.blank?
 | 
						
						
						
							|  |  |         apply_user.update_all(:status => 2)
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     elsif params[:member_ids] && params[:realname] == "realname_cancel"
 | 
						
						
						
							|  |  |       users = User.where(:id => params[:member_ids])
 | 
						
						
						
							|  |  |       users.update_all(:authentication => false)
 | 
						
						
						
							|  |  |       # 取消了实名认证给用户发消息
 | 
						
						
						
							|  |  |       users.each do |user|
 | 
						
						
						
							|  |  |         Tiding.create(:user_id => user.id, :trigger_user_id => 0, :container_id => user.id, :container_type =>'CancelUserAuthentication', :belong_container_id => user.id, :belong_container_type =>'User', :tiding_type => "System")
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |       apply_user = ApplyUserAuthentication.where(:user_id => params[:member_ids], :auth_type => 1)
 | 
						
						
						
							|  |  |       unless apply_user.blank?
 | 
						
						
						
							|  |  |         apply_user.update_all(:status => 2)
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     all_user_ids = User.where(:status => 1).pluck(:id)
 | 
						
						
						
							|  |  |     if params[:trial] == "-1"
 | 
						
						
						
							|  |  |       apply = ApplyAction.where(:container_type => "TrialAuthorization").pluck(:user_id)
 | 
						
						
						
							|  |  |       apply_id = apply.blank? ? -1 : "(" + apply.join(",") + ")"
 | 
						
						
						
							|  |  |       apply_user_id  = User.where("status = 1 and certification = 0 and id not in #{apply_id} ").pluck(:id)
 | 
						
						
						
							|  |  |     elsif params[:trial] == "-2"
 | 
						
						
						
							|  |  |       apply_user_id = all_user_ids
 | 
						
						
						
							|  |  |     elsif params[:trial] == "0"
 | 
						
						
						
							|  |  |       apply_user_id = ApplyAction.where(:status => 0).pluck(:user_id)
 | 
						
						
						
							|  |  |     elsif params[:trial] == "3"
 | 
						
						
						
							|  |  |       time = Time.at(Time.now.to_i - 86400)
 | 
						
						
						
							|  |  |       user_cer = UserDayCertification.where("created_at > '#{time}'").pluck(:user_id)
 | 
						
						
						
							|  |  |       cer_id = user_cer.blank? ? "(-1)" : "(" + user_cer.map{|a| a.user_id}.join(",") + ")"
 | 
						
						
						
							|  |  |       apply_user_id  = User.where("status = 1 and certification != 1 and id in #{cer_id} ").pluck(:id)
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       apply_user_id = User.where(:status => 1, :certification => params[:trial]).pluck(:id)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if params[:school] == ""
 | 
						
						
						
							|  |  |       s_user_id = all_user_ids
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       school_ids = School.where("name like '%#{params[:school]}%'").pluck(:id)
 | 
						
						
						
							|  |  |       s_user_id = UserExtensions.where(:school_id => school_ids).pluck(:user_id)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if params[:department] == ""
 | 
						
						
						
							|  |  |       d_user_id = all_user_ids
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       dep_ids = Department.where("name like '%#{params[:department]}%'").pluck(:id)
 | 
						
						
						
							|  |  |       d_user_id = UserExtensions.where(:department_id => dep_ids).pluck(:user_id)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     ide_user_id = all_user_ids
 | 
						
						
						
							|  |  |     if params[:identity] == "1" || (params[:identity] == "0" && params[:te_technical_title] == "0") || (params[:identity] == "2" && params[:pro_technical_title] == "0")
 | 
						
						
						
							|  |  |       ide_user_id = UserExtensions.where("identity = #{params[:identity]}").pluck(:user_id)
 | 
						
						
						
							|  |  |     elsif (params[:identity] == "0" && params[:te_technical_title] != "0") || (params[:identity] == "2" && params[:pro_technical_title] != "0")
 | 
						
						
						
							|  |  |       technical_title = params[:identity] == "0" ? params[:te_technical_title] : params[:pro_technical_title]
 | 
						
						
						
							|  |  |       ide_user_id = UserExtensions.where("identity = #{params[:identity]} and technical_title = '#{technical_title}'").pluck(:user_id)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if params[:student_id] && params[:student_id] != ''
 | 
						
						
						
							|  |  |       stu_user_id = UserExtensions.where("student_id like '%#{params[:student_id]}%'").pluck(:user_id)
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       stu_user_id = all_user_ids
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     user_id = s_user_id & d_user_id & apply_user_id & stu_user_id & ide_user_id
 | 
						
						
						
							|  |  |     sql = ""
 | 
						
						
						
							|  |  |     sql =
 | 
						
						
						
							|  |  |         if params[:research_condition] == "name"
 | 
						
						
						
							|  |  |           "concat(lastname, firstname) like '%#{params[:research_contents]}%'"
 | 
						
						
						
							|  |  |         elsif params[:research_condition] == "email"
 | 
						
						
						
							|  |  |           "mail like '%#{params[:research_contents]}%'"
 | 
						
						
						
							|  |  |         elsif params[:research_condition] == "phone"
 | 
						
						
						
							|  |  |           "phone like '%#{params[:research_contents]}%'"
 | 
						
						
						
							|  |  |         elsif params[:research_condition] == "nickname"
 | 
						
						
						
							|  |  |           if params[:research_contents].present?
 | 
						
						
						
							|  |  |             "nickname like '%#{params[:research_contents]}%'"
 | 
						
						
						
							|  |  |           end
 | 
						
						
						
							|  |  |         elsif params[:research_condition] == "login"
 | 
						
						
						
							|  |  |           params[:research_contents].present? ? "login like '%#{params[:research_contents]}%'" : ""
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     @users = User.where(:id => user_id).where("#{sql}").includes(:apply_actions, user_extensions: [:department, :school]).order("last_login_on desc")
 | 
						
						
						
							|  |  |     @xls_users = @users.reorder("created_on desc").limit(3000) #导出excel用户
 | 
						
						
						
							|  |  |     @page = (params['page'] || 1).to_i
 | 
						
						
						
							|  |  |     @users_count = @users.count
 | 
						
						
						
							|  |  |     @limit = 20
 | 
						
						
						
							|  |  |     @is_remote = true
 | 
						
						
						
							|  |  |     @users_pages = Paginator.new @users_count, @limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||= @users_pages.offset
 | 
						
						
						
							|  |  |     @users = paginateHelper @users, @limit
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.xls{
 | 
						
						
						
							|  |  |         # @export_shixun_task = @export_shixun_task.all
 | 
						
						
						
							|  |  |         filename = "用户列表.xls"
 | 
						
						
						
							|  |  |         send_data(user_list_xls(@xls_users), :type => 'application/octet-stream', :filename => filename_for_content_disposition(filename))
 | 
						
						
						
							|  |  |       }
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def update_webssh
 | 
						
						
						
							|  |  |     webssh = params[:status] == "true" ? true : false
 | 
						
						
						
							|  |  |     @shixuns = Shixun.find(params[:shixun_id])
 | 
						
						
						
							|  |  |     @shixuns.update_column(:webssh, webssh)
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def affirm_cancel_auth
 | 
						
						
						
							|  |  |     user_id = params[:users]
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 升级通知
 | 
						
						
						
							|  |  |   def update_notice
 | 
						
						
						
							|  |  |     @menu_type = 12
 | 
						
						
						
							|  |  |     @sub_type = 8
 | 
						
						
						
							|  |  |     @notice = SystemUpdateNotice.last
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def edit_update_notice
 | 
						
						
						
							|  |  |     notice = SystemUpdateNotice.last
 | 
						
						
						
							|  |  |     if notice.present? && notice.end_time > Time.now
 | 
						
						
						
							|  |  |       notice.update_attributes(:end_time => params[:end_time], :start_time => params[:start_time], :subject => params[:subject], :notes => params[:notes])
 | 
						
						
						
							|  |  |       UserSystemNotice.where(:notice_type => notice.notice_type).destroy_all
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       notice_type = UserSystemNotice.find_by_sql("select max(notice_type) as max_notice_type from user_system_notices").first.try(:max_notice_type).to_i + 1
 | 
						
						
						
							|  |  |       SystemUpdateNotice.create(:end_time => params[:end_time], :start_time => params[:start_time], :subject => params[:subject], :notes => params[:notes], :notice_type => notice_type)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     redirect_to update_notice_managements_path
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def trial_authorization
 | 
						
						
						
							|  |  |     @menu_type =10
 | 
						
						
						
							|  |  |     @sub_type = 2
 | 
						
						
						
							|  |  |     name_search = params[:search]
 | 
						
						
						
							|  |  |     @status = trial_authorization_status(params[:status])
 | 
						
						
						
							|  |  |     # @status = (params[:status].blank? || params[:status] == "0") ? 0 : [1,2]
 | 
						
						
						
							|  |  |     user_id = []
 | 
						
						
						
							|  |  |     search = false
 | 
						
						
						
							|  |  |     @authorizations = ApplyAction.where(:container_type => "TrialAuthorization", :status => @status)
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     unless name_search.blank?
 | 
						
						
						
							|  |  |       new_user_id = User.find_by_sql("select id from users where concat(lastname,firstname) like '%#{name_search}%'").map(&:id)
 | 
						
						
						
							|  |  |       user_id = user_id.size == 0 ? new_user_id : user_id & new_user_id
 | 
						
						
						
							|  |  |       search = true
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if params[:sname] && params[:sname].strip != ''
 | 
						
						
						
							|  |  |       school_id =  School.where("name like '%#{params[:sname]}%'")
 | 
						
						
						
							|  |  |       new_user_id = UserExtensions.where(:school_id => school_id).map(&:user_id)
 | 
						
						
						
							|  |  |       user_id = user_id.size == 0 ? new_user_id : user_id & new_user_id
 | 
						
						
						
							|  |  |       search = true
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if params[:identity] && params[:identity].to_i != -1
 | 
						
						
						
							|  |  |       new_user_id = UserExtensions.where(:identity => params[:identity].to_i).map(&:user_id)
 | 
						
						
						
							|  |  |       user_id = user_id.size == 0 ? new_user_id : user_id & new_user_id
 | 
						
						
						
							|  |  |       search = true
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if params[:auto_school] && params[:auto_school].to_i != 0
 | 
						
						
						
							|  |  |       school_id = School.where(auto_users_trial: params[:auto_school].to_i == 1 ? 1 : 0)
 | 
						
						
						
							|  |  |       new_user_id = UserExtensions.where(:school_id => school_id).map(&:user_id)
 | 
						
						
						
							|  |  |       user_id = user_id.size == 0 ? new_user_id : user_id & new_user_id
 | 
						
						
						
							|  |  |       search = true
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     @authorizations = user_id.size == 0 && !search ? @authorizations.order("updated_at desc") : @authorizations.where(:user_id => user_id.uniq).order("updated_at desc")
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     @autu_count = @authorizations.count
 | 
						
						
						
							|  |  |     @limit = 15
 | 
						
						
						
							|  |  |     @is_remote = true
 | 
						
						
						
							|  |  |     @autu_pages = Paginator.new @autu_count, @limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||= @autu_pages.offset
 | 
						
						
						
							|  |  |     @authorizations = paginateHelper @authorizations, @limit
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     @authorizations = @authorizations.includes(:user)
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 批量授权
 | 
						
						
						
							|  |  |   def batch_authorization
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # params[:type] 1:拒绝 0:同意
 | 
						
						
						
							|  |  |   # authentication 会有一个初始值,不同的值代表不同的权限
 | 
						
						
						
							|  |  |   # REDO: 后面权限改了后,一并要改
 | 
						
						
						
							|  |  |   def trial_authorization_operation
 | 
						
						
						
							|  |  |     logger.warn("####trial_authorization_operation: #{format_time(Time.now)}")
 | 
						
						
						
							|  |  |     apply_action = ApplyAction.find(params[:apply_id])
 | 
						
						
						
							|  |  |     type = params[:type]
 | 
						
						
						
							|  |  |     search = params[:search]
 | 
						
						
						
							|  |  |     if type == "0"
 | 
						
						
						
							|  |  |       authentication_user = AuthenticationsUsers.where(:user_id => apply_action.user_id).first
 | 
						
						
						
							|  |  |       if authentication_user.blank?
 | 
						
						
						
							|  |  |         AuthenticationsUsers.create(:user_id => apply_action.user_id, :authentication_id => 1)
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |       begin
 | 
						
						
						
							|  |  |         logger.warn("trial_authorization_operation begin send: #{format_time(format_time(Time.now))}")
 | 
						
						
						
							|  |  |         # verification_code = code.sample(6).join
 | 
						
						
						
							|  |  |         if apply_action.user.phone.present?
 | 
						
						
						
							|  |  |           status = Trustie::Sms.send(mobile: apply_action.user.phone.to_s, code: '1', send_type:'trial_authorization', user_name:apply_action.user.show_name, result:'已通过')
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |         logger.warn("trial_authorization_operation complete send: #{format_time(Time.now)}")
 | 
						
						
						
							|  |  |       rescue => e
 | 
						
						
						
							|  |  |         Rails.logger.error "发送验证码出错: #{e}"
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |       # 授权的教师加入示例课堂
 | 
						
						
						
							|  |  |       join_ex_course(apply_action.user) if apply_action.user.user_extensions.identity == 0
 | 
						
						
						
							|  |  |       logger.warn("####trial_authorization_operation teacher joined: #{format_time(Time.now)}")
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       begin
 | 
						
						
						
							|  |  |         # verification_code = code.sample(6).join
 | 
						
						
						
							|  |  |         if apply_action.user.phone.present?
 | 
						
						
						
							|  |  |           status = Trustie::Sms.send(mobile: apply_action.user.phone.to_s, code: '1', send_type:'trial_authorization', user_name:apply_action.user.show_name, result:'未通过')
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |       rescue => e
 | 
						
						
						
							|  |  |         Rails.logger.error "发送验证码出错: #{e}"
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     Tiding.where(:user_id => 1, :trigger_user_id => apply_action.user_id, :container_id => apply_action.id, :container_type => 'ApplyAction', :tiding_type => "Apply", :status => 0).update_all(:status => 1)
 | 
						
						
						
							|  |  |     Tiding.create(:user_id => apply_action.user_id, :trigger_user_id => 0, :container_id => apply_action.id, :container_type => 'ApplyAction',
 | 
						
						
						
							|  |  |                   :parent_container_id => apply_action.container_id, :parent_container_type => apply_action.container_type, :belong_container_id => apply_action.container_id, :belong_container_type => "User", :tiding_type => "System", :status => type == "0" ? 1 : 2)
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     apply_action.update_attributes(:status => (params[:type] == "1" ? 2 : 1), :reason => params[:reject_reason], :dealer_id => User.current.id, :noticed => false)
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     User.where(:id => apply_action.user_id).first.update_attributes(:certification => (params[:type] == "1" ? 2 : 1))
 | 
						
						
						
							|  |  |     user_id = User.find_by_sql("select id from users where concat(lastname,firstname) like '%#{search}%'")
 | 
						
						
						
							|  |  |     @authorizations = ApplyAction.where(:container_type => "TrialAuthorization", :status => 0, :user_id => user_id).includes(:user)
 | 
						
						
						
							|  |  |     @autu_count = @authorizations.count
 | 
						
						
						
							|  |  |     @limit = 15
 | 
						
						
						
							|  |  |     @is_remote = true
 | 
						
						
						
							|  |  |     @autu_pages = Paginator.new @autu_count, @limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||= @autu_pages.offset
 | 
						
						
						
							|  |  |     @authorizations = paginateHelper @authorizations, @limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def index
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # copy from admin
 | 
						
						
						
							|  |  |   def identity_authentication
 | 
						
						
						
							|  |  |     @menu_type = 10
 | 
						
						
						
							|  |  |     @sub_type = 1
 | 
						
						
						
							|  |  |     @type = trial_authorization_status(params[:type])
 | 
						
						
						
							|  |  |     type = params[:type] || 0 # 存在type 就用type 没有就为 0
 | 
						
						
						
							|  |  |     user_id = User.find_by_sql("select id from users where concat(lastname,firstname) like '%#{params[:name]}%'")
 | 
						
						
						
							|  |  |     @unapproved_user = ApplyUserAuthentication.where(:status => @type, :user_id => user_id, :auth_type => 1).order("updated_at desc")
 | 
						
						
						
							|  |  |     if params[:sname] && params[:sname] != ''
 | 
						
						
						
							|  |  |       school_id =  School.where("name like '%#{params[:sname]}%'")
 | 
						
						
						
							|  |  |       user_id = UserExtensions.where(:school_id => school_id).map(&:user_id)
 | 
						
						
						
							|  |  |       @unapproved_user = @unapproved_user.where(:user_id => user_id).order("updated_at desc")
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     @unapproved_user_count = @unapproved_user.count
 | 
						
						
						
							|  |  |     @limit = 15
 | 
						
						
						
							|  |  |     @is_remote = true
 | 
						
						
						
							|  |  |     @unapproved_user_pages = Paginator.new @unapproved_user_count, @limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||= @unapproved_user_pages.offset
 | 
						
						
						
							|  |  |     @unapproved_user = paginateHelper @unapproved_user, @limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def professional_authentication
 | 
						
						
						
							|  |  |     @menu_type = 10
 | 
						
						
						
							|  |  |     @sub_type = 7
 | 
						
						
						
							|  |  |     @type = trial_authorization_status(params[:type])
 | 
						
						
						
							|  |  |     type = params[:type] || 0 # 存在type 就用type 没有就为 0
 | 
						
						
						
							|  |  |     user_id = User.find_by_sql("select id from users where concat(lastname,firstname) like '%#{params[:name]}%'")
 | 
						
						
						
							|  |  |     # @unapproved_user = ApplyUserAuthentication.where(:status => @type, :user_id => user_id, :auth_type => 2).find_by_sql("SELECT s.*, TIMESTAMPDIFF(SECOND, s.updated_at, now()) diff FROM `apply_user_authentications` s order by diff asc")
 | 
						
						
						
							|  |  |     @unapproved_user = ApplyUserAuthentication.where(:status => @type, :user_id => user_id, :auth_type => 2)
 | 
						
						
						
							|  |  |     if params[:sname] && params[:sname] != ''
 | 
						
						
						
							|  |  |       school_id =  School.where("name like '%#{params[:sname]}%'")
 | 
						
						
						
							|  |  |       user_id = UserExtensions.where(:school_id => school_id).map(&:user_id)
 | 
						
						
						
							|  |  |       @unapproved_user = @unapproved_user.where(:user_id => user_id)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     if params[:identity] && params[:identity] != "" && params[:identity] != "-1"
 | 
						
						
						
							|  |  |       user_id = UserExtensions.where(:identity => params[:identity]).map(&:user_id)
 | 
						
						
						
							|  |  |       @unapproved_user = @unapproved_user.where(:user_id => user_id)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     @unapproved_user = @unapproved_user.order("updated_at desc")
 | 
						
						
						
							|  |  |     @unapproved_user_count = @unapproved_user.count
 | 
						
						
						
							|  |  |     @limit = 15
 | 
						
						
						
							|  |  |     @is_remote = true
 | 
						
						
						
							|  |  |     @unapproved_user_pages = Paginator.new @unapproved_user_count, @limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||= @unapproved_user_pages.offset
 | 
						
						
						
							|  |  |     @unapproved_user = paginateHelper @unapproved_user, @limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 拒绝身份认证
 | 
						
						
						
							|  |  |   # copy from admin
 | 
						
						
						
							|  |  |   def reject_authentication
 | 
						
						
						
							|  |  |     apply_user = ApplyUserAuthentication.where(:id => params[:apply_id], :auth_type => 1).first
 | 
						
						
						
							|  |  |     reason = apply_user.update_attributes(:status => 2, :remarks => params[:reject_reason])
 | 
						
						
						
							|  |  | =begin
 | 
						
						
						
							|  |  |     begin
 | 
						
						
						
							|  |  |       if apply_user.user.phone.present?
 | 
						
						
						
							|  |  |         status = Trustie::Sms.send(mobile: apply_user.user.phone.to_s, code: '1', send_type:'authentication',user_name:apply_user.user.show_name, result:'未通过')
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     rescue => e
 | 
						
						
						
							|  |  |       Rails.logger.error "发送验证码出错: #{e}"
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | =end
 | 
						
						
						
							|  |  |     diskfile1 = disk_filename("UserAuthentication", apply_user.user_id) +"ID"
 | 
						
						
						
							|  |  |     apply_user.update_attributes(:is_delete => true)
 | 
						
						
						
							|  |  |     File.delete(diskfile1)
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     apply_user.tidings.where(:tiding_type => "Apply").update_all(:status => 1)
 | 
						
						
						
							|  |  |     Tiding.create(:user_id => apply_user.user_id ,:trigger_user_id => 0, :container_id => apply_user.id, :container_type => "ApplyUserAuthentication", :belong_container_id => apply_user.user_id, :belong_container_type =>'User', :status => 2, :tiding_type => "System")
 | 
						
						
						
							|  |  |     render :json => {success: reason}
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 同意身份认证
 | 
						
						
						
							|  |  |   # copy from admin
 | 
						
						
						
							|  |  |   def agree_authentication
 | 
						
						
						
							|  |  |     apply_user = ApplyUserAuthentication.where(:id => params[:apply_id], :auth_type => 1).first
 | 
						
						
						
							|  |  |     user = User.find(apply_user.user_id)
 | 
						
						
						
							|  |  |     apply_user.update_attribute(:status, 1)
 | 
						
						
						
							|  |  |     user.update_attribute(:authentication, true)
 | 
						
						
						
							|  |  |     grade_record = Grade.where(:container_id => user.id, :container_type => "Authentication").first
 | 
						
						
						
							|  |  |     unless grade_record
 | 
						
						
						
							|  |  |       user.update_attribute(:grade, user.grade + 500)
 | 
						
						
						
							|  |  |       Grade.create(:user_id => user.id, :container_id => user.id, :container_type => "Authentication", :score => 500)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     diskfile1 = disk_filename("UserAuthentication", apply_user.user_id) +"ID"
 | 
						
						
						
							|  |  |     apply_user.update_attributes(:is_delete => true)
 | 
						
						
						
							|  |  |     File.delete(diskfile1)
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | =begin
 | 
						
						
						
							|  |  |     begin
 | 
						
						
						
							|  |  |       if apply_user.user.phone.present?
 | 
						
						
						
							|  |  |         status = Trustie::Sms.send(mobile: apply_user.user.phone.to_s, code: '1', send_type:'authentication',user_name:apply_user.user.show_name, result:'已通过')
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     rescue => e
 | 
						
						
						
							|  |  |       Rails.logger.error "发送验证码出错: #{e}"
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | =end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     apply_user.tidings.where(:tiding_type => "Apply").update_all(:status => 1)
 | 
						
						
						
							|  |  |     Tiding.create(:user_id => apply_user.user_id ,:trigger_user_id => 0, :container_id => apply_user.id, :container_type => "ApplyUserAuthentication", :belong_container_id => apply_user.user_id, :belong_container_type =>'User', :status => 1, :tiding_type => "System")
 | 
						
						
						
							|  |  |     
 | 
						
						
						
							|  |  |     @unapproved_user = ApplyUserAuthentication.where(:status => 0, :auth_type => 1).order("updated_at desc")
 | 
						
						
						
							|  |  |     @unapproved_user_count = @unapproved_user.count
 | 
						
						
						
							|  |  |     @limit = 15
 | 
						
						
						
							|  |  |     @is_remote = true
 | 
						
						
						
							|  |  |     @unapproved_user_pages = Paginator.new @unapproved_user_count, @limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||= @unapproved_user_pages.offset
 | 
						
						
						
							|  |  |     @unapproved_user = paginateHelper @unapproved_user, @limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 拒绝职业认证
 | 
						
						
						
							|  |  |   def reject_authentication_pro
 | 
						
						
						
							|  |  |     apply_user = ApplyUserAuthentication.where(:id => params[:apply_id], :auth_type => 2).first
 | 
						
						
						
							|  |  |     if apply_user.present? && apply_user.status == 0
 | 
						
						
						
							|  |  |       reason = apply_user.update_attributes(:status => 2, :remarks => params[:reject_reason])
 | 
						
						
						
							|  |  |       diskfile1 = disk_filename("UserAuthentication", apply_user.user_id) +"PRO"
 | 
						
						
						
							|  |  |       apply_user.update_attributes(:is_delete => true)
 | 
						
						
						
							|  |  |       File.delete(diskfile1)
 | 
						
						
						
							|  |  | =begin
 | 
						
						
						
							|  |  |       begin
 | 
						
						
						
							|  |  |         if apply_user.user.phone.present?
 | 
						
						
						
							|  |  |           status = Trustie::Sms.send(mobile: apply_user.user.phone.to_s, code: '1', send_type:'authentication_pro',user_name:apply_user.user.show_name, result:'未通过')
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |       rescue => e
 | 
						
						
						
							|  |  |         Rails.logger.error "发送验证码出错: #{e}"
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  | =end
 | 
						
						
						
							|  |  |       apply_user.tidings.where(:tiding_type => "Apply").update_all(:status => 1)
 | 
						
						
						
							|  |  |       Tiding.create(:user_id => apply_user.user_id ,:trigger_user_id => 0, :container_id => apply_user.id, :container_type => "ApplyUserAuthentication", :belong_container_id => apply_user.user_id, :belong_container_type =>'User', :status => 2, :tiding_type => "System")
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |       render :json => {success: reason}
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 同意职业认证
 | 
						
						
						
							|  |  |   def agree_authentication_pro
 | 
						
						
						
							|  |  |     apply_user = ApplyUserAuthentication.where(:id => params[:apply_id], :auth_type => 2).first
 | 
						
						
						
							|  |  |     user = User.find(apply_user.user_id)
 | 
						
						
						
							|  |  |     apply_user.update_attribute(:status, 1)
 | 
						
						
						
							|  |  |     user.update_attribute(:professional_certification, true)
 | 
						
						
						
							|  |  |     grade_record = Grade.where(:container_id => user.id, :container_type => "Professional").first
 | 
						
						
						
							|  |  |     unless grade_record
 | 
						
						
						
							|  |  |       user.update_attribute(:grade, user.grade + 500)
 | 
						
						
						
							|  |  |       Grade.create(:user_id => user.id, :container_id => user.id, :container_type => "Professional", :score => 500)
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     diskfile1 = disk_filename("UserAuthentication", apply_user.user_id) +"PRO"
 | 
						
						
						
							|  |  |     apply_user.update_attributes(:is_delete => true)
 | 
						
						
						
							|  |  |     File.delete(diskfile1)
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | =begin
 | 
						
						
						
							|  |  |     begin
 | 
						
						
						
							|  |  |       if apply_user.user.phone.present?
 | 
						
						
						
							|  |  |         status = Trustie::Sms.send(mobile: apply_user.user.phone.to_s, code: '1', send_type:'authentication_pro',user_name:apply_user.user.show_name, result:'已通过')
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     rescue => e
 | 
						
						
						
							|  |  |       Rails.logger.error "发送验证码出错: #{e}"
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | =end
 | 
						
						
						
							|  |  |     apply_user.tidings.where(:tiding_type => "Apply").update_all(:status => 1)
 | 
						
						
						
							|  |  |     Tiding.create(:user_id => apply_user.user_id ,:trigger_user_id => 0, :container_id => apply_user.id, :container_type => "ApplyUserAuthentication", :belong_container_id => apply_user.user_id, :belong_container_type =>'User', :status => 1, :tiding_type => "System")
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     @unapproved_user = ApplyUserAuthentication.where(:status => 0, :auth_type => 2).order("updated_at desc")
 | 
						
						
						
							|  |  |     @unapproved_user_count = @unapproved_user.count
 | 
						
						
						
							|  |  |     @limit = 15
 | 
						
						
						
							|  |  |     @is_remote = true
 | 
						
						
						
							|  |  |     @unapproved_user_pages = Paginator.new @unapproved_user_count, @limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||= @unapproved_user_pages.offset
 | 
						
						
						
							|  |  |     @unapproved_user = paginateHelper @unapproved_user, @limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def subject_authorization
 | 
						
						
						
							|  |  |     @menu_type = 10
 | 
						
						
						
							|  |  |     @sub_type = 6
 | 
						
						
						
							|  |  |     @type = trial_authorization_status params[:type]
 | 
						
						
						
							|  |  |     @authorizations = ApplyAction.where(:container_type => "ApplySubject", :status => @type).order("created_at desc")
 | 
						
						
						
							|  |  |     # @subject=Subject.all
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     @authorizations_count = @authorizations.count
 | 
						
						
						
							|  |  |     @limit = 15
 | 
						
						
						
							|  |  |     @is_remote = true
 | 
						
						
						
							|  |  |     @authorizations_pages = Paginator.new @authorizations_count, @limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||= @authorizations_pages.offset
 | 
						
						
						
							|  |  |     @authorizations = paginateHelper @authorizations, @limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def shixun_authorization
 | 
						
						
						
							|  |  |     @menu_type = 10
 | 
						
						
						
							|  |  |     @sub_type =  5
 | 
						
						
						
							|  |  |     @type = trial_authorization_status params[:type]
 | 
						
						
						
							|  |  |     # sql = select * from apply_actions where dealer_id is null
 | 
						
						
						
							|  |  |     @authorizations = ApplyAction.where(:container_type => "ApplyShixun", :status => @type).order("created_at desc")
 | 
						
						
						
							|  |  |     search = params[:search]
 | 
						
						
						
							|  |  |     unless search.blank?
 | 
						
						
						
							|  |  |       @authorizations = @authorizations.where(:container_id => Shixun.where(:id => @authorizations.map(&:container_id)).where("name like '%#{search}%'").map(&:id)).order("created_at desc")
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     @authorizations_count = @authorizations.count
 | 
						
						
						
							|  |  |     @limit = 15
 | 
						
						
						
							|  |  |     @is_remote = true
 | 
						
						
						
							|  |  |     @authorizations_pages = Paginator.new @authorizations_count, @limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||= @authorizations_pages.offset
 | 
						
						
						
							|  |  |     @authorizations = paginateHelper @authorizations, @limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 课程实训发布审批
 | 
						
						
						
							|  |  |   def deal_subject_authorization
 | 
						
						
						
							|  |  |     apply_action = ApplyAction.find(params[:apply_id])
 | 
						
						
						
							|  |  |     type = params[:type].to_i
 | 
						
						
						
							|  |  |     subject = Subject.find apply_action.container_id
 | 
						
						
						
							|  |  |     if type == 0   #拒绝
 | 
						
						
						
							|  |  |       subject.update_column('status', 0)
 | 
						
						
						
							|  |  |       apply_action.update_attributes(:status => 2, :reason => params[:reject_reason], :dealer_id => User.current.id)
 | 
						
						
						
							|  |  |       # notes = "您所在团队提交的课程实训发布申请:<a href='#{subject_path(subject)}'>#{subject.name}</a>,审核未通过。<br/>原因:#{params[:reject_reason]}"
 | 
						
						
						
							|  |  |       #   JournalsForMessage.create(:jour_id => subject.user_id, :jour_type => 'Principal', :user_id => User.current.id, :notes => notes, :private => 1, :reply_id => 0)
 | 
						
						
						
							|  |  | =begin
 | 
						
						
						
							|  |  |       begin
 | 
						
						
						
							|  |  |         # verification_code = code.sample(6).join
 | 
						
						
						
							|  |  |         if subject.owner.phone.present?
 | 
						
						
						
							|  |  |           status = Trustie::Sms.send(mobile: subject.owner.phone.to_s, code: '1', send_type:'subject_authorization', name:subject.name, user_name:subject.owner.show_name, result:'未通过')
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |       rescue => e
 | 
						
						
						
							|  |  |         Rails.logger.error "发送验证码出错: #{e}"
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  | =end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     else   #同意
 | 
						
						
						
							|  |  |       subject.update_attributes(:status =>2, :publish_time => Time.now)
 | 
						
						
						
							|  |  |       apply_action.update_attributes(:status => 1, :dealer_id => User.current.id)
 | 
						
						
						
							|  |  | =begin
 | 
						
						
						
							|  |  |       begin
 | 
						
						
						
							|  |  |         unless subject.owner.phone.present?
 | 
						
						
						
							|  |  |           status = Trustie::Sms.send(mobile: subject.owner.phone.to_s, code: '1', send_type:'subject_authorization', name:subject.name, user_name:subject.owner.show_name, result:'已通过')
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |       rescue => e
 | 
						
						
						
							|  |  |         Rails.logger.error "发送验证码出错: #{e}"
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  | =end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     Tiding.where(:user_id => 1 ,:trigger_user_id => apply_action.user_id, :container_id => apply_action.id, :container_type => 'ApplyAction', :tiding_type => "Apply", :status => 0).update_all(:status => 1)
 | 
						
						
						
							|  |  |     Tiding.create(:user_id => apply_action.user_id, :trigger_user_id => 0, :container_id => apply_action.id, :container_type => 'ApplyAction',
 | 
						
						
						
							|  |  |                   :parent_container_id => apply_action.container_id, :parent_container_type => apply_action.container_type, :belong_container_id => apply_action.container_id, :belong_container_type => "Subject", :tiding_type => "System", :status => type == 0 ? 2 : 1)
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     @authorizations = ApplyAction.where(:container_type => "ApplySubject", :status => 0)
 | 
						
						
						
							|  |  |     @authorizations_count = @authorizations.count
 | 
						
						
						
							|  |  |     @limit = 15
 | 
						
						
						
							|  |  |     @is_remote = true
 | 
						
						
						
							|  |  |     @authorizations_pages = Paginator.new @authorizations_count, @limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||= @authorizations_pages.offset
 | 
						
						
						
							|  |  |     @authorizations = paginateHelper @authorizations, @limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 项目实训发布审批
 | 
						
						
						
							|  |  |   def deal_shixun_authorization
 | 
						
						
						
							|  |  |     apply_action = ApplyAction.find(params[:apply_id])
 | 
						
						
						
							|  |  |     type = params[:type].to_i
 | 
						
						
						
							|  |  |     shixun = Shixun.find apply_action.container_id
 | 
						
						
						
							|  |  |     shixun_creator =  shixun.owner
 | 
						
						
						
							|  |  |     if type == 0   #拒绝
 | 
						
						
						
							|  |  |       shixun.update_column('status', 0)
 | 
						
						
						
							|  |  |       apply_action.update_attributes(:status => 2, :reason => params[:reject_reason], :dealer_id => User.current.id)
 | 
						
						
						
							|  |  | =begin
 | 
						
						
						
							|  |  |       begin
 | 
						
						
						
							|  |  |         if shixun_creator.phone.present?
 | 
						
						
						
							|  |  |           status = Trustie::Sms.send(mobile: shixun_creator.phone.to_s, code: '1', send_type:'shixun_authorization', name:shixun.name, user_name:shixun_creator.show_name, result:'未通过')
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |       rescue => e
 | 
						
						
						
							|  |  |         Rails.logger.error "发送验证码出错: #{e}"
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  | =end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     else   #同意
 | 
						
						
						
							|  |  |       # 给实训制作者奖励“金币/经验” (奖励数额:实训关卡的金币的总数)
 | 
						
						
						
							|  |  |       score = shixun.all_score
 | 
						
						
						
							|  |  |       grade = Grade.where(:user_id => shixun.user_id, :container_id => shixun.id, :container_type => "shixunPublish").first
 | 
						
						
						
							|  |  |       if grade.blank? # 防止多条创建
 | 
						
						
						
							|  |  |         Grade.create(:user_id => shixun.user_id, :container_id => shixun.id, :container_type => "shixunPublish", :score => score)
 | 
						
						
						
							|  |  |         Experience.create(:user_id => shixun.user_id, :container_id => shixun.id, :container_type => "shixunPublish", :score => score)
 | 
						
						
						
							|  |  |         shixun_creator.update_attributes(:grade => shixun_creator.grade + score, :experience => shixun_creator.experience + score)
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |       shixun.update_column('status', 2)
 | 
						
						
						
							|  |  |       apply_action.update_attributes(:status => 1, :dealer_id => User.current.id)
 | 
						
						
						
							|  |  |       shixun = Shixun.where(:id => apply_action.container_id).first
 | 
						
						
						
							|  |  |       shixun.update_attribute(:publish_time, Time.now)
 | 
						
						
						
							|  |  |       # 实训通关则给实训制作者相应的金币奖励
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |       shixun_modify_status_without_publish shixun, 1
 | 
						
						
						
							|  |  | =begin
 | 
						
						
						
							|  |  |       begin
 | 
						
						
						
							|  |  |         if shixun_creator.phone.present?
 | 
						
						
						
							|  |  |           status = Trustie::Sms.send(mobile: shixun.owner.phone.to_s, code: '1', send_type:'shixun_authorization', name:shixun.name, user_name:shixun.owner.show_name, result:'已通过')
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |       rescue => e
 | 
						
						
						
							|  |  |         Rails.logger.error "发送验证码出错: #{e}"
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  | =end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     Tiding.where(:user_id => 1 ,:trigger_user_id => apply_action.user_id, :container_id => apply_action.id, :container_type => 'ApplyAction', :tiding_type => "Apply", :status => 0).update_all(:status => 1)
 | 
						
						
						
							|  |  |     Tiding.create(:user_id => apply_action.user_id, :trigger_user_id => 0, :container_id => apply_action.id, :container_type => 'ApplyAction',
 | 
						
						
						
							|  |  |                   :parent_container_id => apply_action.container_id, :parent_container_type => apply_action.container_type, :belong_container_id => apply_action.container_id, :belong_container_type => "Shixun", :tiding_type => "System", :status => type == 0 ? 2 : 1)
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |     @authorizations = ApplyAction.where(:container_type => "ApplyShixun", :status => 0)
 | 
						
						
						
							|  |  |     @authorizations_count = @authorizations.count
 | 
						
						
						
							|  |  |     @limit = 15
 | 
						
						
						
							|  |  |     @is_remote = true
 | 
						
						
						
							|  |  |     @authorizations_pages = Paginator.new @authorizations_count, @limit, params['page'] || 1
 | 
						
						
						
							|  |  |     @offset ||= @authorizations_pages.offset
 | 
						
						
						
							|  |  |     @authorizations = paginateHelper @authorizations, @limit
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def tech_system
 | 
						
						
						
							|  |  |     @menu_type = 12
 | 
						
						
						
							|  |  |     @sub_type = 5
 | 
						
						
						
							|  |  |     @tech_system = Repertoire.where(nil).order("updated_at asc")
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 创建体系
 | 
						
						
						
							|  |  |   def create_system
 | 
						
						
						
							|  |  |     rep_name = params[:repertoire]
 | 
						
						
						
							|  |  |     sub_rep_name = params[:sub_repertoire]
 | 
						
						
						
							|  |  |     tags_name = params[:tag_repertoire]
 | 
						
						
						
							|  |  |     ActiveRecord::Base.transaction do
 | 
						
						
						
							|  |  |       begin
 | 
						
						
						
							|  |  |         rep = Repertoire.create!(:name => rep_name)
 | 
						
						
						
							|  |  |         sub_rep = SubRepertoire.create!(:name => sub_rep_name, :repertoire_id => rep.id)
 | 
						
						
						
							|  |  |         tags_name.each do |tag|
 | 
						
						
						
							|  |  |           TagRepertoire.create!(:name => tag, :sub_repertoire_id => sub_rep.id)
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |         redirect_to tech_system_managements_path
 | 
						
						
						
							|  |  |       rescue Exception => e
 | 
						
						
						
							|  |  |         logger.error("create_system error: #{e}")
 | 
						
						
						
							|  |  |         raise ActiveRecord::Rollback
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 更新tag_repertores的名称
 | 
						
						
						
							|  |  |   def update_tag_name
 | 
						
						
						
							|  |  |     tag = TagRepertoire.find(params[:id])
 | 
						
						
						
							|  |  |     if params[:name].blank?
 | 
						
						
						
							|  |  |       tag.destroy
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       if tag.name == params[:name].strip
 | 
						
						
						
							|  |  |         tag.update_column(:updated_at, Time.now)
 | 
						
						
						
							|  |  |       else
 | 
						
						
						
							|  |  |         tag.update_attribute(:name, params[:name])
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     render :json => {success: "true"}
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 更新sub_repertores的名称
 | 
						
						
						
							|  |  |   def update_sub_name
 | 
						
						
						
							|  |  |     sub = SubRepertoire.find(params[:id])
 | 
						
						
						
							|  |  |     if params[:name].blank?
 | 
						
						
						
							|  |  |       sub.destroy
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       if sub.name == params[:name].strip
 | 
						
						
						
							|  |  |         sub.update_column(:updated_at, Time.now)
 | 
						
						
						
							|  |  |       else
 | 
						
						
						
							|  |  |         sub.update_attribute(:name, params[:name])
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     render :json => {success: "true"}
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def update_rep_name
 | 
						
						
						
							|  |  |     rep = Repertoire.find(params[:id])
 | 
						
						
						
							|  |  |     if params[:name].blank?
 | 
						
						
						
							|  |  |       rep.destroy
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       if rep.name == params[:name].strip
 | 
						
						
						
							|  |  |         rep.update_column(:updated_at, Time.now)
 | 
						
						
						
							|  |  |       else
 | 
						
						
						
							|  |  |         rep.update_attribute(:name, params[:name])
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     render :json => {success: "true"}
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # type: 1表示新建sub_repertoire, 2表示新建tag_repertoire
 | 
						
						
						
							|  |  |   def create_sub_or_tag_repertoire
 | 
						
						
						
							|  |  |     type = params[:type].to_i
 | 
						
						
						
							|  |  |     if type == 1
 | 
						
						
						
							|  |  |       SubRepertoire.create(:name => params[:name], :repertoire_id => params[:id])
 | 
						
						
						
							|  |  |     elsif type == 2
 | 
						
						
						
							|  |  |       TagRepertoire.create(:name =>params[:name], :sub_repertoire_id => params[:id])
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js{redirect_to tech_system_managements_path}
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def delete_sub_tech_system
 | 
						
						
						
							|  |  |     sub_tech = SubRepertoire.where(:id => params[:sub_res]).first
 | 
						
						
						
							|  |  |     tech = Repertoire.where(:id => params[:sub_res]).first
 | 
						
						
						
							|  |  |     if sub_tech.present?
 | 
						
						
						
							|  |  |       sub_tech.destroy
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       tech.destroy
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     redirect_to tech_system_managements_path
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def create_tech_system
 | 
						
						
						
							|  |  |     if params[:index] == "1"
 | 
						
						
						
							|  |  |       Repertoire.create(:name => params[:res_tech])
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       SubRepertoire.create(:name => params[:sub_tech], :repertoire_id => params[:tech])
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     redirect_to tech_system_managements_path
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def rename_tech_system
 | 
						
						
						
							|  |  |     @sub_res = SubRepertoire.where(:id => params[:sub_res]).present? ? SubRepertoire.where(:id => params[:sub_res]).first : "0"
 | 
						
						
						
							|  |  |     @res = Repertoire.where(:id => params[:res]).first
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def update_tech_system
 | 
						
						
						
							|  |  |     if params[:sub_tech] == "0"
 | 
						
						
						
							|  |  |       Repertoire.where(:id => params[:res]).update_all(:name => params[:update_res])
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       Repertoire.where(:id => params[:res]).update_all(:name => params[:update_res])
 | 
						
						
						
							|  |  |       SubRepertoire.where(:id => params[:sub_res]).update_all(:name => params[:update_sub_res])
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     redirect_to tech_system_managements_path
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def setting_banner
 | 
						
						
						
							|  |  |     @images = PortalImage.order("position asc")
 | 
						
						
						
							|  |  |     respond_to do |format|
 | 
						
						
						
							|  |  |       format.js
 | 
						
						
						
							|  |  |       format.html
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def create_portal_image
 | 
						
						
						
							|  |  |     PortalImage.create(:name => params[:name], :position => params[:position], :link => params[:link])
 | 
						
						
						
							|  |  |     redirect_to setting_banner_managements_path
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def create_school_image
 | 
						
						
						
							|  |  |     @school = School.find params[:school_id]
 | 
						
						
						
							|  |  |     SchoolImage.create(:name => params[:name], :position => params[:position], :link => params[:link], :school_id => params[:school_id])
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def update_school_image
 | 
						
						
						
							|  |  |     image = SchoolImage.find params[:id]
 | 
						
						
						
							|  |  |     image.update_attributes(:name => params[:name], :position => params[:position], :link => params[:link])
 | 
						
						
						
							|  |  |     @school = image.school
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def up_or_down_image
 | 
						
						
						
							|  |  |     image = PortalImage.find params[:id]
 | 
						
						
						
							|  |  |     image.update_attribute(:status, params[:status])
 | 
						
						
						
							|  |  |     redirect_to setting_banner_managements_path
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def up_or_down_school_image
 | 
						
						
						
							|  |  |     image = SchoolImage.find params[:id]
 | 
						
						
						
							|  |  |     image.update_attribute(:status, params[:status])
 | 
						
						
						
							|  |  |     @school = image.school
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def update_portal_image
 | 
						
						
						
							|  |  |     image = PortalImage.find params[:id]
 | 
						
						
						
							|  |  |     image.update_attributes(:name => params[:name], :position => params[:position], :link => params[:link])
 | 
						
						
						
							|  |  |     redirect_to setting_banner_managements_path
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def delete_portal_image
 | 
						
						
						
							|  |  |     image = PortalImage.find params[:id]
 | 
						
						
						
							|  |  |     image.destroy
 | 
						
						
						
							|  |  |     redirect_to setting_banner_managements_path
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def delete_school_image
 | 
						
						
						
							|  |  |     image = SchoolImage.find params[:id]
 | 
						
						
						
							|  |  |     @school = image.school
 | 
						
						
						
							|  |  |     image.destroy
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 课程删除
 | 
						
						
						
							|  |  |   before_filter :find_courselist, :only => [:destroy]
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   # 课程列表的删除
 | 
						
						
						
							|  |  |   def destroy
 | 
						
						
						
							|  |  |     if @courselist
 | 
						
						
						
							|  |  |       CourseList.where(:id => @courselist.id).destroy_all
 | 
						
						
						
							|  |  |       respond_to do |format|
 | 
						
						
						
							|  |  |         format.js
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  |   private
 | 
						
						
						
							|  |  |   # Find courselist of id params[:id]
 | 
						
						
						
							|  |  |   def find_courselist
 | 
						
						
						
							|  |  |     @courselist = CourseList.find_by_id(params[:id])
 | 
						
						
						
							|  |  |     render_404 if @courselist.nil?
 | 
						
						
						
							|  |  |   rescue ActiveRecord::RecordNotFound
 | 
						
						
						
							|  |  |     render_404
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def shixun_list_xls shixuns
 | 
						
						
						
							|  |  |     xls_report = StringIO.new
 | 
						
						
						
							|  |  |     book = Spreadsheet::Workbook.new
 | 
						
						
						
							|  |  |     sheet1 = book.create_worksheet :name => "sheet"
 | 
						
						
						
							|  |  |     blue = Spreadsheet::Format.new :color => :blue, :weight => :bold, :size => 10
 | 
						
						
						
							|  |  |     sheet1.row(0).default_format = blue
 | 
						
						
						
							|  |  |     sheet1.row(0).concat(["实训ID","实训名称","技术平台", "Fork源", "实践任务","选择题任务","挑战人数", "通关人数", "状态","创建者", "单位", "职业",  "关卡序号","关卡名称","技能标签"])
 | 
						
						
						
							|  |  |     count_row = 1
 | 
						
						
						
							|  |  |     shixuns.find_each do |shixun|
 | 
						
						
						
							|  |  |       sheet1[count_row, 0] = shixun.identifier
 | 
						
						
						
							|  |  |       sheet1[count_row, 1] = shixun.name
 | 
						
						
						
							|  |  |       sheet1[count_row, 2] = shixun.shixun_main_name
 | 
						
						
						
							|  |  |       sheet1[count_row, 3] = shixun.fork_identifier
 | 
						
						
						
							|  |  |       sheet1[count_row, 4] = shixun.challenges.practice_type.count
 | 
						
						
						
							|  |  |       sheet1[count_row, 5] = shixun.challenges.choose_type.count
 | 
						
						
						
							|  |  |       sheet1[count_row, 6] = shixun.myshixuns.count
 | 
						
						
						
							|  |  |       sheet1[count_row, 7] = shixun.myshixuns.finished.count
 | 
						
						
						
							|  |  |       sheet1[count_row, 8] = shixun.shixun_status
 | 
						
						
						
							|  |  |       sheet1[count_row, 9] = shixun.owner.show_real_name
 | 
						
						
						
							|  |  |       sheet1[count_row, 10] = shixun.owner.school_name
 | 
						
						
						
							|  |  |       sheet1[count_row, 11] = shixun.owner.identity
 | 
						
						
						
							|  |  |       shixun.challenges.each do |challenge|
 | 
						
						
						
							|  |  |         sheet1[count_row, 12] = "第#{challenge.position}关"
 | 
						
						
						
							|  |  |         sheet1[count_row, 13] = challenge.subject
 | 
						
						
						
							|  |  |         sheet1[count_row, 14] = challenge.tags_show
 | 
						
						
						
							|  |  |         count_row += 1
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |       count_row += 1
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     book.write xls_report
 | 
						
						
						
							|  |  |     xls_report.string
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def publish_shixun_list shixuns
 | 
						
						
						
							|  |  |     xls_report = StringIO.new
 | 
						
						
						
							|  |  |     book = Spreadsheet::Workbook.new
 | 
						
						
						
							|  |  |     sheet1 = book.create_worksheet :name => "sheet"
 | 
						
						
						
							|  |  |     blue = Spreadsheet::Format.new :color => :blue, :weight => :bold, :size => 10
 | 
						
						
						
							|  |  |     sheet1.row(0).default_format = blue
 | 
						
						
						
							|  |  |     sheet1.row(0).concat(["序号","创建者","发布时间", "ID", "实训名称","技术平台","fork源", "实践任务"])
 | 
						
						
						
							|  |  |     count_row = 1
 | 
						
						
						
							|  |  |     shixuns.find_each do |shixun|
 | 
						
						
						
							|  |  |       sheet1[count_row, 0] = count_row
 | 
						
						
						
							|  |  |       sheet1[count_row, 1] = shixun.owner.try(:show_real_name)
 | 
						
						
						
							|  |  |       sheet1[count_row, 2] = format_time shixun.publish_time
 | 
						
						
						
							|  |  |       sheet1[count_row, 3] = shixun.identifier
 | 
						
						
						
							|  |  |       sheet1[count_row, 4] = shixun.name
 | 
						
						
						
							|  |  |       sheet1[count_row, 5] = show_shixun_mirror(shixun)
 | 
						
						
						
							|  |  |       sheet1[count_row, 6] = shixun.fork_identifier
 | 
						
						
						
							|  |  |       sheet1[count_row, 7] = shixun.challenges.count
 | 
						
						
						
							|  |  |       count_row += 1
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     book.write xls_report
 | 
						
						
						
							|  |  |     xls_report.string
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def training_2018_xls trainings
 | 
						
						
						
							|  |  |     xls_report = StringIO.new
 | 
						
						
						
							|  |  |     book = Spreadsheet::Workbook.new
 | 
						
						
						
							|  |  |     sheet1 = book.create_worksheet :name => "sheet"
 | 
						
						
						
							|  |  |     blue = Spreadsheet::Format.new :color => :blue, :weight => :bold, :size => 10
 | 
						
						
						
							|  |  |     sheet1.row(0).default_format = blue
 | 
						
						
						
							|  |  |     sheet1.row(0).concat(["姓名", "手机号","邮箱","单位名称", "职位","专业", "学号", "支付方式","支付状态","支付时间", "发票类型", "发票抬头","税务登记号", "发票内容", "备注", "微信支付单号", "报名时间"])
 | 
						
						
						
							|  |  |     count_row = 1
 | 
						
						
						
							|  |  |     trainings.find_each do |t|
 | 
						
						
						
							|  |  |       sheet1[count_row, 0] = t.name
 | 
						
						
						
							|  |  |       sheet1[count_row, 1] = t.phone
 | 
						
						
						
							|  |  |       sheet1[count_row, 2] = t.email
 | 
						
						
						
							|  |  |       sheet1[count_row, 3] = t.school
 | 
						
						
						
							|  |  |       sheet1[count_row, 4] = t.position
 | 
						
						
						
							|  |  |       sheet1[count_row, 5] = t.major
 | 
						
						
						
							|  |  |       sheet1[count_row, 6] = t.student_id
 | 
						
						
						
							|  |  |       sheet1[count_row, 7] = t.training_payinfo.try(:pay_type_str)
 | 
						
						
						
							|  |  |       sheet1[count_row, 8] = t.training_payinfo.try(:pay_status_str)
 | 
						
						
						
							|  |  |       sheet1[count_row, 9] = format_time t.training_payinfo.try(:pay_time)
 | 
						
						
						
							|  |  |       sheet1[count_row, 10] = t.training_payinfo.try(:invoice_title).present? ? '需要' : '不需要'
 | 
						
						
						
							|  |  |       sheet1[count_row, 11] = t.training_payinfo.try(:invoice_title)
 | 
						
						
						
							|  |  |       sheet1[count_row, 12] = t.training_payinfo.try(:invoice_no)
 | 
						
						
						
							|  |  |       sheet1[count_row, 13] = t.training_payinfo.try(:invoice_content)
 | 
						
						
						
							|  |  |       sheet1[count_row, 14] = t.training_payinfo.try(:info)
 | 
						
						
						
							|  |  |       sheet1[count_row, 15] = t.training_payinfo.try(:out_trade_no)
 | 
						
						
						
							|  |  |       sheet1[count_row, 16] = format_time t.created_at
 | 
						
						
						
							|  |  |       count_row += 1
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     book.write xls_report
 | 
						
						
						
							|  |  |     xls_report.string
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def user_list_xls users
 | 
						
						
						
							|  |  |     xls_report = StringIO.new
 | 
						
						
						
							|  |  |     book = Spreadsheet::Workbook.new
 | 
						
						
						
							|  |  |     sheet1 = book.create_worksheet :name => "users"
 | 
						
						
						
							|  |  |     blue = Spreadsheet::Format.new :color => :blue, :weight => :bold, :size => 10
 | 
						
						
						
							|  |  |     sheet1.row(0).default_format = blue
 | 
						
						
						
							|  |  |     sheet1.row(0).concat(["用户姓名","性别","职业","职称","地区","	单位","子单位","注册时间","最后登录时间","授权"])
 | 
						
						
						
							|  |  |     count_row = 1
 | 
						
						
						
							|  |  |     users.each do |user|
 | 
						
						
						
							|  |  |       sheet1[count_row,0] = user.try(:show_real_name)
 | 
						
						
						
							|  |  |       sheet1[count_row,1] = user.sex
 | 
						
						
						
							|  |  |       sheet1[count_row,2] = user.user_extensions.try(:show_identity)
 | 
						
						
						
							|  |  |       sheet1[count_row,3] = user.job_title
 | 
						
						
						
							|  |  |       sheet1[count_row,4] = user.region_name
 | 
						
						
						
							|  |  |       sheet1[count_row,5] = user.user_extensions.try(:school).try(:name)
 | 
						
						
						
							|  |  |       sheet1[count_row,6] = user.user_extensions.try(:department).try(:name)
 | 
						
						
						
							|  |  |       sheet1[count_row,7] = format_time user.created_on
 | 
						
						
						
							|  |  |       sheet1[count_row,8] = format_time user.last_login_on
 | 
						
						
						
							|  |  |       sheet1[count_row,9] = user.trial_authorization
 | 
						
						
						
							|  |  |       count_row += 1
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     book.write xls_report
 | 
						
						
						
							|  |  |     xls_report.string
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def course_list_xls courses
 | 
						
						
						
							|  |  |     xls_report = StringIO.new
 | 
						
						
						
							|  |  |     book = Spreadsheet::Workbook.new
 | 
						
						
						
							|  |  |     sheet1 = book.create_worksheet :name => "course"
 | 
						
						
						
							|  |  |     blue = Spreadsheet::Format.new :color => :blue, :weight => :bold, :size => 10
 | 
						
						
						
							|  |  |     sheet1.row(0).default_format = blue
 | 
						
						
						
							|  |  |     sheet1.row(0).concat(["ID","课堂名称","成员","资源","普通作业","	实训作业","试卷","私有","状态","创建者单位","创建者","动态时间","创建时间"])
 | 
						
						
						
							|  |  |     count_row = 1
 | 
						
						
						
							|  |  |     courses.each do |course|
 | 
						
						
						
							|  |  |       school = course.teacher.try(:user_extensions).try(:school).try(:name).blank? ? "--" : course.teacher.school_name
 | 
						
						
						
							|  |  |       teacher_name = course.teacher ? course.teacher.show_real_name : ""
 | 
						
						
						
							|  |  |       sheet1[count_row,0] = course.id
 | 
						
						
						
							|  |  |       sheet1[count_row,1] = course.name
 | 
						
						
						
							|  |  |       sheet1[count_row,2] = course.members.count
 | 
						
						
						
							|  |  |       sheet1[count_row,3] = course.attachments.count
 | 
						
						
						
							|  |  |       sheet1[count_row,4] = course.homework_commons.where(:homework_type => 1).count
 | 
						
						
						
							|  |  |       sheet1[count_row,5] = course.homework_commons.where(:homework_type => 4).count
 | 
						
						
						
							|  |  |       sheet1[count_row,6] = course.exercises.count
 | 
						
						
						
							|  |  |       sheet1[count_row,7] = course.is_public.to_i == 1 ? '否' : '是'
 | 
						
						
						
							|  |  |       sheet1[count_row,8] = course.is_end ? "已结束" : "正在进行"
 | 
						
						
						
							|  |  |       sheet1[count_row,9] = school
 | 
						
						
						
							|  |  |       sheet1[count_row,10] = teacher_name
 | 
						
						
						
							|  |  |       sheet1[count_row,11] = format_time(course.updatetime)
 | 
						
						
						
							|  |  |       sheet1[count_row,12] = format_time(course.created_at)
 | 
						
						
						
							|  |  |       count_row += 1
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     book.write xls_report
 | 
						
						
						
							|  |  |     xls_report.string
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def shixun_task_xls shixun_task
 | 
						
						
						
							|  |  |     xls_report = StringIO.new
 | 
						
						
						
							|  |  |     book = Spreadsheet::Workbook.new
 | 
						
						
						
							|  |  |     sheet1 = book.create_worksheet :name => "course"
 | 
						
						
						
							|  |  |     blue = Spreadsheet::Format.new :color => :blue, :weight => :bold, :size => 10
 | 
						
						
						
							|  |  |     sheet1.row(0).default_format = blue
 | 
						
						
						
							|  |  |     sheet1.row(0).concat(["ID","课堂名称","创建者","学生","实训作业","序号", "ID", "关卡数","作业名称","发布时间","截至时间","已提交作品","有效作品","通关","状态"])
 | 
						
						
						
							|  |  |     count_row = 1
 | 
						
						
						
							|  |  |     shixun_task.each_with_index do |shixun_task,index|
 | 
						
						
						
							|  |  |       teacher_name = shixun_task.teacher ? shixun_task.teacher.show_real_name : ""
 | 
						
						
						
							|  |  |       sheet1[count_row,0] = shixun_task.id
 | 
						
						
						
							|  |  |       sheet1[count_row,1] = shixun_task.name
 | 
						
						
						
							|  |  |       sheet1[count_row,2] = teacher_name
 | 
						
						
						
							|  |  |       sheet1[count_row,3] = shixun_task.student.count
 | 
						
						
						
							|  |  |       sheet1[count_row,4] = get_shixun_task(shixun_task.id).count
 | 
						
						
						
							|  |  |       get_shixun_task(shixun_task.id).each_with_index do |gst, j|
 | 
						
						
						
							|  |  |         sheet1[count_row,5] = get_hw_index(gst, @is_teacher, 4) + 1
 | 
						
						
						
							|  |  |         sheet1[count_row,6] = gst.shixun.try(:identifier).nil? ? "--" : gst.shixun.try(:identifier)
 | 
						
						
						
							|  |  |         sheet1[count_row,7] = gst.shixun.challenges.count
 | 
						
						
						
							|  |  |         sheet1[count_row,8] = gst.name
 | 
						
						
						
							|  |  |         sheet1[count_row,9] = format_time(gst.publish_time)
 | 
						
						
						
							|  |  |         sheet1[count_row,10] = format_time(gst.end_time)
 | 
						
						
						
							|  |  |         sheet1[count_row,11] = had_commit_studentwork_count(gst)
 | 
						
						
						
							|  |  |         sheet1[count_row,12] = effective_shixun_work_count gst
 | 
						
						
						
							|  |  |         sheet1[count_row,13] = tongguan_shixun_work_count gst
 | 
						
						
						
							|  |  |         sheet1[count_row,14] = if HomeworkDetailManual.where(:homework_common_id => gst.id).first.comment_status == 0
 | 
						
						
						
							|  |  |             "未发布"
 | 
						
						
						
							|  |  |             elsif HomeworkDetailManual.where(:homework_common_id => gst.id).first.comment_status == 1
 | 
						
						
						
							|  |  |             "提交中"
 | 
						
						
						
							|  |  |             elsif HomeworkDetailManual.where(:homework_common_id => gst.id).first.comment_status == 3
 | 
						
						
						
							|  |  |             "匿评中"
 | 
						
						
						
							|  |  |             elsif HomeworkDetailManual.where(:homework_common_id => gst.id).first.comment_status == 4
 | 
						
						
						
							|  |  |             "申诉中"
 | 
						
						
						
							|  |  |             elsif HomeworkDetailManual.where(:homework_common_id => gst.id).first.comment_status == 5
 | 
						
						
						
							|  |  |             "评阅中"
 | 
						
						
						
							|  |  |             else HomeworkDetailManual.where(:homework_common_id => gst.id).first.comment_status == 6
 | 
						
						
						
							|  |  |             "已结束"
 | 
						
						
						
							|  |  |             end
 | 
						
						
						
							|  |  |         count_row += 1
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     book.write xls_report
 | 
						
						
						
							|  |  |     xls_report.string
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def readXlsData(xlsx)
 | 
						
						
						
							|  |  |     doc = SimpleXlsxReader.open(xlsx)
 | 
						
						
						
							|  |  |     sheet = doc.sheets.first
 | 
						
						
						
							|  |  |     return sheet.rows
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def shixun_feedback_xls shixun_ids, beginTime, endTime
 | 
						
						
						
							|  |  |     xls_report = StringIO.new
 | 
						
						
						
							|  |  |     book = Spreadsheet::Workbook.new
 | 
						
						
						
							|  |  |     sheet1 = book.create_worksheet :name => "实训反馈"
 | 
						
						
						
							|  |  |     blue = Spreadsheet::Format.new :color => :blue, :weight => :bold, :size => 10
 | 
						
						
						
							|  |  |     sheet1.row(0).default_format = blue
 | 
						
						
						
							|  |  |     count_row = 1
 | 
						
						
						
							|  |  |     shixuns = Shixun.where(:id => shixun_ids).includes(discusses: [:user])
 | 
						
						
						
							|  |  |     sheet1.row(0).concat(["序号", "实训ID", "实训名称", "实训作者", "作者单位", "评论数", "评论内容", "关卡", "评论者", "评论者职业",
 | 
						
						
						
							|  |  |                           "评论者单位", "评论时间", "社区导师是否已回复"])
 | 
						
						
						
							|  |  |     shixuns.each_with_index do |shixun, i|
 | 
						
						
						
							|  |  |       discusses = shixun.discusses.where("user_id != ?", 1)
 | 
						
						
						
							|  |  |       if beginTime.present?
 | 
						
						
						
							|  |  |         discusses = discusses.where("created_at >= '#{beginTime}'")
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |       if endTime.present?
 | 
						
						
						
							|  |  |         discusses = discusses.where("created_at <= '#{endTime}'")
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |       sheet1[count_row, 0] = i + 1
 | 
						
						
						
							|  |  |       sheet1[count_row, 1] = shixun.identifier
 | 
						
						
						
							|  |  |       sheet1[count_row, 2] = shixun.name
 | 
						
						
						
							|  |  |       sheet1[count_row, 3] = shixun.owner.show_real_name
 | 
						
						
						
							|  |  |       sheet1[count_row, 4] = shixun.owner.school_name
 | 
						
						
						
							|  |  |       sheet1[count_row, 5] = discusses.count
 | 
						
						
						
							|  |  |       discusses.each_with_index do |discuss, j|
 | 
						
						
						
							|  |  |         user = discuss.user
 | 
						
						
						
							|  |  |         content = discuss.content.gsub(/<img.*\/>/, "【图片评论】").gsub(/!\[\].+\)/, "【图片评论】")
 | 
						
						
						
							|  |  |         sheet1[count_row, 6] = strip_html content
 | 
						
						
						
							|  |  |         sheet1[count_row, 7] = "第#{discuss.position}关"
 | 
						
						
						
							|  |  |         sheet1[count_row, 8] = user.show_real_name
 | 
						
						
						
							|  |  |         sheet1[count_row, 9] = user.identity
 | 
						
						
						
							|  |  |         sheet1[count_row, 10] = user.school_name
 | 
						
						
						
							|  |  |         sheet1[count_row, 11] = format_time discuss.created_at
 | 
						
						
						
							|  |  |         sheet1[count_row, 12] = discuss.children.pluck(:user_id).include?(1) ? "是" : "否"
 | 
						
						
						
							|  |  |         count_row += 1
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |       #count_row += 1
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     book.write xls_report
 | 
						
						
						
							|  |  |     xls_report.string
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def competition_member_xls members, competition
 | 
						
						
						
							|  |  |     xls_report = StringIO.new
 | 
						
						
						
							|  |  |     book = Spreadsheet::Workbook.new
 | 
						
						
						
							|  |  |     sheet1 = book.create_worksheet :name => "报名列表"
 | 
						
						
						
							|  |  |     blue = Spreadsheet::Format.new :color => :blue, :weight => :bold, :size => 10
 | 
						
						
						
							|  |  |     sheet1.row(0).default_format = blue
 | 
						
						
						
							|  |  |     count_row = 1
 | 
						
						
						
							|  |  |     records = competition.competition_teams
 | 
						
						
						
							|  |  |     if competition.identifier == "gcc-annotation-2018"
 | 
						
						
						
							|  |  |       records.each do |team|
 | 
						
						
						
							|  |  |         team[:s_score] = team.competition_scores.where(:competition_id => competition.id).first.try(:score).to_f.try(:round, 3)
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |       records = records.sort do |a, b|
 | 
						
						
						
							|  |  |         [b[:s_score]] <=> [a[:s_score]]
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     elsif competition.identifier == "gcc-dev-2018"
 | 
						
						
						
							|  |  |       pre_stage = competition.competition_stages.where(:name => "预赛").first
 | 
						
						
						
							|  |  |       final_stage = competition.competition_stages.where(:name => "决赛").first
 | 
						
						
						
							|  |  |       records.each do |team|
 | 
						
						
						
							|  |  |         # 决赛记录
 | 
						
						
						
							|  |  |         f_score = team.competition_scores.where(:competition_stage_id => final_stage.try(:id)).first
 | 
						
						
						
							|  |  |         # 预赛记录
 | 
						
						
						
							|  |  |         p_score = team.competition_scores.where(:competition_stage_id => pre_stage.try(:id)).first
 | 
						
						
						
							|  |  |         team[:s_score] = (f_score.try(:score).to_f * 0.85 + p_score.try(:score).to_f * 0.15).try(:round, 2)
 | 
						
						
						
							|  |  |         team[:s_spend_time] = f_score.try(:cost_time).to_i + p_score.try(:cost_time).to_i
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |       records = records.sort do |a, b|
 | 
						
						
						
							|  |  |         [b[:s_score], a[:s_spend_time]] <=> [a[:s_score], b[:s_spend_time]]
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     elsif competition.identifier == 'hn'
 | 
						
						
						
							|  |  |       pre_stage = competition.competition_stages.where(:name => "预赛").first
 | 
						
						
						
							|  |  |       final_stage = competition.competition_stages.where(:name => "决赛").first
 | 
						
						
						
							|  |  |       records.each do |team|
 | 
						
						
						
							|  |  |         f_score = team.competition_scores.where(:competition_stage_id => final_stage.try(:id)).first
 | 
						
						
						
							|  |  |         p_score = team.competition_scores.where(:competition_stage_id => pre_stage.try(:id)).first
 | 
						
						
						
							|  |  |         team[:s_score] = (f_score.try(:score).to_f * 0.8 + p_score.try(:score).to_f * 0.2).try(:round, 2)
 | 
						
						
						
							|  |  |         team[:s_spend_time] = f_score.try(:cost_time).to_i + p_score.try(:cost_time).to_i
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |       records = records.sort do |a, b|
 | 
						
						
						
							|  |  |         [b[:s_score], a[:s_spend_time]] <=> [a[:s_score], b[:s_spend_time]]
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     if competition.max_num > 1
 | 
						
						
						
							|  |  |       sheet1.row(0).concat(["序号", "战队ID", "战队名称","指导老师", "队员姓名", "学号", "实名认证", "职业认证", "学校名称", "地区", "报名时间", "排名"])
 | 
						
						
						
							|  |  |       members.each_with_index do |member, index|
 | 
						
						
						
							|  |  |         member_user = member.user
 | 
						
						
						
							|  |  |         sheet1[count_row,0] = index + 1
 | 
						
						
						
							|  |  |         sheet1[count_row,1] = member.competition_team.try(:id)
 | 
						
						
						
							|  |  |         sheet1[count_row,2] = member.competition_team.try(:name)
 | 
						
						
						
							|  |  |         sheet1[count_row,3] = member.competition_team.teacher.try(:show_real_name)
 | 
						
						
						
							|  |  |         sheet1[count_row,4] = member_user.try(:show_real_name)
 | 
						
						
						
							|  |  |         sheet1[count_row,5] = member_user.try(:student_id)
 | 
						
						
						
							|  |  |         sheet1[count_row,6] = member_user.try(:authentication_status)
 | 
						
						
						
							|  |  |         sheet1[count_row,7] = member_user.try(:professional_status)
 | 
						
						
						
							|  |  |         sheet1[count_row,8] = member_user.try(:school_name)
 | 
						
						
						
							|  |  |         sheet1[count_row,9] = member_user.user_extensions.school.try(:province)
 | 
						
						
						
							|  |  |         sheet1[count_row,10] = format_time member.created_at
 | 
						
						
						
							|  |  |         sheet1[count_row,11] = records.present? ? (records.map(&:id).index(member.competition_team_id).to_i + 1) : "--"
 | 
						
						
						
							|  |  |         count_row += 1
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     else
 | 
						
						
						
							|  |  |       sheet1.row(0).concat(["序号","姓名","学号","实名认证", "职业认证", "学校名称","地区", "报名时间", "排名"])
 | 
						
						
						
							|  |  |       members.each_with_index do |member, index|
 | 
						
						
						
							|  |  |         member_user = member.user
 | 
						
						
						
							|  |  |         sheet1[count_row,0] = index + 1
 | 
						
						
						
							|  |  |         sheet1[count_row,1] = member_user.try(:show_real_name)
 | 
						
						
						
							|  |  |         sheet1[count_row,2] = member_user.try(:student_id)
 | 
						
						
						
							|  |  |         sheet1[count_row,3] = member_user.try(:authentication_status)
 | 
						
						
						
							|  |  |         sheet1[count_row,4] = member_user.try(:professional_status)
 | 
						
						
						
							|  |  |         sheet1[count_row,5] = member_user.try(:school_name)
 | 
						
						
						
							|  |  |         sheet1[count_row,6] = member_user.user_extensions.school.try(:province)
 | 
						
						
						
							|  |  |         sheet1[count_row,7] = format_time member.created_at
 | 
						
						
						
							|  |  |         sheet1[count_row,8] = records.present? ? (records.map(&:id).index(member.competition_team_id).to_i + 1) : "--"
 | 
						
						
						
							|  |  |         count_row += 1
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     book.write xls_report
 | 
						
						
						
							|  |  |     xls_report.string
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def published_subject_xls subjects
 | 
						
						
						
							|  |  |     xls_report = StringIO.new
 | 
						
						
						
							|  |  |     book = Spreadsheet::Workbook.new
 | 
						
						
						
							|  |  |     sheet1 = book.create_worksheet :name => "已发布实训课程"
 | 
						
						
						
							|  |  |     count_row = 2
 | 
						
						
						
							|  |  |     sheet1.row(1).concat(["", "地址", "实训课程名称","章节名称", "实训组成", "关卡数", "状态", "课程等级", "更新时间", "发布时间", ])
 | 
						
						
						
							|  |  |     Rails.logger.warn("##########subjects:#{subjects.count}")
 | 
						
						
						
							|  |  |     subjects.each do |subject|
 | 
						
						
						
							|  |  |       sheet1[count_row,1] = "paths/"+subject.id.to_s
 | 
						
						
						
							|  |  |       sheet1[count_row,2] = subject.name
 | 
						
						
						
							|  |  |       if subject.stages.count > 0
 | 
						
						
						
							|  |  |         subject.stages.each_with_index do |stage, s_index|
 | 
						
						
						
							|  |  |           sheet1[count_row,3] = stage.name
 | 
						
						
						
							|  |  |           if stage.shixuns.count > 0
 | 
						
						
						
							|  |  |             stage.shixuns.each_with_index do |shixun, index|
 | 
						
						
						
							|  |  |               sheet1[count_row,4] = "#{s_index + 1}-#{index + 1}  #{shixun.name}"
 | 
						
						
						
							|  |  |               sheet1[count_row,5] = shixun.challenges.count
 | 
						
						
						
							|  |  |               sheet1[count_row,6] = shixun.shixun_status
 | 
						
						
						
							|  |  |               if s_index == 0 && index == 0
 | 
						
						
						
							|  |  |                 sheet1[count_row,7] = subject.subject_level_system.try(:name) || "--"
 | 
						
						
						
							|  |  |                 sheet1[count_row,8] = format_time subject.updated_at
 | 
						
						
						
							|  |  |                 sheet1[count_row,9] = format_time subject.publish_time
 | 
						
						
						
							|  |  |               end
 | 
						
						
						
							|  |  |               count_row += 1
 | 
						
						
						
							|  |  |             end
 | 
						
						
						
							|  |  |           else
 | 
						
						
						
							|  |  |             if s_index == 0
 | 
						
						
						
							|  |  |               sheet1[count_row,7] = subject.subject_level_system.try(:name) || "--"
 | 
						
						
						
							|  |  |               sheet1[count_row,8] = format_time subject.updated_at
 | 
						
						
						
							|  |  |               sheet1[count_row,9] = format_time subject.publish_time
 | 
						
						
						
							|  |  |             end
 | 
						
						
						
							|  |  |             count_row += 1
 | 
						
						
						
							|  |  |           end
 | 
						
						
						
							|  |  |         end
 | 
						
						
						
							|  |  |       else
 | 
						
						
						
							|  |  |         sheet1[count_row,7] = subject.subject_level_system.try(:name) || "--"
 | 
						
						
						
							|  |  |         sheet1[count_row,8] = format_time subject.updated_at
 | 
						
						
						
							|  |  |         sheet1[count_row,9] = format_time subject.publish_time
 | 
						
						
						
							|  |  |         count_row += 1
 | 
						
						
						
							|  |  |       end
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |     book.write xls_report
 | 
						
						
						
							|  |  |     xls_report.string
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  |   def member_json_data mmebers
 | 
						
						
						
							|  |  |     mmebers.map do |member|
 | 
						
						
						
							|  |  |       real_name = member.show_real_name
 | 
						
						
						
							|  |  |       identity = member.identity
 | 
						
						
						
							|  |  |       school_name = member.school_name
 | 
						
						
						
							|  |  |       user_phone = member.phone || ""
 | 
						
						
						
							|  |  |       member.attributes.dup.except("login", "hashed_password", "salt", "status", "mail", "experience", "grade",
 | 
						
						
						
							|  |  |                                    "authentication", "professional_certification").merge({real_name: real_name,
 | 
						
						
						
							|  |  |                                                                                           identity: identity,
 | 
						
						
						
							|  |  |                                                                                           school_name: school_name,
 | 
						
						
						
							|  |  |                                                                                           user_phone: user_phone})
 | 
						
						
						
							|  |  |     end
 | 
						
						
						
							|  |  |   end
 | 
						
						
						
							|  |  | 
 | 
						
						
						
							|  |  | end
 |