From 0a33a716dee4ac31f1c218b83d67711e9bd01b43 Mon Sep 17 00:00:00 2001 From: z9hang Date: Tue, 20 Jan 2015 15:17:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=AF=BE=E7=A8=8B=E4=BD=9C?= =?UTF-8?q?=E4=B8=9A=E5=88=97=E8=A1=A8API=E6=8E=A5=E5=8F=A3=20=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E4=BD=9C=E4=B8=9A=E8=AF=A6=E6=83=85=E5=88=97=E8=A1=A8?= =?UTF-8?q?API=E6=8E=A5=E5=8F=A3=20=E6=B7=BB=E5=8A=A0=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E9=80=9A=E7=9F=A5=E5=88=97=E8=A1=A8API=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/api.rb | 4 ++-- app/api/mobile/apis/courses.rb | 26 +++++++++++++++++++-- app/api/mobile/apis/homeworks.rb | 4 +++- app/api/mobile/entities/homework.rb | 34 +++++++++++++++++++++++++++ app/api/mobile/entities/news.rb | 27 ++++++++++++++++++++++ app/services/courses_service.rb | 36 +++++++++++++++++++++++++---- app/services/homework_service.rb | 11 +++++---- 7 files changed, 128 insertions(+), 14 deletions(-) create mode 100644 app/api/mobile/entities/homework.rb create mode 100644 app/api/mobile/entities/news.rb diff --git a/app/api/mobile/api.rb b/app/api/mobile/api.rb index 554031b9a..8226a1020 100644 --- a/app/api/mobile/api.rb +++ b/app/api/mobile/api.rb @@ -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 diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index 4130ea902..c6f3fdcd1 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -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 diff --git a/app/api/mobile/apis/homeworks.rb b/app/api/mobile/apis/homeworks.rb index 32e7142ee..49f3efde6 100644 --- a/app/api/mobile/apis/homeworks.rb +++ b/app/api/mobile/apis/homeworks.rb @@ -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 diff --git a/app/api/mobile/entities/homework.rb b/app/api/mobile/entities/homework.rb new file mode 100644 index 000000000..4eb6bbfdf --- /dev/null +++ b/app/api/mobile/entities/homework.rb @@ -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 \ No newline at end of file diff --git a/app/api/mobile/entities/news.rb b/app/api/mobile/entities/news.rb new file mode 100644 index 000000000..dc60e99b0 --- /dev/null +++ b/app/api/mobile/entities/news.rb @@ -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 \ No newline at end of file diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index 485126ac4..1fef2c27f 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -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 \ No newline at end of file diff --git a/app/services/homework_service.rb b/app/services/homework_service.rb index c0a669bca..acbaf475d 100644 --- a/app/services/homework_service.rb +++ b/app/services/homework_service.rb @@ -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 # 启动作业匿评