停止匿评 api

This commit is contained in:
lizanle 2015-07-04 15:53:01 +08:00
parent 0f9642e60b
commit c5e298d24e
6 changed files with 201 additions and 120 deletions

View File

@ -337,18 +337,7 @@ module Mobile
present :data,student_works.all,with:Mobile::Entities::StudentWork
end
desc '开启匿评'
params do
requires :token,type:String
requires :course_id,type:Integer,desc:'课程id'
requires :homework_id,type:Integer,desc:'作业id'
end
get ':course_id/start_anonymous_comment' do
cs = CoursesService.new
status = cs.start_anonymous_comment params,current_user
present :data,status
present :status,0
end
end
end
end

View File

@ -31,33 +31,33 @@ module Mobile
present :status, 0
end
desc "启动匿评"
params do
requires :token, type: String
end
post ':id/start_anonymous_comment' do
statue = Homeworks.get_service.start_anonymous_comment params,current_user.nil? ? User.find(2):current_user
messages = ""
case statue
when 1
messages = "启动成功"
when 2
messages = "启动失败作业总数大于等于2份时才能启动匿评"
when 3
messages = "已开启匿评,请务重复开启"
end
present :data,messages
present :status, statue
end
desc "关闭匿评"
params do
requires :token, type: String
end
post ':id/stop_anonymous_comment' do
Homeworks.get_service.stop_anonymous_comment params,current_user.nil? ? User.find(2):current_user
present :status, 0
end
# desc "启动匿评"
# params do
# requires :token, type: String
# end
# post ':id/start_anonymous_comment' do
# statue = Homeworks.get_service.start_anonymous_comment params,current_user.nil? ? User.find(2):current_user
# messages = ""
# case statue
# when 1
# messages = "启动成功"
# when 2
# messages = "启动失败作业总数大于等于2份时才能启动匿评"
# when 3
# messages = "已开启匿评,请务重复开启"
# end
# present :data,messages
# present :status, statue
# end
#
# desc "关闭匿评"
# params do
# requires :token, type: String
# end
# post ':id/stop_anonymous_comment' do
# Homeworks.get_service.stop_anonymous_comment params,current_user.nil? ? User.find(2):current_user
# present :status, 0
# end
desc "匿评作品详情"
params do
@ -111,6 +111,45 @@ module Mobile
present :status, 0
end
desc '开启匿评'
params do
requires :token,type:String
requires :course_id,type:Integer,desc:'课程id'
requires :homework_id,type:Integer,desc:'作业id'
end
post ':homework_id/start_anonymous_comment' do
hs = Homeworks.get_service
status = hs.start_anonymous_comment params,current_user
messages = ""
case status[:status]
when 1
messages = "启动成功"
when 2
messages = "启动失败作业总数大于等于2份时才能启动匿评"
when 3
messages = "已开启匿评,请务重复开启"
when 4
messages = "没有开启匿评的权限"
when 5
messages = "截止日期之前不可启动匿评"
end
present :data,messages
present :status,0
end
desc '关闭匿评'
params do
requires :token,type:String
requires :course_id,type:Integer,desc:'课程id'
requires :homework_id,type:Integer,desc:'作业id'
end
post ':homework_id/stop_anonymous_comment' do
hs = Homeworks.get_service
hs.stop_anonymous_comment params,current_user
message = "成功关闭"
present :data, message
present :status,0
end
end
end

View File

@ -58,6 +58,9 @@ module Mobile
course_dynamic_expose :document_count
course_dynamic_expose :topic_count
course_dynamic_expose :homework_count
course_dynamic_expose :current_user_is_member
course_dynamic_expose :current_user_is_teacher
#在dynamics里解析出四种动态
expose :documents,using:Mobile::Entities::Attachment do |f,opt|
obj = nil

View File

@ -24,11 +24,11 @@ module Mobile
f.course.members.count - f.student_works.count
when :homework_submit_num
f.student_works.count
when :homework_status
when :homework_status_student
get_homework_status f
when :homework_times
f.course.homework_commons.index(f) + 1
when :homework_status_desc
when :homework_status_teacher
homework_status_desc f
end
end
@ -82,8 +82,8 @@ module Mobile
expose :submit_student_list ,using: Mobile::Entities::User do |f,opt|
get_submit_sutdent_list f
end
homework_expose :homework_status #作业的状态
homework_expose :homework_status_desc #状态的解释
homework_expose :homework_status_student #老师看到的作业的状态
homework_expose :homework_status_teacher #老师看到的状态
end
end

