小程序的实践课程列表接口

dev_video
cxt 5 years ago
parent ee58beb147
commit bc2fb6801d

@ -3,7 +3,9 @@ class Weapps::SubjectsController < Weapps::BaseController
# 首页
def index
subjects = Weapps::SubjectQuery.call(current_laboratory, params)
@subject_count = subjects.map(&:id).size
@subjects = paginate subjects
end
# 详情

@ -0,0 +1,37 @@
class Weapps::SubjectQuery < ApplicationQuery
include CustomSortable
attr_reader :params
def initialize(current_laboratory, params)
@current_laboratory = current_laboratory
@params = params
end
def call
subjects = @current_laboratory.subjects
# 课程体系的过滤
if params[:sub_discipline_id].present?
subjects = subjects.joins(:sub_disciplines).where(sub_disciplines: {id: params[:sub_discipline_id]})
elsif params[:discipline_id].present?
subjects = subjects.joins(:sub_disciplines).where(sub_disciplines: {discipline_id: params[:discipline_id]})
else
subjects = subjects.joins(:sub_discipline_containers).where(sub_discipline_containers: {container_type: "Subject"})
end
subjects = subjects.left_joins(:shixuns).select('subjects.id, subjects.name, subjects.excellent, subjects.stages_count, subjects.status,
subjects.shixuns_count, subjects.updated_at, IFNULL(sum(shixuns.myshixuns_count), 0) myshixuns_count')
.group('subjects.id').order("#{order_type} #{sort_type}")
subjects
end
private
def order_type
params[:order] || "updated_at"
end
def sort_type
params[:sort] || "desc"
end
end

@ -0,0 +1,7 @@
json.subjects @subjects do |subject|
json.(subject, :id, :excellent, :name, :stages_count, :shixuns_count, :myshixuns_count)
json.image_url url_to_avatar(subject)
json.allow_visit subject.status > 1 || User.current.manager_of_subject?(subject) || User.current.admin?
end
json.total_count @subject_count

@ -1018,7 +1018,7 @@ Rails.application.routes.draw do
post :cancel_sticky, on: :collection
end
resources :subjects, path: :paths, only: [:create, :update, :edit, :show]
resources :subjects, path: :paths, only: [:index, :create, :update, :edit, :show]
resources :courses, only: [:create, :update, :edit, :show] do
member do

Loading…
Cancel
Save