OrderService.php 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  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. //TODO kphcdr
  13. $p = Order::query()->when($params['status'], function (Builder $query) use ($params) {
  14. return $query->where("status", $params['status']);
  15. })->when($params['name'], function (Builder $query) use ($params) {
  16. return $query->where("name", "like", "%{$params['name']}%");
  17. })->orderByDesc("id")->paginate($params['page_size']);
  18. return [
  19. "total" => $p->total(),
  20. "page_total" => $p->lastPage(),
  21. "list" => array_map(function (Order $model) {
  22. /** @var OrderGoods $firstGoods */
  23. $firstGoods = $model->goods->first();
  24. return [
  25. "id" => $model->id,
  26. "no" => $model->goods->pluck("sn")->implode("\sn"),
  27. "goods_name" => "",
  28. "goods_sn" => "商品型号",
  29. "user_id" => 123,
  30. "thumb" => $model->goods->first(),
  31. "email" => "user@example.com",
  32. "created_at" => "2023-05-05 15:44:14",
  33. ];
  34. }, $p->items()),
  35. ];
  36. }
  37. }