View File

@ -699,7 +699,7 @@ class CoursesService
latest_course_dynamics.sort! { |order, newer| newer[:time] <=> order[:time] }
latest_course_dynamic = latest_course_dynamics.first
unless latest_course_dynamic.nil?
result << {:course_name => course.name, :course_id => course.id, :course_img_url => url_to_avatar(course), :course_time => course.time, :course_term => course.term,:message => dynamics_count, :dynamics => latest_course_dynamics, :count => dynamics_count}
result << {:course_name => course.name,:current_user_is_member => current_user.member_of_course?(course),:current_user_is_teacher => is_course_teacher(current_user,course), :course_id => course.id, :course_img_url => url_to_avatar(course), :course_time => course.time, :course_term => course.term,:message => dynamics_count, :dynamics => latest_course_dynamics, :count => dynamics_count}
end
end
#返回数组集合
@ -746,41 +746,41 @@ class CoursesService
student_works
end
# 开启匿评
#statue 1:启动成功2启动失败作业总数大于等于2份时才能启动匿评3:已开启匿评,请务重复开启,4:没有开启匿评的权限
def start_anonymous_comment params,current_user
homework = HomeworkCommon.find(params[:homework_id])
return {:status=>4} unless current_user.admin? || current_user.allowed_to?(:as_teacher,Course.find(params[:course_id]))
return {:status=>5} if Time.parse(homework.end_time.to_s).strftime("%Y-%m-%d") >= Time.now.strftime("%Y-%m-%d")
homework_detail_manual = homework.homework_detail_manual
if homework_detail_manual.comment_status == 1
student_works = homework.student_works
if student_works && student_works.size >=2
student_works.each_with_index do |work, index|
user = work.user
n = homework_detail_manual.evaluation_num
n = n < student_works.size ? n : student_works.size - 1
assigned_homeworks = get_assigned_homeworks(student_works, n, index)
assigned_homeworks.each do |h|
student_works_evaluation_distributions = StudentWorksEvaluationDistribution.new(user_id: user.id, student_work_id: h.id)
student_works_evaluation_distributions.save
end
end
homework_detail_manual.update_column('comment_status', 2)
statue = 1
else
statue = 2
end
else
statue = 3
end
{:status => statue}
end
def get_assigned_homeworks(student_works, n, index)
student_works += student_works
student_works[index + 1 .. index + n]
end
# # 开启匿评
# #statue 1:启动成功2启动失败作业总数大于等于2份时才能启动匿评3:已开启匿评,请务重复开启,4:没有开启匿评的权限
# def start_anonymous_comment params,current_user
# homework = HomeworkCommon.find(params[:homework_id])
# return {:status=>4} unless current_user.admin? || current_user.allowed_to?(:as_teacher,Course.find(params[:course_id]))
# return {:status=>5} if Time.parse(homework.end_time.to_s).strftime("%Y-%m-%d") >= Time.now.strftime("%Y-%m-%d")
# homework_detail_manual = homework.homework_detail_manual
# if homework_detail_manual.comment_status == 1
# student_works = homework.student_works
# if student_works && student_works.size >=2
# student_works.each_with_index do |work, index|
# user = work.user
# n = homework_detail_manual.evaluation_num
# n = n < student_works.size ? n : student_works.size - 1
# assigned_homeworks = get_assigned_homeworks(student_works, n, index)
# assigned_homeworks.each do |h|
# student_works_evaluation_distributions = StudentWorksEvaluationDistribution.new(user_id: user.id, student_work_id: h.id)
# student_works_evaluation_distributions.save
# end
# end
# homework_detail_manual.update_column('comment_status', 2)
# statue = 1
# else
# statue = 2
# end
# else
# statue = 3
# end
# {:status => statue}
# end
#
# def get_assigned_homeworks(student_works, n, index)
# student_works += student_works
# student_works[index + 1 .. index + n]
# end
end

View File

