Merge branch 'dev_aliyun' into dev_cxt

dev_ec
cxt 5 years ago
commit fcbe14c56f

@ -269,8 +269,9 @@ class CoursesController < ApplicationController
def online_learning def online_learning
@subject = @course.subject @subject = @course.subject
@stages = @course.course_stages @stages = @course.course_stages.includes(:shixuns)
@user = current_user @user = current_user
@myshixuns = @user.myshixuns.where(shixun_id: @course.course_stage_shixuns.pluck(:shixun_id))
@start_learning = @user_course_identity == Course::STUDENT && @course.learning?(current_user.id) @start_learning = @user_course_identity == Course::STUDENT && @course.learning?(current_user.id)
end end

@ -25,85 +25,83 @@ class ExercisesController < ApplicationController
include ExercisesHelper include ExercisesHelper
def index def index
ActiveRecord::Base.transaction do begin
begin # 按发布时间或创建时间排序
# 按发布时间或创建时间排序 @exercises_all = @course.exercises
@exercises_all = @course.exercises member_show_exercises = @exercises_all.is_exercise_published #已发布的或已截止的试卷
member_show_exercises = @exercises_all.is_exercise_published #已发布的或已截止的试卷 @current_user_ = current_user
@current_user_ = current_user
# 课堂的学生人数
# 课堂的学生人数 @course_all_members = @course.students #当前课堂的全部学生
@course_all_members = @course.students #当前课堂的全部学生 @current_student = @course_all_members.course_find_by_ids("user_id",current_user.id) #当前用户是否为课堂的学生
@current_student = @course_all_members.course_find_by_ids("user_id",current_user.id) #当前用户是否为课堂的学生
# exercises的不同用户群体的显示
# exercises的不同用户群体的显示 if @user_course_identity < Course::STUDENT # @is_teacher_or 1为老师/管理员/助教
if @user_course_identity < Course::STUDENT # @is_teacher_or 1为老师/管理员/助教 @is_teacher_or = 1
@is_teacher_or = 1 @exercises = @exercises_all #老师能看到全部的试卷,不管是已发布的/未发布的/已截止的/统一设置的/私有设置的(看到内容不同)
@exercises = @exercises_all #老师能看到全部的试卷,不管是已发布的/未发布的/已截止的/统一设置的/私有设置的(看到内容不同) elsif @user_course_identity == Course::STUDENT # 2为课堂成员能看到统一设置的和自己班级的
elsif @user_course_identity == Course::STUDENT # 2为课堂成员能看到统一设置的和自己班级的 @is_teacher_or = 2
@is_teacher_or = 2 @member_group_id = @current_student.first.try(:course_group_id).to_i # 成员的分班id默认为0
@member_group_id = @current_student.first.try(:course_group_id).to_i # 成员的分班id默认为0 if @member_group_id == 0 #表示是课堂的未分班成员,只能查看统一设置的试卷(已发布的/已截止的)
if @member_group_id == 0 #表示是课堂的未分班成员,只能查看统一设置的试卷(已发布的/已截止的) @exercises = member_show_exercises.exists? ? member_show_exercises.unified_setting : []
@exercises = member_show_exercises.exists? ? member_show_exercises.unified_setting : [] else #已分班级的成员,可以查看统一设置和单独设置(试卷是发布在该班级)试卷
else #已分班级的成员,可以查看统一设置和单独设置(试卷是发布在该班级)试卷 # 已发布 当前用户班级分组的 试卷id
# 已发布 当前用户班级分组的 试卷id not_exercise_ids = @course.exercise_group_settings.exercise_group_not_published.where("course_group_id = #{@member_group_id}").pluck(:exercise_id)
not_exercise_ids = @course.exercise_group_settings.exercise_group_not_published.where("course_group_id = #{@member_group_id}").pluck(:exercise_id) @exercises = member_show_exercises.where.not(id: not_exercise_ids)
@exercises = member_show_exercises.where.not(id: not_exercise_ids)
end
else #用户未登陆或不是该课堂成员,仅显示统一设置的(已发布的/已截止的),如有公开,则不显示锁,不公开,则显示锁
@is_teacher_or = 0
@exercises = member_show_exercises.unified_setting
end end
else #用户未登陆或不是该课堂成员,仅显示统一设置的(已发布的/已截止的),如有公开,则不显示锁,不公开,则显示锁
@is_teacher_or = 0
@exercises = member_show_exercises.unified_setting
end
if @exercises.size > 0 if @exercises.size > 0
if params[:type].present? if params[:type].present?
choose_type = params[:type].to_i choose_type = params[:type].to_i
ex_setting_ids = [] ex_setting_ids = []
if @is_teacher_or != 2 if @is_teacher_or != 2
@exercises = @exercises.where("exercise_status = #{choose_type}") @exercises = @exercises.where("exercise_status = #{choose_type}")
else else
case choose_type case choose_type
when 1 when 1
ex_setting_ids = @course.exercise_group_settings.where("course_group_id = #{@member_group_id}").exercise_group_not_published.pluck(:exercise_id) ex_setting_ids = @course.exercise_group_settings.where("course_group_id = #{@member_group_id}").exercise_group_not_published.pluck(:exercise_id)
when 2 when 2
ex_setting_ids = @course.exercise_group_settings.where("course_group_id = #{@member_group_id}") ex_setting_ids = @course.exercise_group_settings.where("course_group_id = #{@member_group_id}")
.where("publish_time is not null and publish_time <= ? and end_time > ?",Time.now,Time.now).pluck(:exercise_id) .where("publish_time is not null and publish_time <= ? and end_time > ?",Time.now,Time.now).pluck(:exercise_id)
when 3 when 3
ex_setting_ids = @course.exercise_group_settings.where("course_group_id = #{@member_group_id}").exercise_group_ended.pluck(:exercise_id) ex_setting_ids = @course.exercise_group_settings.where("course_group_id = #{@member_group_id}").exercise_group_ended.pluck(:exercise_id)
end
unified_setting_ids = @exercises.unified_setting.where("exercise_status = #{choose_type}").pluck(:id)
ex_ids = (ex_setting_ids + unified_setting_ids).uniq
@exercises = @exercises.where(id: ex_ids)
end end
unified_setting_ids = @exercises.unified_setting.where("exercise_status = #{choose_type}").pluck(:id)
ex_ids = (ex_setting_ids + unified_setting_ids).uniq
@exercises = @exercises.where(id: ex_ids)
end end
end
if params[:search].present? if params[:search].present?
search_type = params[:search].to_s.strip search_type = params[:search].to_s.strip
@exercises = @exercises.exercise_search(search_type) @exercises = @exercises.exercise_search(search_type)
end
@exercises_select_count = @exercises.size # 全部页面,需返回
@exercises = @exercises.distinct.order( "IF(ISNULL(publish_time),0,1), publish_time DESC,created_at DESC") #出现错误
# 分页
@page = params[:page] || 1
@limit = params[:limit] || 15
@exercises = @exercises.page(@page).per(@limit)
@exercises = @exercises&.includes(:published_settings)
else
@exercises = []
end end
@course_all_members_count = @course_all_members.size #当前课堂的学生数 @exercises_select_count = @exercises.size # 全部页面,需返回
@exercises_count = @exercises_all.size # 全部页面,需返回 @exercises = @exercises.distinct.order( "IF(ISNULL(publish_time),0,1), publish_time DESC,created_at DESC") #出现错误
@exercises_unpublish_counts = @exercises_all.exercise_by_status(1).size #未发布的试卷数
@exercises_published_counts = @exercises_count - @exercises_unpublish_counts # 已发布的试卷数,包含已截止的
rescue Exception => e # 分页
uid_logger_error(e.message) @page = params[:page] || 1
tip_exception(e.message) @limit = params[:limit] || 15
raise ActiveRecord::Rollback @exercises = @exercises.page(@page).per(@limit)
@exercises = @exercises&.includes(:published_settings)
else
@exercises = []
end end
@course_all_members_count = @course_all_members.size #当前课堂的学生数
@exercises_count = @exercises_all.size # 全部页面,需返回
@exercises_unpublish_counts = @exercises_all.exercise_by_status(1).size #未发布的试卷数
@exercises_published_counts = @exercises_count - @exercises_unpublish_counts # 已发布的试卷数,包含已截止的
rescue Exception => e
uid_logger_error(e.message)
tip_exception(e.message)
raise ActiveRecord::Rollback
end end
end end

