Merge branch 'dev_course' of https://bdgit.educoder.net/Hjqreturn/educoder into dev_course

dev_course
jingquan huang 6 years ago
commit eaf2bb468a

@ -27,7 +27,7 @@ class CoursesController < ApplicationController
before_action :teacher_allowed, only: [:update, :destroy, :settings, :search_teacher_candidate,
:transfer_to_course_group, :delete_from_course,
:search_users, :add_students_by_search, :get_historical_courses, :add_teacher_popup, :add_teacher]
before_action :admin_allowed, only: [:set_invite_code_halt, :set_public_or_private,
before_action :admin_allowed, only: [:set_invite_code_halt, :set_public_or_private, :join_graduation_group,
:set_course_group, :change_course_admin, :change_course_teacher,
:delete_course_teacher, :teacher_application_review, :create_group_by_importing_file]
before_action :teacher_or_admin_allowed, only: [:graduation_group_list, :create_graduation_group, :join_graduation_group,

@ -431,7 +431,9 @@ class ExercisesController < ApplicationController
ActiveRecord::Base.transaction do
begin
error_count = 0 # 判断循环里是否有已发布/已截止的,且时间更改了的分班。
course_group_ids = @course.teacher_course_group_ids(current_user.id) #当前老师的班级id数组
# course_group_ids = @course.teacher_course_group_ids(current_user.id) #当前老师的班级id数组
course_group_ids = @course.charge_group_ids(current_user) #当前老师的班级id数组
exercise_status = @exercise.get_exercise_status(current_user.id)
if exercise_status == 1 && (course_group_ids - [0]).count > 0 # 试卷未发布且老师的分班大于1 ,才可以修改统一设置,否则按试卷默认的来处理
@ -695,13 +697,15 @@ class ExercisesController < ApplicationController
if ex_status == 1 #如果试卷存在已发布的,或者是已截止的,那么则直接跳过
g_course = params[:group_ids] #表示是否传入分班参数,如果传入分班的参数,那么试卷的统一设置需修改
if g_course
course_groups = @course.teacher_course_groups.get_user_groups(current_user.id)
# course_groups = @course.teacher_course_groups.get_user_groups(current_user.id)
#
# if course_groups.blank?
# user_course_groups = @course.course_groups.present? ? @course.course_groups.pluck(:id) : []
# else
# user_course_groups = course_groups.pluck(:course_group_id).reject(&:blank?).uniq
# end
user_course_groups = @course.charge_group_ids(current_user)
if course_groups.blank?
user_course_groups = @course.course_groups.present? ? @course.course_groups.pluck(:id) : []
else
user_course_groups = course_groups.pluck(:course_group_id).reject(&:blank?).uniq
end
if g_course.map(&:to_i).sort == user_course_groups.sort # 如果是设置为全部班级,则试卷不用分组,且试卷设定为统一设置,否则则分组设置
exercise.exercise_group_settings.destroy_all
@ -1505,13 +1509,14 @@ class ExercisesController < ApplicationController
def get_user_permission_course(exercise_ids,status)
exercise_status = status.to_i #传入的试卷发布状态
unpublish_group = []
g_course_ids = @course.teacher_course_groups.get_user_groups(current_user.id).pluck(:course_group_id).reject(&:blank?).uniq #当前用户有权限的分班
#用户的班级,理论上用户的班级要大于等于试卷设置的班级
if g_course_ids.blank? || g_course_ids.include?(0)
user_groups_id = @course.course_groups.pluck(:id)
else
user_groups_id = g_course_ids
end
# g_course_ids = @course.teacher_course_groups.get_user_groups(current_user.id).pluck(:course_group_id).reject(&:blank?).uniq #当前用户有权限的分班
# #用户的班级,理论上用户的班级要大于等于试卷设置的班级
# if g_course_ids.blank? || g_course_ids.include?(0)
# user_groups_id = @course.course_groups.pluck(:id)
# else
# user_groups_id = g_course_ids
# end
user_groups_id = @course.charge_group_ids(current_user)
exercises_all = Exercise.where(id:exercise_ids)
exercises_all.each do |exercise|
if exercise.present?

@ -172,13 +172,7 @@ class MessagesController < ApplicationController
# 课堂的目录之间移动,有子栏目的才显示此项
return normal_status(403) unless current_user.teacher_of_course?(@board.course)
begin
Message.bulk_move_to_other_board(params[:ids], params[:to_board_id], current_user.id)
rescue Exception => e
uid_logger_error(e.message)
tip_exception(e.message)
raise ActiveRecord::Rollback
end
Message.bulk_move_to_other_board(params[:ids], params[:to_board_id])
end
def bulk_public

@ -43,7 +43,7 @@ class PollsController < ApplicationController
# polls的不同用户群体的显示
if @user_course_identity < Course::STUDENT # @is_teacher_or 1为老师/管理员/助教
@is_teacher_or = 1
@teacher_groups_ids = @course.teacher_course_groups.get_user_groups(current_user.id).pluck(:course_group_id).reject(&:blank?)
@teacher_groups_ids = @course.charge_group_ids(current_user)
@polls = @polls_all #老师能看到全部的问卷,不管是已发布的/未发布的/已截止的/统一设置的/私有设置的(看到内容不同)
elsif @user_course_identity == Course::STUDENT # 2为课堂成员能看到统一设置的和自己班级的
@is_teacher_or = 2
@ -254,12 +254,12 @@ class PollsController < ApplicationController
if pl_status == 1 #如果问卷存在已发布的,或者是已截止的,那么则直接跳过
g_course = params[:group_ids] #表示是否传入分班参数,如果传入分班的参数那么poll的统一设置需修改
if g_course
course_groups = @course.teacher_course_groups.get_user_groups(current_user.id)
if course_groups.blank?
user_course_groups = @course.course_groups.present? ? @course.course_groups.pluck(:id) : []
else
user_course_groups = course_groups.pluck(:course_group_id)
end
user_course_groups = @course.charge_group_ids(current_user)
# if course_groups.blank?
# user_course_groups = @course.course_groups.present? ? @course.course_groups.pluck(:id) : []
# else
# user_course_groups = course_groups.pluck(:course_group_id)
# end
if g_course.map(&:to_i).sort == user_course_groups.sort # 如果是设置为全部班级,则问卷不用分组,且问卷设定为统一设置,否则则分组设置
poll.poll_group_settings.destroy_all
poll_unified = true
@ -673,7 +673,7 @@ class PollsController < ApplicationController
@user_published_setting = @poll.poll_group_settings.find_in_poll_group("course_group_id",@being_setting_course_ids)
poll_ids = [@poll.id]
@poll_publish_count = get_user_permission_course(poll_ids,2).count
## 需添加发送消息的接口,稍后添加
rescue Exception => e
uid_logger_error(e.message)
tip_exception("页面调用失败!")
@ -688,7 +688,7 @@ class PollsController < ApplicationController
begin
error_count = 0 # 判断循环里是否有已发布/已截止的,且时间更改了的分班。
course_group_ids = @course.teacher_course_group_ids(current_user.id) #当前老师的班级id数组
course_group_ids = @course.charge_group_ids(current_user) #当前老师的班级id数组
poll_status = @poll.get_poll_status(current_user.id)
if poll_status == 1 && (course_group_ids - [0]).count > 0 # 问卷未发布且老师的分班大于1 才可以修改统一设置否则按poll默认的来处理
@ -951,7 +951,6 @@ class PollsController < ApplicationController
def poll_lists
ActiveRecord::Base.transaction do
begin
logger.info("########___________@course.teacher_course_groups)________________####################{@course.teacher_course_groups.where(user_id:current_user.id).pluck(:course_group_id)}")
poll_ids = [@poll.id]
@poll_list_status = @poll.get_poll_status(current_user.id)
@poll_publish_count = get_user_permission_course(poll_ids,2).count
@ -1213,12 +1212,13 @@ class PollsController < ApplicationController
def get_user_permission_course(poll_ids,status) #获取用户权限范围内的已发布/未发布
poll_status = status.to_i
unpublish_group = []
g_course_ids = @course.teacher_course_groups.get_user_groups(current_user.id).pluck(:course_group_id).reject(&:blank?).uniq
if g_course_ids.blank? || g_course_ids.include?(0) #当前用户的分班权限为空,即具体全部的分班权限
user_groups_id = @course.course_groups.pluck(:id)
else
user_groups_id = g_course_ids
end
# g_course_ids = @course.teacher_course_groups.get_user_groups(current_user.id).pluck(:course_group_id).reject(&:blank?).uniq
# if g_course_ids.blank? || g_course_ids.include?(0) #当前用户的分班权限为空,即具体全部的分班权限
# user_groups_id = @course.course_groups.pluck(:id)
# else
# user_groups_id = g_course_ids
# end
user_groups_id = @course.charge_group_ids(current_user)
all_polls = Poll.where(id:poll_ids)
all_polls.each do |poll|
if poll.present?

@ -240,8 +240,9 @@ class QuestionBanksController < ApplicationController
ActiveRecord::Base.transaction do
new_task = GraduationTask.new
new_task.attributes = task.attributes.dup.except("id", "course_id", "user_id", "quotes", "graduation_task_id",
"course_list_id")
"course_list_id", "gtask_bank_id")
new_task.course_id = course.id
new_task.gtask_bank_id = task.id
new_task.user_id = current_user.id
if new_task.save!
new_task.create_work_list
@ -264,8 +265,10 @@ class QuestionBanksController < ApplicationController
def quote_gtopic_bank topic, course
ActiveRecord::Base.transaction do
new_topic = GraduationTopic.new
new_topic.attributes = topic.attributes.dup.except("id", "course_id", "user_id", "graduation_topic_id", "course_list_id")
new_topic.attributes = topic.attributes.dup.except("id", "course_id", "user_id", "graduation_topic_id",
"course_list_id", "gtopic_bank_id")
new_topic.course_id = course.id
new_topic.gtopic_bank_id = topic.id
new_topic.user_id = current_user.id
new_topic.save

@ -19,6 +19,8 @@ class GraduationTask < ApplicationRecord
has_many :graduation_works, -> { where("is_delete != 1") }
has_many :graduation_work_scores
belongs_to :gtask_bank, optional: true
validates :name, length: { maximum: 60 }
validates :description, length: { maximum: 5000 }

@ -10,7 +10,7 @@ class GraduationTopic < ApplicationRecord
has_many :journals_for_messages, :as => :jour, :dependent => :destroy
# 题库
belongs_to :gtopic_bank, optional: true
scope :search_by_name, ->(name) { where("graduation_topics.name LIKE ?", "%#{name}%")}
scope :search_by_status, ->(status) {where(status: status)}

@ -53,7 +53,7 @@ class GraduationWork < ApplicationRecord
# 分班名
def class_grouping_name
CourseMember.find_by(user_id: self.user_id, course_id: self.course_id).try(:course_group).try(:name) || '未分班'
CourseMember.find_by(user_id: self.user_id, course_id: self.course_id, role: 4).try(:course_group).try(:name) || '未分班'
end
# 分组名

@ -47,10 +47,25 @@ class Message < ApplicationRecord
end
end
def self.bulk_move_to_other_board(message_ids, to_board_id, author_id)
message_ids.each do |id|
message = Message.find id
message.update_attributes(board_id: to_board_id, author_id: author_id) if message.parent_id.nil? # TODO 暂时只支持跟节点移动
def self.bulk_move_to_other_board(message_ids, to_board_id)
to_board = Board.find(to_board_id)
messages = Message.where(id: message_ids, parent_id: nil).select(:id, :board_id).to_a
return if messages.blank?
from_board = Board.find(messages.first.board_id)
root_ids = messages.map(&:id)
children = Message.where(parent_id: root_ids).select(:id).to_a
children_ids = children.map(&:id)
second_children = Message.where(parent_id: children_ids).select(:id).to_a
ids = root_ids.concat(children_ids).concat(second_children.map(&:id)).uniq
ActiveRecord::Base.transaction do
Message.where(id: ids, board_id: from_board.id).update_all(board_id: to_board.id)
to_board.increment!(:messages_count, ids.size)
from_board.increment!(:messages_count, - ids.size)
end
end

@ -54,7 +54,6 @@ class Poll < ApplicationRecord
def all_poll_users(user_id)
poll_users = self.poll_users
group_ids = poll_published_ids(user_id)
logger.info("##########_________group_ids______#########################{group_ids}")
if group_ids.present?
poll_users = poll_users.where(user_id: course.students.where(course_group_id: group_ids).pluck(:user_id))
end
@ -64,7 +63,6 @@ class Poll < ApplicationRecord
#当前用户已发布的班级id和试卷分组已发布的班级id的交集
def poll_published_ids(user_id)
current_user_groups = course.teacher_course_group_ids(user_id)
logger.info("##########_________current_user_groups______#########################{current_user_groups}")
if unified_setting
if course.none_group_count > 0 #有未分班的,则发布到未发布
un_group_ids = [0]

@ -32,8 +32,8 @@ if @task.published? || @user_course_identity < Course::STUDENT
json.array! @work_list do |work|
json.id work.id
json.user_id work.user.id
json.name work.user.full_name
json.student_id work.user.school_id
json.name work.user.real_name
json.student_id work.user.student_id
json.class_grouping_name work.class_grouping_name
if @task.have_grouping?
json.grouping_name work.grouping_name

Loading…
Cancel
Save