Commit 8698e6c6 authored by gxx's avatar gxx

完成新用户总数 、用户参与度 统计 缺少页面显示

parent 88bd208a
...@@ -20,6 +20,8 @@ interface StatisticsServiceContract ...@@ -20,6 +20,8 @@ interface StatisticsServiceContract
public function UserRetention(); public function UserRetention();
public function AverageUserOperation(); public function AverageUserOperation();
public function PageRetentionTime(); public function PageRetentionTime();
public function NewUser();
public function UserEngagement();
} }
\ No newline at end of file
...@@ -80,17 +80,34 @@ class StatisticsController extends Controller ...@@ -80,17 +80,34 @@ class StatisticsController extends Controller
} }
// 平均操作
public function AverageUserOperation() public function AverageUserOperation()
{ {
$data = $this->mStatistics->AverageUserOperation(); $data = $this->mStatistics->AverageUserOperation();
return $data; return $data;
} }
// 页面停留时间
public function RetentionTime() public function RetentionTime()
{ {
$data = $this->mStatistics->PageRetentionTime(); $data = $this->mStatistics->PageRetentionTime();
return $data; return $data;
} }
// 新用户
public function NewUsers()
{
$data = $this->mStatistics->NewUser();
return $data;
}
// 用户参与度
public function UserEngagement()
{
$data = $this->mStatistics->UserEngagement();
return $data;
}
} }
...@@ -202,10 +202,10 @@ class StatisticsService implements StatisticsServiceContract ...@@ -202,10 +202,10 @@ class StatisticsService implements StatisticsServiceContract
$activeUsers = $this->ActiveUser(); $activeUsers = $this->ActiveUser();
$outflowUsers = $this->OutflowUser(); $outflowUsers = $this->OutflowUser();
$userTotals = $this->UserTotal(); $userTotals = $this->UserTotal();
$outflow =ceil(round($outflowUsers['流失用户']/$userTotals['全部用户']*100,2)) ; $outflow =ceil($outflowUsers['流失用户']/$userTotals['全部用户']*100,2) ;
$dayActive =ceil(round($activeUsers['昨日活跃用户']/$userTotals['全部用户']*100,2)) ; $dayActive =ceil($activeUsers['昨日活跃用户']/$userTotals['全部用户']*100,2) ;
$monthActive =ceil(round($activeUsers['上一个月活跃用户']/$userTotals['全部用户']*100,2)) ; $monthActive =ceil($activeUsers['上一个月活跃用户']/$userTotals['全部用户']*100,2) ;
$weekActive=ceil(round($activeUsers['上一周活跃用户']/$userTotals['全部用户']*100,2)) ; $weekActive=ceil($activeUsers['上一周活跃用户']/$userTotals['全部用户']*100,2);
$data = ['昨日活跃占比'=>$dayActive.'%','上一个月活跃占比'=>$monthActive.'%','上一周活跃占比'=>$weekActive.'%','流失用户占比'=>$outflow.'%']; $data = ['昨日活跃占比'=>$dayActive.'%','上一个月活跃占比'=>$monthActive.'%','上一周活跃占比'=>$weekActive.'%','流失用户占比'=>$outflow.'%'];
return $data; return $data;
} }
...@@ -271,22 +271,21 @@ class StatisticsService implements StatisticsServiceContract ...@@ -271,22 +271,21 @@ class StatisticsService implements StatisticsServiceContract
} }
// 平均团队 // 平均团队
$averageGroup =ceil( round(($creatorGroupCount + $participateGroupCount)/count($users)*100,2)).'%'; $averageGroup =ceil( ($creatorGroupCount + $participateGroupCount)/count($users)*100).'%';
// 平均项目 // 平均项目
$averageProject =ceil( round(($creatorProjectCount + $participateProjectCount)/count($users)*100,2)).'%'; $averageProject =ceil(($creatorProjectCount + $participateProjectCount)/count($users)*100).'%';
// 平均任务 // 平均任务
$averageTask =ceil( round($creatorTaskCount/count($users)*100,2)).'%'; $averageTask =ceil( $creatorTaskCount/count($users)*100).'%';
// 平均日程 // 平均日程
$averageSchedule =ceil( round($creatorTaskCount/count($users)*100,2)).'%'; $averageSchedule =ceil($creatorTaskCount/count($users)*100).'%';
$data = ['团队'=>$averageGroup,'项目'=>$averageProject,'任务'=>$averageTask,'日程'=>$averageSchedule]; $data = ['团队'=>$averageGroup,'项目'=>$averageProject,'任务'=>$averageTask,'日程'=>$averageSchedule];
return $data; return $data;
// dd($averageGroup,$averageProject,$averageTask,$averageSchedule);
} }
...@@ -304,51 +303,35 @@ class StatisticsService implements StatisticsServiceContract ...@@ -304,51 +303,35 @@ class StatisticsService implements StatisticsServiceContract
foreach ($pageTime as $page){ foreach ($pageTime as $page){
if($page->id == 1){ if($page->id == 1){
$a += $page->time; $a += $page->time;
} }if($page->id == 2){
if($page->id == 2){
$b += $page->time; $b += $page->time;
} }if($page->id == 3){
if($page->id == 3){
$c += $page->time; $c += $page->time;
} }if($page->id == 4){
if($page->id == 4){
$d+= $page->time; $d+= $page->time;
} }if($page->id == 5){
if($page->id == 5){
$e += $page->time; $e += $page->time;
} }if($page->id == 6){
if($page->id == 6){
$f += $page->time; $f += $page->time;
} } if($page->id == 7){
if($page->id == 7){
$g += $page->time; $g += $page->time;
} }if($page->id == 8){
if($page->id == 8){
$h += $page->time; $h += $page->time;
} }if($page->id == 9){
if($page->id == 9){
$i += $page->time; $i += $page->time;
} }if($page->id == 10){
if($page->id == 10){
$j += $page->time; $j += $page->time;
} }if($page->id == 11){
if($page->id == 11){
$k += $page->time; $k += $page->time;
} }if($page->id == 12){
if($page->id == 12){
$l += $page->time; $l += $page->time;
} }if($page->id == 13){
if($page->id == 13){
$m += $page->time; $m += $page->time;
} }if($page->id == 14){
if($page->id == 14){
$n += $page->time; $n += $page->time;
} }if($page->id == 15){
if($page->id == 15){
$o += $page->time; $o += $page->time;
}if($page->id == 16){
}
if($page->id == 16){
$p += $page->time; $p += $page->time;
} }
...@@ -356,37 +339,109 @@ class StatisticsService implements StatisticsServiceContract ...@@ -356,37 +339,109 @@ class StatisticsService implements StatisticsServiceContract
} }
} }
// 获取全部用户 // 获取全部用户
$users = UserInfo::all()->count(); $users = UserInfo::all()->count();
$invitation = ceil(round($a / $users)).'s'; $invitation = ceil($a / $users).'s';
$timeline = ceil(round($b / $users)).'s'; $timeline = ceil($b / $users).'s';
$project = ceil(round($c / $users)).'s'; $project = ceil($c / $users).'s';
$filemanage = ceil(round($d / $users)).'s'; $filemanage = ceil($d / $users).'s';
$mine = ceil(round($e / $users)).'s'; $mine = ceil($e / $users).'s';
$company = ceil(round($f / $users)).'s'; $company = ceil($f / $users).'s';
$myteam = ceil(round($g / $users)).'s'; $myteam = ceil($g / $users).'s';
$mission = ceil(round($h / $users)).'s'; $mission = ceil($h / $users).'s';
$project_item = ceil(round($i / $users)).'s'; $project_item = ceil($i / $users).'s';
$login = ceil(round($j / $users)).'s'; $login = ceil($j / $users).'s';
$register = ceil(round($k / $users)).'s'; $register = ceil($k / $users).'s';
$discussion = ceil(round($l / $users)).'s'; $discussion = ceil($l / $users).'s';
$mission_settings = ceil(round($m / $users)).'s'; $mission_settings = ceil($m / $users).'s';
$search_team = ceil(round($n / $users)).'s'; $search_team = ceil($n / $users).'s';
$bangding_phone = ceil(round($o / $users)).'s'; $bangding_phone = ceil($o / $users).'s';
$search_user = ceil(round($p / $users)).'s'; $search_user = ceil($p / $users).'s';
// dd($invitation,$timeline,$project,$filemanage,$mine,$company,$myteam,$mission,$project_item,$login,$register,$discussion,$mission_settings,$search_team,$bangding_phone
// ,$search_user $data =['invitation'=>$invitation,'timeline'=>$timeline,'project'=>$project,'filemanage'=>$filemanage,'mine'=>$mine,'company'=>$company,'myteam'=>$myteam,'mission'=>$mission,'project_item'=>$project_item,'login'=>$login,'register'=>$register,'discussion'=>$discussion,'mission_settings'=>$mission_settings,'search_team'=>$search_team,'bangding_phone'=>$bangding_phone
// ); ,'search_user'=>$search_user];
$data =[$invitation,$timeline,$project,$filemanage,$mine,$company,$myteam,$mission,$project_item,$login,$register,$discussion,$mission_settings,$search_team,$bangding_phone
,$search_user];
return $data; return $data;
} }
} }
// 新用户
public function NewUser()
{
$time = Carbon::now();
$data = $time->subWeek();
$newUserCount = 0;
$pc = 0;
$android = 0;
$iPad = 0;
$users = UserInfo::where('created_at','>',$data)
->where(function ($query){
$query->where('created_at','<',date('Y-m-d H:i:s',mktime(0, 0, 0, date('m'), date('d'), date('Y'))));
})->get();
if(!$users->isEmpty()){
$newUserCount = count($users);
foreach($users as $user){
if($user['terminal'] == 'pc'){
$pc +=1;
}if($user['terminal'] == 'android'){
$android +=1;
}if($user['terminal'] == 'iPad'){
$iPad +=1;
}
};
}
$result = (['newUserCount'=>$newUserCount,'pc'=>$pc,'android'=>$android,'iPad'=>$iPad]);
return $result;
}
// 用户参与度
public function UserEngagement()
{
$users = UserInfo::all();
if(!$users->isEmpty()){
$group =0;
$project =0;
$task =0;
$schedule =0;
$board =0;
foreach ($users as $user){
if($user['user_engagement'] != null){
$engagement = json_decode($user['user_engagement']);
foreach($engagement as $val){
if($val->name == 'group'){
$group += 1;
}if($val->name == 'project'){
$project += 1;
}if($val->name == 'task'){
$task += 1;
}if($val->name == 'schedule'){
$schedule += 1;
}if($val->name == 'board'){
$board += 1;
}
}
}
}
}
// 获取全部用户
$userCount = count($users);
$engagementGroup = ceil($group / $userCount *100).'%';
$engagementProject = ceil($project / $userCount *100).'%';
$engagementTask = ceil($task / $userCount *100).'%';
$engagementSchedule = ceil($schedule/ $userCount *100).'%';
$engagementBoard = ceil($board / $userCount *100).'%';
$data = ['group'=>$engagementGroup,'project'=>$engagementProject,'task'=>$engagementTask,'schedule'=>$engagementSchedule,'board'=>$engagementBoard];
return $data;
dd($engagementGroup,$engagementProject,$engagementTask,$engagementSchedule,$engagementBoard);
}
......
...@@ -88,6 +88,8 @@ Route::group(['prefix'=> 'statistics'],function (){ ...@@ -88,6 +88,8 @@ Route::group(['prefix'=> 'statistics'],function (){
Route::get('user_retention','StatisticsController@UserRetention')->name('statistics.UserRetention'); Route::get('user_retention','StatisticsController@UserRetention')->name('statistics.UserRetention');
Route::get('average_user_operation','StatisticsController@AverageUserOperation')->name('statistics.AverageUserOperation'); Route::get('average_user_operation','StatisticsController@AverageUserOperation')->name('statistics.AverageUserOperation');
Route::get('retention_time','StatisticsController@RetentionTime')->name('statistics.RetentionTime'); Route::get('retention_time','StatisticsController@RetentionTime')->name('statistics.RetentionTime');
Route::get('new_user','StatisticsController@NewUsers')->name('statistics.NewUser');
Route::get('user_engagement','StatisticsController@UserEngagement')->name('statistics.UserEngagement');
}); });
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment