<?php

namespace App\Http\Controllers\Api;

use App\Command\Log;
use App\Models\OrderInfo as OrderInfoModel;
use App\Models\OrderDivideRecord;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

class SystemController extends BaseController
{
    //远程开启、暂停登录
    public function update(Request $request)
    {
        $status = $request->type ? (int)$request->type : 1;
        $exist = DB::table('admin_status')->where("slug", 'login')->first();
        if (!$exist) {
            return $this->JsonResponse('', '配置信息不存在', 201);
        }

        $updated_at = date("Y-m-d H:i:s");
        DB::table('admin_status')->where("slug", 'login')->update(['status' => $status, 'updated_at' => $updated_at]);

        return $this->JsonResponse('');
    }

    //定时任务--待领取状态下七天未领取,自动到待评价状态
    public function autoChangeReceiveStatus()
    {
        $chunkSize = 50; // 每次处理的订单数量
        $orders = OrderInfoModel::where(["order_status" => 2])->whereNull('verification_at')->whereNotNull('verifi_code_at')->orderBy('id')->take($chunkSize);
        while ($orders->count() > 0) {
            $orders->chunk($chunkSize, function ($batch) {
                foreach ($batch as $order) {
                    $nowtime = time();
                    if ($order->verifi_code_at) {
                        $wait_time = strtotime($order->verifi_code_at);
                        $diff_time = $nowtime - $wait_time;
                        $d = $diff_time / 86400;
                        if ($d >= 7) {
                            $order->order_status = 3;
                            $order->save();
                        }
                    }
                }
            });

            // 移动游标到下一批
            $orders->skip($chunkSize);
            $orders = $orders->getQuery();
            sleep(2);
        }

        return '--ok--';
    }

    //定时任务--订单分佣
    public function autoOrderCommission()
    {
        $chunkSize = 50; // 每次处理的订单数量
        $orders = OrderInfoModel::where(["order_status" => 4, 'is_commission' => 1])->orderBy('id')->take($chunkSize);
        while ($orders->count() > 0) {
            $orders->chunk($chunkSize, function ($batch) {
                foreach ($batch as $order) {
                    //佣金分配
                    $res = OrderDivideRecord::divide($order->id);
                    if ($res) {
                        $order->is_commission = 2;
                        $order->save();
                    }
                }
            });

            // 移动游标到下一批
            $orders->skip($chunkSize);
            $orders = $orders->getQuery();
            sleep(3);
        }

        return '--ok--';
    }
}