From 5e468dfc03dd272e9629f06a510b14685c322054 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Tue, 17 Mar 2020 16:33:43 +0800 Subject: [PATCH] =?UTF-8?q?=E7=AD=BE=E5=88=B0=E7=9A=84=E7=BC=96=E8=BE=91?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/attendances_controller.rb | 30 +++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/app/controllers/attendances_controller.rb b/app/controllers/attendances_controller.rb index 985052f18..936bef188 100644 --- a/app/controllers/attendances_controller.rb +++ b/app/controllers/attendances_controller.rb @@ -73,7 +73,14 @@ class AttendancesController < ApplicationController def update tip_exception(403, "") unless @user_course_identity < Course::PROFESSOR || @attendance.user_id == current_user.id + a_end_time = "#{@attendance.attendance_date} #{@attendance.end_time}".to_time + new_end_time = "#{params[:attendance_date]} #{params[:end_time]}".to_time @attendance.update!(update_params) + + # 如果历史签到变为了正在签到,将未创建的学生签到数据补上 + if a_end_time < Time.current && new_end_time > Time.current + create_absence_student_data + end render_ok end @@ -86,4 +93,27 @@ class AttendancesController < ApplicationController def update_params params.permit(:name, :mode, :attendance_date, :start_time, :end_time) end + + def create_absence_student_data + group_ids = @attendance.course_attendance_groups.pluck(:course_group_id) + if group_ids.include?(0) + students = @course.students + else + students = @course.students.where(course_group_id: group_ids) + end + + none_users = students.where.not(user_id: @attendance.course_member_attendances.pluck(:user_id)) + + attrs = %i[course_attendance_id user_id course_member_id course_id course_group_id created_at updated_at] + + same_attrs = {course_attendance_id: attendance.id, course_id: course.id} + + CourseMemberAttendance.bulk_insert(*attrs) do |worker| + + none_users.each do |student| + next if @attendance.course_member_attendances.exists?(user_id: student.user_id) + worker.add same_attrs.merge(user_id: student.user_id, course_member_id: student.id, course_group_id: student.course_group_id) + end + end + end end \ No newline at end of file