|
|
class Schools::SchoolStatisticService < ApplicationService
|
|
|
attr_reader :school
|
|
|
|
|
|
def initialize(school)
|
|
|
@school = school
|
|
|
@user_extensions = school.user_extensions
|
|
|
end
|
|
|
|
|
|
# 学校老师数量
|
|
|
def teacher_count
|
|
|
@user_extensions.map{|ue| ue.identity == 0 }.size
|
|
|
end
|
|
|
|
|
|
# 学校学生数
|
|
|
def student_count
|
|
|
@user_extensions.map{|ue| ue.identity == 1 }.size
|
|
|
end
|
|
|
|
|
|
# 活跃用户(近1天有登录)
|
|
|
def acitve_user_1_day_count
|
|
|
@user_extensions.map{|ue| ue.user.last_login_on&.between?(1.days.ago, Time.now)}.size
|
|
|
end
|
|
|
|
|
|
# 活跃用户(近1个周有登录)
|
|
|
def acitve_user_1_week_count
|
|
|
@user_extensions.map{|ue| ue.user.last_login_on&.between?(1.weeks.ago, Time.now)}.size
|
|
|
end
|
|
|
|
|
|
# 活跃用户(近1个月有登录)
|
|
|
def acitve_user_1_months_count
|
|
|
@user_extensions.joins(:user).map{|ue| ue.user.last_login_on&.between?(1.months.ago, Time.now)}.size
|
|
|
end
|
|
|
|
|
|
# 活跃用户(近3个月有登录)
|
|
|
def acitve_user_3_months_count
|
|
|
@user_extensions.map{|ue| ue.user&.last_login_on&.between?(3.months.ago, Time.now)}.size
|
|
|
end
|
|
|
|
|
|
# 活跃用户(进半年有登录记录)
|
|
|
def acitve_user_6_months_count
|
|
|
@user_extensions.map{|ue| ue.user.last_login_on&.between?(6.months.ago, Time.now)}.size
|
|
|
end
|
|
|
|
|
|
# 课堂总数(上层记得Include)
|
|
|
def courses_count
|
|
|
@school.courses.size
|
|
|
end
|
|
|
|
|
|
# 正在进行的课堂数
|
|
|
def curr_courses_count
|
|
|
@school.courses.map{|c| c.is_end == false && c.is_delete != 0}.size
|
|
|
end
|
|
|
|
|
|
# 实训作业数目
|
|
|
def homw_shixuns_count
|
|
|
@school.courses.joins(:homework_commons).where(homework_commons: {homework_type: 'practice'}).size
|
|
|
end
|
|
|
|
|
|
# 其他类型作业
|
|
|
def homw_other_count
|
|
|
@school.courses.joins(:homework_commons).where.not(homework_commons: {homework_type: 'practice'}).size
|
|
|
end
|
|
|
|
|
|
# 资源数
|
|
|
def sources_count
|
|
|
@school.courses.joins(:attachments).size
|
|
|
end
|
|
|
|
|
|
# 视频总数
|
|
|
def videos_count
|
|
|
@school.courses.joins(:course_videos).size
|
|
|
end
|
|
|
|
|
|
# 制作实训数
|
|
|
def shixuns_count
|
|
|
@user_extensions.joins(user: :shixuns).size
|
|
|
end
|
|
|
|
|
|
# 挑战实训总数
|
|
|
def myshixuns_count
|
|
|
@user_extensions.joins("join myshixuns on myshixuns.user_id = user_extensions.user_id").size
|
|
|
end
|
|
|
|
|
|
# 通过的实训总数
|
|
|
def pass_myshixun_count
|
|
|
@user_extensions.joins("join myshixuns on myshixuns.user_id = user_extensions.user_id").where(myshixuns: {status: 1}).size
|
|
|
end
|
|
|
|
|
|
# 挑战的关卡数
|
|
|
def games_count
|
|
|
@user_extensions.joins("join games on games.user_id = user_extensions.user_id").where(games: {status: 0..2}).size
|
|
|
end
|
|
|
|
|
|
# 通关的关卡数
|
|
|
def pass_games_count
|
|
|
@user_extensions.joins("join games on games.user_id = user_extensions.user_id").where(games: {status: 2}).size
|
|
|
end
|
|
|
|
|
|
# 评测总数
|
|
|
def evaluate_count
|
|
|
@user_extensions.joins("join games on games.user_id = user_extensions.user_id").sum(:evaluate_count).to_i
|
|
|
end
|
|
|
|
|
|
|
|
|
end |