<?php

namespace app\admin\service\statistics;

use app\model\Order;
use app\model\OrderReturn;
use support\Db;

class OrderService
{
    public static function getOrder()
    {
        // 今日订单
        $todayTimeUnix = strtotime(date('Y-m-d'));
        // 今日订单
        $data['todayOrder'] = Order::where('order_addtimes', '>', $todayTimeUnix)->count();
        // 今日收入
        $data['todayRevenue'] = Order::where('order_status_payment', 'SUCCESS')
            ->where('order_addtimes', '>', $todayTimeUnix)
            ->sum('order_amount_pay');
        // 今日退单
        $data['todayRefund'] = OrderReturn::where('order_return_addtimes', '>', $todayTimeUnix)->count();


        // 柱状图
        // 产品订单
        $newAddition = Db::select("SELECT DATE_FORMAT(FROM_UNIXTIME(order_addtimes), '%Y/%m') AS `month`,count(*) as `num` FROM app_order group by month");
//        $newAddition = Db::select("
//            SELECT DATE_FORMAT(FROM_UNIXTIME(order_sheet_addtimes), '%Y/%m') AS `month`,count(*) as `num` FROM app_order_sheet as s
//                left join app_goods as g on s.join_sheet_goods_id = g.goods_id
//                    where g.goods_classify = 'GOODS'
//                group by month
//        ");
        $category = [];
        $newAdditionData = [];
        foreach ($newAddition as $item) {
            if (!in_array($item->month, $category)) {
                $category[] = $item->month;
            }
//            $newAdditionData['category'][] = $item->month;
//            $newAdditionData['data'][] = $item->num;
        }

        // 服务订单
        $newAdditionService = Db::select("
            SELECT DATE_FORMAT(FROM_UNIXTIME(order_sheet_addtimes), '%Y/%m') AS `month`,count(*) as `num` FROM app_order_sheet as s 
                left join app_goods as g on s.join_sheet_goods_id = g.goods_id
                    where g.goods_classify = 'SERVICE'
                group by month
        ");
        $newAdditionServiceData = [];
        foreach ($newAdditionService as $item) {
            if (!in_array($item->month, $category)) {
                $category[] = $item->month;
            }
//            $newAdditionServiceData['category'][] = $item->month;
//            $newAdditionServiceData['data'][] = $item->num;
        }

        sort($category);

        foreach ($category as $item2){
            $isHaveService = false;
            $isHaveGoods = false;
            foreach ($newAdditionService as $item){
                if ($item2 == $item->month){
                    $isHaveService = true;
                    $newAdditionServiceData['category'][] = $item->month;
                    $newAdditionServiceData['data'][] = $item->num;
                }
            }
            foreach ($newAddition as $item3){
                if ($item2 == $item3->month){
                    $isHaveGoods = true;
                    $newAdditionData['category'][] = $item3->month;
                    $newAdditionData['data'][] = $item3->num;
                }
            }
            if (!$isHaveService){
                $newAdditionServiceData['category'][] = $item2;//['month'=>$item2,'num'=>0];
                $newAdditionServiceData['data'][] = 0;
            }

            if (!$isHaveGoods){
                $newAdditionData['category'][] = $item2;//['month'=>$item2,'num'=>0];
                $newAdditionData['data'][] = 0;
            }

        }

        $data['addition']['goods'] = $newAdditionData;
        $data['addition']['service'] = $newAdditionServiceData;

        return $data;
    }
}