<?php namespace app\controller\api; use support\Request; use App\Utils\ApiResponseApp; 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("自用测试?") */ class TextController { protected $noNeedLogin = ['classifyPhoneOnlineHistory', 'get_projectdetailed', 'get_mechanism_list']; /** * @Apidoc\Title("1.0 手机号在线历史归类函数") * @Apidoc\Url("api/text/classifyPhoneOnlineHistory") * @Apidoc\Method("POST") */ public function classifyPhoneOnlineHistory(Request $request) { $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 ($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(); } } }