调整新会员统计
parent
ae3daf122f
commit
5fffcf0fc3
|
|
@ -2,6 +2,8 @@
|
||||||
|
|
||||||
namespace App\Admin\Metrics;
|
namespace App\Admin\Metrics;
|
||||||
|
|
||||||
|
use App\Models\User;
|
||||||
|
use Carbon\Carbon;
|
||||||
use Dcat\Admin\Widgets\Metrics\Line;
|
use Dcat\Admin\Widgets\Metrics\Line;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
|
|
@ -40,30 +42,30 @@ class NewUsers extends Line
|
||||||
};
|
};
|
||||||
|
|
||||||
switch ($request->get('option')) {
|
switch ($request->get('option')) {
|
||||||
case '365':
|
case '90':
|
||||||
// 卡片内容
|
// 卡片内容
|
||||||
$this->withContent(mt_rand(1000, 5000).'k');
|
$start_time = Carbon::now()->subDays(89)->startOfDay();
|
||||||
|
$end_time = Carbon::now()->endOfDay();
|
||||||
|
$this->withContent($this->getUserCount($start_time, $end_time).'人');
|
||||||
// 图表数据
|
// 图表数据
|
||||||
$this->withChart(collect($generator(30))->toArray());
|
$this->withChart($this->getUserGenerator($start_time, $end_time, 90));
|
||||||
break;
|
break;
|
||||||
case '30':
|
case '30':
|
||||||
// 卡片内容
|
// 卡片内容
|
||||||
$this->withContent(mt_rand(400, 1000).'k');
|
$start_time = Carbon::now()->subDays(29)->startOfDay();
|
||||||
|
$end_time = Carbon::now()->endOfDay();
|
||||||
|
$this->withContent($this->getUserCount($start_time, $end_time).'人');
|
||||||
// 图表数据
|
// 图表数据
|
||||||
$this->withChart(collect($generator(30))->toArray());
|
$this->withChart($this->getUserGenerator($start_time, $end_time, 30));
|
||||||
break;
|
|
||||||
case '28':
|
|
||||||
// 卡片内容
|
|
||||||
$this->withContent(mt_rand(400, 1000).'k');
|
|
||||||
// 图表数据
|
|
||||||
$this->withChart(collect($generator(28))->toArray());
|
|
||||||
break;
|
break;
|
||||||
case '7':
|
case '7':
|
||||||
default:
|
default:
|
||||||
// 卡片内容
|
// 卡片内容
|
||||||
$this->withContent('89.2k');
|
$start_time = Carbon::now()->subDays(7)->startOfDay();
|
||||||
|
$end_time = Carbon::now()->endOfDay();
|
||||||
|
$this->withContent($this->getUserCount($start_time, $end_time).'人');
|
||||||
// 图表数据
|
// 图表数据
|
||||||
$this->withChart([28, 40, 36, 52, 38, 60, 55]);
|
$this->withChart($this->getUserGenerator($start_time, $end_time, 7));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -86,6 +88,29 @@ class NewUsers extends Line
|
||||||
]);
|
]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取指定时间段用户数量
|
||||||
|
*/
|
||||||
|
public function getUserCount($start_time, $end_time)
|
||||||
|
{
|
||||||
|
return User::whereBetween('created_at', [$start_time, $end_time])->count();
|
||||||
|
}
|
||||||
|
|
||||||
|
public function getUserGenerator($start_time, $end_time, $days, $groupBy='d')
|
||||||
|
{
|
||||||
|
$list = User::selectRaw("COUNT(DISTINCT id) AS userNum, DATE_FORMAT(created_at,'%Y-%m-%d') dDay")
|
||||||
|
->whereBetween('created_at', [$start_time, $end_time])
|
||||||
|
->groupBy('dDay')->pluck('userNum', 'dDay')->toArray();
|
||||||
|
for ($i = 0; $i<=$days; $i++) {
|
||||||
|
$time = Carbon::now()->subDay($i)->toDateString();
|
||||||
|
if (!isset($list[Carbon::now()->subDay($i)->toDateString()])) {
|
||||||
|
$list[$time] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ksort($list);
|
||||||
|
return array_values($list);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 设置卡片内容.
|
* 设置卡片内容.
|
||||||
*
|
*
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue