添加课程作业列表API接口

修改作业详情列表API接口
添加课程通知列表API接口
api
z9hang 11 years ago
parent f0cac221e9
commit 0a33a716de

@ -32,8 +32,8 @@ module Mobile
mount Apis::Upgrade
mount Apis::Homeworks
add_swagger_documentation ({api_version: 'v1', base_path: 'http://u06.shellinfo.cn/trustie/api'})
# add_swagger_documentation ({api_version: 'v1', base_path: '/api'})
#add_swagger_documentation ({api_version: 'v1', base_path: 'http://u06.shellinfo.cn/trustie/api'})
add_swagger_documentation ({api_version: 'v1', base_path: '/api'})
end
end

@ -16,7 +16,7 @@ module Mobile
present :status, 0
end
desc "新建课程[TODO,待测试]"
desc "新建课程"
#current_user当前用户对象不是id
# params[:course][:name]:课程名称
#params[:course][:password]:密码
@ -55,7 +55,7 @@ module Mobile
present :status, 0
end
desc "编辑课程[TODO,待测试]"
desc "编辑课程"
params do
requires :token, type: String
requires :course_id, type: Integer, desc: '课程id'
@ -175,6 +175,28 @@ module Mobile
end
end
desc "课程作业列表"
params do
requires :token, type: String
end
get "homeworks/:id" do
cs = CoursesService.new
homeworks = cs.homework_list params,current_user
present :data, homeworks, with: Mobile::Entities::Homework
present :status, 0
end
desc "课程通知列表"
params do
end
get ":course_id/news" do
cs = CoursesService.new
news = cs.course_news_list params
present :data, news, with: Mobile::Entities::News
present :status, 0
end
end
end
end

@ -15,7 +15,9 @@ module Mobile
end
route_param :id do
get do
Homeworks.get_service.show_homework params
homework = Homeworks.get_service.show_homework params
present :data, homework, with: Mobile::Entities::Homework
present :status, 0
end
end
end

@ -0,0 +1,34 @@
module Mobile
module Entities
class Homework < Grape::Entity
def self.homework_expose(field)
expose field do |f,opt|
if f.is_a?(Hash) && f.key?(field)
f[field]
end
end
end
#作业id
homework_expose :id
#课程名称
homework_expose :course_name
#课程老师
homework_expose :course_teacher
#作业次数
homework_expose :homework_times
#作业名称
homework_expose :homework_name
#已提交的作业数量
homework_expose :homework_count
#学生提问数量
homework_expose :student_questions_count
#作业描述
homework_expose :description
#作业是否启用匿评功能 0不启用1启用
homework_expose :open_anonymous_evaluation
#作业状态 0:新建1已开启匿评2已关闭匿评
#只有作业启用了匿评功能且当前用户是课程老师且已提交的作品数量大于或等于2才能开启匿评
homework_expose :homework_state
end
end
end

@ -0,0 +1,27 @@
module Mobile
module Entities
class News < Grape::Entity
def self.news_expose(field)
expose field do |f,opt|
if f.is_a?(Hash) && f.key?(field)
f[field]
end
end
end
#新闻标题
news_expose :title
#作者id
news_expose :author_id
#作者名
news_expose :author_name
#新闻内容
news_expose :content
#发布时间
news_expose :time
#评论数量
news_expose :comments_count
end
end
end

@ -110,6 +110,11 @@ class CoursesService
@course = Course.find(params[:course_id])
end
scope = @course ? @course.news.course_visible : News.course_visible
news = []
scope.each do |n|
news << {:title => n.title,:author_name => n.author.name,:author_id => n.author.id, :content => n.description,:time => format_time(n.created_on),:comments_count => n.comments_count}
end
news
end
#查看新闻权限验证
@ -290,13 +295,36 @@ class CoursesService
#已提交的作业数量获取 bid.homeworks.count
#学生提问数量获取 bid.commit.nil? ? 0 : bid.commit
def homework_list params,current_user
if @course.is_public != 0 || current_user.member_of_course?(@course)
@offset, @limit = api_offset_and_limit({:limit => 10})
@bids = @course.homeworks.order('deadline DESC')
@bids = @bids.like(params[:name]) if params[:name].present?
course = Course.find(params[:id])
if course.is_public != 0 || current_user.member_of_course?(course)
bids = course.homeworks.order('deadline DESC')
bids = bids.like(params[:name]) if params[:name].present?
homeworks = []
if is_course_teacher(current_user,course)
bids.each do |bid|
homeworks << show_homework_info(course,bid)
end
end
homeworks
else
raise '403'
end
end
private
def show_homework_info course,bid
author = bid.author.lastname + bid.author.firstname
many_times = course.homeworks.index(bid) + 1
name = bid.name
homework_count = bid.homeworks.count #已提交的作业数量
student_questions_count = bid.commit.nil? ? 0 : bid.commit
description = bid.description
#if is_course_teacher(User.current, course) && @bid.open_anonymous_evaluation == 1 && @bid.homeworks.count >= 2
state = bid.comment_status
#end
open_anonymous_evaluation = bid.open_anonymous_evaluation
{:course_name => course.name,:id => bid.id, :course_teacher => author, :homework_times => many_times, :homework_name => name, :homework_count => homework_count,:student_questions_count => student_questions_count,
:description => description, :homework_state => state,:open_anonymous_evaluation => open_anonymous_evaluation}
end
end

@ -19,11 +19,12 @@ class HomeworkService
homework_count = @bid.homeworks.count #已提交的作业数量
student_questions_count = @bid.commit.nil? ? 0 : @bid.commit
description = @bid.description
if is_course_teacher(User.current, course) && @bid.open_anonymous_evaluation == 1 && @bid.homeworks.count >= 2
state = bid.comment_status
end
{:course => course, :atuthor => author, :many_times => many_times, :name => name, :homework_count => homework_count,:student_questions_count => student_questions_count,
:descriptiong => description, :state => state}
#if is_course_teacher(User.current, course) && @bid.open_anonymous_evaluation == 1 && @bid.homeworks.count >= 2
state = @bid.comment_status
#end
open_anonymous_evaluation = @bid.open_anonymous_evaluation
{:course_name => course.name,:id => @bid.id, :course_teacher => author, :homework_times => many_times, :homework_name => name, :homework_count => homework_count,:student_questions_count => student_questions_count,
:description => description, :homework_state => state,:open_anonymous_evaluation => open_anonymous_evaluation}
end
# 启动作业匿评

Loading…
Cancel
Save