| @@ -1,6 +0,0 @@ | |||||
| class Topic::ActivityForumsController < Topic::BaseController | |||||
| def index | |||||
| @activity_forums = kaminari_paginate(Topic::ActivityForum) | |||||
| end | |||||
| end | |||||
| @@ -1,6 +0,0 @@ | |||||
| class Topic::BannersController < Topic::BaseController | |||||
| def index | |||||
| @banners = kaminari_paginate(Topic::Banner) | |||||
| end | |||||
| end | |||||
| @@ -1,3 +0,0 @@ | |||||
| class Topic::BaseController < ApplicationController | |||||
| end | |||||
| @@ -1,6 +0,0 @@ | |||||
| class Topic::CardsController < Topic::BaseController | |||||
| def index | |||||
| @cards = kaminari_paginate(Topic::Card) | |||||
| end | |||||
| end | |||||
| @@ -1,6 +0,0 @@ | |||||
| class Topic::CooperatorsController < Topic::BaseController | |||||
| def index | |||||
| @cooperators = kaminari_paginate(Topic::Cooperator) | |||||
| end | |||||
| end | |||||
| @@ -1,6 +0,0 @@ | |||||
| class Topic::ExcellentProjectsController < Topic::BaseController | |||||
| def index | |||||
| @excellent_projects = kaminari_paginate(Topic::ExcellentProject) | |||||
| end | |||||
| end | |||||
| @@ -1,6 +0,0 @@ | |||||
| class Topic::ExperienceForumsController < Topic::BaseController | |||||
| def index | |||||
| @experience_forums = kaminari_paginate(Topic::ExperienceForum) | |||||
| end | |||||
| end | |||||
| @@ -1,6 +0,0 @@ | |||||
| class Topic::PinnedForumsController < Topic::BaseController | |||||
| def index | |||||
| @pinned_forums = kaminari_paginate(Topic::PinnedForum) | |||||
| end | |||||
| end | |||||
| @@ -0,0 +1,9 @@ | |||||
| class TopicsController < ApplicationController | |||||
| def index | |||||
| return render_not_found("请输入正确的数据类型") unless params[:topic_type].present? | |||||
| scope = Topic.with_single_type(params[:topic_type]) | |||||
| @topics = kaminari_paginate(scope) | |||||
| end | |||||
| end | |||||
| @@ -15,10 +15,31 @@ class Topic < ApplicationRecord | |||||
| default_scope { order(order_index: :desc)} | default_scope { order(order_index: :desc)} | ||||
| scope :with_single_type, ->(type){where(type: trans_simpletype_to_classtype(type))} | |||||
| def image | def image | ||||
| image_url('image') | image_url('image') | ||||
| end | end | ||||
| def self.trans_simpletype_to_classtype(type) | |||||
| case type | |||||
| when 'activity_forum' | |||||
| 'Topic::ActivityForum' | |||||
| when 'banner' | |||||
| 'Topic::Banner' | |||||
| when 'card' | |||||
| 'Topic::Card' | |||||
| when 'cooperator' | |||||
| 'Topic::Cooperator' | |||||
| when 'excellent_project' | |||||
| 'Topic::ExcellentProject' | |||||
| when 'experience_forum' | |||||
| 'Topic::ExperienceForum' | |||||
| when 'pinned_forum' | |||||
| 'Topic::PinnedForum' | |||||
| end | |||||
| end | |||||
| private | private | ||||
| def image_url(type) | def image_url(type) | ||||
| @@ -0,0 +1,3 @@ | |||||
| json.(activity_forum, :id, :title, :url) | |||||
| json.visits 0 | |||||
| json.created_time format_time(Time.now) | |||||
| @@ -0,0 +1 @@ | |||||
| json.(banner, :id, :title, :image) | |||||
| @@ -0,0 +1 @@ | |||||
| json.(card, :id, :title, :url) | |||||
| @@ -0,0 +1 @@ | |||||
| json.(cooperator, :id, :title, :image, :url) | |||||
| @@ -0,0 +1,3 @@ | |||||
| json.(excellent_project, :id, :title, :url) | |||||
| project_common = $redis_cache.hgetall("v2-project-common:#{excellent_project&.uuid}") | |||||
| json.visits (project_common['visits'] || 0).to_i | |||||
| @@ -0,0 +1,3 @@ | |||||
| json.(experience_forum, :id, :title, :url) | |||||
| json.visits 0 | |||||
| json.created_time format_time(Time.now) | |||||
| @@ -0,0 +1,3 @@ | |||||
| json.(pinned_forum, :id, :title, :url) | |||||
| json.visits 0 | |||||
| json.created_time format_time(Time.now) | |||||
| @@ -0,0 +1,24 @@ | |||||
| json.partial! "commons/success" | |||||
| json.total_count @topics.total_count | |||||
| json.topics do | |||||
| json.array! @topics.each do |topic| | |||||
| case topic.type | |||||
| when "Topic::ActivityForum" | |||||
| json.partial! "activity_forum", locals: {activity_forum: topic} | |||||
| when "Topic::Banner" | |||||
| json.partial! "banner", locals: {banner: topic} | |||||
| when "Topic::Card" | |||||
| json.partial! "card", locals: {card: topic} | |||||
| when "Topic::Cooperator" | |||||
| json.partial! "cooperator", locals: {cooperator: topic} | |||||
| when "Topic::ExcellentProject" | |||||
| json.partial! "excellent_project", locals: {excellent_project: topic} | |||||
| when "Topic::ExperienceForum" | |||||
| json.partial! "experience_forum", locals: {experience_forum: topic} | |||||
| when "Topic::PinnedForum" | |||||
| json.partial! "pinned_forum", locals: {pinned_forum: topic} | |||||
| else | |||||
| json.nil! | |||||
| end | |||||
| end | |||||
| end | |||||
| @@ -24,16 +24,7 @@ Rails.application.routes.draw do | |||||
| resources :edu_settings | resources :edu_settings | ||||
| scope '/api' do | scope '/api' do | ||||
| namespace :topic do | |||||
| resources :activity_forums, only: [:index] | |||||
| resources :banners, only: [:index] | |||||
| resources :cards, only: [:index] | |||||
| resources :cooperators, only: [:index] | |||||
| resources :excellent_projects, only: [:index] | |||||
| resources :experience_forums, only: [:index] | |||||
| resources :pinned_forums, only: [:index] | |||||
| end | |||||
| resources :topics, only: [:index] | |||||
| namespace :ci do | namespace :ci do | ||||
| resources :languages, only: [:index, :show] do | resources :languages, only: [:index, :show] do | ||||
| collection do | collection do | ||||