From 07aefa79eb6ccfdab2a37cff624863dcce35bec9 Mon Sep 17 00:00:00 2001 From: yystopf Date: Wed, 2 Nov 2022 14:21:49 +0800 Subject: [PATCH 001/143] =?UTF-8?q?=E6=9B=B4=E6=94=B9=EF=BC=9A=E9=A1=B9?= =?UTF-8?q?=E7=9B=AE=E5=90=8E=E5=8F=B0=E7=AE=A1=E7=90=86=E7=A7=BB=E9=99=A4?= =?UTF-8?q?=E7=B2=BE=E9=80=89=E8=AE=BE=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/admins/projects/shared/_list.html.erb | 4 ---- 1 file changed, 4 deletions(-) diff --git a/app/views/admins/projects/shared/_list.html.erb b/app/views/admins/projects/shared/_list.html.erb index 720b08dac..eb0e61255 100644 --- a/app/views/admins/projects/shared/_list.html.erb +++ b/app/views/admins/projects/shared/_list.html.erb @@ -5,7 +5,6 @@ ID 项目名称 公开 - 精选 推荐 Issues 资源 @@ -27,7 +26,6 @@ <%= link_to(project.name, "/#{project&.owner&.login}/#{project.identifier}", target: '_blank') %> <%= project.is_public ? '√' : '' %> - <%= project.is_pinned ? '√' : '' %> <%= project.recommend ? '√' : '' %> <%= project.issues.size %> <%= project.attachments.size %> @@ -40,8 +38,6 @@ <%= project.created_on&.strftime('%Y-%m-%d %H:%M') %> <% if project.is_public %> - <%= javascript_void_link '精选', class: 'action pinned-action', data: { id: project.id }, style: project.is_pinned ? 'display: none;' : '' %> - <%= javascript_void_link '取消精选', class: 'action unpinned-action', data: { id: project.id }, style: project.is_pinned ? '' : 'display: none;' %> <%= javascript_void_link '推荐', class: 'action recommend-action', data: { id: project.id }, style: project.recommend ? 'display: none;' : '' %> <%= javascript_void_link '取消推荐', class: 'action unrecommend-action', data: { id: project.id }, style: project.recommend ? '' : 'display: none;' %> <%= link_to "设置推荐等级", edit_admins_project_path(project.id), remote: true, class: "action edit-recommend-action", style: project.recommend ? '' : 'display: none;' %> From 3e5c1da2c5330175407b1eaaabaf12cadbee112a Mon Sep 17 00:00:00 2001 From: yystopf Date: Tue, 8 Nov 2022 13:27:46 +0800 Subject: [PATCH 002/143] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E5=8F=8D?= =?UTF-8?q?=E9=A6=88=E6=84=8F=E8=A7=81=E6=A8=A1=E5=9E=8B=E5=8F=8A=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/v1/users/feedbacks_controller.rb | 16 ++++++++++++ app/models/feedback.rb | 20 ++++++++++++++ .../api/v1/users/feedbacks/create_service.rb | 26 +++++++++++++++++++ config/locales/forms/api_v1_service.zh-CN.yml | 5 ++++ config/routes/api.rb | 1 + db/migrate/20221108024322_create_feedbacks.rb | 10 +++++++ 6 files changed, 78 insertions(+) create mode 100644 app/controllers/api/v1/users/feedbacks_controller.rb create mode 100644 app/models/feedback.rb create mode 100644 app/services/api/v1/users/feedbacks/create_service.rb create mode 100644 config/locales/forms/api_v1_service.zh-CN.yml create mode 100644 db/migrate/20221108024322_create_feedbacks.rb diff --git a/app/controllers/api/v1/users/feedbacks_controller.rb b/app/controllers/api/v1/users/feedbacks_controller.rb new file mode 100644 index 000000000..4e79de7bd --- /dev/null +++ b/app/controllers/api/v1/users/feedbacks_controller.rb @@ -0,0 +1,16 @@ +class Api::V1::Users::FeedbacksController < Api::V1::BaseController + + before_action :load_observe_user + before_action :check_auth_for_observe_user + + def create + @result = Api::V1::Users::Feedbacks::CreateService.call(@observe_user, feedback_params) + return render_error("反馈意见创建失败.") if @result.nil? + return render_ok + end + + private + def feedback_params + params.permit(:content) + end +end \ No newline at end of file diff --git a/app/models/feedback.rb b/app/models/feedback.rb new file mode 100644 index 000000000..3cb7e5ea3 --- /dev/null +++ b/app/models/feedback.rb @@ -0,0 +1,20 @@ +# == Schema Information +# +# Table name: feedbacks +# +# id :integer not null, primary key +# user_id :integer +# content :text(65535) +# created_at :datetime not null +# updated_at :datetime not null +# +# Indexes +# +# index_feedbacks_on_user_id (user_id) +# + +class Feedback < ApplicationRecord + + belongs_to :user + +end diff --git a/app/services/api/v1/users/feedbacks/create_service.rb b/app/services/api/v1/users/feedbacks/create_service.rb new file mode 100644 index 000000000..2db4baac2 --- /dev/null +++ b/app/services/api/v1/users/feedbacks/create_service.rb @@ -0,0 +1,26 @@ +class Api::V1::Users::Feedbacks::CreateService < ApplicationService + include ActiveModel::Model + + attr_reader :user, :content + attr_accessor :feedback + + validates :content, presence: true + + def initialize(user, params) + @user = user + @content = params[:content] + end + + def call + raise Error, errors.full_messages.join(",") unless valid? + + begin + @feedback = Feedback.new(user: user, content: content) + @feedback.save! + + return @feedback.valid? ? @feedback : nil + rescue + raise Error, "服务器错误,请联系系统管理员!" + end + end +end \ No newline at end of file diff --git a/config/locales/forms/api_v1_service.zh-CN.yml b/config/locales/forms/api_v1_service.zh-CN.yml new file mode 100644 index 000000000..268cdc5c4 --- /dev/null +++ b/config/locales/forms/api_v1_service.zh-CN.yml @@ -0,0 +1,5 @@ +'zh-CN': + activemodel: + attributes: + api/v1/users/feedbacks/create_service: + content: "反馈意见" \ No newline at end of file diff --git a/config/routes/api.rb b/config/routes/api.rb index ab098b1dc..1c55d59d9 100644 --- a/config/routes/api.rb +++ b/config/routes/api.rb @@ -13,6 +13,7 @@ defaults format: :json do end scope module: :users do resources :projects, only: [:index] + resources :feedbacks, only: [:create] end scope ':repo' do diff --git a/db/migrate/20221108024322_create_feedbacks.rb b/db/migrate/20221108024322_create_feedbacks.rb new file mode 100644 index 000000000..316df6b05 --- /dev/null +++ b/db/migrate/20221108024322_create_feedbacks.rb @@ -0,0 +1,10 @@ +class CreateFeedbacks < ActiveRecord::Migration[5.2] + def change + create_table :feedbacks do |t| + t.references :user + t.text :content + + t.timestamps + end + end +end From ccbbab0741ab7b17bbe907e3fcf60cfdaa72b0b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cxxq250=E2=80=9D?= <“xxq250@qq.com”> Date: Tue, 8 Nov 2022 15:33:12 +0800 Subject: [PATCH 003/143] =?UTF-8?q?fixed=20=E9=A1=B9=E7=9B=AE=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/queries/projects/list_query.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/app/queries/projects/list_query.rb b/app/queries/projects/list_query.rb index b06791bd3..cc832f81f 100644 --- a/app/queries/projects/list_query.rb +++ b/app/queries/projects/list_query.rb @@ -17,6 +17,7 @@ class Projects::ListQuery < ApplicationQuery sort = params[:sort_by] || "updated_on" sort_direction = params[:sort_direction] || "desc" + collection = optimize_sorting(collection, sort) custom_sort(collection, sort, sort_direction) # scope = scope.reorder("projects.#{sort} #{sort_direction}") @@ -51,5 +52,20 @@ class Projects::ListQuery < ApplicationQuery def by_pinned(items) (params[:pinned].present? && params[:category_id].present?) ? items.pinned : items end + + # 优化排序 + def optimize_sorting(relations, sort_by) + if sort_by == "updated_on" + relations.where("projects.updated_on>'2010-01-01'") + elsif sort_by == "created_on" + relations.where("projects.created_on>'2010-01-01'") + elsif sort_by == "forked_count" + relations.where("projects.forked_count>=0") + elsif sort_by == "praises_count" + relations.where("projects.praises_count>=0") + else + relations + end + end end From 575dbb054440d419cdd56b881a509595aa0a9adb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cxxq250=E2=80=9D?= <“xxq250@qq.com”> Date: Tue, 8 Nov 2022 15:33:12 +0800 Subject: [PATCH 004/143] =?UTF-8?q?fixed=20=E9=A1=B9=E7=9B=AE=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/queries/projects/list_query.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/app/queries/projects/list_query.rb b/app/queries/projects/list_query.rb index da56ceafb..0c1c1e3f4 100644 --- a/app/queries/projects/list_query.rb +++ b/app/queries/projects/list_query.rb @@ -17,6 +17,7 @@ class Projects::ListQuery < ApplicationQuery sort = params[:sort_by] || "updated_on" sort_direction = params[:sort_direction] || "desc" + collection = optimize_sorting(collection, sort) custom_sort(collection, sort, sort_direction) # scope = scope.reorder("projects.#{sort} #{sort_direction}") @@ -57,5 +58,20 @@ class Projects::ListQuery < ApplicationQuery def by_pinned(items) (params[:pinned].present? && params[:category_id].present?) ? items.pinned : items end + + # 优化排序 + def optimize_sorting(relations, sort_by) + if sort_by == "updated_on" + relations.where("projects.updated_on>'2010-01-01'") + elsif sort_by == "created_on" + relations.where("projects.created_on>'2010-01-01'") + elsif sort_by == "forked_count" + relations.where("projects.forked_count>=0") + elsif sort_by == "praises_count" + relations.where("projects.praises_count>=0") + else + relations + end + end end From 1c4ae2d85b4eaca01c098b81b5a2a57694b2a679 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cxxq250=E2=80=9D?= <“xxq250@qq.com”> Date: Tue, 8 Nov 2022 15:33:12 +0800 Subject: [PATCH 005/143] =?UTF-8?q?fixed=20=E9=A1=B9=E7=9B=AE=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/queries/projects/list_query.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/app/queries/projects/list_query.rb b/app/queries/projects/list_query.rb index da56ceafb..0c1c1e3f4 100644 --- a/app/queries/projects/list_query.rb +++ b/app/queries/projects/list_query.rb @@ -17,6 +17,7 @@ class Projects::ListQuery < ApplicationQuery sort = params[:sort_by] || "updated_on" sort_direction = params[:sort_direction] || "desc" + collection = optimize_sorting(collection, sort) custom_sort(collection, sort, sort_direction) # scope = scope.reorder("projects.#{sort} #{sort_direction}") @@ -57,5 +58,20 @@ class Projects::ListQuery < ApplicationQuery def by_pinned(items) (params[:pinned].present? && params[:category_id].present?) ? items.pinned : items end + + # 优化排序 + def optimize_sorting(relations, sort_by) + if sort_by == "updated_on" + relations.where("projects.updated_on>'2010-01-01'") + elsif sort_by == "created_on" + relations.where("projects.created_on>'2010-01-01'") + elsif sort_by == "forked_count" + relations.where("projects.forked_count>=0") + elsif sort_by == "praises_count" + relations.where("projects.praises_count>=0") + else + relations + end + end end From 7b27563b8b7548b2fd671c1b38951888df06c006 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cxxq250=E2=80=9D?= <“xxq250@qq.com”> Date: Tue, 8 Nov 2022 15:33:12 +0800 Subject: [PATCH 006/143] =?UTF-8?q?fixed=20=E9=A1=B9=E7=9B=AE=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/queries/projects/list_query.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/app/queries/projects/list_query.rb b/app/queries/projects/list_query.rb index da56ceafb..0c1c1e3f4 100644 --- a/app/queries/projects/list_query.rb +++ b/app/queries/projects/list_query.rb @@ -17,6 +17,7 @@ class Projects::ListQuery < ApplicationQuery sort = params[:sort_by] || "updated_on" sort_direction = params[:sort_direction] || "desc" + collection = optimize_sorting(collection, sort) custom_sort(collection, sort, sort_direction) # scope = scope.reorder("projects.#{sort} #{sort_direction}") @@ -57,5 +58,20 @@ class Projects::ListQuery < ApplicationQuery def by_pinned(items) (params[:pinned].present? && params[:category_id].present?) ? items.pinned : items end + + # 优化排序 + def optimize_sorting(relations, sort_by) + if sort_by == "updated_on" + relations.where("projects.updated_on>'2010-01-01'") + elsif sort_by == "created_on" + relations.where("projects.created_on>'2010-01-01'") + elsif sort_by == "forked_count" + relations.where("projects.forked_count>=0") + elsif sort_by == "praises_count" + relations.where("projects.praises_count>=0") + else + relations + end + end end From 052ae7f8630d9b88c84ac1aaf0cf9608105de0d9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cxxq250=E2=80=9D?= <“xxq250@qq.com”> Date: Tue, 8 Nov 2022 16:22:27 +0800 Subject: [PATCH 007/143] =?UTF-8?q?fixed=20=E9=A1=B9=E7=9B=AE=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=8E=92=E5=BA=8F=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/queries/projects/list_query.rb | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/app/queries/projects/list_query.rb b/app/queries/projects/list_query.rb index 0c1c1e3f4..da56ceafb 100644 --- a/app/queries/projects/list_query.rb +++ b/app/queries/projects/list_query.rb @@ -17,7 +17,6 @@ class Projects::ListQuery < ApplicationQuery sort = params[:sort_by] || "updated_on" sort_direction = params[:sort_direction] || "desc" - collection = optimize_sorting(collection, sort) custom_sort(collection, sort, sort_direction) # scope = scope.reorder("projects.#{sort} #{sort_direction}") @@ -58,20 +57,5 @@ class Projects::ListQuery < ApplicationQuery def by_pinned(items) (params[:pinned].present? && params[:category_id].present?) ? items.pinned : items end - - # 优化排序 - def optimize_sorting(relations, sort_by) - if sort_by == "updated_on" - relations.where("projects.updated_on>'2010-01-01'") - elsif sort_by == "created_on" - relations.where("projects.created_on>'2010-01-01'") - elsif sort_by == "forked_count" - relations.where("projects.forked_count>=0") - elsif sort_by == "praises_count" - relations.where("projects.praises_count>=0") - else - relations - end - end end From 48ba511a5cf611bfb9645f5091c38a68843a10aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cxxq250=E2=80=9D?= <“xxq250@qq.com”> Date: Tue, 8 Nov 2022 16:31:45 +0800 Subject: [PATCH 008/143] =?UTF-8?q?fixed=20=E9=A1=B9=E7=9B=AE=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/queries/projects/list_query.rb | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/app/queries/projects/list_query.rb b/app/queries/projects/list_query.rb index da56ceafb..cb86981d4 100644 --- a/app/queries/projects/list_query.rb +++ b/app/queries/projects/list_query.rb @@ -17,6 +17,7 @@ class Projects::ListQuery < ApplicationQuery sort = params[:sort_by] || "updated_on" sort_direction = params[:sort_direction] || "desc" + collection = optimize_sorting(collection, sort) if params[:category_id].present? custom_sort(collection, sort, sort_direction) # scope = scope.reorder("projects.#{sort} #{sort_direction}") @@ -57,5 +58,20 @@ class Projects::ListQuery < ApplicationQuery def by_pinned(items) (params[:pinned].present? && params[:category_id].present?) ? items.pinned : items end + + # 优化排序 + def optimize_sorting(relations, sort_by) + if sort_by == "updated_on" + relations.where("projects.updated_on>'2010-01-01'") + elsif sort_by == "created_on" + relations.where("projects.created_on>'2010-01-01'") + elsif sort_by == "forked_count" + relations.where("projects.forked_count>=0") + elsif sort_by == "praises_count" + relations.where("projects.praises_count>=0") + else + relations + end + end end From abfb62f342e110fb8c03e6ff9c74c14fa968fe3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cxxq250=E2=80=9D?= <“xxq250@qq.com”> Date: Tue, 8 Nov 2022 17:16:25 +0800 Subject: [PATCH 009/143] =?UTF-8?q?fixed=20=E9=A1=B9=E7=9B=AE=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=8E=92=E5=BA=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/queries/projects/list_query.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/queries/projects/list_query.rb b/app/queries/projects/list_query.rb index cc832f81f..b46ceb381 100644 --- a/app/queries/projects/list_query.rb +++ b/app/queries/projects/list_query.rb @@ -17,7 +17,7 @@ class Projects::ListQuery < ApplicationQuery sort = params[:sort_by] || "updated_on" sort_direction = params[:sort_direction] || "desc" - collection = optimize_sorting(collection, sort) + collection = optimize_sorting(collection, sort) if params[:category_id].present? custom_sort(collection, sort, sort_direction) # scope = scope.reorder("projects.#{sort} #{sort_direction}") From 7cc9d207b65249f4d354e67685fbc4728b365f76 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cxxq250=E2=80=9D?= <“xxq250@qq.com”> Date: Tue, 8 Nov 2022 17:18:04 +0800 Subject: [PATCH 010/143] =?UTF-8?q?fixed=20=E9=A1=B9=E7=9B=AE=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=9F=A5=E8=AF=A2count=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/projects_controller.rb | 5 +++-- app/queries/projects/list_query.rb | 2 +- app/views/projects/index.json.jbuilder | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 8bc2fb476..71e409dde 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -39,8 +39,9 @@ class ProjectsController < ApplicationController category_id = params[:category_id] @total_count = if category_id.blank? - ps = ProjectStatistic.first - ps.common_projects_count + ps.mirror_projects_count unless ps.blank? + # ps = ProjectStatistic.first + # ps.common_projects_count + ps.mirror_projects_count unless ps.blank? + @projects.total_count else cate = ProjectCategory.find_by(id: category_id) cate&.projects_count || 0 diff --git a/app/queries/projects/list_query.rb b/app/queries/projects/list_query.rb index b46ceb381..ec1dcda3c 100644 --- a/app/queries/projects/list_query.rb +++ b/app/queries/projects/list_query.rb @@ -17,7 +17,7 @@ class Projects::ListQuery < ApplicationQuery sort = params[:sort_by] || "updated_on" sort_direction = params[:sort_direction] || "desc" - collection = optimize_sorting(collection, sort) if params[:category_id].present? + # collection = optimize_sorting(collection, sort) if params[:category_id].present? custom_sort(collection, sort, sort_direction) # scope = scope.reorder("projects.#{sort} #{sort_direction}") diff --git a/app/views/projects/index.json.jbuilder b/app/views/projects/index.json.jbuilder index 874f60974..31d0db9c5 100644 --- a/app/views/projects/index.json.jbuilder +++ b/app/views/projects/index.json.jbuilder @@ -1,4 +1,4 @@ -json.total_count @projects.total_count +json.total_count @total_count json.projects @projects do |project| # json.partial! "/projects/project_detail", project: project json.id project.id @@ -22,7 +22,7 @@ json.projects @projects do |project| project_educoder = project.project_educoder json.name project_educoder&.owner json.login project_educoder&.repo_name.split('/')[0] - json.image_url render_educoder_avatar_url(project.project_educoder) + # json.image_url render_educoder_avatar_url(project.project_educoder) else user = project.owner json.type user.type From 1f2af50091cd78b0b2e5c52723580ff69696c22f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cxxq250=E2=80=9D?= <“xxq250@qq.com”> Date: Tue, 8 Nov 2022 17:18:04 +0800 Subject: [PATCH 011/143] =?UTF-8?q?fixed=20=E9=A1=B9=E7=9B=AE=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=9F=A5=E8=AF=A2count=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/projects_controller.rb | 5 +++-- app/queries/projects/list_query.rb | 2 +- app/views/projects/index.json.jbuilder | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 68c4e59fb..77f9ce649 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -40,8 +40,9 @@ class ProjectsController < ApplicationController category_id = params[:category_id] @total_count = if category_id.blank? - ps = ProjectStatistic.first - ps.common_projects_count + ps.mirror_projects_count unless ps.blank? + # ps = ProjectStatistic.first + # ps.common_projects_count + ps.mirror_projects_count unless ps.blank? + @projects.total_count else cate = ProjectCategory.find_by(id: category_id) cate&.projects_count || 0 diff --git a/app/queries/projects/list_query.rb b/app/queries/projects/list_query.rb index 0c1c1e3f4..1e3e0db9b 100644 --- a/app/queries/projects/list_query.rb +++ b/app/queries/projects/list_query.rb @@ -17,7 +17,7 @@ class Projects::ListQuery < ApplicationQuery sort = params[:sort_by] || "updated_on" sort_direction = params[:sort_direction] || "desc" - collection = optimize_sorting(collection, sort) + # collection = optimize_sorting(collection, sort) if params[:category_id].present? custom_sort(collection, sort, sort_direction) # scope = scope.reorder("projects.#{sort} #{sort_direction}") diff --git a/app/views/projects/index.json.jbuilder b/app/views/projects/index.json.jbuilder index 874f60974..31d0db9c5 100644 --- a/app/views/projects/index.json.jbuilder +++ b/app/views/projects/index.json.jbuilder @@ -1,4 +1,4 @@ -json.total_count @projects.total_count +json.total_count @total_count json.projects @projects do |project| # json.partial! "/projects/project_detail", project: project json.id project.id @@ -22,7 +22,7 @@ json.projects @projects do |project| project_educoder = project.project_educoder json.name project_educoder&.owner json.login project_educoder&.repo_name.split('/')[0] - json.image_url render_educoder_avatar_url(project.project_educoder) + # json.image_url render_educoder_avatar_url(project.project_educoder) else user = project.owner json.type user.type From 98cb5d44429af8a29ae9bedeb6f25519292b8416 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cxxq250=E2=80=9D?= <“xxq250@qq.com”> Date: Tue, 8 Nov 2022 17:18:04 +0800 Subject: [PATCH 012/143] =?UTF-8?q?fixed=20=E9=A1=B9=E7=9B=AE=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=9F=A5=E8=AF=A2count=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/projects_controller.rb | 5 +++-- app/queries/projects/list_query.rb | 2 +- app/views/projects/index.json.jbuilder | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 68c4e59fb..77f9ce649 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -40,8 +40,9 @@ class ProjectsController < ApplicationController category_id = params[:category_id] @total_count = if category_id.blank? - ps = ProjectStatistic.first - ps.common_projects_count + ps.mirror_projects_count unless ps.blank? + # ps = ProjectStatistic.first + # ps.common_projects_count + ps.mirror_projects_count unless ps.blank? + @projects.total_count else cate = ProjectCategory.find_by(id: category_id) cate&.projects_count || 0 diff --git a/app/queries/projects/list_query.rb b/app/queries/projects/list_query.rb index 0c1c1e3f4..1e3e0db9b 100644 --- a/app/queries/projects/list_query.rb +++ b/app/queries/projects/list_query.rb @@ -17,7 +17,7 @@ class Projects::ListQuery < ApplicationQuery sort = params[:sort_by] || "updated_on" sort_direction = params[:sort_direction] || "desc" - collection = optimize_sorting(collection, sort) + # collection = optimize_sorting(collection, sort) if params[:category_id].present? custom_sort(collection, sort, sort_direction) # scope = scope.reorder("projects.#{sort} #{sort_direction}") diff --git a/app/views/projects/index.json.jbuilder b/app/views/projects/index.json.jbuilder index 874f60974..31d0db9c5 100644 --- a/app/views/projects/index.json.jbuilder +++ b/app/views/projects/index.json.jbuilder @@ -1,4 +1,4 @@ -json.total_count @projects.total_count +json.total_count @total_count json.projects @projects do |project| # json.partial! "/projects/project_detail", project: project json.id project.id @@ -22,7 +22,7 @@ json.projects @projects do |project| project_educoder = project.project_educoder json.name project_educoder&.owner json.login project_educoder&.repo_name.split('/')[0] - json.image_url render_educoder_avatar_url(project.project_educoder) + # json.image_url render_educoder_avatar_url(project.project_educoder) else user = project.owner json.type user.type From d82b54aa01cdaf276e88ad28bd0def1db28c441d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cxxq250=E2=80=9D?= <“xxq250@qq.com”> Date: Tue, 8 Nov 2022 17:18:04 +0800 Subject: [PATCH 013/143] =?UTF-8?q?fixed=20=E9=A1=B9=E7=9B=AE=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=9F=A5=E8=AF=A2count=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/projects_controller.rb | 5 +++-- app/queries/projects/list_query.rb | 2 +- app/views/projects/index.json.jbuilder | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/controllers/projects_controller.rb b/app/controllers/projects_controller.rb index 68c4e59fb..77f9ce649 100644 --- a/app/controllers/projects_controller.rb +++ b/app/controllers/projects_controller.rb @@ -40,8 +40,9 @@ class ProjectsController < ApplicationController category_id = params[:category_id] @total_count = if category_id.blank? - ps = ProjectStatistic.first - ps.common_projects_count + ps.mirror_projects_count unless ps.blank? + # ps = ProjectStatistic.first + # ps.common_projects_count + ps.mirror_projects_count unless ps.blank? + @projects.total_count else cate = ProjectCategory.find_by(id: category_id) cate&.projects_count || 0 diff --git a/app/queries/projects/list_query.rb b/app/queries/projects/list_query.rb index cb86981d4..1e3e0db9b 100644 --- a/app/queries/projects/list_query.rb +++ b/app/queries/projects/list_query.rb @@ -17,7 +17,7 @@ class Projects::ListQuery < ApplicationQuery sort = params[:sort_by] || "updated_on" sort_direction = params[:sort_direction] || "desc" - collection = optimize_sorting(collection, sort) if params[:category_id].present? + # collection = optimize_sorting(collection, sort) if params[:category_id].present? custom_sort(collection, sort, sort_direction) # scope = scope.reorder("projects.#{sort} #{sort_direction}") diff --git a/app/views/projects/index.json.jbuilder b/app/views/projects/index.json.jbuilder index 874f60974..31d0db9c5 100644 --- a/app/views/projects/index.json.jbuilder +++ b/app/views/projects/index.json.jbuilder @@ -1,4 +1,4 @@ -json.total_count @projects.total_count +json.total_count @total_count json.projects @projects do |project| # json.partial! "/projects/project_detail", project: project json.id project.id @@ -22,7 +22,7 @@ json.projects @projects do |project| project_educoder = project.project_educoder json.name project_educoder&.owner json.login project_educoder&.repo_name.split('/')[0] - json.image_url render_educoder_avatar_url(project.project_educoder) + # json.image_url render_educoder_avatar_url(project.project_educoder) else user = project.owner json.type user.type From 8ce3fac96d7e586a175570e06291648e62cee435 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cxxq250=E2=80=9D?= <“xxq250@qq.com”> Date: Tue, 8 Nov 2022 17:26:39 +0800 Subject: [PATCH 014/143] =?UTF-8?q?fixed=20=E9=A1=B9=E7=9B=AE=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=9F=A5=E8=AF=A2=E6=8E=92=E5=BA=8F=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/queries/projects/list_query.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/queries/projects/list_query.rb b/app/queries/projects/list_query.rb index 1e3e0db9b..cb86981d4 100644 --- a/app/queries/projects/list_query.rb +++ b/app/queries/projects/list_query.rb @@ -17,7 +17,7 @@ class Projects::ListQuery < ApplicationQuery sort = params[:sort_by] || "updated_on" sort_direction = params[:sort_direction] || "desc" - # collection = optimize_sorting(collection, sort) if params[:category_id].present? + collection = optimize_sorting(collection, sort) if params[:category_id].present? custom_sort(collection, sort, sort_direction) # scope = scope.reorder("projects.#{sort} #{sort_direction}") From 42d48950d0c338671da07d43109affdb2393d1de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cxxq250=E2=80=9D?= <“xxq250@qq.com”> Date: Tue, 8 Nov 2022 17:26:39 +0800 Subject: [PATCH 015/143] =?UTF-8?q?fixed=20=E9=A1=B9=E7=9B=AE=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=9F=A5=E8=AF=A2=E6=8E=92=E5=BA=8F=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/queries/projects/list_query.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/queries/projects/list_query.rb b/app/queries/projects/list_query.rb index 1e3e0db9b..cb86981d4 100644 --- a/app/queries/projects/list_query.rb +++ b/app/queries/projects/list_query.rb @@ -17,7 +17,7 @@ class Projects::ListQuery < ApplicationQuery sort = params[:sort_by] || "updated_on" sort_direction = params[:sort_direction] || "desc" - # collection = optimize_sorting(collection, sort) if params[:category_id].present? + collection = optimize_sorting(collection, sort) if params[:category_id].present? custom_sort(collection, sort, sort_direction) # scope = scope.reorder("projects.#{sort} #{sort_direction}") From a6721d999881fba4f8793d27b5a33aad6f9aad27 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9Cxxq250=E2=80=9D?= <“xxq250@qq.com”> Date: Tue, 8 Nov 2022 17:26:39 +0800 Subject: [PATCH 016/143] =?UTF-8?q?fixed=20=E9=A1=B9=E7=9B=AE=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=9F=A5=E8=AF=A2=E6=8E=92=E5=BA=8F=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/queries/projects/list_query.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/queries/projects/list_query.rb b/app/queries/projects/list_query.rb index 1e3e0db9b..cb86981d4 100644 --- a/app/queries/projects/list_query.rb +++ b/app/queries/projects/list_query.rb @@ -17,7 +17,7 @@ class Projects::ListQuery < ApplicationQuery sort = params[:sort_by] || "updated_on" sort_direction = params[:sort_direction] || "desc" - # collection = optimize_sorting(collection, sort) if params[:category_id].present? + collection = optimize_sorting(collection, sort) if params[:category_id].present? custom_sort(collection, sort, sort_direction) # scope = scope.reorder("projects.#{sort} #{sort_direction}") From 83b46fcb501d8a63347c1ed61f3bb42082ed5f57 Mon Sep 17 00:00:00 2001 From: yystopf Date: Wed, 9 Nov 2022 11:37:12 +0800 Subject: [PATCH 017/143] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E7=94=A8?= =?UTF-8?q?=E6=88=B7=E5=8F=8D=E9=A6=88=E6=84=8F=E8=A7=81=E5=90=8E=E5=8F=B0?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../admins/feedbacks_controller.rb | 49 +++++++++++++++++++ app/models/feedback.rb | 1 + app/models/feedback_message_history.rb | 24 +++++++++ .../feedbacks/_history_form_modal.html.erb | 39 +++++++++++++++ app/views/admins/feedbacks/_list.html.erb | 33 +++++++++++++ app/views/admins/feedbacks/index.html.erb | 9 ++++ app/views/admins/feedbacks/index.js.erb | 1 + app/views/admins/feedbacks/new_history.js.erb | 3 ++ app/views/admins/shared/_sidebar.html.erb | 1 + config/routes.rb | 4 ++ ...00538_create_feedback_message_histories.rb | 12 +++++ 11 files changed, 176 insertions(+) create mode 100644 app/controllers/admins/feedbacks_controller.rb create mode 100644 app/models/feedback_message_history.rb create mode 100644 app/views/admins/feedbacks/_history_form_modal.html.erb create mode 100644 app/views/admins/feedbacks/_list.html.erb create mode 100644 app/views/admins/feedbacks/index.html.erb create mode 100644 app/views/admins/feedbacks/index.js.erb create mode 100644 app/views/admins/feedbacks/new_history.js.erb create mode 100644 db/migrate/20221108100538_create_feedback_message_histories.rb diff --git a/app/controllers/admins/feedbacks_controller.rb b/app/controllers/admins/feedbacks_controller.rb new file mode 100644 index 000000000..caff0a9f8 --- /dev/null +++ b/app/controllers/admins/feedbacks_controller.rb @@ -0,0 +1,49 @@ +class Admins::FeedbacksController < Admins::BaseController + before_action :get_feedback, only: [:new_history, :create_history, :destroy] + + def index + sort_by = Feedback.column_names.include?(params[:sort_by]) ? params[:sort_by] : 'created_at' + sort_direction = %w(desc asc).include?(params[:sort_direction]) ? params[:sort_direction] : 'desc' + feedbacks = Feedback.order("#{sort_by} #{sort_direction}") + @feedbacks = paginate(feedbacks) + end + + def destroy + if @feedback.destroy + redirect_to admins_feedbacks_path + flash[:success] = "反馈意见删除成功" + else + redirect_to admins_feedbacks_path + flash[:danger] = "反馈意见删除失败" + end + end + + def new_history + @feedback_message_history = FeedbackMessageHistory.new + end + + def create_history + @feedback_message_history = @feedback.feedback_message_histories.new(feedback_message_history_params) + @feedback_message_history.user = current_user + if @feedback_message_history.save + redirect_to admins_feedbacks_path + flash[:success] = "发送通知成功" + else + redirect_to admins_feedbacks_path + flash[:danger] = "发送通知失败" + end + end + + private + def feedback_params + params.require(:feedback).permit! + end + + def feedback_message_history_params + params.require(:feedback_message_history).permit(:title, :content) + end + + def get_feedback + @feedback = Feedback.find_by_id(params[:id]) + end +end \ No newline at end of file diff --git a/app/models/feedback.rb b/app/models/feedback.rb index 3cb7e5ea3..2528d4022 100644 --- a/app/models/feedback.rb +++ b/app/models/feedback.rb @@ -16,5 +16,6 @@ class Feedback < ApplicationRecord belongs_to :user + has_many :feedback_message_histories, dependent: :destroy end diff --git a/app/models/feedback_message_history.rb b/app/models/feedback_message_history.rb new file mode 100644 index 000000000..d04a005f1 --- /dev/null +++ b/app/models/feedback_message_history.rb @@ -0,0 +1,24 @@ +# == Schema Information +# +# Table name: feedback_message_histories +# +# id :integer not null, primary key +# feedback_id :integer +# user_id :integer +# title :string(255) +# content :text(65535) +# created_at :datetime not null +# updated_at :datetime not null +# +# Indexes +# +# index_feedback_message_histories_on_feedback_id (feedback_id) +# index_feedback_message_histories_on_user_id (user_id) +# + +class FeedbackMessageHistory < ApplicationRecord + + belongs_to :feedback + belongs_to :user + +end diff --git a/app/views/admins/feedbacks/_history_form_modal.html.erb b/app/views/admins/feedbacks/_history_form_modal.html.erb new file mode 100644 index 000000000..df12a73d3 --- /dev/null +++ b/app/views/admins/feedbacks/_history_form_modal.html.erb @@ -0,0 +1,39 @@ + \ No newline at end of file diff --git a/app/views/admins/feedbacks/_list.html.erb b/app/views/admins/feedbacks/_list.html.erb new file mode 100644 index 000000000..9ac47cdc4 --- /dev/null +++ b/app/views/admins/feedbacks/_list.html.erb @@ -0,0 +1,33 @@ + + + + + + + + + + + + + <% if feedbacks.present? %> + <% feedbacks.each_with_index do |feedback, index| %> + + + + + + + + + <% end %> + <% else %> + <%= render 'admins/shared/no_data_for_table' %> + <% end %> + +
序号用户名用户邮箱<%= sort_tag('创建时间', name: 'created_at', path: admins_feedbacks_path) %>反馈意见操作
+ +<%= render partial: 'admins/shared/paginate', locals: { objects: feedbacks } %> \ No newline at end of file diff --git a/app/views/admins/feedbacks/index.html.erb b/app/views/admins/feedbacks/index.html.erb new file mode 100644 index 000000000..06a25e8c3 --- /dev/null +++ b/app/views/admins/feedbacks/index.html.erb @@ -0,0 +1,9 @@ +<% define_admin_breadcrumbs do %> + <% add_admin_breadcrumb('反馈意见') %> +<% end %> + + +
+
diff --git a/app/views/admins/feedbacks/index.js.erb b/app/views/admins/feedbacks/index.js.erb new file mode 100644 index 000000000..daaa24cc7 --- /dev/null +++ b/app/views/admins/feedbacks/index.js.erb @@ -0,0 +1 @@ +$('.feedback-list-container').html("<%= j( render partial: 'admins/feedbacks/list', locals: { feedbacks: @feedbacks } ) %>"); \ No newline at end of file diff --git a/app/views/admins/feedbacks/new_history.js.erb b/app/views/admins/feedbacks/new_history.js.erb new file mode 100644 index 000000000..2b96cf488 --- /dev/null +++ b/app/views/admins/feedbacks/new_history.js.erb @@ -0,0 +1,3 @@ +$("#feedback-modals").html("<%= j render(partial: 'admins/feedbacks/history_form_modal', locals: {type: 'new_history'}) %>") +$(".feedback-history-change-modal").modal('show'); +createMDEditor('feedback-history-email-editor', {width: 750, height: 300, placeholder: '请输入邮件正文',watch: false }); diff --git a/app/views/admins/shared/_sidebar.html.erb b/app/views/admins/shared/_sidebar.html.erb index b78f0e86c..d3a752909 100644 --- a/app/views/admins/shared/_sidebar.html.erb +++ b/app/views/admins/shared/_sidebar.html.erb @@ -36,6 +36,7 @@ <%= sidebar_item_group('#setting-submenu', '网站建设', icon: 'cogs') do %>
  • <%= sidebar_item(admins_faqs_path, 'FAQ', icon: 'question-circle', controller: 'admins-faqs') %>
  • <%= sidebar_item(admins_nps_path, 'NPS用户调研', icon: 'question-circle', controller: 'admins-nps') %>
  • +
  • <%= sidebar_item(admins_feedbacks_path, '用户反馈', icon: 'question-circle', controller: 'admins-feedbacks') %>
  • <% end %>
  • diff --git a/config/routes.rb b/config/routes.rb index e78d9654a..cf3bfd1eb 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -898,6 +898,10 @@ Rails.application.routes.draw do resources :nps do post :switch_change, on: :collection end + resources :feedbacks, only: [:index, :destroy] do + get :new_history, on: :member + post :create_history, on: :member + end resources :laboratories, only: [:index, :create, :destroy, :update] do member do get :shixuns_for_select diff --git a/db/migrate/20221108100538_create_feedback_message_histories.rb b/db/migrate/20221108100538_create_feedback_message_histories.rb new file mode 100644 index 000000000..cd5f236df --- /dev/null +++ b/db/migrate/20221108100538_create_feedback_message_histories.rb @@ -0,0 +1,12 @@ +class CreateFeedbackMessageHistories < ActiveRecord::Migration[5.2] + def change + create_table :feedback_message_histories do |t| + t.references :feedback + t.references :user + t.string :title + t.text :content + + t.timestamps + end + end +end From e3179dfd6e3fc8257e7208cfc761a50e594ad208 Mon Sep 17 00:00:00 2001 From: yystopf Date: Wed, 9 Nov 2022 14:35:11 +0800 Subject: [PATCH 018/143] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E5=8F=8D=E9=A6=88=E6=84=8F=E8=A7=81=E9=82=AE=E4=BB=B6?= =?UTF-8?q?=E5=9B=9E=E5=A4=8D=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/admins/feedbacks_controller.rb | 4 ++-- app/mailers/user_mailer.rb | 6 +++++- app/models/feedback_message_history.rb | 12 +++++++++++- 3 files changed, 18 insertions(+), 4 deletions(-) diff --git a/app/controllers/admins/feedbacks_controller.rb b/app/controllers/admins/feedbacks_controller.rb index caff0a9f8..4ef3c455c 100644 --- a/app/controllers/admins/feedbacks_controller.rb +++ b/app/controllers/admins/feedbacks_controller.rb @@ -25,12 +25,12 @@ class Admins::FeedbacksController < Admins::BaseController def create_history @feedback_message_history = @feedback.feedback_message_histories.new(feedback_message_history_params) @feedback_message_history.user = current_user - if @feedback_message_history.save + if @feedback_message_history.save! redirect_to admins_feedbacks_path flash[:success] = "发送通知成功" else redirect_to admins_feedbacks_path - flash[:danger] = "发送通知失败" + flash[:danger] = @feedback_message_history.errors.full_messages.join(", ") end end diff --git a/app/mailers/user_mailer.rb b/app/mailers/user_mailer.rb index 21ed5b0d5..2e6ca2eb7 100644 --- a/app/mailers/user_mailer.rb +++ b/app/mailers/user_mailer.rb @@ -1,6 +1,6 @@ class UserMailer < ApplicationMailer # 注意:这个地方一定要和你的邮箱服务域名一致 - default from: 'notification@trustie.org' + default from: 'admin@trustie.org' # 用户注册验证码 def register_email(mail, code) @@ -12,4 +12,8 @@ class UserMailer < ApplicationMailer @code = code mail(to: mail, subject: 'Gitink | 更改邮箱验证码') end + + def feedback_email(mail, title, content) + mail(to: mail, subject: title, content_type: "text/html", body: content) + end end diff --git a/app/models/feedback_message_history.rb b/app/models/feedback_message_history.rb index d04a005f1..ee746cafd 100644 --- a/app/models/feedback_message_history.rb +++ b/app/models/feedback_message_history.rb @@ -20,5 +20,15 @@ class FeedbackMessageHistory < ApplicationRecord belongs_to :feedback belongs_to :user - + + before_validation :send_meessage_email, on: :create + + private + + def send_meessage_email + unless UserMailer.update_email(mail, verification_code).deliver_now + errors[:title] << '邮件发送失败!' + end + end + end From 6d9cf8aad2043f707b1edfbf19aeea041a485a22 Mon Sep 17 00:00:00 2001 From: yystopf Date: Wed, 9 Nov 2022 14:41:17 +0800 Subject: [PATCH 019/143] =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/models/feedback_message_history.rb | 2 +- app/models/user.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/models/feedback_message_history.rb b/app/models/feedback_message_history.rb index ee746cafd..b50e8b27e 100644 --- a/app/models/feedback_message_history.rb +++ b/app/models/feedback_message_history.rb @@ -26,7 +26,7 @@ class FeedbackMessageHistory < ApplicationRecord private def send_meessage_email - unless UserMailer.update_email(mail, verification_code).deliver_now + unless UserMailer.feedback_email(user&.mail, title, content).deliver_now errors[:title] << '邮件发送失败!' end end diff --git a/app/models/user.rb b/app/models/user.rb index 2d2d15c53..62eeb77ee 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -174,7 +174,7 @@ class User < Owner has_many :system_notification_histories has_many :system_notifications, through: :system_notification_histories has_one :trace_user, dependent: :destroy - + has_many :feedbacks, dependent: :destroy # Groups and active users scope :active, lambda { where(status: STATUS_ACTIVE) } scope :like, lambda { |keywords| From e4d62c53359135fa580bf3a00fe00a41bb7903ad Mon Sep 17 00:00:00 2001 From: yystopf Date: Wed, 9 Nov 2022 14:54:43 +0800 Subject: [PATCH 020/143] =?UTF-8?q?=E6=96=B0=E5=A2=9E=EF=BC=9A=E5=AD=97?= =?UTF-8?q?=E7=AC=A6=E4=B8=B2=E6=88=AA=E5=8F=96=E5=B1=95=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/admins/feedbacks/_list.html.erb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/views/admins/feedbacks/_list.html.erb b/app/views/admins/feedbacks/_list.html.erb index 9ac47cdc4..c4327909e 100644 --- a/app/views/admins/feedbacks/_list.html.erb +++ b/app/views/admins/feedbacks/_list.html.erb @@ -17,7 +17,11 @@ <%= feedback&.user&.login%> <%= feedback&.user&.mail%> <%= feedback.created_at&.strftime('%Y-%m-%d %H:%M') %> - <%= feedback.content %> + + + <%= feedback.content.truncate(30) %> + + <%= link_to "发送邮件", new_history_admins_feedback_path(feedback), remote: true, class: "action" %> <%#= link_to "删除", admins_feedback_path(feedback), method: :delete, data:{confirm: "确认删除的吗?"}, class: "action" %> From e24921bba385df6b9760ee82a62ce1926bd37ca7 Mon Sep 17 00:00:00 2001 From: yystopf Date: Wed, 9 Nov 2022 14:56:27 +0800 Subject: [PATCH 021/143] =?UTF-8?q?=E4=BF=AE=E5=A4=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/admins/feedbacks/_list.html.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/views/admins/feedbacks/_list.html.erb b/app/views/admins/feedbacks/_list.html.erb index c4327909e..8c21e6a99 100644 --- a/app/views/admins/feedbacks/_list.html.erb +++ b/app/views/admins/feedbacks/_list.html.erb @@ -19,7 +19,7 @@ <%= feedback.created_at&.strftime('%Y-%m-%d %H:%M') %> - <%= feedback.content.truncate(30) %> + <%= feedback.content.truncate(20) %> From 570f664c27ca93671fc255274a6f06347027dfd3 Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 10 Nov 2022 11:02:50 +0800 Subject: [PATCH 022/143] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9A=E6=A0=87?= =?UTF-8?q?=E8=AE=B0issue=E6=95=B0=E9=87=8F=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/issue_tags_controller.rb | 2 +- app/views/issue_tags/index.json.jbuilder | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/app/controllers/issue_tags_controller.rb b/app/controllers/issue_tags_controller.rb index 011735ff7..da9f16f71 100644 --- a/app/controllers/issue_tags_controller.rb +++ b/app/controllers/issue_tags_controller.rb @@ -7,7 +7,7 @@ class IssueTagsController < ApplicationController def index - issue_tags = @project.issue_tags.reorder("#{order_name} #{order_type}") + issue_tags = @project.issue_tags.includes(:issues).reorder("issue_tags.#{order_name} #{order_type}") @user_admin_or_member = current_user.present? && (current_user.admin || @project.member?(current_user)) @page = params[:page] || 1 @limit = params[:limit] || 15 diff --git a/app/views/issue_tags/index.json.jbuilder b/app/views/issue_tags/index.json.jbuilder index 7f20a4374..37bd51608 100644 --- a/app/views/issue_tags/index.json.jbuilder +++ b/app/views/issue_tags/index.json.jbuilder @@ -4,6 +4,7 @@ json.user_admin_or_member @user_admin_or_member json.issue_tags do json.array! @issue_tags.each.to_a do |tag| - json.extract! tag, :id, :name, :description, :color, :issues_count, :project_id, :gid, :gitea_url + json.extract! tag, :id, :name, :description, :color, :project_id, :gid, :gitea_url + json.issues_count tag.issues_count - tag.issues.closed.size end end \ No newline at end of file From ef83697cb85a8328b12596f84868ac9e9a86696b Mon Sep 17 00:00:00 2001 From: yystopf Date: Thu, 10 Nov 2022 16:21:43 +0800 Subject: [PATCH 023/143] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9Atooltip?= =?UTF-8?q?=E9=97=AA=E7=83=81=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/views/admins/feedbacks/_list.html.erb | 21 +++++++++++++++------ app/views/admins/feedbacks/index.html.erb | 2 +- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/app/views/admins/feedbacks/_list.html.erb b/app/views/admins/feedbacks/_list.html.erb index 8c21e6a99..1b7b045ed 100644 --- a/app/views/admins/feedbacks/_list.html.erb +++ b/app/views/admins/feedbacks/_list.html.erb @@ -5,8 +5,8 @@ 用户名 用户邮箱 <%= sort_tag('创建时间', name: 'created_at', path: admins_feedbacks_path) %> - 反馈意见 - 操作 + 反馈意见 + 操作 @@ -18,9 +18,11 @@ <%= feedback&.user&.mail%> <%= feedback.created_at&.strftime('%Y-%m-%d %H:%M') %> - - <%= feedback.content.truncate(20) %> - + + + <%= feedback.content.truncate(20) %> + + <%= link_to "发送邮件", new_history_admins_feedback_path(feedback), remote: true, class: "action" %> @@ -34,4 +36,11 @@ -<%= render partial: 'admins/shared/paginate', locals: { objects: feedbacks } %> \ No newline at end of file +<%= render partial: 'admins/shared/paginate', locals: { objects: feedbacks } %> + + \ No newline at end of file diff --git a/app/views/admins/feedbacks/index.html.erb b/app/views/admins/feedbacks/index.html.erb index 06a25e8c3..391c83ca6 100644 --- a/app/views/admins/feedbacks/index.html.erb +++ b/app/views/admins/feedbacks/index.html.erb @@ -2,7 +2,7 @@ <% add_admin_breadcrumb('反馈意见') %> <% end %> -