From d913f89a82b640bfd9b11a9d3c92cc31919b351b Mon Sep 17 00:00:00 2001 From: z9hang Date: Fri, 6 Feb 2015 15:52:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=AF=BE=E7=A8=8B=E5=8A=A8?= =?UTF-8?q?=E6=80=81=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/courses.rb | 2 +- app/api/mobile/entities/course_dynamic.rb | 17 +++++++++++++++++ app/helpers/api_helper.rb | 5 ++--- app/services/courses_service.rb | 17 ++++++++++++++--- 4 files changed, 34 insertions(+), 7 deletions(-) create mode 100644 app/api/mobile/entities/course_dynamic.rb diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index 7b3fc7cd5..7dbfaffb0 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -216,7 +216,7 @@ module Mobile get "course_dynamic/:id" do cs = CoursesService.new count = cs.course_dynamic(params,current_user) - present :data, count + present :data, count, with: Mobile::Entities::CourseDynamic present :status, 0 end diff --git a/app/api/mobile/entities/course_dynamic.rb b/app/api/mobile/entities/course_dynamic.rb new file mode 100644 index 000000000..11f8c2682 --- /dev/null +++ b/app/api/mobile/entities/course_dynamic.rb @@ -0,0 +1,17 @@ +module Mobile + module Entities + class CourseDynamic < Grape::Entity + def self.course_dynamic_expose(field) + expose field do |c,opt| + c[field] if (c.is_a?(Hash) && c.key?(field)) + end + end + + course_dynamic_expose :course_name + course_dynamic_expose :need_anonymous_comments_count + course_dynamic_expose :student_commit_number + course_dynamic_expose :news_count + course_dynamic_expose :message_count + end + end +end \ No newline at end of file diff --git a/app/helpers/api_helper.rb b/app/helpers/api_helper.rb index b227a96ab..c865a500b 100644 --- a/app/helpers/api_helper.rb +++ b/app/helpers/api_helper.rb @@ -44,8 +44,7 @@ module ApiHelper #param: user => "用户", course_id => "查询的课程ID" #return: 作业的数量 ######################################################### - def get_course_anonymous_evaluation user,course_id - course = Course.find course_id + def get_course_anonymous_evaluation user,course count = 0 if course is_teacher = is_course_teacher user,course @@ -59,6 +58,6 @@ module ApiHelper end end end - count + [count,is_teacher] end end \ No newline at end of file diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index d987514c2..f4201774a 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -327,9 +327,20 @@ class CoursesService end end - def course_dynamic params,current_user - count = get_course_anonymous_evaluation current_user,params[:id] - count + def course_dynamic(params,current_user) + course = Course.find(params[:id]) + if current_user.nil? || !(current_user.admin? || course.is_public == 1 || (course.is_public == 0 && current_user.member_of_course?(course))) + raise '403' + end + count,is_teacher = get_course_anonymous_evaluation current_user,course + if is_teacher + student_commit_number = count + else + need_anonymous_comments_count = count + end + news_count = course.news.count + message_count = course.journals_for_messages.count + {:course_name => course.name,:need_anonymous_comments_count=>need_anonymous_comments_count,:student_commit_number=>student_commit_number,:news_count=> news_count,:message_count=>message_count} end private