From 95d8c1a09d2b95764c5ef5beae1b9db3b10adeb9 Mon Sep 17 00:00:00 2001 From: z9hang Date: Mon, 15 Dec 2014 10:41:09 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E8=AF=BE=E7=A8=8B?= =?UTF-8?q?=E6=88=90=E5=91=98=E5=88=97=E8=A1=A8=E6=8E=A5=E5=8F=A3=EF=BC=8C?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E6=9D=83=E9=99=90=E5=88=A4=E6=96=AD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/api/mobile/apis/courses.rb | 4 ++-- app/controllers/courses_controller.rb | 7 ++++++- app/services/courses_service.rb | 18 +++++++++++++----- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/app/api/mobile/apis/courses.rb b/app/api/mobile/apis/courses.rb index 4920f6f30..1b863cd22 100644 --- a/app/api/mobile/apis/courses.rb +++ b/app/api/mobile/apis/courses.rb @@ -75,7 +75,7 @@ module Mobile end get 'teachers' do cs = CoursesService.new - teachers = cs.course_teacher_or_student_list({role: 1}, params[:course_id]) + teachers = cs.course_teacher_or_student_list({role: 1}, params[:course_id],current_user) {status: 0, data: teachers} end @@ -85,7 +85,7 @@ module Mobile end get 'teachers' do cs = CoursesService.new - teachers = cs.course_teacher_or_student_list({role: 2}, params[:course_id]) + teachers = cs.course_teacher_or_student_list({role: 2}, params[:course_id],current_user) {status: 0, data: teachers} end diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index c1a7d9237..564033627 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -245,9 +245,14 @@ class CoursesController < ApplicationController #@members = @course.member_principals.includes(:roles, :principal).all.sort end cs = CoursesService.new - @members = cs.course_teacher_or_student_list(params,@course) + @members = cs.course_teacher_or_student_list(params,@course,User.current) @members = paginateHelper @members render :layout => 'base_courses' + + rescue Exception => e + if e.message == '403' + render_403 + end end #判断指定用户是否为课程教师 diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index 4b1428b5f..acd8793cb 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -49,19 +49,27 @@ class CoursesService end #课程老师或课程学生列表 - def course_teacher_or_student_list params,course - @teachers= searchTeacherAndAssistant(course) + def course_teacher_or_student_list params,course,current_user + if course.is_a?(Course) + c = course + else + c = Course.find(course) + end + if !(current_user.admin? || c.is_public == 1 || (c.is_public == 0 && current_user.member_of_course?(c))) + raise '403' + end + @teachers= searchTeacherAndAssistant(c) #@canShowCode = isCourseTeacher(User.current.id,course) && params[:role] != '1' case params[:role] when '1' #@subPage_title = l :label_teacher_list - @members = searchTeacherAndAssistant(course) + @members = searchTeacherAndAssistant(c) when '2' #@subPage_title = l :label_student_list - @members = searchStudent(course) + @members = searchStudent(c) else #@subPage_title = '' - @members = @course.member_principals.includes(:roles, :principal).all.sort + @members = c.member_principals.includes(:roles, :principal).all.sort end @members end From 36967eeec0aee269a8417b562f45488029f0051c Mon Sep 17 00:00:00 2001 From: z9hang Date: Mon, 15 Dec 2014 13:44:26 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=B3=A8=E5=86=8C?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E3=80=81=E6=B7=BB=E5=8A=A0=E4=BD=9C=E4=B8=9A?= =?UTF-8?q?=E5=88=97=E8=A1=A8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/account_controller.rb | 1 + app/helpers/account_helper.rb | 2 +- app/services/courses_service.rb | 21 ++++++++++++++++++++- 3 files changed, 22 insertions(+), 2 deletions(-) diff --git a/app/controllers/account_controller.rb b/app/controllers/account_controller.rb index 6102160b3..c0322e0cb 100644 --- a/app/controllers/account_controller.rb +++ b/app/controllers/account_controller.rb @@ -124,6 +124,7 @@ class AccountController < ApplicationController when '1' #register_by_email_activation(@user) unless @user.new_record? + flash[:notice] = l(:notice_account_register_done) render action: 'email_valid', locals: {:mail => user.mail} end when '3' diff --git a/app/helpers/account_helper.rb b/app/helpers/account_helper.rb index 3be096492..8ef2d6095 100644 --- a/app/helpers/account_helper.rb +++ b/app/helpers/account_helper.rb @@ -24,7 +24,7 @@ module AccountHelper if user.save and token.save UserStatus.create(:user_id => user.id, :changsets_count => 0, :watchers_count => 0) Mailer.register(token).deliver - flash[:notice] = l(:notice_account_register_done) + #flash[:notice] = l(:notice_account_register_done) #render action: 'email_valid', locals: {:mail => user.mail} else yield if block_given? diff --git a/app/services/courses_service.rb b/app/services/courses_service.rb index acd8793cb..bb36f3cb3 100644 --- a/app/services/courses_service.rb +++ b/app/services/courses_service.rb @@ -1,6 +1,7 @@ class CoursesService include ApplicationHelper include CoursesHelper + #TODO:尚未整合权限系统 #参数school_id为0或不传时返回所有课程,否则返回对应学校的课程 #参数per_page_count分页功能,每页显示的课程数 #参数page分页功能,当前页码 @@ -48,7 +49,7 @@ class CoursesService url_to_avatar(obj) end - #课程老师或课程学生列表 + #课程老师或课程学生列表 TODO:更新业务逻辑,当前版本未包含分班功能 def course_teacher_or_student_list params,course,current_user if course.is_a?(Course) c = course @@ -82,6 +83,11 @@ class CoursesService scope = @course ? @course.news.course_visible : News.course_visible end + #显示课程通知 + def show_course_news + + end + def show_course params course = Course.find(params[:id]) course @@ -186,4 +192,17 @@ class CoursesService [@state,course] end + #作业列表 + #已提交的作业数量获取 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? + else + raise '403' + end + end + end \ No newline at end of file