@ -6,7 +6,8 @@ class StagesController < ApplicationController
def index def index
@user = current_user @user = current_user
@stages = @subject.stages @stages = @subject.stages.includes(:shixuns)
@myshixuns = @user.myshixuns.where(shixun_id: @subject.stage_shixuns.pluck(:shixun_id))
end end
def create def create

@ -1,8 +1,8 @@
module StagesHelper module StagesHelper
# 章节实训的通关情况 # 章节实训的通关情况
def stage_myshixun_status shixun, user def stage_myshixun_status myshixun
myshixun = Myshixun.where(user_id: user.id, shixun_id: shixun.id).take # myshixun = Myshixun.where(user_id: user.id, shixun_id: shixun.id).take
myshixun.try(:status) == 1 ? 1 : 0 myshixun.try(:status) == 1 ? 1 : 0
end end

@ -1,5 +1,5 @@
json.stages @stages do |stage| json.stages @stages do |stage|
json.partial! 'stages/stage', locals: {stage: stage, user:@user, subject:@subject} json.partial! 'stages/stage', locals: {stage: stage, user: @user, subject: @subject, myshixuns: @myshixuns}
end end
# json.description @subject&.description # json.description @subject&.description

@ -0,0 +1,2 @@
json.course_targets @course_targets, partial: 'ecs/course_targets/shared/ec_course_target_with_achievement_methods', as: :ec_course_target

@ -15,7 +15,7 @@ json.shixuns_list do
json.shixun_name shixun.name json.shixun_name shixun.name
json.shixun_hidden shixun.hidden json.shixun_hidden shixun.hidden
json.identifier shixun.identifier json.identifier shixun.identifier
json.complete_status stage_myshixun_status(shixun, user) json.complete_status stage_myshixun_status(myshixuns.select{|ms| ms.shixun_id == shixun.id}.first)
json.shixun_status stage_shixun_status(subject.status, shixun.status, shixun.hidden) json.shixun_status stage_shixun_status(subject.status, shixun.status, shixun.hidden)
end end
end end

@ -1,3 +1,3 @@
json.stages @stages do |stage| json.stages @stages do |stage|
json.partial! 'stage', locals: {stage: stage, user:@user, subject:@subject} json.partial! 'stage', locals: {stage: stage, user: @user, subject: @subject, myshixuns: @myshixuns}
end end
Loading…
Cancel
Save