mirror of
https://gitlink.org.cn/Gitlink/forgeplus.git
synced 2026-07-16 23:18:56 +08:00
45 lines
1.7 KiB
Ruby
45 lines
1.7 KiB
Ruby
# 按天获取百度统计数据,pv,访问,ip和来源分类占比
|
|
# 其他统计:前一周用户留存率
|
|
class DailyPlatformStatisticsJob < ApplicationJob
|
|
queue_as :default
|
|
|
|
def perform(*args)
|
|
Rails.logger.info("*********开始统计*********")
|
|
|
|
tongji_service = Baidu::TongjiService.new
|
|
access_token = tongji_service.access_token
|
|
Rails.logger.info "job baidu_tongji_auth access_token ===== #{access_token}"
|
|
ActiveJob::Base.logger.info "job baidu_tongji_auth access_token ===== #{access_token}"
|
|
# 从最后一个记录日期开始,如果遗漏日期数据可以补充数据
|
|
last_date = DailyPlatformStatistic.order(:date).last
|
|
start_date = last_date.date
|
|
end_date = Time.now
|
|
if access_token.present?
|
|
tongji_service.overview_batch_add(start_date, end_date)
|
|
|
|
# 本周访问来源占比,每天记录一次,如果遗漏日期数据可以补充数据
|
|
tongji_service.source_from_batch_add(start_date, end_date)
|
|
end
|
|
# 周用户留存率
|
|
pre_week_user_ids = User.where(created_on: pre_week).pluck(:id).uniq
|
|
weekly_keep_user_count = User.where(id: pre_week_user_ids).where(last_login_on: current_week).count
|
|
weekly_keep_rate = format("%.2f", pre_week_user_ids.size > 0 ? weekly_keep_user_count.to_f / pre_week_user_ids.size : 0)
|
|
|
|
job_date = 1.days.ago
|
|
daily_statistic = DailyPlatformStatistic.find_or_initialize_by(date: job_date)
|
|
daily_statistic.weekly_keep_rate = weekly_keep_rate
|
|
daily_statistic.save
|
|
end
|
|
|
|
private
|
|
|
|
def current_week
|
|
Time.now.beginning_of_week..Time.now.end_of_day
|
|
end
|
|
|
|
def pre_week
|
|
# 7.days.ago.beginning_of_week..7.days.ago.beginning_of_week.end_of_week
|
|
Time.now.prev_week..Time.now.prev_week.end_of_week
|
|
end
|
|
end
|