diff --git a/app/controllers/comments_controller.rb b/app/controllers/comments_controller.rb index 72afb3342..ddce9a630 100644 --- a/app/controllers/comments_controller.rb +++ b/app/controllers/comments_controller.rb @@ -46,6 +46,7 @@ class CommentsController < ApplicationController # 隐藏、取消隐藏 def hidden if @hack.manager?(current_user) + @discuss = @hack.discusses.where(id: params[:id]).first @discuss.update_attribute(:hidden, params[:hidden] == "1") sucess_status else diff --git a/app/controllers/hacks_controller.rb b/app/controllers/hacks_controller.rb index b7f6a30a2..7a0fb7635 100644 --- a/app/controllers/hacks_controller.rb +++ b/app/controllers/hacks_controller.rb @@ -98,12 +98,20 @@ class HacksController < ApplicationController # 发布功能 def publish @hack.update_attribute(:status, 1) + base_attrs = { + trigger_user_id: current_user.id, viewed: 0, tiding_type: 'System', user_id: @hack.user_id, + } + @hack.tidings.create!(base_attrs) render_ok end # 取消发布 def cancel_publish @hack.update_attribute(:status, 0) + base_attrs = { + trigger_user_id: current_user.id, viewed: 0, tiding_type: 'System', user_id: @hack.user_id + } + @hack.tidings.create!(base_attrs) render_ok end diff --git a/app/models/discuss.rb b/app/models/discuss.rb index 652ffea37..148d6518b 100644 --- a/app/models/discuss.rb +++ b/app/models/discuss.rb @@ -52,16 +52,19 @@ class Discuss < ApplicationRecord private def send_tiding + if dis_type == 'Shixun' + user_id = has_parent? ? parent.user_id : Challenge.find(challenge_id).user_id + parent_container_type = 'Challenge' + challenge_id = challenge_id + elsif dis_type == 'Hack' + user_id = has_parent? ? parent.user_id : Hack.find(dis_id).user_id + parent_container_type = 'Hack' + challenge_id = nil + end base_attrs = { - trigger_user_id: user_id, parent_container_id: challenge_id, parent_container_type: 'Challenge', - belong_container_id: dis_id, belong_container_type: dis_type, viewed: 0, tiding_type: 'Comment' + trigger_user_id: user_id, parent_container_id: challenge_id, parent_container_type: parent_container_type, + belong_container_id: dis_id, belong_container_type: dis_type, viewed: 0, tiding_type: 'Comment' } - user_id = - if dis_type == 'Shixun' - has_parent? ? parent.user_id : Challenge.find(challenge_id).user_id - elsif dis_type == 'Hack' - has_parent? ? parent.user_id : Hack.find(dis_id).user_id - end tidings.create!(base_attrs.merge(user_id: user_id)) end end diff --git a/app/models/hack.rb b/app/models/hack.rb index 2e2ffb9e0..35abb8787 100644 --- a/app/models/hack.rb +++ b/app/models/hack.rb @@ -13,6 +13,8 @@ class Hack < ApplicationRecord has_many :discusses, as: :dis, dependent: :destroy # 点赞 has_many :praise_treads, as: :praise_tread_object, dependent: :destroy + # 消息 + has_many :tidings, as: :container, dependent: :destroy belongs_to :user @@ -21,6 +23,8 @@ class Hack < ApplicationRecord scope :opening, -> {where(open_or_not: 1)} scope :mine, -> (author_id){ where(user_id: author_id) } + after_destroy :send_delete_tiding + def language if hack_codes.count == 1 hack_codes.first.language @@ -49,4 +53,12 @@ class Hack < ApplicationRecord user_id == user.id || user.admin_or_business? end + private + def send_delete_tiding + base_attrs = { + user_id: user_id, viewed: 0, tiding_type: 'Delete', trigger_user_id: current_user.id + } + tidings.create!(base_attrs) + end + end diff --git a/app/models/praise_tread.rb b/app/models/praise_tread.rb index 58ec965b4..8e96b7d47 100644 --- a/app/models/praise_tread.rb +++ b/app/models/praise_tread.rb @@ -12,7 +12,7 @@ class PraiseTread < ApplicationRecord case self.praise_tread_object_type when "Memo","Message","Issue" self.tidings << Tiding.new(:trigger_user_id => self.user_id, :user_id => self.praise_tread_object.author_id, :parent_container_id => self.praise_tread_object_id, :parent_container_type => self.praise_tread_object_type, :viewed => 0, :tiding_type => "Praise") - when "Discuss","Challenge","HomeworkCommon","JournalsForMessage","Journal","GraduationTopic","GraduationTask" + when "Discuss","Challenge","HomeworkCommon","JournalsForMessage","Journal","GraduationTopic","GraduationTask", "Hack" self.tidings << Tiding.new(:trigger_user_id => self.user_id, :user_id => self.praise_tread_object.user_id, :parent_container_id => self.praise_tread_object_id, :parent_container_type => self.praise_tread_object_type, :viewed => 0, :tiding_type => "Praise") end end diff --git a/config/routes.rb b/config/routes.rb index ace8324ce..45bd13680 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -71,6 +71,8 @@ Rails.application.routes.draw do resources :comments do collection do post :reply + end + member do post :hidden end end