课程500问题

This commit is contained in:
huang 2016-09-17 11:26:29 +08:00
parent b468134e3e
commit cfc5a2457c
1 changed files with 23 additions and 14 deletions

View File

@ -14,21 +14,30 @@ module CoursesHelper
# 推荐的精品课程
def excellent_course_recommend current_course
q = "%#{current_course.name.strip}%"
recomment_courses = []
# 推荐过程过滤掉自身
sql = "SELECT distinct c.* FROM course_activities cs, courses c where cs.course_id = c.id
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;"
ex_courses = Course.find_by_sql(sql)
# 使用课程的tag去和课程名称进行匹配
c_courses = ex_courses.select{|ex_course| ex_course.tags.any?{|tag| q.include?(tag.to_s)}}
if c_courses.count < 3
results = c_courses.length == 0 ? ex_courses.first(3) : (c_courses + ex_courses.first(3 - ex_courses.count))
else
results = c_courses.first(3)
def excellent_course_recommend new_course
q = "%#{new_course.name.strip}%"
result = find_excelletn_course(q, new_course)
end
results
# 查询符合条件的精品课程
# 用新课程名去匹配精品课程中按课程名和Tag名
def find_excelletn_course keywords, current_course
# 获取tag匹配结果ID
a_tags = []
Course.where("is_excellent =? and is_public =?", 1, 1).each do |ec|
if ec.tags.any?{|value| current_course.name.include?(value.to_s)}
a_tags << ec.id
end
end
# 课程本身不能搜索显示自己
excellent_ids = a_tags.uniq.delete_if{|i| i == current_course.id}
sql = "SELECT distinct c.id FROM course_activities cs, courses c where cs.course_id = c.id
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_ids = Course.find_by_sql(sql).flatten.map { |c| c.id }
excellent_ids << default_ids.flatten
arr_result = excellent_ids.flatten.uniq.first(3)
excellent_courses = Course.find(arr_result)
return excellent_courses
end
# 判断精品课程是否可见,非课程成员无法查看私有课程