OrderService.php 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <?php
  2. namespace App\Modules\Admin\Services;
  3. use App\Base\BaseService;
  4. use App\Models\Order\Order;
  5. use App\Models\Order\OrderGoods;
  6. use Illuminate\Database\Eloquent\Builder;
  7. use Illuminate\Support\Arr;
  8. class OrderService extends BaseService
  9. {
  10. public function paginate($params)
  11. {
  12. $p = Order::query()->when($params['status'], function (Builder $query) use ($params) {
  13. return $query->where("status", $params['status']);
  14. })->when($params['name'], function (Builder $query) use ($params) {
  15. return $query->where("name", "like", "%{$params['name']}%");
  16. })->orderByDesc("id")->paginate($params['page_size']);
  17. return [
  18. "total" => $p->total(),
  19. "page_total" => $p->lastPage(),
  20. "list" => array_map(function (Order $model) {
  21. /** @var OrderGoods $firstGoods */
  22. $firstGoods = $model->goods->first();
  23. return [
  24. "id" => $model->id,
  25. "no" => $model->goods->pluck("sn")->implode("\sn"),
  26. "goods_name" => "",
  27. "goods_sn" => "商品型号",
  28. "user_id" => 123,
  29. "thumb" => $model->goods->first(),
  30. "email" => "user@example.com",
  31. "created_at" => "2023-05-05 15:44:14",
  32. ];
  33. }, $p->items()),
  34. ];
  35. }
  36. }