145 lines
5.0 KiB
PHP
Executable File
145 lines
5.0 KiB
PHP
Executable File
<?php
|
||
|
||
declare(strict_types=1);
|
||
|
||
namespace App\Services\Tg;
|
||
|
||
use App\Models\CountUser;
|
||
use App\Services\DB;
|
||
|
||
final class ReportUser
|
||
{
|
||
|
||
public function ByDay($iDay)
|
||
{
|
||
if (!$iDay) {
|
||
$iDay = 0;
|
||
}
|
||
|
||
if ($iDay === 0) {
|
||
$sDateStart = date("Y-m-d", strtotime("-0 day"));
|
||
$sDateEnd = false;
|
||
} else {
|
||
$sDateStart = date("Y-m-d", strtotime("-$iDay day"));
|
||
$sDateEnd = date("Y-m-d");
|
||
}
|
||
|
||
return $this->ByDate($sDateStart, $sDateEnd);
|
||
|
||
}
|
||
|
||
public function ByDate($sStart, $sEnd = false)
|
||
{
|
||
try {
|
||
$query = CountUser::select('from',
|
||
DB::raw('SUM(count_from) as count_from'),
|
||
DB::raw('SUM(count_reg) as count_reg'),
|
||
DB::raw('SUM(count_pay) as count_pay'),
|
||
DB::raw('SUM(count_pay_new) as count_pay_new'),
|
||
DB::raw('SUM(count_pay_old) as count_pay_old'),
|
||
DB::raw('SUM(count_money) as count_money'),
|
||
DB::raw('SUM(count_money_new) as count_money_new'),
|
||
DB::raw('SUM(count_money_old) as count_money_old'));
|
||
|
||
if ($sEnd) {
|
||
$query->whereDate('date', '>=', $sStart);
|
||
$query->whereDate('date', '<=', $sEnd);
|
||
} else {
|
||
$query->whereDate('date', '=', $sStart);
|
||
}
|
||
|
||
$aData = $query->groupBy('from')
|
||
->orderBy('count_reg', 'desc')
|
||
->get()
|
||
->toArray();
|
||
|
||
return $this->TgStr($aData);
|
||
|
||
} catch (\Exception $e) {
|
||
|
||
return $this->TgStr(json_encode($e->getMessage()), true);
|
||
|
||
}
|
||
}
|
||
|
||
private function TgStr ($aData, $bBreak = false)
|
||
{
|
||
|
||
if ($bBreak) {
|
||
return $aData;
|
||
}
|
||
|
||
// 先算总数
|
||
$iTotalFromCount = 0;
|
||
$iTotalRegCount = 0;
|
||
$iTotalPayCount = 0;
|
||
$iTotalMoneyCount = 0;
|
||
$iTotalPayCountOld = 0;
|
||
$iTotalPayCountNew = 0;
|
||
$iTotalMoneyCountOld = 0;
|
||
$iTotalMoneyCountNew = 0;
|
||
foreach ($aData as $row) {
|
||
$iTotalFromCount += $row['count_from'] ?? 0;
|
||
$iTotalRegCount += $row['count_reg'] ?? 0;
|
||
$iTotalPayCount += $row['count_pay'] ?? 0;
|
||
$iTotalPayCountOld += $row['count_pay_old'] ?? 0;
|
||
$iTotalPayCountNew += $row['count_pay_new'] ?? 0;
|
||
$iTotalMoneyCount += $row['count_money'] ?? 0;
|
||
$iTotalMoneyCountOld += $row['count_money_old'] ?? 0;
|
||
$iTotalMoneyCountNew += $row['count_money_new'] ?? 0;
|
||
}
|
||
|
||
$iRegFromRate = 0;
|
||
$iPayRagRate = 0;
|
||
if (!empty($iTotalRegCount) && !empty($iTotalFromCount)) {
|
||
$iRegFromRate = (int) (($iTotalRegCount / $iTotalFromCount) * 100);
|
||
}
|
||
if (!empty($iTotalPayCount) && !empty($iTotalRegCount)) {
|
||
$iPayRagRate = (int) (($iTotalPayCountNew / $iTotalRegCount) * 100);
|
||
}
|
||
|
||
$sStr = "🎹🎹🎹🎹🎹🎹\n\n";
|
||
$sStr .= "*总访问:".$iTotalFromCount."\n";
|
||
$sStr .= "*总注册:".$iTotalRegCount."\n";
|
||
$sStr .= "*总支付:".$iTotalPayCount."(".$iTotalPayCountNew."n, ".$iTotalPayCountOld."o)\n";
|
||
$sStr .= "*总金额:".$iTotalMoneyCount."【".$iTotalMoneyCountNew."n, ".$iTotalMoneyCountOld."o)\n";
|
||
$sStr .= "*访问注册比:".$iRegFromRate."%\n";
|
||
$sStr .= "*注册付款比(n):".$iPayRagRate."%\n";
|
||
|
||
$iFromRate = 0;
|
||
$iRegRate = 0;
|
||
$iPayRate = 0;
|
||
$iMoneyRate = 0;
|
||
foreach ($aData as $row) {
|
||
|
||
if ($iTotalFromCount) {
|
||
$iFromRate = (int)(($row['count_from'] / $iTotalFromCount) * 100);
|
||
}
|
||
|
||
if ($iTotalRegCount) {
|
||
$iRegRate = (int)(($row['count_reg'] / $iTotalRegCount) * 100);
|
||
}
|
||
|
||
if ($iTotalPayCount) {
|
||
$iPayRate = (int)(($row['count_pay'] / $iTotalPayCount) * 100);
|
||
}
|
||
|
||
if ($iTotalMoneyCount) {
|
||
$iMoneyRate = (int)(($row['count_money'] / $iTotalMoneyCount) * 100);
|
||
}
|
||
|
||
$sStr .= "\n";
|
||
$sStr .= "[".str_replace('.', '#', $row["from"])."]\n";
|
||
$sStr .= " - 访问:".$row['count_from']."(".$iFromRate."%)\n";
|
||
$sStr .= " - 注册:".$row['count_reg']."(".$iRegRate."%)\n";
|
||
$sStr .= " - 支付:".$row['count_pay']."(".$iPayRate."%)(".$row['count_pay_new']."n, ".$row['count_pay_old']."o)\n";
|
||
$sStr .= " - 金额:".$row['count_money']."(".$iMoneyRate."%)(".$row['count_money_new']."n, ".$row['count_money_old']."o)\n";
|
||
|
||
}
|
||
|
||
return $sStr;
|
||
|
||
}
|
||
|
||
}
|