diff --git a/app/controllers/account_controller.rb b/app/controllers/account_controller.rb
index 0b4a5841..7258b076 100644
--- a/app/controllers/account_controller.rb
+++ b/app/controllers/account_controller.rb
@@ -1183,24 +1183,31 @@ class AccountController < ApplicationController
def reset_psd
if params[:lost_psd_phone] && params[:lost_psd_phone].strip != ""
@user = User.where("phone = '#{params[:lost_psd_phone].to_s}'").first
+ code = VerificationCode.where(:phone => params[:lost_psd_phone], :code => params[:code], :code_type => 2).last
+
elsif params[:lost_psd_email] && params[:lost_psd_email].strip != ""
@user = User.where("mail = '#{params[:lost_psd_email].to_s}'").first
+ code = VerificationCode.where(:email => params[:lost_psd_email], :code => params[:code], :code_type => 3).last
end
- if @user.present?
- @user.password, @user.password_confirmation = params[:new_password], params[:new_password_confirmation]
- if @user.save
- Token.where(:user_id => @user, :action => "recovery").destroy_all
- respond_to do |format|
- format.js
+ if !code.nil? && (Time.now.to_i - code.created_at.to_i) <= 10*60
+ if @user.present?
+ @user.password, @user.password_confirmation = params[:new_password], params[:new_password_confirmation]
+ if @user.save
+ Token.where(:user_id => @user, :action => "recovery").destroy_all
+ respond_to do |format|
+ format.js
+ end
+ else
+ redirect_to signin_path
+ return
end
else
redirect_to signin_path
return
end
else
- redirect_to signin_path
- return
+ @status = 0
end
end
diff --git a/app/controllers/colleges_controller.rb b/app/controllers/colleges_controller.rb
index c814d957..2505a3bf 100644
--- a/app/controllers/colleges_controller.rb
+++ b/app/controllers/colleges_controller.rb
@@ -254,7 +254,10 @@ class CollegesController < ApplicationController
def manager_auth
# unless (User.current.admin? || DepartmentMember.where(:user_id => User.current.id, :department_id => @department.id).first.present?)
- unless (User.current.admin? || DepartmentMember.where(:user_id => User.current.id, :department_id => @department.id).first.present? || (User.current.user_extensions.try(:school_id) == @department.school_id && User.current.user_extensions.try(:identity) == 0))
+ unless (User.current.admin? ||
+ DepartmentMember.where(:user_id => User.current.id, :department_id => @department.id).first.present? ||
+ (User.current.user_extensions.try(:school_id) == @department.school_id && User.current.user_extensions.try(:identity) == 0) ||
+ (@department.school.try(:customer_id) && User.current.try(:partner).try(:customer_ids) && User.current.try(:partner).try(:customer_ids).include?(@department.school.try(:customer_id))))
render_403
end
end
diff --git a/app/controllers/cooperates_controller.rb b/app/controllers/cooperates_controller.rb
index aecbb293..12467a36 100644
--- a/app/controllers/cooperates_controller.rb
+++ b/app/controllers/cooperates_controller.rb
@@ -1,6 +1,36 @@
class CooperatesController < ApplicationController
+ before_filter :require_login
+ before_filter :find_partner, only: [:partner_list]
+ before_filter :is_admin, only: [:partner_list]
- def show
+ def partner_list
+ search = params[:search]
+ @schools = School.where(customer_id: @partner.customer_ids)
+ @all_count = @schools.size
+ unless search.blank?
+ @schools = @schools.where("name like ?", "%#{search}%")
+ end
+ @search_count = @schools.size
+ @schools = paginateHelper @schools, 15
+ @schools = @schools.includes(:courses, users: :user_extensions)
+
+ respond_to do |format|
+ format.js
+ format.html{render :layout => "base_edu"}
+ end
+ end
+
+ def find_partner
+ @partner = Partner.find_by_id(params[:id])
+ render_404 if @partner.nil?
+ rescue ActiveRecord::RecordNotFound
+ render_404
+ end
+
+ def is_admin
+ unless User.current.admin? || (User.current.partner.present? && User.current.partner == @partner)
+ render_403
+ end
end
end
diff --git a/app/controllers/managements_controller.rb b/app/controllers/managements_controller.rb
index 0d17ccf6..b7e1bd56 100644
--- a/app/controllers/managements_controller.rb
+++ b/app/controllers/managements_controller.rb
@@ -158,7 +158,11 @@ class ManagementsController < ApplicationController
@sub_type = 8
@g = Gitlab.client
if params[:search]
- myshixun_id = Game.where("identifier = #{params[:search]} or id = #{params[:search]}").pluck(:myshixun_id)
+ 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)
@@ -792,12 +796,22 @@ class ManagementsController < ApplicationController
@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
@@ -812,7 +826,7 @@ class ManagementsController < ApplicationController
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), :type => "text/excel;charset=utf-8; header=present", :filename => filename_for_content_disposition(filename))
+ 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
@@ -1171,6 +1185,137 @@ end
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
@@ -1198,8 +1343,55 @@ end
@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}")
@@ -3153,7 +3345,7 @@ end
end
@users = User.where(:id => user_id).where("#{sql}").includes(:apply_actions, user_extensions: [:department, :school]).order("last_login_on desc")
- @xls_users = @users #导出excel用户
+ @xls_users = @users.reorder("created_on desc").limit(1000) #导出excel用户
@page = (params['page'] || 1).to_i
@users_count = @users.count
@limit = 20
@@ -3961,7 +4153,7 @@ end
sheet1.row(0).default_format = blue
sheet1.row(0).concat(["用户姓名","性别","职业","职称","地区"," 单位","子单位","注册时间","最后登录时间","授权"])
count_row = 1
- users.find_each do |user|
+ 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)
@@ -4058,7 +4250,7 @@ end
return sheet.rows
end
- def shixun_feedback_xls shixun_ids
+ def shixun_feedback_xls shixun_ids, beginTime, endTime
xls_report = StringIO.new
book = Spreadsheet::Workbook.new
sheet1 = book.create_worksheet :name => "实训反馈"
@@ -4070,6 +4262,12 @@ end
"评论者单位", "评论时间", "社区导师是否已回复"])
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
@@ -4078,7 +4276,8 @@ end
sheet1[count_row, 5] = discusses.count
discusses.each_with_index do |discuss, j|
user = discuss.user
- sheet1[count_row, 6] = discuss.content.gsub(/
两次输入的密码不一致
- + 获取验证码
发送验证码
diff --git a/app/views/account/reset_psd.js.erb b/app/views/account/reset_psd.js.erb index 851d151c..0e5143b2 100644 --- a/app/views/account/reset_psd.js.erb +++ b/app/views/account/reset_psd.js.erb @@ -1 +1,5 @@ -notice_box_redirect("<%= signin_path %>", "登录密码已重置,请重新登录"); \ No newline at end of file +<% if @status.present? %> +notice_box("验证码有误,请重新输入"); +<% else %> +notice_box_redirect("<%= signin_path %>", "登录密码已重置,请重新登录"); +<% end %> \ No newline at end of file diff --git a/app/views/managements/_users_list.html.erb b/app/views/cooperates/_partner_item.html.erb similarity index 54% rename from app/views/managements/_users_list.html.erb rename to app/views/cooperates/_partner_item.html.erb index 993c6db3..a094c452 100644 --- a/app/views/managements/_users_list.html.erb +++ b/app/views/cooperates/_partner_item.html.erb @@ -9,29 +9,26 @@ 使用详情