diff --git a/Gemfile b/Gemfile
index 11029470..7909cb17 100644
--- a/Gemfile
+++ b/Gemfile
@@ -63,8 +63,8 @@ gem 'elasticsearch-rails'
gem 'oauth2'
# xlsx
-#gem 'axlsx', '3.0.0.pre'
-#gem 'axlsx_rails', '0.3.0'
+gem 'axlsx', '3.0.0.pre'
+gem 'axlsx_rails', '0.3.0'
#Ruby 2.2+ has removed test/unit from the core library.
if RUBY_VERSION>='2.2'
diff --git a/app/api/mobile/api.rb b/app/api/mobile/api.rb
index eefedb5b..894ba099 100644
--- a/app/api/mobile/api.rb
+++ b/app/api/mobile/api.rb
@@ -34,9 +34,9 @@ module Mobile
version 'v1', using: :path
format :json
content_type :json, "application/json;charset=UTF-8"
- # use ActionDispatch::Session::CookieStore
-
+ #use ActionDispatch::Session::CookieStore, :expire_after => 8.hours, :key => '_educoder_session', :domain => :all
+ require 'digest'
use Mobile::Middleware::ErrorHandler
helpers do
@@ -53,6 +53,27 @@ module Mobile
error!('401 Unauthorized', 401) if params[:private_token] != "hriEn3UwXfJs3PmyXnSG"
end
+ def cnmooc_access_key!
+ ## 签名
+ accessKeyId = 'LTAISM4HFWpQHh3g'.freeze
+ accessKeySecret = '9NMU8ushmFu8SN1EKHOhvo9jmv1qp0'.freeze
+ str = []
+ params.each do |key, value|
+ if key != "sign"
+ str << "#{key}=#{value}"
+ end
+ end
+ sign_str = "#{str.join("&")}&sk=#{accessKeySecret}"
+ Rails.logger.info("#####sign_str: #{sign_str}")
+ sign = Digest::MD5.hexdigest("#{sign_str}").upcase
+ Rails.logger.info("#####sign: #{sign}")
+ Rails.logger.info("#####params[:sign]: #{params[:sign]}")
+
+ if params[:sign] != sign
+ error!('401 Unauthorized', 401)
+ end
+ end
+
# 有一些接口没登录也能查看数据
def career_authenticate!
pass = request.path.include?("introduction") || request.path.include?("get_published_careers")|| request.path.include?("get_current_user")
@@ -62,6 +83,9 @@ module Mobile
end
def memo_authenticate!
+ Rails.logger.info("#######current_user: ###{current_user}")
+ Rails.logger.info("#######session: ###{session[:user_id]}")
+
pass = (request.path.match(/memos\/\d+/).present? && !request.path.include?("reply")) ||
request.path.include?("get_memos_list") ||
request.path.include?("memos?page=") || request.path.match(/memos$/).present?
@@ -73,6 +97,8 @@ module Mobile
end
def discusses_authenticate!
+ Rails.logger.info("#######current_user: ###{current_user}")
+ Rails.logger.info("#######session: ###{session[:user_id]}")
pass = request.path.match(/discusses$/).present? || request.path.include?("discusses?page=")
unless pass
error!('401 Unauthorized', 401) unless current_user
@@ -99,6 +125,13 @@ module Mobile
return uw.user if uw
end
+ # third_party_user_id = session[:third_party_user_id]
+ # Rails.logger.info("#########third_party_user_id: #{third_party_user_id}")
+ # if third_party_user_id
+ # c_user = UserSource.find_by_id(session[:third_party_user_id])
+ # return c_user.user if c_user
+ # end
+
token = ApiKey.where(access_token: params[:token]).first
if token && !token.expired?
return User.find(token.user_id)
@@ -106,7 +139,9 @@ module Mobile
#
Rails.logger.info("########### host is #{request.host}")
- if (Rails.env.development? && session[:user_id].blank?) || (session[:user_id].blank? && request.host.include?("testbdweb")) || params[:action] == "privateGit"
+ if (Rails.env.development? && session[:user_id].blank?) ||
+ (session[:user_id].blank? && request.host.include?("testbdweb")) ||
+ params[:action] == "privateGit"
session[:user_id] = 12 #116
end
@@ -160,6 +195,7 @@ module Mobile
mount Apis::Careers
mount Apis::Assets
mount Apis::Ecloud
+ mount Apis::Cnmooc
diff --git a/app/api/mobile/apis/cnmooc.rb b/app/api/mobile/apis/cnmooc.rb
new file mode 100644
index 00000000..21585ea0
--- /dev/null
+++ b/app/api/mobile/apis/cnmooc.rb
@@ -0,0 +1,84 @@
+# encoding=utf-8
+# 好大学接口数据
+module Mobile
+ module Apis
+ class Cnmooc < Grape::API
+ # before {cnmooc_access_key!}
+ content_type :json, 'application/json;charset=UTF-8'
+
+ resources :cnmoocs do
+ desc '获取实训数据'
+ get "get_resources_data" do
+ CnmoocsService.new.get_resources_data params
+ end
+
+ desc "实训搜索功能"
+ params do
+ requires :name, type: String, desc: "搜索名称"
+ end
+ get 'search_resources' do
+ CnmoocsService.new.search_resources params
+ end
+
+ desc " 查找用户"
+ params do
+ requires :userName, type: String, desc: "好大学用户名"
+ end
+ get 'find_user' do
+ CnmoocsService.new.find_user params
+ end
+
+ desc "创建用户"
+ params do
+ requires :userName, type: String, desc: "好大学用户名"
+ end
+ post "create_user" do
+ CnmoocsService.new.create_user params
+ end
+
+ desc "获取资源访问地址"
+ params do
+ requires :userId, type: Integer, desc: "用户ID"
+ requires :resourceId, type: String, desc: "资源唯一标示"
+ requires :accessType, type: Integer, desc: "资源类型"
+ end
+ get "source_url" do
+ user = User.find_by_id(params[:userId])
+ return {error: -1, messages: "用户不存在,请先创建用户"} unless user
+ token = Token.get_or_create_permanent_login_token(user)
+ cookie_options = {
+ :value => token.value,
+ :expires => 1.month.from_now,
+ :path => (Redmine::Configuration['autologin_cookie_path'] || '/'),
+ :secure => (Redmine::Configuration['autologin_cookie_secure'] ? true : false),
+ :httponly => true
+ }
+ if Redmine::Configuration['cookie_domain'].present?
+ cookie_options = cookie_options.merge(domain: Redmine::Configuration['cookie_domain'])
+ end
+ cookies[Redmine::Configuration['autologin_cookie_name'].presence || 'autologin'] = cookie_options
+ CnmoocsService.new.source_url(params, token)
+ end
+
+ desc "远程登录"
+ params do
+ requires :mail, type: String, desc: "邮箱地址"
+ requires :password, type: String, desc: "密码"
+ end
+ get "login_educoder" do
+ CnmoocsService.new.login_educoder params
+ end
+
+ desc "资源学习情况查询"
+ params do
+ requires :userId, type: Integer, desc: "用户ID"
+ requires :resourceId, type: String, desc: "资源唯一标示"
+ end
+ get 'get_students_data' do
+ CnmoocsService.new.get_students_data params
+ end
+
+ end
+ end
+ end
+end
\ No newline at end of file
diff --git a/app/controllers/account_controller.rb b/app/controllers/account_controller.rb
index 60096a22..128475e6 100644
--- a/app/controllers/account_controller.rb
+++ b/app/controllers/account_controller.rb
@@ -456,7 +456,9 @@ class AccountController < ApplicationController
@pref = @user.pref
@se = @user.extensions
- # 已授权的用户修改单位名称,需要重新授权
+ old_identity = @se.identity
+
+ # 已授权的用户修改单位名称,需要重新授权
if @se.school_id != params[:occupation].to_i && @user.certification == 1
@user.certification = 0
apply_user = ApplyAction.where(:user_id => @user.id, :container_type => "TrialAuthorization")
@@ -510,10 +512,15 @@ class AccountController < ApplicationController
@se.technical_title = params[:pro_technical_title] if params[:pro_technical_title]
@se.student_id = nil
end
+
# @se.brief_introduction = params[:brief_introduction]
if @user.save && @se.save
+ if old_identity.nil? && @se.identity == 0
+ Trustie::Sms.send(mobile: '17680641960', send_type:'teacher_register', name: @user.login, user_name: "管理员")
+ end
+
reward_grade(@user, @user.id, 'Account', 500)
if @user.certification != 1
diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index 435c71fc..601ebb8a 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -66,6 +66,8 @@ class ApplicationController < ActionController::Base
include Redmine::MenuManager::MenuController
helper Redmine::MenuManager::MenuHelper
+ helper_method :admin_or_business?
+
# 云启训练场(EduCoder)个人版 产品编码(appId) 9200108
# 产品名称 计费类型 套餐编码
# 云启训练场(EduCoder)个人版 固定包月 9200108001
@@ -133,7 +135,7 @@ class ApplicationController < ActionController::Base
end
def ec_public_auth major_school
- unless User.current.admin? || major_school.template_major || major_school.school.users.where(:id => User.current.id).count > 0 ||
+ unless admin_or_business? || major_school.template_major || major_school.school.users.where(:id => User.current.id).count > 0 ||
major_school.ec_major_school_users.where(:user_id => User.current.id).count > 0 ||
EcCourseUser.where(:user_id => User.current.id, :ec_course_id => EcCourse.where(:ec_year_id => major_school.ec_years.pluck(:id)).pluck(:id)).count > 0
render_403
@@ -193,6 +195,21 @@ class ApplicationController < ActionController::Base
find_current_user
end
+ def set_autologin_cookie(user)
+ token = Token.get_or_create_permanent_login_token(user)
+ cookie_options = {
+ :value => token.value,
+ :expires => 1.month.from_now,
+ :path => (Redmine::Configuration['autologin_cookie_path'] || '/'),
+ :secure => (Redmine::Configuration['autologin_cookie_secure'] ? true : false),
+ :httponly => true
+ }
+ if Redmine::Configuration['cookie_domain'].present?
+ cookie_options = cookie_options.merge(domain: Redmine::Configuration['cookie_domain'])
+ end
+ cookies[autologin_cookie_name] = cookie_options
+ end
+
def find_current_user
user = nil
unless api_request?
@@ -207,6 +224,11 @@ class ApplicationController < ActionController::Base
elsif session[:wechat_openid]
uw = UserWechat.find_by_openid(session[:wechat_openid])
user = uw.user if uw
+ elsif params[:authToken]
+ user = Token.find_by_value(params[:authToken]).user
+ #set_autologin_cookie(user)
+ #start_user_session(user)
+ session[:user_id] = user.id
end
end
if user.nil? && Setting.rest_api_enabled? && accept_api_auth?
@@ -332,6 +354,8 @@ class ApplicationController < ActionController::Base
end
def require_login
+ logger.info("#########login?: #{User.current.logged?}")
+ logger.info("#########get?: #{request.get?}")
if !User.current.logged?
# Extract only the basic url parameters on non-GET requests
if request.get?
@@ -368,6 +392,10 @@ class ApplicationController < ActionController::Base
end
end
+ def admin_or_business?
+ User.current.business? || User.current.admin?
+ end
+
def deny_access
User.current.logged? ? render_403 : require_login
end
diff --git a/app/controllers/careers_controller.rb b/app/controllers/careers_controller.rb
index 081bce0f..9c10a3fd 100644
--- a/app/controllers/careers_controller.rb
+++ b/app/controllers/careers_controller.rb
@@ -27,6 +27,6 @@ class CareersController < ApplicationController
private
def render_react
- render "/common/index", :layout => false
+ render file: 'public/react/build/index.html', :layout => false
end
end
diff --git a/app/controllers/categories_controller.rb b/app/controllers/categories_controller.rb
index 05b36ba3..cc290d8c 100644
--- a/app/controllers/categories_controller.rb
+++ b/app/controllers/categories_controller.rb
@@ -32,6 +32,6 @@ class CategoriesController < ApplicationController
private
def render_react
- render "/common/index", :layout => false
+ render file: 'public/react/build/index.html', :layout => false
end
end
diff --git a/app/controllers/challenges_controller.rb b/app/controllers/challenges_controller.rb
index bf01ffb0..3322f1f2 100644
--- a/app/controllers/challenges_controller.rb
+++ b/app/controllers/challenges_controller.rb
@@ -16,6 +16,7 @@ class ChallengesController < ApplicationController
#before_filter :find_shixun_language, :only => [:show, :new, :edit]
before_filter :base_index, :only => [:index, :index_down, :index_up, :destroy]
before_filter :view_allow, :only => [:show]
+ # before_filter :check_cnmooc, :only => [:index]
include ApplicationHelper
@@ -487,4 +488,12 @@ class ChallengesController < ApplicationController
response.headers['content--type'] = 'text/javascript'
request.format = 'js'
end
+
+ # def check_cnmooc
+ # if params[:authToken]
+ # user = User.find_by_id(session[:user_id])
+ # set_autologin_cookie(user)
+ # end
+ # end
+
end
diff --git a/app/controllers/colleges_controller.rb b/app/controllers/colleges_controller.rb
index fff508a8..418015fd 100644
--- a/app/controllers/colleges_controller.rb
+++ b/app/controllers/colleges_controller.rb
@@ -50,7 +50,7 @@ class CollegesController < ApplicationController
# Redo:这样做内存会卡死的
# user_ids = User.find_by_sql("SELECT users.id FROM users LEFT JOIN user_extensions ON users.id=user_extensions.user_id WHERE user_extensions.`school_id` = #{@school.id}").map(&:id)
# Redo:是否直接使用count会更好
- all_course_ids = Course.joins("join users u on courses.tea_id = u.id").joins("join user_extensions ue on u.id = ue.user_id").where("courses.id != 1309 and ue.school_id = #{@school.id}")
+ all_course_ids = Course.where("id != 1309 and is_delete = 0 and school_id = #{@school.id}")
@courses_count = all_course_ids.size
# Redo:对于量比较大的尽量不使用笛卡尔积
@@ -131,7 +131,7 @@ class CollegesController < ApplicationController
(select count(m.id) from messages m inner join boards b on b.id=m.board_id and b.parent_id=0 where b.course_id=c.id group by c.id) as messages_count,
c.tea_id, c.name, c.is_end,
(SELECT MAX(created_at) FROM `course_activities` ca WHERE ca.course_id = c.id) AS update_time
- FROM `courses` c WHERE (c.school_id = #{@school.id} and c.is_delete = 0)")
+ FROM `courses` c WHERE c.school_id = #{@school.id} and c.is_delete = 0")
@courses.each do |course|
course[:evaluating_count] = Output.find_by_sql("select sum(g.evaluate_count) as evaluating_count from games g inner join
diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb
index e87c7297..669cc58f 100644
--- a/app/controllers/courses_controller.rb
+++ b/app/controllers/courses_controller.rb
@@ -577,7 +577,7 @@ class CoursesController < ApplicationController
cha_member.member_roles.where("role_id = 10").first.destroy
StudentsForCourse.where(:course_id => @course.id, :student_id => cha_member.user_id).destroy_all
end
- @course.update_attributes(:tea_id => cha_member.user_id)
+ @course.update_attributes(:tea_id => cha_member.user_id, :school_id => cha_member.user.try(:user_extensions).try(:school_id))
man_member.member_roles.first.update_attributes(:role_id => 9)
course_act = CourseActivity.where(:course_id => @course.id, :course_act_id => @course.id, :course_act_type => 'Course').first
course_act.update_column('user_id', cha_member.user_id)
diff --git a/app/controllers/ec_course_achievement_methods_controller.rb b/app/controllers/ec_course_achievement_methods_controller.rb
index ecc74a67..5dcdfea8 100644
--- a/app/controllers/ec_course_achievement_methods_controller.rb
+++ b/app/controllers/ec_course_achievement_methods_controller.rb
@@ -309,7 +309,7 @@ class EcCourseAchievementMethodsController < ApplicationController
@ec_course = EcCourse.find(params[:ec_course_id])
@year = @ec_course.ec_year
@ec_major_school = @year.ec_major_school
- @template_major = User.current.admin? || @ec_major_school.school.ec_school_users.pluck(:user_id).include?(User.current.id) ||
+ @template_major = admin_or_business? || @ec_major_school.school.ec_school_users.pluck(:user_id).include?(User.current.id) ||
@ec_major_school.ec_major_school_users.pluck(:user_id).include?(User.current.id)
@is_manager = @template_major || @ec_course.ec_course_users.pluck(:user_id).include?(User.current.id)
end
diff --git a/app/controllers/ec_course_evaluations_controller.rb b/app/controllers/ec_course_evaluations_controller.rb
index bf47d16e..f2a54e6f 100644
--- a/app/controllers/ec_course_evaluations_controller.rb
+++ b/app/controllers/ec_course_evaluations_controller.rb
@@ -298,7 +298,7 @@ class EcCourseEvaluationsController < ApplicationController
def find_course
@ec_course = EcCourse.find params[:ec_course_id]
ec_major_school = @ec_course.ec_year.ec_major_school
- @is_manager = User.current.admin? || ec_major_school.school.ec_school_users.pluck(:user_id).include?(User.current.id) ||
+ @is_manager = admin_or_business? || ec_major_school.school.ec_school_users.pluck(:user_id).include?(User.current.id) ||
ec_major_school.ec_major_school_users.pluck(:user_id).include?(User.current.id) || @ec_course.ec_course_users.pluck(:user_id).include?(User.current.id)
end
@@ -306,7 +306,7 @@ class EcCourseEvaluationsController < ApplicationController
@ce = EcCourseEvaluation.find params[:id]
@ec_course = @ce.ec_course
ec_major_school = @ec_course.ec_year.ec_major_school
- @is_manager = User.current.admin? || ec_major_school.school.ec_school_users.pluck(:user_id).include?(User.current.id) ||
+ @is_manager = admin_or_business? || ec_major_school.school.ec_school_users.pluck(:user_id).include?(User.current.id) ||
ec_major_school.ec_major_school_users.pluck(:user_id).include?(User.current.id) || @ec_course.ec_course_users.pluck(:user_id).include?(User.current.id)
end
end
diff --git a/app/controllers/ec_course_supports_controller.rb b/app/controllers/ec_course_supports_controller.rb
index 6bb0288b..39b7d06b 100644
--- a/app/controllers/ec_course_supports_controller.rb
+++ b/app/controllers/ec_course_supports_controller.rb
@@ -50,7 +50,7 @@ class EcCourseSupportsController < ApplicationController
max_support_count = 0
subitems_count = 0
major_school = @year.ec_major_school
- is_manager = User.current.admin? || major_school.school.ec_school_users.pluck(:user_id).include?(User.current.id) || major_school.ec_major_school_users.pluck(:user_id).include?(User.current.id)
+ is_manager = admin_or_business? || major_school.school.ec_school_users.pluck(:user_id).include?(User.current.id) || major_school.ec_major_school_users.pluck(:user_id).include?(User.current.id)
ec_graduation_requirements.each_with_index do |gr, i|
logger.info("#############index:#{i}#####_ec_gradiation_reqiorements: #{gr.id}")
subitems_count += gr.ec_graduation_subitems.count
diff --git a/app/controllers/ec_courses_controller.rb b/app/controllers/ec_courses_controller.rb
index a81d6796..8ad9f4e4 100644
--- a/app/controllers/ec_courses_controller.rb
+++ b/app/controllers/ec_courses_controller.rb
@@ -88,7 +88,7 @@ class EcCoursesController < ApplicationController
def ec_course_support_setting
respond_to do |format|
format.html {
- render "/common/index", :layout => false
+ render file: 'public/react/build/index.html', :layout => false
}
format.json {
course_targets = @ec_course.ec_course_targets.includes(:ec_graduation_subitems)
@@ -152,19 +152,19 @@ class EcCoursesController < ApplicationController
# 课程体系(课程考核与数据来源)
# /ec_courses/1/ec_course_reach_setting
def ec_course_reach_setting
- render "/common/index", :layout => false
+ render file: 'public/react/build/index.html', :layout => false
end
# 课程体系(课程目标评价方法)
# /ec_courses/1/evaluation_methods
def evaluation_methods
- render "/common/index", :layout => false
+ render file: 'public/react/build/index.html', :layout => false
end
# 课程达成详情(蓝胡12)
# GET /ec_courses/1/competition_calculation_info
def competition_calculation_info
- render "/common/index", :layout => false
+ render file: 'public/react/build/index.html', :layout => false
end
# 评价详情的导出
@@ -346,7 +346,7 @@ class EcCoursesController < ApplicationController
# 关联课堂弹框-搜索
def search_courses
user = User.where(:id => params[:user_id]).first
- if user.try(:admin?)
+ if user.try(:admin?) || user.try(:business?)
courses = Course.where(:is_delete => 0)
else
course_ids = Member.where("user_id = #{user.try(:id)} and course_id != -1").pluck(:course_id)
@@ -425,7 +425,7 @@ class EcCoursesController < ApplicationController
format.html{
Rails.logger.info("1111111111111111111template_major: #{@template_major}")
Rails.logger.info("1111111111111111111is_manager: #{@is_manager}")
- render "/common/index", :layout => false
+ render file: 'public/react/build/index.html', :layout => false
}
format.json{
levels = @ec_course.ec_score_levels
@@ -588,7 +588,7 @@ class EcCoursesController < ApplicationController
@ec_course = EcCourse.find(params[:id])
@year = @ec_course.ec_year
@ec_major_school = @year.ec_major_school
- @template_major = User.current.admin? || @ec_major_school.school.ec_school_users.pluck(:user_id).include?(User.current.id) ||
+ @template_major = admin_or_business? || @ec_major_school.school.ec_school_users.pluck(:user_id).include?(User.current.id) ||
@ec_major_school.ec_major_school_users.pluck(:user_id).include?(User.current.id)
@is_manager = @template_major || @ec_course.ec_course_users.pluck(:user_id).include?(User.current.id)
end
@@ -596,7 +596,7 @@ class EcCoursesController < ApplicationController
def find_year
@year = EcYear.find(params[:ec_year_id])
@ec_major_school = @year.ec_major_school
- @template_major = User.current.admin? || @ec_major_school.school.ec_school_users.pluck(:user_id).include?(User.current.id) ||
+ @template_major = admin_or_business? || @ec_major_school.school.ec_school_users.pluck(:user_id).include?(User.current.id) ||
@ec_major_school.ec_major_school_users.pluck(:user_id).include?(User.current.id)
#@is_manager = @template_major || @ec_course.ec_course_users.pluck(:user_id).include?(User.current.id)
end
diff --git a/app/controllers/ec_graduation_requirements_controller.rb b/app/controllers/ec_graduation_requirements_controller.rb
index ea0f5464..091588cd 100644
--- a/app/controllers/ec_graduation_requirements_controller.rb
+++ b/app/controllers/ec_graduation_requirements_controller.rb
@@ -34,7 +34,7 @@ class EcGraduationRequirementsController < ApplicationController
ActiveRecord::Base.transaction do
@year = EcYear.find params[:year_id]
position = @year.ec_graduation_requirements ? @year.ec_graduation_requirements.count + 1 : 1
- @template_major = User.current.admin? || @year.ec_major_school.school.ec_school_users.pluck(:user_id).include?(User.current.id)
+ @template_major = admin_or_business? || @year.ec_major_school.school.ec_school_users.pluck(:user_id).include?(User.current.id)
ec_requirement_id = EcGraduationRequirement.create(content: params[:requirement], :ec_year_id => @year.id, :position => position)
params[:subitems].try(:each_with_index) do |sub, index|
EcGraduationSubitem.create(content: sub, ec_graduation_requirement_id: ec_requirement_id.id, position: index+1)
@@ -48,7 +48,7 @@ class EcGraduationRequirementsController < ApplicationController
def update
requirement = EcGraduationRequirement.find params[:id]
@year = requirement.ec_year
- @template_major = User.current.admin? || @year.ec_major_school.school.ec_school_users.pluck(:user_id).include?(User.current.id)
+ @template_major = admin_or_business? || @year.ec_major_school.school.ec_school_users.pluck(:user_id).include?(User.current.id)
requirement.update_attribute(:content, params[:requirement])
requirement.ec_graduation_subitems.destroy_all
params[:subitems].try(:each_with_index) do |sub, index|
diff --git a/app/controllers/ec_major_schools_controller.rb b/app/controllers/ec_major_schools_controller.rb
index c47899f6..dfeb9ce4 100644
--- a/app/controllers/ec_major_schools_controller.rb
+++ b/app/controllers/ec_major_schools_controller.rb
@@ -13,7 +13,7 @@ class EcMajorSchoolsController < ApplicationController
# 这个status 用于创建界别时,局部刷新的状态
@status = params[:status]
- @btn_text = @major_school.template_major && User.current.admin? ? "立即配置" :
+ @btn_text = @major_school.template_major && admin_or_business? ? "立即配置" :
(!@major_school.template_major && @major_manager ? "立即配置" : "查看")
if params[:search]
@@ -84,7 +84,7 @@ class EcMajorSchoolsController < ApplicationController
user_url = user_path(User.current)
year = @year.year
# 学校操作权限
- template_major = User.current.admin? || major.school.ec_school_users.pluck(:user_id).include?(User.current.id)
+ template_major = admin_or_business? || major.school.ec_school_users.pluck(:user_id).include?(User.current.id)
# 示例专业
example_major = major.template_major
ec_course_support_setting_url = ec_course_support_setting_ec_course_path(ec_course) if ec_course.present?
@@ -122,7 +122,7 @@ class EcMajorSchoolsController < ApplicationController
requirement_vs_objective_url: "#{requirement_vs_objective_ec_major_school_ec_year_path(@year, :ec_major_school_id => @year.ec_major_school_id)}",
requirement_vs_standard: "#{requirement_vs_standard_ec_major_school_ec_year_path(@year, :ec_major_school_id => @year.ec_major_school_id)}",
requirement_vs_courses: "#{requirement_vs_courses_ec_major_school_ec_year_path(@year, :ec_major_school_id => @year.ec_major_school_id)}",
- students_url: student_lists_ec_major_schools_ec_years_path(@year, ec_major_school_id: @year.ec_major_school_id),
+ students_url: student_lists_ec_major_school_ec_year_path(@year, ec_major_school_id: @year.ec_major_school_id),
go_back_url: ec_major_school_path(major),
ec_course_support_setting_url: ec_course_support_setting_url,
ec_course_reach_setting_url: ec_course_reach_setting_url,
@@ -130,7 +130,7 @@ class EcMajorSchoolsController < ApplicationController
competition_calculation_info_url: competition_calculation_info_url,
score_level_setting_url: score_level_setting_url,
example_major: example_major,
- allow_visit: User.current.admin? || (User.current.ec_school.present? && User.current.ec_school == major.school.id)
+ allow_visit: admin_or_business? || (User.current.ec_school.present? && User.current.ec_school == major.school.id)
}
end
@@ -159,7 +159,7 @@ class EcMajorSchoolsController < ApplicationController
end
def add_manager
- @is_school_manager = User.current.admin? || @major_school.school.users.where(:id => User.current.id).count > 0 # 学校管理员
+ @is_school_manager = admin_or_business? || @major_school.school.users.where(:id => User.current.id).count > 0 # 学校管理员
if @is_school_manager || @major_school.ec_major_school_users.where(:user_id => User.current.id).count > 0
params[:user_id].each do |user_id|
if @major_school.ec_major_school_users.count < 5 && @major_school.ec_major_school_users.where(:user_id => user_id).count == 0
@@ -172,7 +172,7 @@ class EcMajorSchoolsController < ApplicationController
end
def delete_manager
- @is_school_manager = User.current.admin? || @major_school.school.users.where(:id => User.current.id).count > 0 # 学校管理员
+ @is_school_manager = admin_or_business? || @major_school.school.users.where(:id => User.current.id).count > 0 # 学校管理员
if @is_school_manager || @major_school.ec_major_school_users.where(:user_id => User.current.id).count > 0
@major_school.ec_major_school_users.where(:user_id => params[:user_id]).destroy_all
else
@@ -184,7 +184,7 @@ class EcMajorSchoolsController < ApplicationController
def find_major_school
@major_school = EcMajorSchool.find(params[:id])
# 管理员权限
- @major_manager = User.current.admin? || @major_school.school.ec_school_users.pluck(:user_id).include?(User.current.id) || @major_school.ec_major_school_users.pluck(:user_id).include?(User.current.id)
+ @major_manager = admin_or_business? || @major_school.school.ec_school_users.pluck(:user_id).include?(User.current.id) || @major_school.ec_major_school_users.pluck(:user_id).include?(User.current.id)
end
# 职业认证的权限判断
diff --git a/app/controllers/ec_years_controller.rb b/app/controllers/ec_years_controller.rb
index c0c9483c..6baf5d58 100644
--- a/app/controllers/ec_years_controller.rb
+++ b/app/controllers/ec_years_controller.rb
@@ -25,7 +25,7 @@ class EcYearsController < ApplicationController
@status = 1
end
@major_manager = true
- @btn_text = @major_school.template_major && User.current.admin? ? "立即配置" :
+ @btn_text = @major_school.template_major && admin_or_business? ? "立即配置" :
(!@major_school.template_major && @major_manager ? "立即配置" : "查看")
@years = EcYear.where(:ec_major_school_id => @major_school.id)
@years = paginateHelper @years, 10
@@ -46,7 +46,7 @@ class EcYearsController < ApplicationController
def student_lists
respond_to do |format|
format.html {
- render "/common/index", :layout => false
+ render file: 'public/react/build/index.html', :layout => false
}
end
end
@@ -217,7 +217,7 @@ class EcYearsController < ApplicationController
# 本专业必要要求VS课程支撑体系
def requirement_vs_courses
- render "/common/index", :layout => false
+ render file: 'public/react/build/index.html', :layout => false
end
# 导出课程支撑体系
@@ -251,7 +251,7 @@ class EcYearsController < ApplicationController
# 课程达成点计算(蓝胡13)
# GET /ec_courses/1/competition_calculation_info
def reach_calculation_info
- render "/common/index", :layout => false
+ render file: 'public/react/build/index.html', :layout => false
end
# 蓝胡13数据获取
@@ -338,7 +338,7 @@ class EcYearsController < ApplicationController
@ec_major_school = EcMajorSchool.find(params[:ec_major_school_id])
@year = EcYear.find(params[:id])
# 专业管理员身份
- @template_major = User.current.admin? || @ec_major_school.school.ec_school_users.pluck(:user_id).include?(User.current.id) || @ec_major_school.ec_major_school_users.pluck(:user_id).include?(User.current.id)
+ @template_major = admin_or_business? || @ec_major_school.school.ec_school_users.pluck(:user_id).include?(User.current.id) || @ec_major_school.ec_major_school_users.pluck(:user_id).include?(User.current.id)
end
# 职业认证的权限判断
diff --git a/app/controllers/ecs_controller.rb b/app/controllers/ecs_controller.rb
index 172d13fc..5d391a5d 100644
--- a/app/controllers/ecs_controller.rb
+++ b/app/controllers/ecs_controller.rb
@@ -7,7 +7,7 @@ class EcsController < ApplicationController
def department
@template_major = EcMajorSchool.where(:template_major => true).first
@school_managers = @school.users
- @is_school_manager = User.current.admin? || @school.users.where(:id => User.current.id).count > 0 # 学校管理员
+ @is_school_manager = User.current.admin? || User.current.business? || @school.users.where(:id => User.current.id).count > 0 # 学校管理员
@major_schools = @school.ec_major_schools.where(:template_major => false)
unless @is_school_manager
@@ -70,7 +70,7 @@ class EcsController < ApplicationController
end
def school_manager
- unless User.current.admin? || @school.users.where(:id => User.current.id).count > 0
+ unless User.current.admin? || User.current.business? || @school.users.where(:id => User.current.id).count > 0
render_403
end
end
diff --git a/app/controllers/exercise_bank_controller.rb b/app/controllers/exercise_bank_controller.rb
index e4fa6727..6b8090dd 100644
--- a/app/controllers/exercise_bank_controller.rb
+++ b/app/controllers/exercise_bank_controller.rb
@@ -104,6 +104,7 @@ class ExerciseBankController < ApplicationController
:question_type => params[:question_type] || 1,
:question_number => @exercise.exercise_bank_questions.count + 1,
:question_score => params[:question_score],
+ :shixun_name => params[:question_type] == '5' ? params[:shixun_name] : nil,
:shixun_id => params[:shixun],
:max_choices => params[:max_choices].to_i || 0,
:min_choices => params[:min_choices].to_i || 0
@@ -271,6 +272,7 @@ class ExerciseBankController < ApplicationController
end
end
if @exercise_question.question_type == 5
+ @exercise_question.shixun_name = params[:shixun_name].strip if !params[:shixun_name].blank?
question_score = 0
@exercise_question.exercise_bank_shixun_challenges.each_with_index do |challenge, index|
challenge.question_score = params[:question_score][index]
diff --git a/app/controllers/exercise_controller.rb b/app/controllers/exercise_controller.rb
index 23024a78..ee5705fb 100644
--- a/app/controllers/exercise_controller.rb
+++ b/app/controllers/exercise_controller.rb
@@ -372,6 +372,7 @@ class ExerciseController < ApplicationController
:question_type => params[:question_type] || 1,
:question_number => @exercise.exercise_questions.count + 1,
:question_score => params[:question_type] == '5' ? 0 : params[:question_score],
+ :shixun_name => params[:question_type] == '5' ? params[:shixun_name] : nil,
:shixun_id => params[:shixun]
}
@exercise_questions = @exercise.exercise_questions.new option
@@ -512,6 +513,7 @@ class ExerciseController < ApplicationController
end
end
if @exercise_question.question_type == 5
+ @exercise_question.shixun_name = params[:shixun_name].strip if !params[:shixun_name].blank?
question_score = 0
@exercise_question.exercise_shixun_challenges.each_with_index do |challenge, index|
challenge.question_score = params[:question_score][index]
@@ -1508,7 +1510,8 @@ class ExerciseController < ApplicationController
:question_type => q[:question_type] || 1,
:question_number => q[:question_number],
:question_score => q[:question_score],
- :shixun_id => q[:shixun_id]
+ :shixun_id => q[:shixun_id],
+ :shixun_name => q[:shixun_name]
}
exercise_bank_question = exercise_bank.exercise_bank_questions.new option
diff --git a/app/controllers/forums_controller.rb b/app/controllers/forums_controller.rb
index afb5b7dd..f5beed7b 100644
--- a/app/controllers/forums_controller.rb
+++ b/app/controllers/forums_controller.rb
@@ -28,7 +28,7 @@ class ForumsController < ApplicationController
private
def render_react
- render "/common/index", :layout => false
+ render file: 'public/react/build/index.html', :layout => false
end
end
@@ -163,7 +163,7 @@ end
# # id: 1 问题反馈 3 操作指南 5 技术分享
# def index
#
-# render "/common/index", :layout => false
+# render file: 'public/react/build/index.html', :layout => false
# end
#
# # GET /forums/1
diff --git a/app/controllers/homework_common_controller.rb b/app/controllers/homework_common_controller.rb
index e404c5ee..0e5ac1d6 100644
--- a/app/controllers/homework_common_controller.rb
+++ b/app/controllers/homework_common_controller.rb
@@ -12,11 +12,12 @@ class HomeworkCommonController < ApplicationController
before_filter :find_homework, :only => [:edit,:update,:alert_anonymous_comment,:start_anonymous_comment,:stop_anonymous_comment,:destroy,:start_evaluation_set,
:set_evaluation_attr,:score_rule_set,:alert_forbidden_anonymous_comment,:alert_open_student_works,:open_student_works,
:set_score_open,:alert_score_open_modal,:add_to_homework_bank,:publish_notice,:publish_homework,:end_notice,:end_homework,
- :setting,:set_public,:homework_setting,:update_explanation,:cancel_publish, :homework_code_repeat, :review_detail,:move_to_category]
+ :setting,:set_public,:homework_setting,:update_explanation,:cancel_publish, :homework_code_repeat, :review_detail,:move_to_category,
+ :rename_modal, :rename_homework]
before_filter :teacher_of_course, :only => [:new, :create, :edit, :update, :destroy, :start_anonymous_comment, :stop_anonymous_comment, :alert_anonymous_comment,
:start_evaluation_set,:set_evaluation_attr,:score_rule_set,:alert_forbidden_anonymous_comment,:alert_open_student_works,
:open_student_works,:add_to_homework_bank,:publish_notice,:end_notice,:publish_homework,:end_homework,:update_explanation,
- :cancel_publish, :move_to_category,:homework_setting]
+ :cancel_publish, :move_to_category,:homework_setting, :rename_homework, :rename_modal]
# before_filter :member_of_course, :only => [:index,:setting]
@@ -275,6 +276,19 @@ class HomeworkCommonController < ApplicationController
@groups = paginateHelper @groups, 5
end
+ def rename_modal
+
+ end
+
+ def rename_homework
+ if params[:name].blank?
+ @notice = true
+ else
+ @homework.update_attributes(:name => params[:name].strip)
+ redirect_to homework_common_index_path(:course => @course.id, :homework_type => @homework.homework_type)
+ end
+ end
+
def setting
@is_new = params[:is_new].to_i if params[:is_new]
@is_empty = @homework.publish_time.nil?
diff --git a/app/controllers/managements/schools_controller.rb b/app/controllers/managements/schools_controller.rb
index a5c789ff..74202ad5 100644
--- a/app/controllers/managements/schools_controller.rb
+++ b/app/controllers/managements/schools_controller.rb
@@ -78,5 +78,7 @@ class Managements::SchoolsController < Managements::BaseController
@active_course_total = Course.where(is_end: false).count
@shixun_homework_total = HomeworkCommon.where(homework_type: 4).count
@other_homework_total = HomeworkCommon.where(homework_type: [1, 3]).count
+ @shixun_total = Shixun.count
+ @shixun_evaluate_total = SchoolReport.sum(:shixun_evaluate_count)
end
end
diff --git a/app/controllers/managements_controller.rb b/app/controllers/managements_controller.rb
index 39e89bd8..483a4ff3 100644
--- a/app/controllers/managements_controller.rb
+++ b/app/controllers/managements_controller.rb
@@ -2,11 +2,10 @@
class ManagementsController < ApplicationController
before_filter :require_business
before_filter :require_admin, :only => [:shixun_setting_list, :mirror_repository, :mirror_picture_shixuns, :editmd_template,
- :editmd_template, :subject_level_system, :subject_setting_list, :auto_users_trial,
- :evaluate_records, :identity_authentication, :identity_authentication, :professional_authentication,
- :shixun_authorization, :graduation_standard, :ec_template, :codemirror_template,
+ :editmd_template, :subject_level_system, :subject_setting_list,
+ :shixun_authorization, :ec_template, :codemirror_template,
:course_guide_template, :shixun_quality_score, :tech_system, :update_notice, :setting_banner,
- :training_2018]
+ :training_2018, :create_standard]
layout 'base_management'
include ManagementsHelper
include SortHelper
@@ -32,6 +31,15 @@ class ManagementsController < ApplicationController
# 实训课程等级体系
def subject_level_system
@levels = SubjectLevelSystem.all
+ respond_to do |format|
+ format.js
+ format.html
+ format.xls{
+ time = Time.now.strftime("%Y%m%d")
+ filename = "实训课程体系#{time}.xls"
+ send_data(export_subject_level_system(), :type => 'application/octet-stream', :filename => filename_for_content_disposition(filename))
+ }
+ end
end
# 创建课程等级体系
@@ -2023,7 +2031,7 @@ end
# @schools = School.where(:id =>user_exs.map(&:school_id))
# end
@search = params[:search] # 搜索字
- @keyword = params[:keyword].blank? ? "u_name" : params[:keyword] # 根据姓名/课程名搜索
+ @keyword = params[:keyword].blank? ? "c_name" : params[:keyword] # 根据姓名/课程名搜索
@status = params[:status]
@school_id = params[:school_id]
@@ -2044,11 +2052,13 @@ end
if params[:status] && params[:status]!=''
@courses = @courses.where(:is_end => @status.to_i)
end
- if "u_name" == @keyword
+ if "c_name" == @keyword
+ @courses = @courses.where("name like ?", "%#{@search}%")
+ elsif "u_name" == @keyword
if @search.blank?
@courses = @courses
else
- user_id = User.where("concat(lastname, firstname) like '%#{@search}%'")
+ # 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
@@ -2818,17 +2828,17 @@ end
else
"status = 1"
end
- @users = User.where("#{sql}").includes(:apply_actions, user_extensions: [:department, :school]).order("last_login_on #{@sx_order}")
+ @users = User.where("#{sql}").includes(:real_name_authentication_apply, :professional_authentication_apply,
+ 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
+
+ subquery = UserDayCertification.where("created_at > ?", Time.now.ago(1.days)).select(:user_id).to_sql
+ @trial_cer_count = User.where("status = 1 and certification != 1 and id in (#{subquery})").count
+
+ apply_subquery = ApplyAction.where(container_type: "TrialAuthorization").select(:user_id).to_sql
+ @nonn_cer_count = User.where("status = 1 and certification = 0 and id not in (#{apply_subquery}) ").count
@page = (params['page'] || 1).to_i
@users_count = @users.count
@@ -3308,83 +3318,82 @@ end
end
end
- all_user_ids = User.where(:status => 1).pluck(:id)
+ users = User.where(nil)
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)
+ users = users.where(status: 1, certification: 0)
+ .joins('LEFT JOIN apply_actions ON apply_actions.user_id = users.id AND apply_actions.container_type = "TrialAuthorization"')
+ .where('apply_actions.user_id IS NULL')
elsif params[:trial] == "-2"
- apply_user_id = all_user_ids
+ users = users.where(status: 1)
elsif params[:trial] == "0"
- apply_user_id = ApplyAction.where(:status => 0).pluck(:user_id)
+ users = users.joins('LEFT JOIN apply_actions ON apply_actions.user_id = users.id').where(apply_actions: { status: 0 })
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)
+ users = users.joins('LEFT JOIN user_day_certifications udc ON udc.user_id = users.id')
+ .where('users.certification != 1').where('udc.created_at > ?', Time.now.ago(1.days))
else
- apply_user_id = User.where(:status => 1, :certification => params[:trial]).pluck(:id)
+ users = users.where(status: 1, certification: params[:trial])
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)
+ users = users.joins('LEFT JOIN user_extensions ON user_extensions.user_id = users.id')
+ .joins('LEFT JOIN departments ON departments.id = user_extensions.department_id')
+ .joins('LEFT JOIN schools ON schools.id = user_extensions.school_id')
+
+ if params[:school].present?
+ users = users.where("schools.name LIKE ?", "%#{params[:school]}%")
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)
+ if params[:department].present?
+ users = users.where("departments.name LIKE ?", "%#{params[:department]}%")
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)
+ users = users.where(user_extensions: { identity: params[:identity] })
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)
+ users = users.where(user_extensions: { identity: params[:identity], technical_title: technical_title })
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
+ if params[:student_id].present?
+ users = users.where('user_extensions.student_id like ?', "%#{params[:student_id]}%")
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
+ if params[:research_contents].present?
+ keyword = "%#{params[:research_contents]}%"
+ if params[:research_condition] == "name"
+ users = users.where('concat(lastname, firstname) like ?', keyword)
+ elsif params[:research_condition] == "email"
+ users = users.where("mail like ?", keyword)
+ elsif params[:research_condition] == "phone"
+ users = users.where("phone like ?", keyword)
+ elsif params[:research_condition] == "nickname"
+ users = users.where("nickname like ?", keyword)
+ elsif params[:research_condition] == "login"
+ users = users.where("login like ?", keyword)
+ end
+ end
+
+ if params[:province].present?
+ users = users.where(schools: { province: params[:province] })
+ end
+
+ users = users.select('distinct users.*').order("last_login_on desc")
- @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
+ @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
+ @users = paginateHelper users.includes(:real_name_authentication_apply, :professional_authentication_apply,
+ user_extensions: [:department, :school]), @limit
respond_to do |format|
format.js
format.xls{
# @export_shixun_task = @export_shixun_task.all
+ @xls_users = users.reorder("created_on desc").limit(3000) #导出excel用户
+ @xls_users = @xls_users.includes(:real_name_authentication_apply, :professional_authentication_apply,
+ user_extensions: [:department, :school])
filename = "用户列表.xls"
send_data(user_list_xls(@xls_users), :type => 'application/octet-stream', :filename => filename_for_content_disposition(filename))
}
@@ -4184,7 +4193,7 @@ end
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(["用户姓名","性别","职业","职称","地区"," 单位","子单位","注册时间","最后登录时间","授权"])
+ sheet1.row(0).concat(["用户姓名","性别","职业","职称","地区"," 单位","子单位","注册时间","最后登录时间","授权", "邮箱"])
count_row = 1
users.each do |user|
sheet1[count_row,0] = user.try(:show_real_name)
@@ -4197,6 +4206,7 @@ end
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
+ sheet1[count_row,10] = user.mail
count_row += 1
end
book.write xls_report
@@ -4285,6 +4295,33 @@ end
return sheet.rows
end
+ def export_subject_level_system
+ 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
+ sheet1.row(0).concat(["序号", "等级", "实训课程名称", "实训课程url", "实训名称"])
+ levels = SubjectLevelSystem.includes(subjects: [stage_shixuns: :shixun]).where(nil)
+ levels.each_with_index do |level, i|
+ sheet1[count_row, 0] = i + 1
+ sheet1[count_row, 1] = level.name
+ level.subjects.each do |subject|
+ sheet1[count_row, 2] = subject.name
+ sheet1[count_row, 3] = "#{Setting.protocol}://#{Setting.host_name}#{subject_path(subject)}"
+ count_row += 1
+ subject.shixuns.each do |shixun|
+ sheet1[count_row, 4] = shixun.name
+ count_row += 1
+ end
+ end
+ count_row += 1
+ end
+ book.write xls_report
+ xls_report.string
+ end
+
def shixun_feedback_xls shixun_ids, beginTime, endTime
xls_report = StringIO.new
book = Spreadsheet::Workbook.new
@@ -4294,7 +4331,7 @@ end
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?
@@ -4312,6 +4349,7 @@ end
discusses.each_with_index do |discuss, j|
user = discuss.user
content = discuss.content.gsub(/
<%= @major.name %> - <% if @major.schools && User.current.admin? %> + <% if @major.schools && (User.current.admin? || User.current.business?) %>