You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
yanzong/app/api/service/statistics/UserData.php

68 lines
2.0 KiB

10 months ago
<?php
namespace app\api\service\statistics;
10 months ago
use app\api\model\GoodsBrowseLog;
10 months ago
use app\api\model\User;
10 months ago
use app\common\service\BaseService;
class UserData extends BaseService
{
10 months ago
protected User $userModel;
public function initialize()
{
parent::initialize(); // TODO: Change the autogenerated stub
$this->userModel = new User();
}
public function getUserData($startDate = null, $endDate = null): array
10 months ago
{
return [
10 months ago
'visitorCount' => $this->getVisitorCount($startDate, $endDate),
10 months ago
'viewCount' => $this->getViewCount($startDate, $endDate),
10 months ago
'newUserCount' => $this->getNewUserCount($startDate, $endDate),
10 months ago
];
}
10 months ago
/**
* 用户访问总数
*/
10 months ago
public function getVisitorCount($startDate = null, $endDate = null) {
$query = new GoodsBrowseLog();
$filter = [];
if (!is_null($startDate) && !is_null($endDate)) {
$filter[] = ['ctime', '>=', $startDate];
$filter[] = ['ctime', '<', $endDate];
}
$value = $query->where($filter)->group('user_id')->count();
return number_format($value);
10 months ago
}
/**
* 用户浏览总数
*/
public function getViewCount($startDate = null, $endDate = null): string
{
$query = new GoodsBrowseLog();
10 months ago
$filter = [];
if (!is_null($startDate) && !is_null($endDate)) {
$filter[] = ['ctime', '>=', $startDate];
$filter[] = ['ctime', '<', $endDate];
10 months ago
}
10 months ago
$value = $query->where($filter)->count();
10 months ago
return number_format($value);
}
/**
* 新用户数量
*/
10 months ago
public function getNewUserCount($startDate = null, $endDate = null) {
$filter = [];
if (!is_null($startDate) && !is_null($endDate)) {
$filter[] = ['create_time', '>=', strtotime($startDate)];
$filter[] = ['create_time', '<', strtotime($endDate) + 86400];
}
$value = $this->userModel->where($filter)->group('user_id')->count();
return number_format($value);
10 months ago
}
10 months ago
}