停止匿评 api

yutao
lizanle 10 years ago
parent 0f9642e60b
commit c5e298d24e

@ -337,18 +337,7 @@ module Mobile
present :data,student_works.all,with:Mobile::Entities::StudentWork present :data,student_works.all,with:Mobile::Entities::StudentWork
end 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 end
end end

@ -31,33 +31,33 @@ module Mobile
present :status, 0 present :status, 0
end end
desc "启动匿评" # desc "启动匿评"
params do # params do
requires :token, type: String # requires :token, type: String
end # end
post ':id/start_anonymous_comment' do # post ':id/start_anonymous_comment' do
statue = Homeworks.get_service.start_anonymous_comment params,current_user.nil? ? User.find(2):current_user # statue = Homeworks.get_service.start_anonymous_comment params,current_user.nil? ? User.find(2):current_user
messages = "" # messages = ""
case statue # case statue
when 1 # when 1
messages = "启动成功" # messages = "启动成功"
when 2 # when 2
messages = "启动失败作业总数大于等于2份时才能启动匿评" # messages = "启动失败作业总数大于等于2份时才能启动匿评"
when 3 # when 3
messages = "已开启匿评,请务重复开启" # messages = "已开启匿评,请务重复开启"
end # end
present :data,messages # present :data,messages
present :status, statue # present :status, statue
end # end
#
desc "关闭匿评" # desc "关闭匿评"
params do # params do
requires :token, type: String # requires :token, type: String
end # end
post ':id/stop_anonymous_comment' do # post ':id/stop_anonymous_comment' do
Homeworks.get_service.stop_anonymous_comment params,current_user.nil? ? User.find(2):current_user # Homeworks.get_service.stop_anonymous_comment params,current_user.nil? ? User.find(2):current_user
present :status, 0 # present :status, 0
end # end
desc "匿评作品详情" desc "匿评作品详情"
params do params do
@ -111,6 +111,45 @@ module Mobile
present :status, 0 present :status, 0
end 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
end end

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

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

@ -699,7 +699,7 @@ class CoursesService
latest_course_dynamics.sort! { |order, newer| newer[:time] <=> order[:time] } latest_course_dynamics.sort! { |order, newer| newer[:time] <=> order[:time] }
latest_course_dynamic = latest_course_dynamics.first latest_course_dynamic = latest_course_dynamics.first
unless latest_course_dynamic.nil? 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
end end
#返回数组集合 #返回数组集合
@ -746,41 +746,41 @@ class CoursesService
student_works student_works
end end
# 开启匿评 # # 开启匿评
#statue 1:启动成功2启动失败作业总数大于等于2份时才能启动匿评3:已开启匿评,请务重复开启,4:没有开启匿评的权限 # #statue 1:启动成功2启动失败作业总数大于等于2份时才能启动匿评3:已开启匿评,请务重复开启,4:没有开启匿评的权限
def start_anonymous_comment params,current_user # def start_anonymous_comment params,current_user
homework = HomeworkCommon.find(params[:homework_id]) # 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=>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") # 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 # homework_detail_manual = homework.homework_detail_manual
if homework_detail_manual.comment_status == 1 # if homework_detail_manual.comment_status == 1
student_works = homework.student_works # student_works = homework.student_works
if student_works && student_works.size >=2 # if student_works && student_works.size >=2
student_works.each_with_index do |work, index| # student_works.each_with_index do |work, index|
user = work.user # user = work.user
n = homework_detail_manual.evaluation_num # n = homework_detail_manual.evaluation_num
n = n < student_works.size ? n : student_works.size - 1 # n = n < student_works.size ? n : student_works.size - 1
assigned_homeworks = get_assigned_homeworks(student_works, n, index) # assigned_homeworks = get_assigned_homeworks(student_works, n, index)
assigned_homeworks.each do |h| # assigned_homeworks.each do |h|
student_works_evaluation_distributions = StudentWorksEvaluationDistribution.new(user_id: user.id, student_work_id: h.id) # student_works_evaluation_distributions = StudentWorksEvaluationDistribution.new(user_id: user.id, student_work_id: h.id)
student_works_evaluation_distributions.save # student_works_evaluation_distributions.save
end # end
end # end
homework_detail_manual.update_column('comment_status', 2) # homework_detail_manual.update_column('comment_status', 2)
statue = 1 # statue = 1
else # else
statue = 2 # statue = 2
end # end
else # else
statue = 3 # statue = 3
end # end
{:status => statue} # {:status => statue}
end # end
#
def get_assigned_homeworks(student_works, n, index) # def get_assigned_homeworks(student_works, n, index)
student_works += student_works # student_works += student_works
student_works[index + 1 .. index + n] # student_works[index + 1 .. index + n]
end # end
end end

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

Loading…
Cancel
Save