|
@@ -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()),
|
|
|
+ ];
|
|
|
+ }
|
|
|
+}
|