@ -24,40 +24,20 @@ module CoursesHelper
def find_excelletn_course keywords , current_course
def find_excelletn_course keywords , current_course
# 获取tag匹配结果ID
# 获取tag匹配结果ID
a_tags = [ ]
a_tags = [ ]
# kc = keywords.to_a
Course . where ( " is_excellent =? and is_public =? " , 1 , 1 ) . includes ( :tags ) . each do | ec |
Course . visible . where ( " is_excellent =? and is_public =? " , 1 , 1 ) . each do | ec |
if ec . tags . any? { | value | current_course . name . include? ( value . to_s ) }
if ec . tags . any? { | value | current_course . name . include? ( value . to_s ) }
a_tags << ec . id
a_tags << ec . id
end
end
end
end
# sql = "SELECT distinct c.* FROM `courses` c, tags t, taggings ts where t.id = ts.tag_id and ts.taggable_id = c.id and c.is_excellent = 1 and is_delete = 0 and
# ts.taggable_type = 'Course' and t.name like '%#{keywords}%'"
# a_tags = Course.find_by_sql(sql).select{|course| course.is_public ==1 unless User.current.member_of_course?(course)}
# 通过elastic结果获取精品课程
a_courses = [ ]
#courses = Course.search(keywords)
#courses.each do |c|
# a_courses << c.id
#end
a_courses << a_tags unless a_tags . length == 0
# 课程本身不能搜索显示自己
# 课程本身不能搜索显示自己
excellent_ids = a_courses . flatten . uniq . delete_if { | i | i == current_course . id }
excellent_ids = a_tags . uniq . delete_if { | i | i == current_course . id }
limit = 5 - excellent_ids . length . to_i
sql = " SELECT distinct c.id FROM course_activities cs, courses c where cs.course_id = c.id
sql = " SELECT distinct c.id FROM course_activities cs, courses c where cs.course_id = c.id
and c . is_excellent = 1 and c . is_public = 1 and c . id != #{current_course.id} order by cs.updated_at desc;"
and ( c . is_excellent = 1 or c . excellent_option = 1 ) and c . is_public = 1 and c . id != #{current_course.id} order by cs.updated_at desc;"
default_ecourse_ids = Course . find_by_sql ( sql ) . flatten
default_ids = Course . find_by_sql ( sql ) . flatten . map { | c | c . id }
# REDO:时间紧,待优化
excellent_ids << default_ids . flatten
default_ids = [ ]
arr_result = excellent_ids . flatten . uniq . first ( 5 )
default_ecourse_ids . each do | de |
excellent_courses = Course . find ( arr_result )
default_ids << de . id
return excellent_courses
end
default_ids = default_ids - excellent_ids
#default_ecourse = Course.where("id is not in (?)", ids).find_by_sql(sql).flatten.delete_if{|i| i == current_course.id}.flatten
arr_result = excellent_ids << default_ids
arr_result = arr_result . flatten . first ( 5 )
return arr_result
# 过滤条件:精品课程、本身不在搜索范围
#e_courses = Course.where("is_excellent =? and id in (?)",1, arr_result).where("id !=?", current_course.id)
end
end
# 判断精品课程是否可见,非课程成员无法查看私有课程
# 判断精品课程是否可见,非课程成员无法查看私有课程
@ -258,7 +238,7 @@ module CoursesHelper
# 学生人数计算
# 学生人数计算
# add by nwb
# add by nwb
def studentCount course
def studentCount course
course ? course . student . count . to_ s : 0 #course.student.count
course ? course . student . count . to_ i : 0 #course.student.count
end
end
#课程成员数计算
#课程成员数计算
@ -293,12 +273,17 @@ module CoursesHelper
def searchTeacherAndAssistant project
def searchTeacherAndAssistant project
#searchPeopleByRoles(project, TeacherRoles)
#searchPeopleByRoles(project, TeacherRoles)
members = [ ]
members = [ ]
project . members . each do | m |
project . members . includes( :user ) . each do | m |
members << m if m && m . user && m . user . allowed_to? ( :as_teacher , project )
members << m if m && m . user && m . user . allowed_to? ( :as_teacher , project )
end
end
members
members
end
end
def TeacherAndAssistantCount course
students_count = course . student . count
number = course . members . count - students_count
end
def search_student_in_group ( project , course_group_id )
def search_student_in_group ( project , course_group_id )
#searchPeopleByRoles(project, StudentRoles)
#searchPeopleByRoles(project, StudentRoles)
members = [ ]
members = [ ]