diff --git a/app/controller/api/TextController.php b/app/controller/api/TextController.php index 6cc1828..7559e31 100644 --- a/app/controller/api/TextController.php +++ b/app/controller/api/TextController.php @@ -11,18 +11,21 @@ use App\model\Dictionary; use App\model\Message; use App\model\ExchangeRate; use app\model\User; +use app\model\UserPhoneDayLog; +use app\model\UserPhoneLog; use app\model\UserReward; use hg\apidoc\annotation as Apidoc; use support\Db; use support\Log; +use Carbon\Carbon; /** - * @Apidoc\Title("?") + * @Apidoc\Title("自用测试?") */ class TextController { - protected $noNeedLogin = ['get_projectdetailed', 'get_projectdetailed', 'get_mechanism_list']; + protected $noNeedLogin = ['classifyPhoneOnlineHistory', 'get_projectdetailed', 'get_mechanism_list']; /** * @Apidoc\Title("1.0 手机号在线历史归类函数") @@ -31,15 +34,40 @@ class TextController */ public function classifyPhoneOnlineHistory(Request $request) { - $result = Db::table('your_table') // 这里的 'your_table' 应该是你存储用户积分的表名 - ->select('username', Db::raw('SUM(amount) as total_points')) // 计算每个用户名的积分总数 - ->groupBy('username') // 按用户名分组 + $threeDaysAgo = Carbon::now()->subDays(3)->startOfDay(); // 三天前的开始时间 + $date = Db::table('user_phone_log') + ->selectRaw('DATE(created_at) AS date') + ->where('created_at', '<=', $threeDaysAgo) + ->groupByRaw('DATE(created_at)') + ->orderBy('date') ->get(); - foreach ($result as $v) { - $user = User::where('username', $v->username)->first(); - $user->money += $v->total_points; - $user->save(); - break; + foreach ($date as $v) { + // var_dump($v->date); + + $date = $v->date; + + // 使用 Carbon 格式化日期为一天的开始和结束 + $startOfDay = Carbon::parse($date)->startOfDay(); + $endOfDay = Carbon::parse($date)->endOfDay(); + + // 查询指定日期的记录 + $logs = UserPhoneLog::whereBetween('created_at', [$startOfDay, $endOfDay]) + ->selectRaw('phone, SUM(time) AS total_time') // 按照手机号分组,统计总时长 + ->groupBy('phone') + ->get(); + var_dump($date); + // 处理每个手机的在线时长 + foreach ($logs as $log) { + // 在这里可以处理每个手机的在线时长,如记录日志、更新数据库等 + echo "Phone: {$log->phone}, Total Time: {$log->total_time}" . PHP_EOL; + $UserPhoneDayLog=new UserPhoneDayLog(); + $UserPhoneDayLog->phone=$log->phone; + $UserPhoneDayLog->created_at=$startOfDay; + $UserPhoneDayLog->updated_at=$startOfDay; + $UserPhoneDayLog->time=$log->total_time; + $UserPhoneDayLog->save(); + } + UserPhoneLog::whereBetween('created_at', [$startOfDay, $endOfDay])->delete(); } } } diff --git a/app/model/UserPhoneDayLog.php b/app/model/UserPhoneDayLog.php new file mode 100644 index 0000000..3b89094 --- /dev/null +++ b/app/model/UserPhoneDayLog.php @@ -0,0 +1,40 @@ +