Commit fd1aeda1 authored by gxx's avatar gxx

回访用户、用户留存 完成

parent 9f7989c8
......@@ -12,8 +12,12 @@ namespace App\Contracts;
interface StatisticsServiceContract
{
public function UserTotal();
public function UserIncrease();
public function ActiveUser();
public function OutflowUser();
public function ReturnVisit();
public function UserRetention();
}
\ No newline at end of file
......@@ -57,11 +57,26 @@ class StatisticsController extends Controller
}
// 流失用户
public function OutflowUser()
{
$outflowUsers = $this->mStatistics->OutflowUser();
return $outflowUsers;
}
// 回访用户
public function ReturnVisit()
{
$returnVisitUsersCount = $this->mStatistics->ReturnVisit();
return $returnVisitUsersCount;
}
public function UserRetention()
{
$data = $this->mStatistics->UserRetention();
return $data;
}
}
......@@ -18,6 +18,15 @@ use Carbon\Carbon;
class StatisticsService implements StatisticsServiceContract
{
public function UserTotal()
{
$users = User::all();
$date = ['全部用户'=>count($users)];
return $date;
}
public function UserIncrease()
{
$startTime = strtotime(date('Ymd'))-86400;
......@@ -46,11 +55,12 @@ class StatisticsService implements StatisticsServiceContract
$month = count($monthUsers);
}
$day = round($day/$users*100,2);
$week = round($week/$users*100,2);
$month = round($month/$users*100,2);
$day =ceil(round($day/$users*100,2)) ;
$week =ceil(round($week/$users*100,2)) ;
$month =ceil(round($month/$users*100,2)) ;
$date = array($day.'%',$week.'%',$month.'%',$users);
$date = array($day.'%',$week.'%',$month.'%');
// $date = array(['昨日新增用户占比'=>$day.'%','上一周新增用户占比'=>$week.'%','上一个月新增用户占比'=>$month.'%']);
return $date;
}
......@@ -142,7 +152,7 @@ class StatisticsService implements StatisticsServiceContract
}
}
$date = array($yesterdayActiveUser,$LastMonthActiveUser,$LastWeekActiveUser);
$date = ['昨日活跃用户'=>$yesterdayActiveUser,'上一个月活跃用户'=>$LastMonthActiveUser,'上一周活跃用户'=>$LastWeekActiveUser];
return $date;
}
......@@ -156,14 +166,52 @@ class StatisticsService implements StatisticsServiceContract
if(!$userLogin->isEmpty()){
foreach ($userLogin as $user){
$timeDifference = strtotime(date('Ymd')) - strtotime($user['last_login_time']);
$days = floor($timeDifference/84600);
$days =ceil(floor($timeDifference/84600)) ;
if ($days > 7){
$outflowUsers+=1;
}
}
};
$date = ['流失用户'=>$outflowUsers];
return $date;
}
// 回访用户
public function ReturnVisit()
{
$returnVisitUsers = UserInfo::where('return_visit','1')->get();
$returnVisitUsersCount=0;
if (!$returnVisitUsers->isEmpty()){
$returnVisitUsersCount = count($returnVisitUsers);
}
$date = ['回访用户'=>$returnVisitUsersCount];
return $date;
}
// 用户存留
public function UserRetention()
{
$activeUsers = $this->ActiveUser();
$outflowUsers = $this->OutflowUser();
$userTotals = $this->UserTotal();
$outflow =ceil(round($outflowUsers['流失用户']/$userTotals['全部用户']*100,2)) ;
$dayActive =ceil(round($activeUsers['昨日活跃用户']/$userTotals['全部用户']*100,2)) ;
$monthActive =ceil(round($activeUsers['上一个月活跃用户']/$userTotals['全部用户']*100,2)) ;
$weekActive=ceil(round($activeUsers['上一周活跃用户']/$userTotals['全部用户']*100,2)) ;
$data = ['昨日活跃占比'=>$dayActive.'%','上一个月活跃占比'=>$monthActive.'%','上一周活跃占比'=>$weekActive.'%','流失用户占比'=>$outflow.'%'];
return $data;
}
public function AverageUserOperation()
{
return $outflowUsers;
}
......
......@@ -84,6 +84,8 @@ Route::group(['prefix'=> 'statistics'],function (){
Route::get('user_increase','StatisticsController@UserIncrease')->name('statistics.UserIncrease');
Route::get('active_user','StatisticsController@ActiveUser')->name('statistics.ActiveUser');
Route::get('outflow_user','StatisticsController@OutflowUser')->name('statistics.OutflowUser');
Route::get('return_visit','StatisticsController@ReturnVisit')->name('statistics.ReturnVisit');
Route::get('user_retention','StatisticsController@UserRetention')->name('statistics.UserRetention');
});
......
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