allocatr/application/admin/controller/AutoDispatchLogic.php
2025-06-05 22:01:14 +08:00

73 lines
2.1 KiB
PHP

<?php
namespace app\admin\controller;
use app\admin\controller\orders\DispatchLogic;
use app\admin\model\Admin;
use app\admin\model\OrderDispatch;
use app\admin\model\Worker;
use think\Hook;
class AutoDispatchLogic
{
public static function autoDispatch($order,$auth=null)
{
//
// if ($order->dispatch_type != 2) {
// return false;
// }
$worker_id = (new DispatchLogic())->getMaxScoreWorker($order);
if (!$worker_id) {
$order->dispatch_type = 1;
$order->save();
return false;
}
//$admin = Admin::where('id',$order->admin_id)->find();
$insert = [
'admin_id' => config('system_id'),
'admin_user' => config('system_name'),
'order_id' => $order->id,
'type' => 2,
'worker_id' => $worker_id,
'plan_time' => $order->plan_time,
'is_receipt' => $order->receive_type == 1,
];
$worker = (new Worker())->where('id', $worker_id)->find();
$insert ['worker_name'] = $worker['name'];
$insert ['worker_tel'] = $worker['tel'];
$orderDispatch = new OrderDispatch();
$res = $orderDispatch->allowField(true)->save($insert);
$order->status = \app\admin\model\Order::STATUS_DISPATCHED;
$order->dispatch_time = date('Y-m-d H:i:s');
$order->dispatch_admin_id = 1;
$order->dispatch_admin_user = '系统';
$order->worker_id = $worker_id;
$order->dispatch_type = 2;
$order->save();
//日志
$hookparams['order'] = $order;
$hookparams['role'] = 1;
$hookparams['auth'] = $auth;
$hookparams['remark'] = '系统自动完成派单';//. $worker->name.'('.$worker->tel.')';
Hook::listen('order_change', $hookparams);
//日志
$hookParams = [
'dispatch' => (new OrderDispatch())->where('id', $orderDispatch->id)->find(),
'remark' => '系统自动派单给师傅:'. $worker->name .'('.$worker->tel.')',
];
Hook::listen('order_dispatch_change', $hookParams);
return true;
}
}