From 59bd7b5027dbcbbe996d72f7a9d6f5ca3a09661e Mon Sep 17 00:00:00 2001 From: hellcat <> Date: Sat, 19 Apr 2025 19:58:47 +0800 Subject: [PATCH] no message --- public/tests/hook.php | 1 + src/Services/CountUser.php | 59 +++++++++++++++++++++++++++++++ src/Services/Tg/Hook/Mod/User.php | 28 +++++++++++++++ 3 files changed, 88 insertions(+) create mode 100755 src/Services/CountUser.php diff --git a/public/tests/hook.php b/public/tests/hook.php index a5c335e3..a056a81c 100644 --- a/public/tests/hook.php +++ b/public/tests/hook.php @@ -66,6 +66,7 @@ $oHttp->aData['message']['text'] = '\/user#find 1'; $oHttp->aData['message']['text'] = '\/cmd#list'; $oHttp->aData['message']['text'] = '\/visitor#all'; $oHttp->aData['message']['text'] = '\/user#report__day'; +$oHttp->aData['message']['text'] = '\/user#countReg__date__2021-03-28__2028-03-28'; //{ // "update_id": 761180998, diff --git a/src/Services/CountUser.php b/src/Services/CountUser.php new file mode 100755 index 00000000..7ed7fc32 --- /dev/null +++ b/src/Services/CountUser.php @@ -0,0 +1,59 @@ +RegGroupFrom($sDateStart, $sDateEnd); + } + + public function RegByDate($sDateStart, $sDateEnd = false) + { + if (!$sDateEnd) { + $sDateEnd = false; + } + + return $this->RegGroupFrom($sDateStart, $sDateEnd); + } + + public function RegGroupFrom($sDateStart, $sDateEnd = false) + { + $query = User::selectRaw('COALESCE(`from`, "无") as `from`, COUNT(*) as count'); + + if ($sDateEnd) { + $query->whereDate('reg_date', '>=', $sDateStart) + ->whereDate('reg_date', '<=', $sDateEnd); + } else { + $query->whereDate('reg_date', $sDateStart); + } + + // 添加排序,按 user_count 降序排列 + $aCountUser = $query->groupBy('from') + ->orderBy('count', 'desc') // 根据用户数量降序排序 + ->get() + ->toArray(); + + return $aCountUser; + + } + +} diff --git a/src/Services/Tg/Hook/Mod/User.php b/src/Services/Tg/Hook/Mod/User.php index deaa0b28..abeb9375 100644 --- a/src/Services/Tg/Hook/Mod/User.php +++ b/src/Services/Tg/Hook/Mod/User.php @@ -7,6 +7,7 @@ use App\Services\Tg\ReportUser as ServiceTgReportUser; use App\Models\User as ModelUser; //use App\Services\DB; use App\Utils\Tools; +use App\Services\CountUser as ServiceCountUser; final class User { @@ -72,4 +73,31 @@ final class User } + public function CountReg($aParam) + { + + @$sOption1 = $aParam['aOption'][1] ?? 'day'; + @$sOption2 = $aParam['aOption'][2]; + @$sOption3 = $aParam['aOption'][3]; + @$sOption4 = $aParam['aOption'][4]; + + $sMsg = '?'; + + if ($sOption1 == 'day') { + $r = (new ServiceCountUser())->RegByDay($sOption2); + } + + if ($sOption1 == 'date') { + $r = (new ServiceCountUser())->RegByDate($sOption2, $sOption3); + } + + $sMsg = ''; + foreach ($r as $row) { + $sMsg .= "\n\n"; + $sMsg .= $row['from'].":".$row['count']; + } + + return $sMsg; + } + }