diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index e542d1e1d..403119e20 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -894,12 +894,15 @@ class CoursesController < ApplicationController # return # end #更新创建课程消息状态 - create_course_messages = @course.course_messages.where("user_id =? and course_message_type =? and course_id =? and viewed =?", User.current.id, 'Course', @course.id, 0) - create_course_messages.update_all(:viewed => true) + course_request_messages = CourseMessage.where(:user_id => User.current.id, :course_id => @course.id, :course_message_type => ["CourseRequestDealResult", "Course"], :viewed => false) + course_request_messages.update_all(:viewed => true) + + # create_course_messages = @course.course_messages.where("user_id =? and course_message_type =? and course_id =? and viewed =?", User.current.id, 'Course', @course.id, 0) + # create_course_messages.update_all(:viewed => true) #更新申请结果反馈消息的状态 - course_request_messages = CourseMessage.where("user_id =? and course_id =? and course_message_type =? and viewed =?", User.current.id, @course.id, 'CourseRequestDealResult', false) - course_request_messages.update_all(:viewed => true) + # course_request_messages = CourseMessage.where("user_id =? and course_id =? and course_message_type =? and viewed =?", User.current.id, @course.id, 'CourseRequestDealResult', false) + # course_request_messages.update_all(:viewed => true) course_activities = @course.course_activities @canShowRealName = User.current.member_of_course? @course diff --git a/app/helpers/courses_helper.rb b/app/helpers/courses_helper.rb index b3e946f95..71c50cd82 100644 --- a/app/helpers/courses_helper.rb +++ b/app/helpers/courses_helper.rb @@ -14,30 +14,21 @@ module CoursesHelper # 推荐的精品课程 - def excellent_course_recommend new_course - q = "%#{new_course.name.strip}%" - result = find_excelletn_course(q, new_course) - end - - # 查询符合条件的精品课程 - # 用新课程名去匹配精品课程中按课程名和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 + 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;" - 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 + 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) + end + results end # 判断精品课程是否可见,非课程成员无法查看私有课程 diff --git a/app/models/news.rb b/app/models/news.rb index 0e83a39f8..58bbc40ac 100644 --- a/app/models/news.rb +++ b/app/models/news.rb @@ -62,7 +62,7 @@ class News < ActiveRecord::Base :author_key => :author_id acts_as_watchable - after_create :act_as_activity,:act_as_forge_activity, :act_as_course_activity, :add_author_as_watcher, :send_mail, :add_news_count, :act_as_student_score, :act_as_system_message, :delay_news_send + after_create :act_as_forge_activity, :act_as_course_activity, :add_author_as_watcher, :send_mail, :add_news_count, :act_as_student_score, :act_as_system_message, :delay_news_send after_update :update_activity after_destroy :delete_kindeditor_assets, :decrease_news_count, :delete_org_activities, :down_course_score @@ -140,19 +140,13 @@ class News < ActiveRecord::Base Watcher.create(:watchable => self, :user => author) end - ## fq - def act_as_activity - self.acts << Activity.new(:user_id => self.author_id) - end - # Time 2015-02-27 15:48:17 # Author lizanle # Description 公用表中也要记录 def act_as_forge_activity # 如果是project为空,那么是课程相关的,不需要保存 if self.project - self.forge_acts << ForgeActivity.new(:user_id => self.author_id, - :project_id => self.project.id) + self.forge_acts << ForgeActivity.new(:user_id => self.author_id, :project_id => self.project.id) end end @@ -198,7 +192,7 @@ class News < ActiveRecord::Base def contain_news_message self.course.members.each do |m| if m.user_id != self.author_id - self.course_messages << CourseMessage.new(:user_id => user_id, :course_id => container_id, :viewed => false) + self.course_messages << CourseMessage.new(:user_id => m.user_id, :course_id => self.course_id, :viewed => false) end end end diff --git a/app/views/users/_course_newslist.html.erb b/app/views/users/_course_newslist.html.erb index 87dbe6b95..961b2bfdf 100644 --- a/app/views/users/_course_newslist.html.erb +++ b/app/views/users/_course_newslist.html.erb @@ -23,7 +23,7 @@ <% if activity.sticky == 1 %> 顶 <% end%> - <% u = User.where("id=?",activity.author_id).first%> + <%# u = User.where("id=?",activity.author_id).first%>
<%= count>0 ? "#{count}" : "0" %>回复|<%= get_praise_num(activity) > 0 ? "#{get_praise_num(activity)}" : "0" %>赞