<?php

namespace app\statistics\logic;

use app\common\logic\BaseLogic;
use app\common\model\store_order\StoreOrder;
use app\common\model\user_recharge\UserRecharge;

class OrderLogic extends BaseLogic
{
    public static function Count($where)
    {
        $orderNum = StoreOrder::where($where)->whereDay('create_time')->count();
        $orderPayNum = StoreOrder::where($where)->where('paid', 1)->whereDay('create_time')->group('uid')->count();
        $monthOrderNum = StoreOrder::where($where)->whereMonth('create_time')->count();
        $monthOrderPayNum = StoreOrder::where($where)->where('paid', 1)->whereMonth('create_time')->group('uid')->count();
        $data = [
            "orderNum" => $orderNum,
            "monthOrderNum" => $monthOrderNum,
            "monthOrderNumRate" => 0,
            "orderNumRate" => 0,
            "orderPayNum" => $orderPayNum,
            "monthOrderPayNum" => $monthOrderPayNum,
            "monthOrderPayRate" => 0,
            "orderOrderPayRate" => 0
        ];
        return $data;
    }
    public static function Currday($where)
    {
        $date = date("Y-m-d");
        $startTime = strtotime($date . ' 00:00:00'); // 当天的开始时间戳
        $endTime = strtotime($date . ' 23:59:59'); // 当天的结束时间戳

        $interval = 4 * 60 * 60; // 4小时的秒数
        $data = [];
        for ($time = $startTime; $time < $endTime; $time += $interval) {

            $endTimeSegment = $time + $interval;
            $startTimeSegment = date('Y-m-d H:i:s', $time);
            $yesterendTimeSegment = date('Y-m-d H:i:s', $endTimeSegment - 86400);
            $endTimeSegment = date('Y-m-d H:i:s', $endTimeSegment);
            $yesterstartTimeSegment = date('Y-m-d H:i:s', $time - 86400);
            // 统计当前时间段的订单
            $todayAmount = StoreOrder::where($where)
                ->where('paid', 1)
                ->whereBetween('create_time', [strtotime($startTimeSegment), strtotime($endTimeSegment)])
                ->sum('pay_price');
            $yesterdayAmount = StoreOrder::where($where)
                ->where('paid', 1)
                ->whereBetween('create_time', [strtotime($yesterstartTimeSegment), strtotime($yesterendTimeSegment)])
                ->sum('pay_price');
            $data[] = [
                'todayAmount' => $todayAmount,
                'yesterdayAmount' => $yesterdayAmount,
            ];
        }
        return $data;
    }
    public static function dayPayPrice($where)
    {
        $todayAmount = UserRecharge::where($where)
            ->whereDay('create_time')
            ->sum('price');
        $pay_price = StoreOrder::where($where)
            ->whereDay('create_time')
            ->sum('pay_price');
        return bcadd($todayAmount, $pay_price, 2);
    }
}