132 lines
5.0 KiB
PHP
132 lines
5.0 KiB
PHP
<?php
|
||
// +----------------------------------------------------------------------
|
||
// | Niucloud-admin 企业快速开发的saas管理平台
|
||
// +----------------------------------------------------------------------
|
||
// | 官方网址:https://www.niucloud-admin.com
|
||
// +----------------------------------------------------------------------
|
||
// | niucloud团队 版权所有 开源版本可自由商用
|
||
// +----------------------------------------------------------------------
|
||
// | Author: Niucloud Team
|
||
// +----------------------------------------------------------------------
|
||
|
||
namespace app\service\admin\stat;
|
||
|
||
use app\model\site\Site;
|
||
use app\service\admin\site\SiteGroupService;
|
||
use app\service\admin\site\SiteService;
|
||
use app\service\admin\sys\SystemService;
|
||
use app\service\core\addon\CoreAddonService;
|
||
use app\service\core\member\CoreMemberService;
|
||
use core\base\BaseAdminService;
|
||
use think\db\exception\DataNotFoundException;
|
||
use think\db\exception\DbException;
|
||
use think\db\exception\ModelNotFoundException;
|
||
|
||
|
||
/**
|
||
* 统计服务层
|
||
* Class StatService
|
||
* @package app\service\admin\stat
|
||
*/
|
||
class StatService extends BaseAdminService
|
||
{
|
||
|
||
public function __construct()
|
||
{
|
||
parent::__construct();
|
||
}
|
||
|
||
/**
|
||
* 获取统计数据
|
||
* @return int[]
|
||
* @throws DataNotFoundException
|
||
* @throws DbException
|
||
* @throws ModelNotFoundException
|
||
*/
|
||
public function getIndexData()
|
||
{
|
||
$data = [
|
||
'today_data' => [
|
||
'member_count' => 1,
|
||
'site_count' => 2,
|
||
'visit_count' => 675,
|
||
'total_member_count' => 0,
|
||
'total_site_count' => 0,
|
||
'total_visit_count' => 6840,
|
||
],
|
||
'system' => [],
|
||
'version' => [],
|
||
// 'visit_stat' => [
|
||
// 'date' => [],
|
||
// 'value' => [980, 1323, 882, 762, 865, 923, 1105]
|
||
// ],
|
||
'site_stat' => [
|
||
'date' => [],
|
||
'value' => []
|
||
],
|
||
'member_stat' => [
|
||
'type' => ['男', '女', '未知'],
|
||
'value' => []
|
||
],
|
||
'site_group_stat' => [
|
||
'type' => [],
|
||
'value' => []
|
||
],
|
||
'about' => [
|
||
[
|
||
'name' => 'Niucloud官方公众号',
|
||
'image' => 'static/resource/icon/index_icon/wx_qrcode.jpg',
|
||
'desc' => '微信扫码关注'
|
||
],
|
||
[
|
||
'name' => '添加企业微信群',
|
||
'image' => 'static/resource/icon/index_icon/wework_qrcode.png',
|
||
'desc' => '更多内容请扫码加入'
|
||
]
|
||
]
|
||
];
|
||
|
||
$day_start_time = strtotime(date('Y-m-d'));
|
||
//当天结束之间
|
||
$day_end_time = $day_start_time + 86400;
|
||
$data['today_data']['total_member_count'] = (new CoreMemberService())->getCount();
|
||
$data['today_data']['today_member_count'] = (new CoreMemberService())->getCount(['create_time' => get_start_and_end_time_by_day()]);
|
||
$data['today_data']['total_site_count'] = (new SiteService())->getCount();
|
||
$data['today_data']['today_site_count'] = (new SiteService())->getCount(['create_time' => [$day_start_time, $day_end_time]]);
|
||
$data['today_data']['norma_site_count'] = (new SiteService())->getCount(['status' => [1],'app_type' => ['site']]);
|
||
$data['today_data']['expire_site_count'] = (new SiteService())->getCount(['status' => [2]]);
|
||
|
||
$data['system'] = (new SystemService())->getInfo();
|
||
$data['version'] = $data['system']['version'] ?? [];
|
||
$time = time();
|
||
for ($i = 1; $i <= 7; $i++){
|
||
$item_day = date('Y-m-d', strtotime('+' . $i - 7 . ' days', $time));
|
||
$data['site_stat']['date'][] = $item_day;
|
||
$data['site_stat']['value'][] = (new Site())->where([['create_time','between',get_start_and_end_time_by_day($item_day)]])->count();
|
||
}
|
||
$man_count = (new CoreMemberService())->getCount(['sex' => '1']);
|
||
$woman_count = (new CoreMemberService())->getCount(['sex' => '2']);
|
||
$data['member_stat']['value'] = [$man_count, $woman_count, (int)($data['today_data']['total_member_count'] - $man_count - $woman_count)];
|
||
|
||
$site_group_list = (new SiteGroupService())->getAll([]);
|
||
|
||
if(!empty($site_group_list)){
|
||
foreach($site_group_list as $v){
|
||
$data['site_group_stat']['type'][] = $v['group_name'];
|
||
$data['site_group_stat']['value'][] = (new SiteService())->getCount(['group_id' => $v['group_id']]);
|
||
}
|
||
}
|
||
$app_count = (new CoreAddonService())->getLocalAddonCount();
|
||
$app_installed_count = (new CoreAddonService())->getCount();
|
||
$app = [
|
||
'app_count' => $app_count,
|
||
'app_no_installed_count' => $app_count-$app_installed_count,
|
||
'app_installed_count' => $app_installed_count,
|
||
];
|
||
$data['app'] = $app;
|
||
return $data;
|
||
}
|
||
|
||
|
||
}
|