kphcdr 1 年之前
父節點
當前提交
0dd4fdfb2e
共有 2 個文件被更改,包括 47 次插入0 次删除
  1. 7 0
      app/Models/Order/OrderGoods.php
  2. 40 0
      app/Modules/Admin/Services/OrderService.php

+ 7 - 0
app/Models/Order/OrderGoods.php

@@ -3,6 +3,7 @@
 namespace App\Models\Order;
 
 use App\Base\BaseModel;
+use App\Models\Goods\Goods;
 
 /**
  * App\Models\Order\OrderGoods
@@ -28,6 +29,7 @@ use App\Base\BaseModel;
  * @property int                               $sku_id
  * @method static \Illuminate\Database\Eloquent\Builder|OrderGoods whereSkuId($value)
  * @property-read \App\Models\Order\Order|null $order
+ * @property-read Goods|null                   $goods
  */
 class OrderGoods extends BaseModel
 {
@@ -37,4 +39,9 @@ class OrderGoods extends BaseModel
     {
         return $this->belongsTo(Order::class);
     }
+
+    public function goods()
+    {
+        return $this->belongsTo(Goods::class, "goods_id");
+    }
 }

+ 40 - 0
app/Modules/Admin/Services/OrderService.php

@@ -0,0 +1,40 @@
+<?php
+
+namespace App\Modules\Admin\Services;
+
+use App\Base\BaseService;
+use App\Models\Order\Order;
+use App\Models\Order\OrderGoods;
+use Illuminate\Database\Eloquent\Builder;
+use Illuminate\Support\Arr;
+
+class OrderService extends BaseService
+{
+    public function paginate($params)
+    {
+        $p = Order::query()->when($params['status'], function (Builder $query) use ($params) {
+            return $query->where("status", $params['status']);
+        })->when($params['name'], function (Builder $query) use ($params) {
+            return $query->where("name", "like", "%{$params['name']}%");
+        })->orderByDesc("id")->paginate($params['page_size']);
+
+        return [
+            "total" => $p->total(),
+            "page_total" => $p->lastPage(),
+            "list" => array_map(function (Order $model) {
+                /** @var OrderGoods $firstGoods */
+                $firstGoods = $model->goods->first();
+                return [
+                    "id" => $model->id,
+                    "no" => $model->goods->pluck("sn")->implode("\sn"),
+                    "goods_name" => "",
+                    "goods_sn" => "商品型号",
+                    "user_id" => 123,
+                    "thumb" => $model->goods->first(),
+                    "email" => "user@example.com",
+                    "created_at" => "2023-05-05 15:44:14",
+                ];
+            }, $p->items()),
+        ];
+    }
+}