From 08f374fedeeb24f7b904b0fd14bc6c49adf81a97 Mon Sep 17 00:00:00 2001 From: p31729568 Date: Thu, 25 Jul 2019 10:05:40 +0800 Subject: [PATCH] modify tiding list api --- app/controllers/application_controller.rb | 2 +- .../concerns/controller_rescue_handler.rb | 2 +- app/controllers/concerns/paginate_helper.rb | 2 +- app/controllers/tidings_controller.rb | 21 +++++++++++++++---- app/decorators/tiding_decorator.rb | 20 ++++++++++++++++++ app/views/tidings/_tiding.json.jbuilder | 6 ++++-- config/locales/tidings/zh-CN.yml | 16 ++++++++++++++ 7 files changed, 60 insertions(+), 9 deletions(-) diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb index cc1fc167e..da9a4b317 100644 --- a/app/controllers/application_controller.rb +++ b/app/controllers/application_controller.rb @@ -229,7 +229,7 @@ class ApplicationController < ActionController::Base uid_logger("user_setup: " + (User.current.logged? ? "#{User.current.try(:login)} (id=#{User.current.try(:id)})" : "anonymous")) if !User.current.logged? && Rails.env.development? - User.current = User.find 12 + User.current = User.find 57703 end # User.current = User.find 81403 diff --git a/app/controllers/concerns/controller_rescue_handler.rb b/app/controllers/concerns/controller_rescue_handler.rb index bacd6a793..101b72f5c 100644 --- a/app/controllers/concerns/controller_rescue_handler.rb +++ b/app/controllers/concerns/controller_rescue_handler.rb @@ -3,7 +3,7 @@ module ControllerRescueHandler included do rescue_from Exception do |e| - logger.error e + Util.logger_error e render json: {status: -1, message: e.message} end # rescue_from ActionView::MissingTemplate, with: :object_not_found diff --git a/app/controllers/concerns/paginate_helper.rb b/app/controllers/concerns/paginate_helper.rb index 13148bf42..34740eb5d 100644 --- a/app/controllers/concerns/paginate_helper.rb +++ b/app/controllers/concerns/paginate_helper.rb @@ -1,7 +1,7 @@ module PaginateHelper def paginate(objs, **opts) page = params[:page].to_i <= 0 ? 1 : params[:page].to_i - per_page = params[:per_page].to_i > 0 ? params[:per_page].to_i : 20 + per_page = params[:per_page].to_i > 0 ? params[:per_page].to_i : opts[:per_page] || 20 Kaminari.paginate_array(objs).page(page).per(per_page) end diff --git a/app/controllers/tidings_controller.rb b/app/controllers/tidings_controller.rb index 686f457f0..795010b3f 100644 --- a/app/controllers/tidings_controller.rb +++ b/app/controllers/tidings_controller.rb @@ -1,19 +1,32 @@ class TidingsController < ApplicationController + include PaginateHelper + + after_action :update_onclick_time!, only: [:index] + def index - tidings = current_user.tidings.order(created_at: :desc) + tidings = current_user.tidings tiding_types = case params[:type] when 'notice' then 'System' when 'apply' then 'Apply' - when 'course' then %w(HomeworkCommon Exercise Poll) + when 'course' then %w(HomeworkCommon Exercise Poll GraduationTask GraduationTopic) when 'project' then 'Project' when 'interaction' then %w(Comment Mentioned Praise Fan) + when 'project_package' then %w(Created Destroyed Bidding BiddingEnd BiddingWon BiddingLost) end - tidings = tidings.where(tiding_type: tiding_types) if tiding_types.present? + tidings = tidings.where(container_type: 'ProjectPackage') if params[:type] == 'project_package' + @count = tidings.count - @tidings = paginate tidings + @tidings = paginate(tidings.order(created_at: :desc), per_page: 10) + @onclick_time = current_user.click_time + end + + private + + def update_onclick_time! + current_user.onclick_time.touch(:onclick_time) end end \ No newline at end of file diff --git a/app/decorators/tiding_decorator.rb b/app/decorators/tiding_decorator.rb index a9faeae84..8d383dadf 100644 --- a/app/decorators/tiding_decorator.rb +++ b/app/decorators/tiding_decorator.rb @@ -8,6 +8,10 @@ module TidingDecorator time_from_now(created_at) end + def unread?(time) + created_at > time + end + # 组装国际化路径:locale_format('Apply', 1) ==> tiding.ApplyUserAuthentication.Apply.1_end def locale_format(*arr) arr.unshift("tiding.#{container_type}").join('.') << '_end' @@ -340,4 +344,20 @@ module TidingDecorator def department_content I18n.t(locale_format) % [container.try(:name), container.try(:school)&.name] end + + def library_content + if tiding_type == 'System' + I18n.t(locale_format(tiding_type, status), reason: extra) % container.try(:title) + else + I18n.t(locale_format) % container.try(:title) + end + end + + def project_package_content + if tiding_type == 'System' + I18n.t(locale_format(tiding_type, status), reason: extra) % container.try(:title) + else + I18n.t(locale_format(tiding_type)) % [container.try(:title) || extra] + end + end end diff --git a/app/views/tidings/_tiding.json.jbuilder b/app/views/tidings/_tiding.json.jbuilder index 7a7168d38..d26d37b7b 100644 --- a/app/views/tidings/_tiding.json.jbuilder +++ b/app/views/tidings/_tiding.json.jbuilder @@ -1,9 +1,11 @@ -json.extract! tiding, :id, :status, :viewed, :user_id, :tiding_type, :container_type, :parent_container_type +json.extract! tiding, :id, :status, :viewed, :user_id, :tiding_type, :container_id, :container_type, :parent_container_id, :parent_container_type json.content tiding.content +json.identifier tiding.try(:container).try(:identifier) rescue nil json.time tiding.how_long_time +json.new_tiding tiding.unread?(@onclick_time) json.trigger_user do - json.partial! 'users/user_simple', user: tiding.trigger_user + json.partial! 'users/user_simple', user: tiding.trigger_user_id.zero? ? User.find(1) : tiding.trigger_user end json.attachments tiding.attachments, partial: 'attachments/attachment_small', as: :attachment diff --git a/config/locales/tidings/zh-CN.yml b/config/locales/tidings/zh-CN.yml index 66262588c..07e3c2f6d 100644 --- a/config/locales/tidings/zh-CN.yml +++ b/config/locales/tidings/zh-CN.yml @@ -199,3 +199,19 @@ Apply_end: "发起了匿评申诉申请:%s" HomeworkCommon_end: "有人对你的匿评发起了申诉:%s" Department_end: "你选填的二级单位:%s(%s)因不符合规范,已被系统删除.请重新选择" + Library: + Apply_end: "申请发布教学案例:%s" + System: + 1_end: "你提交的发布教学案例申请:%s,审核已通过" + 2_end: "你提交的发布教学案例申请:%s,审核未通过,原因:%{reason}" + ProjectPackage: + Apply_end: "申请发布众包需求:%s" + System: + 1_end: "你提交的众包需求申请:%s,审核已通过" + 2_end: "你提交的众包需求申请:%s,审核未通过,原因:%{reason}" + Created_end: "你创建了众包需求:%s" + Destroyed_end: "你删除了众包需求:%s" + Bidding_end: "应征了你发布的众包任务:%s" + BiddingEnd_end: "你发布的众包任务:%s,已进入选标阶段,请尽快进行选择确认!" + BiddingWon_end: "恭喜,你应征的众包任务:%s,在评选环节中标了" + BiddingLost_end: "很遗憾,你应征投稿的众包任务:%s,未中标"