<?php

namespace app\controller\admin\api\v1;

use app\dao\UserDao;
use support\Request;
use App\Utils\ApiResponse;
use App\model\Admin;
use app\model\User;
use app\model\UserPhone;
use hg\apidoc\annotation as Apidoc;
use app\model\Withdraw;
use App\Utils\API\PaymentNew;

/**
 * @Apidoc\Title("首页展示数据")
 * @Apidoc\Group("admin")
 */
class DashboardController
{
    /**
     * @Apidoc\Title("1.0 首页展示数据")
     * @Apidoc\Url("admin/api/v1/Dashboard/index")
     * @Apidoc\Method("POST")
     */
    public function index(Request $request)
    {
        $res = [];
        $res['user_total'] = User::count();
        $res['user_phone'] = UserPhone::count();
        $res['withdraw'] =withdraw::query()->distinct('user_id')->count('user_id');    // 统计不同的 user_id 个数;
        $res['user_phone_onlin'] = UserPhone::where('status', 1)->count();
        return ApiResponse::success(200, $res);
    }
    /**
     * @Apidoc\Title("1.0 首页用户注册分析")
     * @Apidoc\Url("admin/api/v1/Dashboard/useranalysis")
     * @Apidoc\Method("POST")
     */
    public function useranalysis(Request $request)
    {
        $res = [];
        $res['user_total'] = User::count();
        $res['register'] = User::where('f_id',0)->count();
        $res['inviteregistration'] =User::where('f_id','>',0)->count();    // 统计不同的 user_id 个数;
        return ApiResponse::success(200, $res);
    }
        /**
     * @Apidoc\Title("1.0 首页用户按照时间展示数据")
     * @Apidoc\Url("admin/api/v1/Dashboard/useranalysis_time")
     * @Apidoc\Method("POST")
     */
    public function useranalysis_time(Request $request)
    {
        /**
         * 登录人数 注册人数 提款人数 默认今天
         */
        $res = [];
    
        // 获取今天的开始和结束时间
        $data = $request->post();
        $startOfDay = $data['start_time']; // 今天的开始时间(00:00:00)
        $endOfDay = $data['end_time'];  // 今天的结束时间(23:59:59)
 
        $login = User::whereBetween('login_time', [ $startOfDay, $endOfDay])->count();
        $registration = User::whereBetween('created_at', [ \Carbon\Carbon::createFromTimestamp($startOfDay)->toDateTimeString(), \Carbon\Carbon::createFromTimestamp($endOfDay)->toDateTimeString()])->count();
        $withdraw=Withdraw::whereBetween('createtime2', [ \Carbon\Carbon::createFromTimestamp($startOfDay)->toDateTimeString(), \Carbon\Carbon::createFromTimestamp($endOfDay)->toDateTimeString()])->count();;
        $res['login']=$login;
        $res['registration']=$registration;
        $res['withdraw']=$withdraw;
        return ApiResponse::success(200, $res);
    }
    /**
     * @Apidoc\Title("1.0 查询第三方支付余额")
     * @Apidoc\Url("admin/api/v1/Dashboard/shopGetBalance")
     * @Apidoc\Method("POST")
     */
    public function shopGetBalance(Request $request)
    {
        $res = [];
        $res['AmountAvailable']=PaymentNew::shopGetBalance();
        return ApiResponse::success(200, $res);
    }
}