<?php

namespace app\admin\service\order;

use app\model\Order;
use app\model\OrderSheet;
use support\Db;
use support\Redis;

class OrderService
{

    /**
     * @Desc 自动确认收货
     * @Author Gorden
     * @Date 2024/4/11 16:09
     *
     * @return void
     */
    public static function AutomaticReceipt()
    {
        try {
            Db::beginTransaction();
            $timeUnix = strtotime("-7 days");
            $orders = Order::where('order_status_system', 'SIGNED')
                ->where('order_addtimes', '<', $timeUnix)
                ->get();
            foreach ($orders as $order) {
                // 订单主表
                Order::where('order_id', $order->order_id)->update([
                    'order_is_complete' => 'Y',
                    'order_status_system' => 'CONFIRM'
                ]);
                // 订单详情表
                OrderSheet::where('join_sheet_order_id', $order->order_id)->update(['order_sheet_status' => 'CONFIRM']);
            }
            Db::commit();
        } catch (\Exception $e) {
            Db::rollBack();
        }
    }

    public static function checkPayingOrder()
    {
        try {
            Db::beginTransaction();
            $timeUnix = strtotime("-30 minutes");
            $orders = Order::where('order_status_system', 'PAYING')
                ->where('order_addtimes', '<', $timeUnix)
                ->get();
            foreach ($orders as $order) {
                // 订单主表
                Order::where('order_id', $order->order_id)->update([
                    'order_category' => 'CANCEL',
                    'order_status_system' => 'CANCEL',
                    'order_status_payment' => 'CANCEL'
                ]);
                // 订单详情表
                OrderSheet::where('join_sheet_order_id', $order->order_id)->update(['order_sheet_status' => 'CANCEL']);
            }

            Db::commit();
        } catch (\Exception $e) {
            Db::rollBack();
        }
    }
}