From 9ea1f1627a390cf27870169f32b5d4001826f2e5 Mon Sep 17 00:00:00 2001 From: yystopf Date: Mon, 10 Nov 2025 14:51:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E5=8F=8D=E9=A6=88?= =?UTF-8?q?=E6=84=8F=E8=A7=81=E6=96=B0=E5=A2=9Eip=E5=9C=B0=E5=9D=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/api/v1/users/feedbacks_controller.rb | 2 +- app/models/feedback.rb | 1 + app/services/api/v1/users/feedbacks/create_service.rb | 6 ++++-- app/views/admins/feedbacks/_list.html.erb | 2 ++ db/migrate/20251110062223_add_remote_ip_to_feedbacks.rb | 5 +++++ 5 files changed, 13 insertions(+), 3 deletions(-) create mode 100644 db/migrate/20251110062223_add_remote_ip_to_feedbacks.rb diff --git a/app/controllers/api/v1/users/feedbacks_controller.rb b/app/controllers/api/v1/users/feedbacks_controller.rb index 4e79de7bd..388d172fe 100644 --- a/app/controllers/api/v1/users/feedbacks_controller.rb +++ b/app/controllers/api/v1/users/feedbacks_controller.rb @@ -4,7 +4,7 @@ class Api::V1::Users::FeedbacksController < Api::V1::BaseController before_action :check_auth_for_observe_user def create - @result = Api::V1::Users::Feedbacks::CreateService.call(@observe_user, feedback_params) + @result = Api::V1::Users::Feedbacks::CreateService.call(@observe_user, feedback_params, request.remote_ip) return render_error("反馈意见创建失败.") if @result.nil? return render_ok end diff --git a/app/models/feedback.rb b/app/models/feedback.rb index 2528d4022..ee6644a11 100644 --- a/app/models/feedback.rb +++ b/app/models/feedback.rb @@ -7,6 +7,7 @@ # content :text(65535) # created_at :datetime not null # updated_at :datetime not null +# remote_ip :string(255) # # Indexes # diff --git a/app/services/api/v1/users/feedbacks/create_service.rb b/app/services/api/v1/users/feedbacks/create_service.rb index 2db4baac2..af9b84c8e 100644 --- a/app/services/api/v1/users/feedbacks/create_service.rb +++ b/app/services/api/v1/users/feedbacks/create_service.rb @@ -1,14 +1,15 @@ class Api::V1::Users::Feedbacks::CreateService < ApplicationService include ActiveModel::Model - attr_reader :user, :content + attr_reader :user, :content, :remote_ip attr_accessor :feedback validates :content, presence: true - def initialize(user, params) + def initialize(user, params, remote_ip="127.0.0.1") @user = user @content = params[:content] + @remote_ip = remote_ip end def call @@ -16,6 +17,7 @@ class Api::V1::Users::Feedbacks::CreateService < ApplicationService begin @feedback = Feedback.new(user: user, content: content) + @feedback.remote_ip = @remote_ip @feedback.save! return @feedback.valid? ? @feedback : nil diff --git a/app/views/admins/feedbacks/_list.html.erb b/app/views/admins/feedbacks/_list.html.erb index a630837f1..4216c46ea 100644 --- a/app/views/admins/feedbacks/_list.html.erb +++ b/app/views/admins/feedbacks/_list.html.erb @@ -4,6 +4,7 @@ 序号 用户名 用户邮箱 + ip地址 <%= sort_tag('创建时间', name: 'created_at', path: admins_feedbacks_path) %> 反馈意见 操作 @@ -16,6 +17,7 @@ <%= list_index_no((params[:page] || 1).to_i, index) %> <%= feedback&.user&.login%> <%= feedback&.user&.mail%> + <%= feedback&.remote_ip%> <%= feedback.created_at&.strftime('%Y-%m-%d %H:%M') %> <%= feedback.content %> diff --git a/db/migrate/20251110062223_add_remote_ip_to_feedbacks.rb b/db/migrate/20251110062223_add_remote_ip_to_feedbacks.rb new file mode 100644 index 000000000..f848c24ed --- /dev/null +++ b/db/migrate/20251110062223_add_remote_ip_to_feedbacks.rb @@ -0,0 +1,5 @@ +class AddRemoteIpToFeedbacks < ActiveRecord::Migration[5.2] + def change + add_column :feedbacks, :remote_ip, :string + end +end