2014-12-10 18:26:38 +08:00
#coding=utf-8
2014-11-27 19:43:04 +08:00
module Mobile
2014-12-09 15:16:47 +08:00
module Apis
2014-12-09 16:36:43 +08:00
class Courses < Grape :: API
resource :courses do
2015-07-16 17:56:35 +08:00
def self . get_service
CoursesService . new
end
2014-12-10 16:23:56 +08:00
desc " 获取所有课程 "
2014-12-09 16:36:43 +08:00
params do
2014-12-10 16:23:56 +08:00
optional :school_id , type : Integer , desc : '传入学校id,返回该学校课程列表'
requires :per_page_count , type : Integer , desc : '每页总数'
requires :page , type : Integer , desc : '当前页码'
2015-02-10 17:03:59 +08:00
optional :token , type : String
2014-12-08 16:51:21 +08:00
end
2014-11-27 19:43:04 +08:00
get do
2016-06-27 11:09:25 +08:00
authenticate!
2014-12-09 16:36:43 +08:00
cs = CoursesService . new
2016-06-27 16:03:07 +08:00
courses = cs . user_courses_list ( current_user )
2016-07-14 16:54:43 +08:00
present :data , courses , with : Mobile :: Entities :: Course , user : current_user
2014-12-09 16:36:43 +08:00
present :status , 0
2014-11-27 19:43:04 +08:00
end
2015-01-20 15:17:02 +08:00
desc " 新建课程 "
2015-01-04 11:53:16 +08:00
#current_user当前用户对象( 不是id)
# params[:course][:name]:课程名称
#params[:course][:password]:密码
#params[:course][:description]:描述
#params[:course][:is_public]:是否公开1公开, 0私有
#params[:course][:open_student]:是否公开学生列表1公开, 0不公开, 不公开时非课程成员无法看到学生列表
#params[:course][:course_type]:暂时默认给1值。
#params[:term]:学期(秋季学期或春季学期)
#params[:time]: 年份( 例: 2014)
#params[:setup_time]:暂不传(貌似已经没用了)
#params[:endup_time]: 暂不传(貌似已经没用了)
#params[:class_period]:学时总数
2014-12-13 21:52:26 +08:00
params do
2015-01-04 11:53:16 +08:00
requires :token , type : String
requires :name , type : String , desc : '课程名称'
requires :password , type : String , desc : '密码'
requires :description , type : String , desc : '描述'
requires :is_public , type : Integer , desc : '是否公开 1公开 0私有'
requires :open_student , type : Integer , desc : '是否公开学生列表1公开, 0不公开, 不公开时非课程成员无法看到学生列表'
requires :course_type , type : Integer , desc : '暂时传1'
2015-01-05 10:15:14 +08:00
requires :term , type : String , desc : '学期(秋季学期或春季学期)'
2015-01-04 11:53:16 +08:00
requires :time , type : String , desc : '年份'
requires :class_period , type : String , desc : '学时总数'
2014-12-13 21:52:26 +08:00
end
post do
2015-01-04 11:53:16 +08:00
authenticate!
cs = CoursesService . new
cs_params = {
course : params . reject { | k , v | [ :term , :time , :class_period ] . include? ( k ) } ,
term : params [ :term ] ,
time : params [ :time ] ,
class_period : params [ :class_period ]
}
courses = cs . create_course ( cs_params , current_user )
2016-07-14 16:54:43 +08:00
present :data , courses , with : Mobile :: Entities :: Course , user : current_user
2015-01-04 11:53:16 +08:00
present :status , 0
2014-12-13 21:52:26 +08:00
end
2015-01-20 15:17:02 +08:00
desc " 编辑课程 "
2014-12-13 21:52:26 +08:00
params do
2015-01-04 11:53:16 +08:00
requires :token , type : String
requires :course_id , type : Integer , desc : '课程id'
requires :name , type : String , desc : '课程名称'
requires :password , type : String , desc : '密码'
requires :description , type : String , desc : '描述'
requires :is_public , type : Integer , desc : '是否公开 1公开 0私有'
requires :open_student , type : Integer , desc : '是否公开学生列表1公开, 0不公开, 不公开时非课程成员无法看到学生列表'
requires :course_type , type : Integer , desc : '暂时传1'
2015-01-05 17:47:04 +08:00
requires :term , type : String , desc : '学期(秋季学期或春季学期)'
2015-01-04 11:53:16 +08:00
requires :time , type : String , desc : '年份'
requires :class_period , type : String , desc : '学时总数'
end
2015-01-05 17:45:47 +08:00
put do
2015-01-04 11:53:16 +08:00
authenticate!
2015-01-05 17:47:04 +08:00
cs = CoursesService . new
2015-01-04 11:53:16 +08:00
cs_params = {
course : params . reject { | k , v | [ :term , :time , :class_period ] . include? ( k ) } ,
term : params [ :term ] ,
time : params [ :time ] ,
class_period : params [ :class_period ]
}
course = :: Course . find ( params [ :course_id ] )
2015-04-09 16:05:51 +08:00
# 如果没有传密码过来,那就把原来的密码给上,不然会不更新
if params [ :password ] . nil? || params [ :password ] . blank?
cs_params [ :course ] [ :password ] = course [ :password ]
end
2015-01-04 11:53:16 +08:00
cs . edit_course_authorize ( current_user , course )
2015-01-05 17:47:04 +08:00
course = cs . edit_course ( cs_params , course , current_user )
2016-07-14 16:54:43 +08:00
present :data , course , with : Mobile :: Entities :: Course , user : current_user
2015-01-04 11:53:16 +08:00
present :status , 0
2014-12-13 21:52:26 +08:00
end
post do
end
desc " 加入课程 "
params do
2016-06-22 16:42:20 +08:00
requires :token , type : String
2016-06-15 13:44:28 +08:00
requires :invite_code , type : String , desc : '邀请码'
2016-08-02 15:50:15 +08:00
requires :teacher_flag , type : Boolean
requires :assistant_flag , type : Boolean
requires :student_flag , type : Boolean
2014-12-13 21:52:26 +08:00
end
2016-08-02 15:50:15 +08:00
post " join_class " do
2014-12-13 21:52:26 +08:00
authenticate!
2016-08-02 15:50:15 +08:00
roles_ids = [ ]
if params [ :teacher_flag ]
roles_ids << " 9 "
elsif params [ :assistant_flag ]
roles_ids << " 7 "
end
if params [ :student_flag ]
roles_ids << " 10 "
end
2016-09-18 16:12:38 +08:00
go_course_group = 0
2016-08-02 15:50:15 +08:00
if roles_ids . length < = 0
{ status : - 1 , message : " 请至少选择一个角色 " }
else
cs = CoursesService . new
status = cs . join_course_roles ( { role : roles_ids , openid : params [ :openid ] , invite_code : params [ :invite_code ] } , current_user )
{
status : status [ :state ] ,
2016-09-18 16:12:38 +08:00
message : CoursesService :: JoinCourseError . message ( status [ :state ] ) ,
go_coursegroup_flag : status [ :go_coursegroup_flag ] ,
course_id : status [ :course_id ]
2016-08-02 15:50:15 +08:00
}
end
2014-12-13 21:52:26 +08:00
end
2016-06-15 13:44:28 +08:00
2014-12-13 21:52:26 +08:00
desc " 退出课程 "
params do
2015-01-04 11:53:16 +08:00
requires :token , type : String
2014-12-13 21:52:26 +08:00
end
delete " :id " do
authenticate!
cs = CoursesService . new
2015-01-07 11:37:48 +08:00
status = cs . exit_course ( { :object_id = > params [ :id ] } , current_user )
out = { status : status }
message = case status
when 0 ; " 退出成功 "
when 1 ; " 您不在课程中 "
when 2 ; " 您还未登录 "
else ; " 未知错误,请稍后再试 "
end
out . merge ( message : message )
2014-12-13 21:52:26 +08:00
end
desc " 搜索课程 "
params do
requires :name , type : String , desc : " 课程名 "
2015-02-10 16:36:29 +08:00
optional :token , type : String
2014-12-13 21:52:26 +08:00
end
get 'search' do
cs = CoursesService . new
2015-02-10 16:36:29 +08:00
courses = cs . search_course ( params , current_user . nil? ? User . find ( 2 ) :current_user )
2016-07-14 16:54:43 +08:00
present :data , courses , with : Mobile :: Entities :: Course , user : current_user
2014-12-13 21:52:26 +08:00
present :status , 0
end
desc " 课程老师列表 "
params do
2015-01-07 15:24:43 +08:00
requires :token , type : String
2014-12-13 21:52:26 +08:00
requires :course_id , type : Integer , desc : " 课程id "
end
get 'teachers' do
2016-08-05 20:31:51 +08:00
course = Course . find ( params [ :course_id ] )
2014-12-13 21:52:26 +08:00
cs = CoursesService . new
2015-01-07 15:24:43 +08:00
teachers = cs . course_teacher_or_student_list ( { role : '1' } , params [ :course_id ] , current_user )
2016-08-05 20:31:51 +08:00
teachers . each do | m |
if m [ :id ] == course . tea_id
teachers . delete ( m )
teachers . insert ( 0 , m )
break
end
end
2015-01-07 15:24:43 +08:00
present :data , teachers , with : Mobile :: Entities :: User
present :status , 0
2014-12-13 21:52:26 +08:00
end
desc " 课程学生列表 "
params do
2015-01-07 15:24:43 +08:00
requires :token , type : String
2014-12-13 21:52:26 +08:00
requires :course_id , type : Integer , desc : " 课程id "
end
2015-01-07 15:24:43 +08:00
get 'students' do
2014-12-13 21:52:26 +08:00
cs = CoursesService . new
2015-01-07 15:24:43 +08:00
students = cs . course_teacher_or_student_list ( { role : '2' } , params [ :course_id ] , current_user )
present :data , students , with : Mobile :: Entities :: User
present :status , 0
2014-12-13 21:52:26 +08:00
end
2016-08-02 15:50:15 +08:00
desc " 课程未审核列表 "
params do
requires :token , type : String
requires :course_id , type : Integer , desc : " 课程id "
end
get 'reviewers' do
authenticate!
cs = CoursesService . new
reviewers = cs . reviewers_list ( params [ :course_id ] )
present :data , reviewers , with : Mobile :: Entities :: User
present :status , 0
end
desc " 课程单个未审核用户信息 "
params do
requires :token , type : String
requires :course_id , type : Integer , desc : " 课程id "
requires :user_id , type : Integer , desc : " 用户id "
end
post 'review_member_info' do
authenticate!
cs = CoursesService . new
2016-08-04 18:09:54 +08:00
result = cs . get_reviewer_info ( params )
present :data , result [ :reviewer ] , with : Mobile :: Entities :: User
present :status , result [ :status ]
2016-08-02 15:50:15 +08:00
end
desc " 处理教师或助教的身份申请 "
params do
requires :token , type : String
requires :course_id , type : Integer , desc : " 课程id "
requires :user_id , type : Integer , desc : " 用户id "
requires :type , type : Integer , desc : " 同意或拒绝 "
end
post 'deal_join_apply' do
authenticate!
cs = CoursesService . new
result = cs . deal_join_apply ( params , current_user )
present :status , result [ :status ]
present :message , result [ :message ]
end
desc " 设置助教 "
2015-05-13 09:56:34 +08:00
params do
2015-05-15 09:06:36 +08:00
requires :token , type : String
requires :user_id , type : Integer , desc : '用户id'
requires :course_id , type : Integer , desc : '课程id'
end
get 'set_user_as_assitant' do
cs = CoursesService . new
cs . set_as_assitant_teacher params
present :status , 0
2015-05-13 09:56:34 +08:00
end
2016-08-02 15:50:15 +08:00
desc " 删除助教 "
2015-05-15 09:06:36 +08:00
params do
requires :token , type : String
requires :user_id , type : Integer , desc : '用户id'
requires :course_id , type : Integer , desc : '课程id'
end
get 'del_user_as_assitant' do
cs = CoursesService . new
cs . del_assitant_teacher params
present :status , 0
2015-05-13 09:56:34 +08:00
end
2014-12-10 16:23:56 +08:00
desc " 返回单个课程 "
2014-12-09 16:36:43 +08:00
params do
requires :id , type : Integer
2016-07-15 19:08:05 +08:00
requires :token , type : String
2014-12-09 16:36:43 +08:00
end
route_param :id do
get do
2016-07-15 19:08:05 +08:00
# course = Course.find(params[:id])
cs = CoursesService . new
course = cs . show_course ( params , current_user )
2016-07-18 11:08:02 +08:00
if course [ :course ] [ :is_delete ] == 1
{ status : - 1 , message : '该班级不存在或已被删除啦' }
else
present :data , course , with : Mobile :: Entities :: Course , user : current_user
present :status , 0
end
2014-12-09 16:36:43 +08:00
end
end
2016-08-23 10:23:46 +08:00
desc " 获取课程动态 "
params do
requires :id , type : Integer
requires :token , type : String
end
post 'activities' do
authenticate!
user = current_user
2016-08-25 10:55:22 +08:00
course_types = " ('Message','News','HomeworkCommon','Poll','Course') "
2016-08-23 10:23:46 +08:00
activities = UserActivity . where ( " (container_type = 'Course' and container_id = #{ params [ :id ] } and act_type in #{ course_types } ) " ) . order ( 'updated_at desc' )
page = params [ :page ] ? params [ :page ] : 0
all_count = activities . count
activities = activities . limit ( 10 ) . offset ( page * 10 )
count = activities . count
present :data , activities , with : Mobile :: Entities :: Activity , user : user
present :all_count , all_count
present :count , count
present :page , page
present :status , 0
end
2015-01-20 15:17:02 +08:00
desc " 课程作业列表 "
params do
requires :token , type : String
end
get " homeworks/:id " do
cs = CoursesService . new
homeworks = cs . homework_list params , current_user
2016-07-18 14:24:59 +08:00
present :data , homeworks , with : Mobile :: Entities :: Homework , user : current_user
2015-01-20 15:17:02 +08:00
present :status , 0
end
desc " 课程通知列表 "
params do
2015-02-04 11:57:37 +08:00
optional :token , type : String
2015-01-20 15:17:02 +08:00
end
get " :course_id/news " do
cs = CoursesService . new
2015-02-04 11:57:37 +08:00
news = cs . course_news_list params , current_user . nil? ? User . find ( 2 ) :current_user
2015-01-20 15:17:02 +08:00
present :data , news , with : Mobile :: Entities :: News
present :status , 0
end
2015-01-20 17:42:18 +08:00
desc " 显示课程通知 "
params do
2015-02-04 14:07:00 +08:00
optional :token , type : String
2015-01-20 17:42:18 +08:00
end
get " news/:id " do
cs = CoursesService . new
cs . show_course_news_authorize ( current_user . nil? ? User . find ( 2 ) :current_user )
news = cs . show_course_news params , current_user . nil? ? User . find ( 2 ) :current_user
present :data , news , with : Mobile :: Entities :: News
present :status , 0
end
2015-03-03 09:11:47 +08:00
desc '用户课程动态'
2015-02-06 14:29:42 +08:00
params do
requires :token , type : String
end
get " course_dynamic/:id " do
cs = CoursesService . new
2015-06-19 15:05:25 +08:00
count = cs . all_course_dynamics ( params , current_user )
2015-02-06 15:52:34 +08:00
present :data , count , with : Mobile :: Entities :: CourseDynamic
2015-02-06 14:29:42 +08:00
present :status , 0
end
2015-01-20 15:17:02 +08:00
2015-04-29 17:46:39 +08:00
desc '课程课件'
params do
requires :token , type : String
requires :course_id , type : Integer , desc : '课程id'
2015-05-05 17:19:31 +08:00
optional :name , type : String , desc : '课件名称可能包含的字符'
2015-04-29 17:46:39 +08:00
end
2015-05-20 17:27:17 +08:00
post " :course_id/attachments " do
2015-04-29 17:46:39 +08:00
cs = CoursesService . new
count = cs . course_attachments params
2016-07-18 14:24:59 +08:00
present :data , count , with : Mobile :: Entities :: Attachment , user : current_user
2015-04-29 17:46:39 +08:00
present :status , 0
end
2015-05-04 17:36:48 +08:00
desc '课程学生'
params do
requires :token , type : String
requires :course_id , type : Integer , desc : '课程id'
2016-01-22 17:27:21 +08:00
optional :name , type : String , desc : '学生的姓名或者登录名或者学号可能包含的字符'
2015-05-04 17:36:48 +08:00
end
get " :course_id/members " do
cs = CoursesService . new
count = cs . course_members params
2015-05-15 14:02:41 +08:00
# 我如果在学生当中,那么我将放在第一位
count . each do | m |
if m . user . id == current_user . id
count . delete m
count . unshift m
end
end
2015-05-04 17:36:48 +08:00
present :data , count , with : Mobile :: Entities :: Member
present :status , 0
end
2015-05-13 09:56:34 +08:00
desc '查看用户历次作业成绩'
params do
requires :token , type : String
requires :member_id , type : Integer , desc : '课程member_id'
optional :homeworkName , type : String , desc : '作业名称以及作业名称可能包含的字符'
end
get '/show_member_score/:member_id' do
cs = CoursesService . new
homeworkscore = cs . show_member_score params
present :data , homeworkscore , with : Mobile :: Entities :: Homeworkscore
present :status , 0
end
2015-05-15 16:13:32 +08:00
desc '发布课程通知'
params do
requires :token , type : String
requires :course_id , type : Integer , desc : '课程id'
requires :title , type : String , desc : '通知标题'
requires :desc , type : String , desc : '通知描述'
end
post ':course_id/create_course_notice' do
cs = CoursesService . new
news = cs . create_course_notice params , current_user
present :data , news , with : Mobile :: Entities :: News
present :status , 0
end
2015-07-01 16:56:03 +08:00
2015-07-08 17:36:17 +08:00
desc '总成绩 or 活跃度列表'
2015-07-01 16:56:03 +08:00
params do
requires :token , type : String
requires :course_id , type : Integer , desc : '课程id'
optional :page , type : Integer , desc : '页码'
2015-07-08 17:36:17 +08:00
optional :type , type : Integer , desc : '0是活跃度, 1是成绩'
2015-07-01 16:56:03 +08:00
end
get ':course_id/students_score_list' do
cs = CoursesService . new
news = cs . students_score_list params , current_user
2015-07-09 14:32:10 +08:00
present :data , news [ :user_list ] , with : Mobile :: Entities :: User
present :maxSize , news [ :max_size ]
present :status , 0
2015-07-01 16:56:03 +08:00
end
2015-07-02 17:31:30 +08:00
desc '课程某次作业提交列表 并显示成绩'
params do
requires :token , type : String
requires :course_id , type : Integer , desc : '课程id'
requires :homework_id , type : Integer , desc : '作业id'
optional :page , type : Integer , desc : '页码'
end
get ':course_id/student_works_list' do
cs = CoursesService . new
student_works = cs . student_work_list params , current_user
2015-07-17 15:19:28 +08:00
present :data , student_works , with : Mobile :: Entities :: StudentWork
2015-07-16 17:56:35 +08:00
present :status , 0
2015-07-02 17:31:30 +08:00
end
2015-07-03 12:22:33 +08:00
2015-07-16 17:56:35 +08:00
desc '讨论区信息'
params do
requires :token , type : String
requires :course_id , type : Integer , desc : '课程id'
optional :page , type : Integer , desc : '页码'
end
get ':course_id/board_message_list' do
cs = CoursesService . new
board_messages_list = cs . board_message_list params , current_user
present :data , board_messages_list . all , with : Mobile :: Entities :: Message
present :status , 0
end
desc '讨论区某主题的回复列表'
params do
requires :token , type : String
requires :board_id , type : Integer , desc : '讨论区id'
requires :msg_id , type : Integer , desc : '讨论主题id'
optional :page , type : Integer , desc : '页码'
end
get ':board_id/board_message_reply_list' do
cs = Courses . get_service
board_messages_list = cs . board_message_reply_list params , current_user
present :data , board_messages_list . all , with : Mobile :: Entities :: Message
present :status , 0
end
desc '讨论区回复'
params do
requires :token , type : String
requires :board_id , type : Integer , desc : '讨论区id'
requires :parent_id , type : Integer , desc : '本回复父id'
requires :subject , type : String , desc : '本回复主题'
requires :content , type : String , desc : '本回复内容'
requires :root_id , type : Integer , desc : '本回复根id'
requires :quote , type : String , desc : '本回复引用内容'
end
post ':board_id/board_message_reply' do
cs = Courses . get_service
board_messages = cs . board_message_reply params , current_user
present :data , board_messages , with : Mobile :: Entities :: Message
present :status , 0
end
2016-06-27 16:03:07 +08:00
desc '获取测验列表'
params do
requires :token , type : String
end
get ':course_id/exercises' do
authenticate!
2016-07-13 10:09:47 +08:00
course = Course . find ( params [ :course_id ] )
2016-07-19 10:50:36 +08:00
exercises = course . exercises . where ( " exercise_status <> 1 " ) . reorder ( " created_at desc " )
2016-07-18 14:24:59 +08:00
present :data , exercises , with : Mobile :: Entities :: Exercise , user : current_user
2016-06-27 16:03:07 +08:00
present :status , 0
end
2015-07-04 15:53:01 +08:00
2016-07-04 17:04:06 +08:00
desc '删除课程'
params do
requires :token , type : String
end
post ':course_id/del' do
authenticate!
c = Course . find ( params [ :course_id ] )
2016-07-08 16:23:07 +08:00
# if c.members.count > 1
# {status: -1, message: '已经有成员加入,不能删除'}
# else
2016-07-04 17:04:06 +08:00
c . delete!
present :status , 0
2016-07-08 16:23:07 +08:00
# end
2016-07-04 17:04:06 +08:00
end
2016-07-27 14:30:19 +08:00
desc " 获取班级某成员角色信息 "
params do
requires :id , type : Integer
requires :token , type : String
requires :user_id , type : Integer
end
post 'get_member_info' do
authenticate!
c = Course . find ( " #{ params [ :id ] } " )
my_member = c . member_principals . where ( " users.id= #{ params [ :user_id ] } " ) . first
if my_member && my_member . roles [ 0 ]
present :course_id , params [ :id ]
present :user_id , params [ :user_id ]
present :member_info , my_member , with : Mobile :: Entities :: ProjectMember
2016-09-20 14:58:37 +08:00
present :course_group_id , my_member . course_group_id
2016-07-27 14:30:19 +08:00
present :status , 0
else
present :status , - 1
2016-08-31 17:19:12 +08:00
present :message , " 该用户已不在班级中 "
2016-07-27 14:30:19 +08:00
end
end
desc " 修改班级某成员角色信息 "
params do
requires :id , type : Integer
requires :token , type : String
requires :user_id , type : Integer
2016-08-02 15:50:15 +08:00
requires :teacher_flag , type : Boolean
requires :assistant_flag , type : Boolean
requires :student_flag , type : Boolean
2016-07-27 14:30:19 +08:00
end
post 'edit_member_role' do
authenticate!
2016-08-02 15:50:15 +08:00
roles_id = [ ]
if params [ :teacher_flag ]
roles_id << 9
elsif params [ :assistant_flag ]
roles_id << 7
end
if params [ :student_flag ]
roles_id << 10
end
2016-07-27 14:30:19 +08:00
c = Course . find ( " #{ params [ :id ] } " )
2016-09-01 14:10:27 +08:00
my_member = c . member_principals . where ( " users.id= #{ current_user . id } " ) . first
rolesids = [ ]
my_member . roles . each do | role |
rolesids << role . id
end
2016-07-27 14:30:19 +08:00
#7教辅 9教师 10学生
2016-09-01 14:17:14 +08:00
if c . tea_id == params [ :user_id ] || roles_id . length < = 0
2016-07-27 14:30:19 +08:00
present :status , - 1
2016-09-01 14:10:27 +08:00
present :message , " 修改失败 "
2016-09-01 14:17:14 +08:00
elsif rolesids . include? ( 3 ) || rolesids . include? ( 7 ) || rolesids . include? ( 9 )
2016-07-27 14:30:19 +08:00
cs = CoursesService . new
2016-08-02 15:50:15 +08:00
status = cs . modify_user_course_role params , roles_id
2016-07-28 14:49:45 +08:00
present :status , status
2016-09-01 14:17:14 +08:00
else
present :status , - 1
present :message , " 修改失败 "
2016-07-27 14:30:19 +08:00
end
end
2016-08-23 16:52:35 +08:00
desc " 发布班级通知 "
params do
requires :id , type : Integer
requires :token , type : String
requires :text , type : String
requires :title , type : String
end
post ':id/publishnotice' do
authenticate!
#老师或教辅才能发通知
c = Course . find ( " #{ params [ :id ] } " )
my_member = c . member_principals . where ( " users.id= #{ current_user . id } " ) . first
roles_ids = [ ]
my_member . roles . each do | role |
roles_ids << role . id
end
if my_member && ( roles_ids . include? ( 7 ) || roles_ids . include? ( 9 ) || roles_ids . include? ( 3 ) )
tmpparams = { }
tmpparams [ 'title' ] = params [ :title ]
tmpparams [ 'description' ] = params [ :text ]
tmpparams [ 'sticky' ] = 0
news = News . new ( :course = > c , :author = > current_user )
#render :layout => 'base_courses'
news . safe_attributes = tmpparams
news . save!
present :status , 0
else
present :status , - 1
present :message , " 学生不能发布通知 "
end
end
desc " 发布班级问题 "
params do
requires :id , type : Integer
requires :token , type : String
requires :text , type : String
end
post ':id/publishissue' do
authenticate!
c = Course . find ( " #{ params [ :id ] } " )
boards = c . boards . includes ( :last_message = > :author ) . all
if c . boards . empty?
board = c . boards . build
board . name = " 班级问答区 "
board . description = c . name . to_s
board . project_id = - 1
if board . save
boards = c . boards . includes ( :last_message = > :author ) . all
end
end
board = boards . first
message = Message . new
message . author = current_user
message . board = board
tmpparams = { }
tmpparams [ 'subject' ] = params [ :title ]
tmpparams [ 'content' ] = params [ :text ]
message . safe_attributes = tmpparams
message . save!
present :status , 0
end
2016-08-31 14:21:38 +08:00
desc " 删除班级成员 "
params do
requires :id , type : Integer
requires :token , type : String
requires :user_id , type : Integer
end
post ':id/deletemember' do
authenticate!
status = - 1
if ( current_user . id != params [ :user_id ] . to_i )
#权限
c = Course . find ( " #{ params [ :id ] } " )
if c . tea_id != params [ :user_id ] . to_i
my_member = c . member_principals . where ( " users.id= #{ current_user . id } " ) . first
roles_ids = [ ]
my_member . roles . each do | role |
roles_ids << role . id
end
2016-09-01 11:18:42 +08:00
if my_member && ( roles_ids . include? ( 3 ) || roles_ids . include? ( 7 ) || roles_ids . include? ( 9 ) )
2016-08-31 14:21:38 +08:00
#删除该成员
cs = CoursesService . new
status = cs . delete_course_member ( c , params [ :user_id ] . to_i , current_user )
else
status = - 2
end
else
status = - 3
end
else
status = - 4
end
out = { status : status }
message = case status
when 0 ; " 删除成功 "
when - 1 ; " 您还未登录 "
when - 2 ; " 对不起您没有权限 "
when - 3 ; " 不能删除班级管理员 "
when - 4 ; " 不能删除自己 "
when 1 ; " 该用户不在该班级中 "
else ; " 未知错误,请稍后再试 "
end
out . merge ( message : message )
end
desc " 退出班级 "
params do
requires :id , type : Integer
requires :token , type : String
end
post ':id/quit' do
authenticate!
#管理员不能退
cs = CoursesService . new
c = Course . find ( " #{ params [ :id ] } " )
user = current_user
if c . tea_id != user . id
status = cs . exit_course ( { :object_id = > params [ :id ] } , user )
else
status = 3
end
out = { status : status }
message = case status
2016-08-31 17:19:12 +08:00
when 0 ; " 退出班级成功 "
2016-09-01 10:21:29 +08:00
when 1 ; " 您不是该班级成员 "
2016-08-31 14:21:38 +08:00
when 2 ; " 您还未登录 "
when 3 ; " 管理员不能退出班级 "
else ; " 未知错误,请稍后再试 "
end
out . merge ( message : message )
end
2016-09-18 16:12:38 +08:00
desc '获取分班列表'
params do
2016-09-19 13:22:29 +08:00
requires :id , type : Integer
2016-09-18 16:12:38 +08:00
requires :token , type : String
end
2016-09-19 13:22:29 +08:00
get 'course_groups/:id' do
2016-09-18 16:12:38 +08:00
begin
authenticate!
2016-09-19 13:22:29 +08:00
course = Course . find ( params [ :id ] )
2016-09-18 16:12:38 +08:00
groups = [ ]
groups = course . course_groups if course . course_groups
present :data , groups
present :status , 0
rescue
present :status , - 1
end
end
2016-09-19 13:22:29 +08:00
desc " 加入分班 "
params do
requires :id , type : Integer
requires :token , type : String
requires :course_group_id , type : Integer
end
2016-09-20 14:58:37 +08:00
post 'user_join_coursegroup' do
2016-09-19 13:22:29 +08:00
begin
authenticate!
member = Member . where ( :course_id = > params [ :id ] , :user_id = > current_user . id ) . first
raise " 你还不是该班级的学生! " unless member
member . course_group_id = params [ :course_group_id ] . to_i
member . save
present :status , 0
rescue Exception = > e
present :message , e . message
present :status , - 1
end
end
2016-09-20 14:58:37 +08:00
desc " 修改分班 "
params do
requires :id , type : Integer
requires :token , type : String
requires :course_group_id , type : Integer
requires :user_id , type : Integer
end
post 'user_edit_coursegroup' do
begin
authenticate!
member = Member . where ( :course_id = > params [ :id ] , :user_id = > params [ :user_id ] ) . first
raise " 不是该班级的学生! " unless member
member . course_group_id = params [ :course_group_id ] . to_i
member . save
present :status , 0
rescue Exception = > e
present :message , e . message
present :status , - 1
end
end
desc '获取分班列表带上学生'
params do
requires :id , type : Integer
requires :token , type : String
end
get 'course_groups_withstudent/:id' do
begin
authenticate!
course = Course . find ( params [ :id ] )
groups = [ ]
groups = course . course_groups if course . course_groups
present :data , groups , with : Mobile :: Entities :: CourseGroup
present :status , 0
rescue
present :status , - 1
end
end
desc " 删除分班 "
params do
requires :id , type : Integer
requires :token , type : String
requires :course_group_id , type : Integer
end
post 'delete_coursegroup' do
begin
authenticate!
c = Course . find ( " #{ params [ :id ] } " )
my_member = c . member_principals . where ( " users.id= #{ current_user . id } " ) . first
roles_ids = [ ]
my_member . roles . each do | role |
roles_ids << role . id
end
if my_member && ( roles_ids . include? ( 3 ) || roles_ids . include? ( 7 ) || roles_ids . include? ( 9 ) )
else
raise " 您没有该权限! "
end
CourseGroup . delete ( params [ :course_group_id ] )
present :status , 0
rescue Exception = > e
present :message , e . message
present :status , - 1
end
end
desc " 编辑分班 "
params do
requires :id , type : Integer
requires :token , type : String
end
post 'edit_coursegroup' do
begin
authenticate!
c = Course . find ( " #{ params [ :id ] } " )
my_member = c . member_principals . where ( " users.id= #{ current_user . id } " ) . first
roles_ids = [ ]
my_member . roles . each do | role |
roles_ids << role . id
end
if my_member && ( roles_ids . include? ( 3 ) || roles_ids . include? ( 7 ) || roles_ids . include? ( 9 ) )
else
raise " 您没有该权限! "
end
#增加分班和修改分班名
modify_groups = params [ :modify_groups ]
modify_groups . each do | g |
group = CourseGroup . find ( g . id )
group . name = g . id . to_s + Time . now . to_i . to_s #只能先另取个名了不然原有的两个互换的话修改不了
group . save
end
modify_groups . each do | g |
group = CourseGroup . find ( g . id )
group . name = g . name
group . save
end
#增加分班和修改分班名
add_groups = params [ :add_groups ]
add_groups . each do | name |
group = CourseGroup . new
group . name = name
group . course_id = params [ :id ]
group . save
end
present :status , 0
rescue Exception = > e
present :message , e . message
present :status , - 1
end
end
2014-12-09 16:36:43 +08:00
end
2014-11-27 19:43:04 +08:00
end
end
end