From 82ac7e2fc2e5020fff308f36cf15b33594fe0561 Mon Sep 17 00:00:00 2001 From: p31729568 Date: Mon, 21 Oct 2019 18:19:10 +0800 Subject: [PATCH] admins: fix user statistic --- app/queries/admins/user_statistic_query.rb | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/app/queries/admins/user_statistic_query.rb b/app/queries/admins/user_statistic_query.rb index 866ec4d0b..d1811e5ab 100644 --- a/app/queries/admins/user_statistic_query.rb +++ b/app/queries/admins/user_statistic_query.rb @@ -83,7 +83,7 @@ class Admins::UserStatisticQuery < ApplicationQuery users.joins("LEFT JOIN myshixuns ON myshixuns.user_id = users.id AND myshixuns.status = 1 AND "\ "myshixuns.updated_at BETWEEN '#{time_range.min}' AND '#{time_range.max}'") else - users.left_joins(:myshixuns).where(myshixuns: { status: 1 }) + users.joins('LEFT JOIN myshixuns ON myshixuns.user_id = users.id AND myshixuns.status = 1') end users.select("#{base_query_column}, COUNT(*) finish_shixun_count") @@ -94,7 +94,8 @@ class Admins::UserStatisticQuery < ApplicationQuery .joins("LEFT JOIN games ON games.myshixun_id = myshixuns.id "\ "AND games.status IN (0,1,2) AND games.updated_at BETWEEN '#{time_range.min}' AND '#{time_range.max}'") else - users.left_joins(myshixuns: :games).where(games: { status: [0, 1, 2] }) + users.joins('LEFT JOIN myshixuns ON myshixuns.user_id = users.id') + .joins("LEFT JOIN games ON games.myshixun_id = myshixuns.id AND games.status IN (0,1,2)") end users.select("#{base_query_column}, COUNT(*) study_challenge_count") @@ -105,7 +106,8 @@ class Admins::UserStatisticQuery < ApplicationQuery .joins("LEFT JOIN games ON games.myshixun_id = myshixuns.id "\ "AND games.status = 2 AND games.updated_at BETWEEN '#{time_range.min}' AND '#{time_range.max}'") else - users.left_joins(myshixuns: :games).where(games: { status: 2 }) + users.joins('LEFT JOIN myshixuns ON myshixuns.user_id = users.id') + .joins("LEFT JOIN games ON games.myshixun_id = myshixuns.id AND games.status = 2") end users.select("#{base_query_column}, COUNT(*) finish_challenge_count")