OwnerReportService.php 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?php
  2. namespace App\Services;
  3. use App\OwnerReport;
  4. use App\Services\common\QueryService;
  5. use Illuminate\Database\Eloquent\Builder;
  6. use App\Traits\ServiceAppAop;
  7. class OwnerReportService
  8. {
  9. use ServiceAppAop;
  10. protected $modelClass=OwnerReport::class;
  11. /**
  12. * @param Builder $builder
  13. * @param array $params
  14. * @return Builder
  15. */
  16. private function query(Builder $builder, array $params)
  17. {
  18. $columnQueryRules = [
  19. 'counting_month_start' => ['alias' => 'counting_month', 'startDate' => '-01'],
  20. 'counting_month_end' => ['alias' => 'counting_month', 'endDate' => '-31'],
  21. 'owner_id' => ['multi' => ','],
  22. ];
  23. if ($params["owner_group_id"] ?? false){
  24. $builder->whereHas('owner',function ($query)use(&$params){
  25. /** @var Builder $query */
  26. $query->where("user_owner_group_id",$params["owner_group_id"]);
  27. });
  28. unset($params["owner_group_id"]);
  29. }
  30. if ($params["customer_id"] ?? false){
  31. $builder->whereHas('owner',function ($query)use(&$params){
  32. /** @var Builder $query */
  33. $query->where("customer_id",$params["customer_id"]);
  34. });
  35. unset($params["customer_id"]);
  36. }
  37. if ($params["status"] ?? false){
  38. $builder->whereHas('owner',function ($query)use(&$params){
  39. /** @var Builder $query */
  40. if ($params["status"] == "激活") $query->whereNull("deleted_at");
  41. else $query->whereNotNull("deleted_at");
  42. });
  43. unset($params["status"]);
  44. }
  45. return app(QueryService::class)->query($params, $builder, $columnQueryRules,"owner_reports");
  46. }
  47. public function get(array $params, array $withs = null)
  48. {
  49. $query = OwnerReport::query();
  50. if ($withs)$query->with($withs);
  51. return $this->query($query,$params)->get();
  52. }
  53. public function paginate(array $params, array $withs = null)
  54. {
  55. $query = OwnerReport::query()->orderByDesc('id');
  56. if ($withs)$query->with($withs);
  57. return $this->query($query,$params)->paginate($params["paginate"] ?? 50);
  58. }
  59. }