diff --git a/app/controllers/attendances_controller.rb b/app/controllers/attendances_controller.rb index dc30df7e3..c8287f413 100644 --- a/app/controllers/attendances_controller.rb +++ b/app/controllers/attendances_controller.rb @@ -8,23 +8,38 @@ class AttendancesController < ApplicationController current_date = Date.current current_end_time = Time.current.strftime("%H:%M:%S") + member = @course.students.find_by(user_id: current_user.id) + if params[:history] - @attendances = @course.course_attendances.where("attendance_date < '#{current_date}' or - (attendance_date = '#{current_date}' and end_time < '#{current_end_time}')") if @user_course_identity == Course::STUDENT - member = @course.students.find_by(user_id: current_user.id) - group_ids = [member&.course_group_id.to_i, 0] - @attendances = @attendances.joins(:course_attendance_groups).where(course_attendance_groups: {course_group_id: group_ids}) + history_attendance_ids = member.course_member_attendances.where(course_id: @course.id).pluck(:course_attendance_id) + @attendances = @course.course_attendances.where(id: history_attendance_ids.uniq). + where("attendance_date < '#{current_date}' or (attendance_date = '#{current_date}' and end_time < '#{current_end_time}')") + else + @attendances = @course.course_attendances.where("attendance_date < '#{current_date}' or + (attendance_date = '#{current_date}' and end_time < '#{current_end_time}')") + end + else + @attendances = @course.course_attendances.where("attendance_date > '#{current_date}' or + (attendance_date = '#{current_date}' and end_time > '#{current_end_time}')") + end + + if @user_course_identity == Course::STUDENT + group_ids = [member&.course_group_id.to_i, 0] + @attendances = @attendances.joins(:course_attendance_groups).where(course_attendance_groups: {course_group_id: group_ids}) + + if params[:history] attendance_ids = @attendances.pluck(:id) @normal_count = @course.course_member_attendances.where(course_member_id: member&.id, course_attendance_id: attendance_ids, attendance_status: "NORMAL").size @leave_count = @course.course_member_attendances.where(course_member_id: member&.id, course_attendance_id: attendance_ids, attendance_status: "LEAVE").size @absence_count = @course.course_member_attendances.where(course_member_id: member&.id, course_attendance_id: attendance_ids, attendance_status: "ABSENCE").size + else + @attendances = @attendances.where("attendance_date = '#{current_date}' and start_time <= '#{current_end_time}' and end_time > '#{current_end_time}'") end - else - @attendances = @course.course_attendances.where("attendance_date > '#{current_date}' or - (attendance_date = '#{current_date}' and end_time > '#{current_end_time}')") + end + @attendances_count = @attendances.size @attendances = @attendances.order("attendance_date desc, start_time desc") diff --git a/app/controllers/courses_controller.rb b/app/controllers/courses_controller.rb index d701575e7..930533bd0 100644 --- a/app/controllers/courses_controller.rb +++ b/app/controllers/courses_controller.rb @@ -114,11 +114,12 @@ class CoursesController < ApplicationController #sql = "left join videos on videos.id=course_videos.video_id AND (videos.transcoded=1 OR videos.user_id = #{current_user.id})" #@videos = paginate videos.joins(sql).includes(video: [user: :user_extension], user: :user_extension) - videos = videos.includes(video: [user: :user_extension],user: :user_extension).select("course_videos.id, course_videos.title, course_videos.link, course_videos.user_id") + videos = videos.joins(:video).select("course_videos.id, course_videos.title, course_videos.link, course_videos.is_link,course_videos.user_id, course_videos.video_id") videos = videos.where(videos: {transcoded: true}) .or(videos.where(videos: {user_id: current_user.id})) - .or(videos.where(course_videos: {is_link: true})) - @count = videos.count + .or(videos.where(course_videos: {is_link: true})).includes(video: [user: :user_extension], user: :user_extension) + @count = videos.count("course_videos.id") + logger.info("#######count:#{@count}") @videos = paginate videos end diff --git a/app/controllers/weapps/attendances_controller.rb b/app/controllers/weapps/attendances_controller.rb index 9740da15f..90f8c24b6 100644 --- a/app/controllers/weapps/attendances_controller.rb +++ b/app/controllers/weapps/attendances_controller.rb @@ -9,8 +9,10 @@ class Weapps::AttendancesController < ApplicationController def create ActiveRecord::Base.transaction do attendance = @course.course_attendances.create!(create_params.merge(user_id: current_user.id)) - unless params[:group_ids].blank? || @course.course_groups.where(id: params[:group_ids]).count == @course.course_groups.count - group_ids = @course.charge_group_ids(current_user) & params[:group_ids].map(&:to_i) + group_ids = params[:group_ids] || [] + group_ids = group_ids.blank? ? @course.charge_group_ids(current_user) : @course.charge_group_ids(current_user) & params[:group_ids].map(&:to_i) + unless group_ids.blank? || @course.course_groups.where(id: group_ids).count == @course.course_groups.count + # group_ids = @course.charge_group_ids(current_user) & params[:group_ids].map(&:to_i) group_ids.each do |group_id| @course.course_attendance_groups.create!(course_group_id: group_id, course_attendance: attendance) end diff --git a/app/controllers/weapps/course_member_attendances_controller.rb b/app/controllers/weapps/course_member_attendances_controller.rb index 21a687d60..254a89b1d 100644 --- a/app/controllers/weapps/course_member_attendances_controller.rb +++ b/app/controllers/weapps/course_member_attendances_controller.rb @@ -37,7 +37,7 @@ class Weapps::CourseMemberAttendancesController < ApplicationController if params[:attendance_mode] == "QUICK" attendance = CourseAttendance.find_by(id: params[:attendance_id]) else - attendance = CourseAttendance.find_by(attendance_code: params[:code]) + attendance = CourseAttendance.find_by(id: params[:attendance_id], attendance_code: params[:code]) end tip_exception("该签到不存在") if attendance.blank? || attendance.course.blank? diff --git a/app/models/course.rb b/app/models/course.rb index bd36e65eb..a0daaea22 100644 --- a/app/models/course.rb +++ b/app/models/course.rb @@ -392,7 +392,7 @@ class Course < ApplicationRecord # 课堂实训作业的评测次数 def evaluate_count course_user_ids = students.pluck(:user_id) - shixun_ids = homework_commons.joins(:homework_commons_shixun).where(homework_type: 4).pluck(:shixun_id) + shixun_ids = homework_commons.joins(:homework_commons_shixun).where(homework_type: "practice").pluck(:shixun_id) return 0 if shixun_ids.blank? Game.joins(:challenge).where(challenges: {shixun_id: shixun_ids}, games: {user_id: course_user_ids}).sum(:evaluate_count) end diff --git a/app/queries/weapps/subject_query.rb b/app/queries/weapps/subject_query.rb index 0a3c9beb2..180176ce2 100644 --- a/app/queries/weapps/subject_query.rb +++ b/app/queries/weapps/subject_query.rb @@ -8,7 +8,7 @@ class Weapps::SubjectQuery < ApplicationQuery end def call - subjects = @current_laboratory.subjects.unhidden.publiced + subjects = @current_laboratory.subjects.unhidden.publiced.show_moblied # 课程体系的过滤 if params[:sub_discipline_id].present? @@ -21,7 +21,7 @@ class Weapps::SubjectQuery < ApplicationQuery # 搜索 if params[:keyword].present? - subjects = subjects.where("subjects.name like '%#{params[:keyword]}%'") + subjects = subjects.where("subjects.name like :keyword", keyword: "%#{params[:keyword]}%") end subjects = subjects.left_joins(:shixuns, :repertoire).select('subjects.id, subjects.name, subjects.excellent, subjects.stages_count, subjects.status, subjects.homepage_show, @@ -33,10 +33,10 @@ class Weapps::SubjectQuery < ApplicationQuery private def order_type - params[:order] || "updated_at" + params[:order] == "updated_at" ? "updated_at" : "myshixuns_count" end def sort_type - params[:sort] || "desc" + params[:sort] == "desc" ? "desc" : "asc" end end \ No newline at end of file diff --git a/app/services/weapps/shixun_search_service.rb b/app/services/weapps/shixun_search_service.rb index 448bb1992..9fd7cce99 100644 --- a/app/services/weapps/shixun_search_service.rb +++ b/app/services/weapps/shixun_search_service.rb @@ -34,11 +34,18 @@ class Weapps::ShixunSearchService < ApplicationService unless params[:keyword].blank? keyword = params[:keyword].strip shixuns = shixuns.joins(:user). - where("concat(lastname, firstname) like :keyword or shixuns.name like :keyword", - keyword: "%#{keyword}%", name: "%#{keyword.split(" ").join("%")}%").distinct + where("concat(lastname, firstname) like :keyword or shixuns.name like :keyword", + keyword: "%#{keyword}%", name: "%#{keyword.split(" ").join("%")}%").distinct end - shixuns.order("#{sort_str} #{order_str}") + order = + if sort_str == "wechat_myshixuns_count" + "is_wechat_support desc, myshixuns_count #{order_str}" + else + "#{sort_str} #{order_str}" + end + + shixuns.order(order) end private diff --git a/app/views/admins/courses/shared/_td.html.erb b/app/views/admins/courses/shared/_td.html.erb index 87e6f305d..7b72179da 100644 --- a/app/views/admins/courses/shared/_td.html.erb +++ b/app/views/admins/courses/shared/_td.html.erb @@ -5,9 +5,9 @@ <%= course.course_members_count %> <%= get_attachment_count(course, 0) %> -<%= course.course_homework_count(1) %> -<%= course.course_homework_count(3) %> -<%= course.course_homework_count(4) %> +<%= course.course_homework_count("normal") %> +<%= course.course_homework_count("group") %> +<%= course.course_homework_count("practice") %> <%= course.exercises_count %> <%= course.evaluate_count %> <%= course.is_public == 1 ? "--" : "√" %> diff --git a/app/views/weapps/shixun_lists/index.json.jbuilder b/app/views/weapps/shixun_lists/index.json.jbuilder index fac238f45..10b66fdfa 100644 --- a/app/views/weapps/shixun_lists/index.json.jbuilder +++ b/app/views/weapps/shixun_lists/index.json.jbuilder @@ -5,5 +5,6 @@ json.shixun_list @results do |obj| json.study_count obj.myshixuns_count json.author_name obj.user.real_name json.author_img url_to_avatar(obj.user) + json.pic url_to_avatar(obj) end json.shixuns_count @total_count \ No newline at end of file diff --git a/db/migrate/20200313104522_add_total_duration_to_watch_course_duration.rb b/db/migrate/20200313104522_add_total_duration_to_watch_course_duration.rb index 400e52ac8..741be91f5 100644 --- a/db/migrate/20200313104522_add_total_duration_to_watch_course_duration.rb +++ b/db/migrate/20200313104522_add_total_duration_to_watch_course_duration.rb @@ -1,8 +1,8 @@ class AddTotalDurationToWatchCourseDuration < ActiveRecord::Migration[5.2] def change - add_column :watch_course_videos, :total_duration, :float, default: 0 - WatchVideoHistory.where("created_at < '2020-03-14 00:00:00'").each do |d| - d.watch_course_video.increment!(:total_duration, d.total_duration) if d.watch_course_video.present? - end + #add_column :watch_course_videos, :total_duration, :float, default: 0 + #WatchVideoHistory.where("created_at < '2020-03-14 00:00:00'").each do |d| + # d.watch_course_video.increment!(:total_duration, d.total_duration) if d.watch_course_video.present? + #end end end diff --git a/lib/tasks/video_transcode.rake b/lib/tasks/video_transcode.rake index 4fb7c17bd..2b4a1eac7 100644 --- a/lib/tasks/video_transcode.rake +++ b/lib/tasks/video_transcode.rake @@ -3,17 +3,18 @@ namespace :video_transcode do desc "视频转码成h264" task :submit => :environment do i = [] - Video.where.not(uuid: nil, file_url: nil).where(transcoded: false, status: "published").find_each do |v| + Video.where.not(uuid: nil, file_url: nil).where(transcoded: false).find_each do |v| code_info = AliyunVod::Service.get_meta_code_info(v.uuid) if v.file_url.include?('.mp4') && code_info[:codecnamne]&.include?("h264") v.update(transcoded: true) else puts("uuid: #{v.uuid}") i << "#{v.id}, #{v.file_url}, #{code_info[:codecnamne]}" - AliyunVod::Service.submit_transcode_job(v.uuid, 'a0277c5c0c7458458e171b0cee6ebf5e') + AliyunVod::Service.submit_transcode_job(v.uuid, 'a0277c5c0c7458458e171b0cee6ebf5e') rescue nil end end puts "###########转码个数:#{i.size}" puts "###########id,file_url, codecnamne:#{i}" + Video.where(transcoded: false).update_all(transcoded: true) end end \ No newline at end of file diff --git a/public/react/package-lock.json b/public/react/package-lock.json index a22a5a9ea..4cb59a032 100644 --- a/public/react/package-lock.json +++ b/public/react/package-lock.json @@ -13577,6 +13577,21 @@ "resolved": "http://registry.npm.taobao.org/q/download/q-1.5.1.tgz", "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" }, + "qr.js": { + "version": "0.0.0", + "resolved": "https://registry.npm.taobao.org/qr.js/download/qr.js-0.0.0.tgz", + "integrity": "sha1-ys6GOG9ZoNuAUPqQ2baw6IoeNk8=" + }, + "qrcode.react": { + "version": "1.0.0", + "resolved": "https://registry.npm.taobao.org/qrcode.react/download/qrcode.react-1.0.0.tgz", + "integrity": "sha1-foiJ2zt2nlVejrRj1MbeIhw21d4=", + "requires": { + "loose-envify": "^1.4.0", + "prop-types": "^15.6.0", + "qr.js": "0.0.0" + } + }, "qs": { "version": "6.7.0", "resolved": "http://registry.npm.taobao.org/qs/download/qs-6.7.0.tgz", diff --git a/public/react/package.json b/public/react/package.json index d29adb905..e644e2166 100644 --- a/public/react/package.json +++ b/public/react/package.json @@ -61,6 +61,7 @@ "postcss-loader": "2.0.8", "promise": "8.0.1", "prop-types": "^15.6.1", + "qrcode.react": "^1.0.0", "qs": "^6.6.0", "quill": "^1.3.7", "quill-delta-to-html": "^0.11.0", diff --git a/public/react/public/css/demo_index.html b/public/react/public/css/demo_index.html index 7b0854698..59a7d4aec 100644 --- a/public/react/public/css/demo_index.html +++ b/public/react/public/css/demo_index.html @@ -30,6 +30,24 @@