diff --git a/application/admin/command/Test.php b/application/admin/command/Test.php new file mode 100644 index 0000000..3050b80 --- /dev/null +++ b/application/admin/command/Test.php @@ -0,0 +1,76 @@ +setName('test') + ->setDescription('批量生成区域名称的拼音'); + } + + protected function execute(Input $input, Output $output) + { + $order = (new Order())->where('id',66)->find(); + $this->autoDispatch($order); + } + + private function autoDispatch($order) { +// if ($order->dispatch_type != 2){ +// return false; +// } + + $worker_ids = (new Worker())->where('area_id',$order->area_id) + ->where('status',1) + ->field(['id','area_id','lng'],'lat') + ->column('id'); + + $worker_items_ids = (new WorkerItem()) + ->where('item_id',$order->item_id) + ->whereIn('worker_id',$worker_ids) + ->field(['worker_id'],'lat') + ->column('worker_id'); + + $out_workers = array_intersect($worker_ids,$worker_items_ids); + + $worker_id = $out_workers[0] ?? false; + + if (!$worker_id){ + $order->dispatch_type = 1; + $order->save(); + return false; + } + + $insert = [ +// 'admin_id' => $this->auth->id, +// 'admin_user' => $this->auth->nickname, + 'order_id' => $order->id, + 'type' => 1, + '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']; + (new OrderDispatch())->allowField(true)->save($insert); + $order->status = \app\admin\model\Order::STATUS_DISPATCHED; + $order->save(); + return true; + + } +} diff --git a/application/admin/controller/Order.php b/application/admin/controller/Order.php index 9757a1c..fe528d7 100644 --- a/application/admin/controller/Order.php +++ b/application/admin/controller/Order.php @@ -2,11 +2,15 @@ namespace app\admin\controller; +use app\admin\model\OrderDispatch; +use app\admin\model\Worker; +use app\admin\model\WorkerItem; use app\common\controller\Backend; use fast\Tree; use think\Db; use think\exception\PDOException; use think\exception\ValidateException; +use think\Model; /** * 订单列管理 @@ -173,6 +177,9 @@ class Order extends Backend $params['update_time'] = date('Y-m-d H:i:s'); $result = $this->model->allowField(true)->save($params); + if ($params['dispatch_type'] == 2){ + $this->autoDispatch($this->model); + } Db::commit(); } catch (ValidateException|PDOException|Exception $e) { Db::rollback(); @@ -283,4 +290,51 @@ class Order extends Backend return $orderNumber; } + + + private function autoDispatch($order) { + if ($order->dispatch_type != 2){ + return false; + } + + $worker_ids = (new Worker())->where('area_id',$order->area_id) + ->where('status',1) + ->field(['id','area_id','lng'],'lat') + ->column('id'); + + $worker_items_ids = (new WorkerItem()) + ->where('item_id',$order->item_id) + ->whereIn('worker_id',$worker_ids) + ->field(['worker_id'],'lat') + ->column('worker_id'); + + $out_workers = array_intersect($worker_ids,$worker_items_ids); + + $worker_id = $out_workers[0] ?? false; + + if (!$worker_id){ + $order->dispatch_type = 1; + $order->save(); + return false; + } + + $insert = [ + 'admin_id' => $this->auth->id, + 'admin_user' => $this->auth->nickname, + 'order_id' => $order->id, + 'type' => 1, + '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']; + (new OrderDispatch())->allowField(true)->save($insert); + $order->status = \app\admin\model\Order::STATUS_DISPATCHED; + $order->save(); + return true; + + } } diff --git a/application/command.php b/application/command.php index d3c5fcf..1820a0c 100755 --- a/application/command.php +++ b/application/command.php @@ -20,4 +20,5 @@ return [ 'app\admin\command\AreaPinyinCommand', 'app\admin\command\ItemImportCommand', 'app\admin\command\ImportServiceItems', + 'app\admin\command\Test', ]; diff --git a/public/assets/js/addons.js b/public/assets/js/addons.js index 349ccac..9ef63f1 100755 --- a/public/assets/js/addons.js +++ b/public/assets/js/addons.js @@ -1,8 +1,6 @@ define([], function () { require([], function () { //绑定data-toggle=addresspicker属性点击事件 - console.log('111'); - $(document).on('click', "[data-toggle='addresspicker']", function () { var that = this; var callback = $(that).data('callback'); @@ -14,7 +12,7 @@ define([], function () { var lng = lng_id ? $("#" + lng_id).val() : ''; var city_code = $("#area_id").val(); var zoom = zoom_id ? $("#" + zoom_id).val() : ''; - var url = "/addons/address/index/select?1=1"; + var url = "/addons/address/index/select?abc=1"; url += (lat && lng) ? 'lat=' + lat + '&lng=' + lng + (input_id ? "&address=" + $("#" + input_id).val() : "") +(zoom ? "&zoom=" + zoom : "") : '' diff --git a/public/assets/js/backend/auth/admin.js b/public/assets/js/backend/auth/admin.js index bd690c6..212cd1a 100755 --- a/public/assets/js/backend/auth/admin.js +++ b/public/assets/js/backend/auth/admin.js @@ -74,9 +74,9 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'jstree'], { field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: function (value, row, index) { - if (row.id == Config.admin.id) { - return ''; - } + // if (row.id == Config.admin.id) { + // return ''; + // } return Table.api.formatter.operate.call(this, value, row, index); }, buttons: [ @@ -127,7 +127,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form', 'jstree'], }, success: function (data) { // console.log(data); - Controller.api.rendertree(data); + // Controller.api.rendertree(data); }, error: function () { console.error("请求失败");