OrderService.php 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  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 App\Models\User\User;
  7. use Illuminate\Database\Eloquent\Builder;
  8. class OrderService extends BaseService
  9. {
  10. public function paginate($params)
  11. {
  12. $p = Order::when($params['id'], function (Builder $query) use ($params) {
  13. $query->where("id", $params['id']);
  14. })->when($params['userinfo'], function (Builder $query) use ($params) {
  15. //根据userinfo获取用户信息
  16. if ($user = User::where("email", $params['userinfo'])->orWhere("phone", $params['userinfo'])->orWhere("id", $params['userinfo'])->first()) {
  17. $query->where("user_id", $user->id);
  18. } else {
  19. $query->where("id", 0);
  20. }
  21. })->orderByDesc("id")->paginate($params['page_size']);
  22. return [
  23. "total" => $p->total(),
  24. "page_total" => $p->lastPage(),
  25. "list" => array_map(function (Order $model) {
  26. /** @var OrderGoods $firstGoods */
  27. $firstGoods = $model->goods->first();
  28. return [
  29. "id" => $model->id,
  30. "no" => $model->goods->pluck("sn")->implode("\sn"),
  31. "goods_name" => $firstGoods->goods->name,
  32. "goods_sn" => $firstGoods->sn,
  33. "user_id" => $model->user_id,
  34. "thumb" => $firstGoods->goods->thumb,
  35. "email" => $model->user->email,
  36. "created_at" => $model->created_at->format("Y-m-d H:i:s"),
  37. "goods" => $model->goods->map(function (OrderGoods $goods) {
  38. return [
  39. "goods_id" => $goods->id,
  40. "goods_name" => $goods->goods->name,
  41. "goods_thumb" => $goods->goods->thumb,
  42. "goods_sn" => $goods->sn,
  43. "goods_count" => $goods->count,
  44. ];
  45. }),
  46. "phone" => $model->user->phone,
  47. "name" => $model->user->name,
  48. "source" => $model->source,
  49. ];
  50. }, $p->items()),
  51. ];
  52. }
  53. }