ShopGoodCriteria.php 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. <?php
  2. namespace App\Repositories\Criteria\Dwbs;
  3. use App\Repositories\Enums\ModelStatusEnum;
  4. use App\Repositories\Models\Base\Menu;
  5. use App\Repositories\Models\Base\User;
  6. use Illuminate\Http\Request;
  7. use Prettus\Repository\Contracts\CriteriaInterface;
  8. use Prettus\Repository\Contracts\RepositoryInterface;
  9. class ShopGoodCriteria implements CriteriaInterface
  10. {
  11. /**
  12. * @var \Illuminate\Http\Request
  13. */
  14. protected $request;
  15. public function __construct(Request $request)
  16. {
  17. $this->request = $request;
  18. }
  19. /**
  20. * @param $model
  21. * @param RepositoryInterface $repository
  22. *
  23. * @return mixed
  24. */
  25. public function apply($model, RepositoryInterface $repository)
  26. {
  27. if ($this->request->filled('name')) {
  28. $val = $this->request->get('name');
  29. $model = $model->where('name', 'like', "%{$val}%");
  30. }
  31. if ($this->request->filled('user_mobile')) {
  32. $val = $this->request->get('user_mobile');
  33. $ids = User::byMobileGetIds($val);
  34. $model = $model->whereIn('user_id', $ids);
  35. }
  36. if ($this->request->filled('status')) {
  37. $status = $this->request->get('status');
  38. $model = $model->where('status', '=', $status);
  39. }
  40. if ($this->request->filled('ids')) {
  41. $ids = $this->request->get('ids');
  42. $model = $model->whereIn('id', $ids);
  43. }
  44. if (!$this->request->filled('orderBy')) {
  45. $model = $model->orderByDesc('sort')->orderByDesc('id');
  46. }
  47. if (!isAdminModule()) {
  48. $model = $model->where('status', '=', ModelStatusEnum::OK);
  49. }
  50. return $model;
  51. }
  52. }