@ -57,47 +57,97 @@ class HomeworkService
[@bid,@totle_size,@cur_size,@percent]
end
#启动匿评
#statue 1:启动成功2启动失败作业总数大于等于2份时才能启动匿评3:已开启匿评,请务重复开启
def start_anonymous_comment params,current_user
@bid = Bid.find(params[:id])
@course = @bid.courses.first
unless is_course_teacher(current_user,@course) || current_user.admin?
@statue = 4
raise '403'
end
if(@bid.comment_status == 0)
homeworks = @bid.homeworks
if(homeworks && homeworks.size >= 2)
homeworks.each_with_index do |homework, index|
user = homework.user
n = @bid.evaluation_num
n = n < homeworks.size ? n : homeworks.size - 1
assigned_homeworks = get_assigned_homeworks(homeworks, n, index)
assigned_homeworks.each do |h|
@homework_evaluation = HomeworkEvaluation.new(user_id: user.id, homework_attach_id: h.id)
@homework_evaluation.save
end
end
@bid.update_column('comment_status', 1)
@statue = 1
else
@statue = 2
end
else
@statue = 3
end
@statue
end
#关闭匿评
def stop_anonymous_comment params,current_user
@bid = Bid.find(params[:id])
@course = @bid.courses.first
unless is_course_teacher(current_user,@course) || current_user.admin?
raise '403'
end
@bid.update_column('comment_status', 2)
end
# 启动匿评 操作 逻辑改变,暂不删除
# #启动匿评
# #statue 1:启动成功2启动失败作业总数大于等于2份时才能启动匿评3:已开启匿评,请务重复开启
# def start_anonymous_comment params,current_user
# @bid = Bid.find(params[:id])
# @course = @bid.courses.first
# unless is_course_teacher(current_user,@course) || current_user.admin?
# @statue = 4
# raise '403'
# end
# if(@bid.comment_status == 0)
# homeworks = @bid.homeworks
# if(homeworks && homeworks.size >= 2)
# homeworks.each_with_index do |homework, index|
# user = homework.user
# n = @bid.evaluation_num
# n = n < homeworks.size ? n : homeworks.size - 1
# assigned_homeworks = get_assigned_homeworks(homeworks, n, index)
# assigned_homeworks.each do |h|
# @homework_evaluation = HomeworkEvaluation.new(user_id: user.id, homework_attach_id: h.id)
# @homework_evaluation.save
# end
# end
# @bid.update_column('comment_status', 1)
# @statue = 1
# else
# @statue = 2
# end
# else
# @statue = 3
# end
# @statue
# end
# #关闭匿评
# def stop_anonymous_comment params,current_user
# @bid = Bid.find(params[:id])
# @course = @bid.courses.first
# unless is_course_teacher(current_user,@course) || current_user.admin?
# raise '403'
# end
# @bid.update_column('comment_status', 2)
# end
# 开启匿评
#statue 1:启动成功2启动失败作业总数大于等于2份时才能启动匿评3:已开启匿评,请务重复开启,4:没有开启匿评的权限
def start_anonymous_comment params,current_user
homework = HomeworkCommon.find(params[:homework_id])
return {:status=> 4} unless current_user.admin? || current_user.allowed_to?(:as_teacher,Course.find(params[:course_id]))
return {:status=>5} if Time.parse(homework.end_time.to_s).strftime("%Y-%m-%d") >= Time.now.strftime("%Y-%m-%d")
homework_detail_manual = homework.homework_detail_manual
if homework_detail_manual.comment_status == 1
student_works = homework.student_works
if student_works && student_works.size >=2
student_works.each_with_index do |work, index|
user = work.user
n = homework_detail_manual.evaluation_num
n = n < student_works.size ? n : student_works.size - 1
assigned_homeworks = get_assigned_homeworks(student_works, n, index)
assigned_homeworks.each do |h|
student_works_evaluation_distributions = StudentWorksEvaluationDistribution.new(user_id: user.id, student_work_id: h.id)
student_works_evaluation_distributions.save
end
end
homework_detail_manual.update_column('comment_status', 2)
statue = 1
else
statue = 2
end
else
statue = 3
end
{:status => statue}
end
def get_assigned_homeworks(student_works, n, index)
student_works += student_works
student_works[index + 1 .. index + n]
end
def stop_anonymous_comment params,current_user
homework = HomeworkCommon.find(params[:homework_id])
homework_detail_manual = homework.homework_detail_manual
homework_detail_manual.update_column('comment_status', 3)
work_ids = "(" << homework.student_works.map(&:id).join(",") << ")"
homework.student_works.each do |student_work|
absence_penalty_count = student_work.user.student_works_evaluation_distributions.where("student_work_id IN #{work_ids}").count - student_work.user.student_works_scores.where("student_work_id IN #{work_ids}").count
student_work.absence_penalty = absence_penalty_count > 0 ? absence_penalty_count * homework_detail_manual.absence_penalty : 0
student_work.save
end
end
# 匿评作品详情
# attachs 该作品的所有附件