| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- <?php
- namespace App\Http\Controllers\V2\Admin;
- use App\Http\Controllers\Controller;
- use App\Models\CommissionLog;
- use App\Models\Order;
- use App\Models\ServerShadowsocks;
- use App\Models\ServerTrojan;
- use App\Models\ServerVmess;
- use App\Models\Stat;
- use App\Models\StatServer;
- use App\Models\StatUser;
- use App\Models\Ticket;
- use App\Models\User;
- use App\Services\StatisticalService;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Cache;
- use Illuminate\Support\Facades\DB;
- class StatController extends Controller
- {
- public function override(Request $request)
- {
- $params = $request->validate([
- 'start_at' => '',
- 'end_at' => ''
- ]);
- if (isset($params['start_at']) && isset($params['end_at'])) {
- $stats = Stat::where('record_at', '>=', $params['start_at'])
- ->where('record_at', '<', $params['end_at'])
- ->get()
- ->makeHidden(['record_at', 'created_at', 'updated_at', 'id', 'record_type'])
- ->toArray();
- } else {
- $statisticalService = new StatisticalService();
- return [
- 'data' => $statisticalService->generateStatData()
- ];
- }
- $stats = array_reduce($stats, function($carry, $item) {
- foreach($item as $key => $value) {
- if(isset($carry[$key]) && $carry[$key]) {
- $carry[$key] += $value;
- } else {
- $carry[$key] = $value;
- }
- }
- return $carry;
- }, []);
- return [
- 'data' => $stats
- ];
- }
- public function record(Request $request)
- {
- $request->validate([
- 'type' => 'required|in:paid_total,commission_total,register_count',
- 'start_at' => '',
- 'end_at' => ''
- ]);
- $statisticalService = new StatisticalService();
- $statisticalService->setStartAt($request->input('start_at'));
- $statisticalService->setEndAt($request->input('end_at'));
- return [
- 'data' => $statisticalService->getStatRecord($request->input('type'))
- ];
- }
- public function ranking(Request $request)
- {
- $request->validate([
- 'type' => 'required|in:server_traffic_rank,user_consumption_rank,invite_rank',
- 'start_at' => '',
- 'end_at' => '',
- 'limit' => 'nullable|integer'
- ]);
- $statisticalService = new StatisticalService();
- $statisticalService->setStartAt($request->input('start_at'));
- $statisticalService->setEndAt($request->input('end_at'));
- return [
- 'data' => $statisticalService->getRanking($request->input('type'), $request->input('limit') ?? 20)
- ];
- }
- }
|