|
|
|
@ -8,6 +8,7 @@ use App\Models\User; |
|
|
|
use Dcat\Admin\Admin; |
|
|
|
use Dcat\Admin\Widgets\ApexCharts\Chart; |
|
|
|
use Dcat\Admin\Widgets\Metrics\Bar; |
|
|
|
use Illuminate\Database\Eloquent\Model; |
|
|
|
use Illuminate\Http\Request; |
|
|
|
use Illuminate\Support\Arr; |
|
|
|
use Illuminate\Support\Facades\DB; |
|
|
|
@ -70,46 +71,53 @@ class UserStatistics extends Chart |
|
|
|
*/ |
|
|
|
protected function buildData() |
|
|
|
{ |
|
|
|
$query = User::query() |
|
|
|
->where('agent_id',Admin::user()->id) |
|
|
|
->select('*'); |
|
|
|
|
|
|
|
|
|
|
|
$dateTime = request('created_at', 0); |
|
|
|
if ($dateTime) { |
|
|
|
$query->whereBetween('created_at',$dateTime); |
|
|
|
} |
|
|
|
|
|
|
|
switch (request('time_key', 0)) { |
|
|
|
case '1': |
|
|
|
$query->addSelect(DB::raw("count(id) as sum_price,CONCAT(YEAR(created_at),'-',MONTH(created_at),'-',DAY(created_at)) AS statistics_time")); |
|
|
|
$time = "DATE_FORMAT(created_at,'%Y-%m-%d')"; |
|
|
|
break; |
|
|
|
case '30': |
|
|
|
$query->addSelect(DB::raw("count(id) as sum_price,CONCAT(YEAR(created_at),'-',MONTH(created_at)) AS statistics_time")); |
|
|
|
$time = "DATE_FORMAT(created_at,'%Y-%m')"; |
|
|
|
break; |
|
|
|
case '365': |
|
|
|
$query->addSelect(DB::raw("count(id) as sum_price,CONCAT(YEAR(created_at)) AS statistics_time")); |
|
|
|
$time = "DATE_FORMAT(created_at,'%Y')"; |
|
|
|
break; |
|
|
|
default: |
|
|
|
$query->addSelect(DB::raw("count(id) as sum_price,CONCAT(YEAR(created_at),'-',MONTH(created_at),'-',DAY(created_at)) AS statistics_time")); |
|
|
|
$time = "DATE_FORMAT(created_at,'%Y-%m-%d')"; |
|
|
|
} |
|
|
|
$users = $query->groupBy('statistics_time') |
|
|
|
->orderBy('statistics_time') |
|
|
|
->get(); |
|
|
|
$model = new User; |
|
|
|
$table = $model->getTable(); |
|
|
|
$right = DB::table(function ($query) use ($table,$time){ |
|
|
|
$query->selectRaw($time." AS tart_dat") |
|
|
|
->where('agent_id',Admin::user()->id) |
|
|
|
->from($table) |
|
|
|
->groupBy('tart_dat'); |
|
|
|
},'l_tab'); |
|
|
|
|
|
|
|
$userNum = 0; |
|
|
|
$userArr = []; |
|
|
|
$users = DB::table(function ($query) use ($table,$time) { |
|
|
|
$query->selectRaw($time ." AS start_date") |
|
|
|
->where('agent_id',Admin::user()->id) |
|
|
|
->from($table); |
|
|
|
},'r_tab') |
|
|
|
->joinSub($right, 'l_tab', function ($join) { |
|
|
|
$join->on('l_tab.tart_dat', '>=', 'r_tab.start_date'); |
|
|
|
}) |
|
|
|
->addSelect(DB::raw('tart_dat as statistics_time,count(tart_dat) as count')) |
|
|
|
->orderBy('tart_dat') |
|
|
|
->groupBy('tart_dat'); |
|
|
|
|
|
|
|
foreach ($users as $user) { |
|
|
|
$userNum += $user->sum_price; |
|
|
|
array_push($userArr,$userNum); |
|
|
|
$dateTime = request('created_at', 0); |
|
|
|
if ($dateTime) { |
|
|
|
$users->whereBetween('tart_dat',$dateTime); |
|
|
|
} |
|
|
|
|
|
|
|
$users = $users->get() |
|
|
|
->toArray(); |
|
|
|
|
|
|
|
|
|
|
|
$this->withData([ |
|
|
|
[ |
|
|
|
'name' => '用户数', |
|
|
|
'data' => $userArr |
|
|
|
'data' => Arr::pluck($users,'count') |
|
|
|
], |
|
|
|
] |
|
|
|
); |
|
|
|
|