Browse Source

feat(admin/order): add search for out order id

Anankke 11 tháng trước cách đây
mục cha
commit
d607e080a6

+ 1 - 0
app/routes.php

@@ -286,6 +286,7 @@ return static function (Slim\App $app): void {
         $group->post('/product/ajax', App\Controllers\Admin\ProductController::class . ':ajax');
         // 订单
         $group->get('/order', App\Controllers\Admin\OrderController::class . ':index');
+        $group->post('/order/search', App\Controllers\Admin\OrderController::class . ':search');
         $group->get('/order/{id:[0-9]+}/view', App\Controllers\Admin\OrderController::class . ':detail');
         $group->post('/order/{id:[0-9]+}/cancel', App\Controllers\Admin\OrderController::class . ':cancel');
         $group->delete('/order/{id:[0-9]+}', App\Controllers\Admin\OrderController::class . ':delete');

+ 3 - 1
resources/views/tabler/admin/footer.tpl

@@ -111,6 +111,7 @@
 </div>
 </div>
 <!-- js -->
+<script src="//{$config['jsdelivr_url']}/npm/@tabler/core@latest/dist/js/tabler.min.js"></script>
 <script>
     let successDialog = new bootstrap.Modal(document.getElementById('success-dialog'));
     let failDialog = new bootstrap.Modal(document.getElementById('fail-dialog'));
@@ -122,6 +123,8 @@
             return;
         }
 
+        let res = JSON.parse(evt.detail.xhr.response);
+
         if (res.ret === 1) {
             document.getElementById("success-message").innerHTML = res.msg;
             successDialog.show();
@@ -135,7 +138,6 @@
         location.reload();
     });
 </script>
-<script src="//{$config['jsdelivr_url']}/npm/@tabler/core@latest/dist/js/tabler.min.js"></script>
 <script>console.table([['数据库查询', '执行时间'], ['{count($queryLog)} 次', '{$optTime} ms']])</script>
 
 </body>

+ 41 - 0
resources/views/tabler/admin/order/index.tpl

@@ -1,6 +1,38 @@
 {include file='admin/header.tpl'}
 
 <div class="page-wrapper">
+    <div class="modal modal-blur fade" id="search-gateway" tabindex="-1" role="dialog" aria-hidden="true">
+        <div class="modal-dialog modal-dialog-centered modal-dialog-scrollable" role="document">
+            <div class="modal-content">
+                <div class="modal-header">
+                    <h5 class="modal-title">查找订单</h5>
+                    <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
+                </div>
+                <div class="modal-body">
+                    <div class="form-group mb-3 row">
+                        <label class="form-label col-3 col-form-label">网关订单号</label>
+                        <div class="col">
+                            <input id="gateway_order_id" type="text" class="form-control"
+                                   placeholder="">
+                        </div>
+                    </div>
+                </div>
+                <div class="modal-footer">
+                    <button type="button" class="btn me-auto" data-bs-dismiss="modal">取消</button>
+                    <button id="create-button" 
+                        type="button" 
+                        class="btn btn-primary" 
+                        hx-post="/admin/order/search" 
+                        hx-swap="none"
+                        hx-vals='js:{
+                            gateway_order_id: document.getElementById("gateway_order_id").value
+                        }'>查找
+                    </button>
+                </div>
+            </div>
+        </div>
+    </div>
+
     <div class="container-xl">
         <div class="page-header d-print-none text-white">
             <div class="row align-items-center">
@@ -12,6 +44,15 @@
                         <span class="home-subtitle">管理客户订单</span>
                     </div>
                 </div>
+                <div class="col-auto">
+                    <div class="btn-list">
+                        <a href="#" class="btn btn-primary" data-bs-toggle="modal"
+                           data-bs-target="#search-gateway">
+                            <i class="icon ti ti-search"></i>
+                            查找
+                        </a>
+                    </div>
+                </div>
             </div>
         </div>
     </div>

+ 21 - 0
src/Controllers/Admin/OrderController.php

@@ -7,6 +7,7 @@ namespace App\Controllers\Admin;
 use App\Controllers\BaseController;
 use App\Models\Invoice;
 use App\Models\Order;
+use App\Models\Paylist;
 use App\Utils\Tools;
 use Exception;
 use Psr\Http\Message\ResponseInterface;
@@ -46,6 +47,26 @@ final class OrderController extends BaseController
         );
     }
 
+    public function search(ServerRequest $request, Response $response, array $args): ResponseInterface 
+    {
+        $out_order_id = $request->getParam('gateway_order_id');
+        $paylist = (new Paylist())->where('tradeno', $out_order_id)->first();
+        $invoice = (new Invoice())->where('id', $paylist?->invoice_id)->first();
+        $order = (new Order())->where('id', $invoice?->order_id)->first();
+
+        if ($order == null) {
+            return $response->withJson([
+                'ret' => 0,
+                'msg' => '未找到订单',
+            ]);
+        }
+
+        return $response->withHeader('HX-Redirect', '/admin/order/' . $order->id . '/view')->withJson([
+            'ret' => 1,
+            'msg' => '找到了订单',
+        ]);
+    }
+
     /**
      * @throws Exception
      */