mirror of
https://gitlink.org.cn/Gitlink/forgeplus.git
synced 2026-05-03 11:50:49 +08:00
init project
This commit is contained in:
42
app/controllers/users/private_messages_controller.rb
Normal file
42
app/controllers/users/private_messages_controller.rb
Normal file
@@ -0,0 +1,42 @@
|
||||
class Users::PrivateMessagesController < Users::BaseController
|
||||
before_action :require_login
|
||||
before_action :private_user_resources!
|
||||
after_action :update_onclick_time!, only: [:index]
|
||||
|
||||
def index
|
||||
@count = observed_user.private_messages.without_deleted.group(:target_id).count.count
|
||||
|
||||
subquery = observed_user.private_messages.without_deleted.order(send_time: :desc).to_sql
|
||||
query = "SELECT subquery.*, COUNT(*) message_count FROM (#{subquery}) subquery "\
|
||||
"GROUP BY subquery.target_id ORDER BY subquery.send_time desc LIMIT #{limit_value} OFFSET #{offset_value}"
|
||||
@messages = PrivateMessage.select('*').from("(#{query}) AS query").includes(target: :user_extension)
|
||||
|
||||
observed_user.private_messages.only_unread.update_all(status: 1)
|
||||
end
|
||||
|
||||
def create
|
||||
receiver = User.find_by(id: params[:target_id])
|
||||
return render_error('用户未找到') if receiver.blank?
|
||||
|
||||
@message = PrivateMessages::CreateService.call(observed_user, receiver, create_params)
|
||||
rescue PrivateMessages::CreateService::Error => ex
|
||||
render_error(ex.message)
|
||||
end
|
||||
|
||||
def destroy
|
||||
message = observed_user.private_messages.without_deleted.find(params[:id])
|
||||
message.destroy!
|
||||
|
||||
render_ok
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def update_onclick_time!
|
||||
current_user.onclick_time.touch(:onclick_time)
|
||||
end
|
||||
|
||||
def create_params
|
||||
params.permit(:content)
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user