CommentCriteria.php 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?php
  2. /**
  3. * 评论标准.
  4. *
  5. * @author jim <jim458734573@gmail.com>
  6. * @date 2020-01-28 20:41:32
  7. */
  8. declare(strict_types=1);
  9. namespace App\Repositories\Criterias;
  10. use Hyperf\Database\Query\Builder;
  11. use KZ2\Repositories\Contracts\RepositoryInterface;
  12. use KZ2\Repositories\Criteria\Criteria;
  13. class CommentCriteria extends Criteria
  14. {
  15. private $params = [];
  16. public function __construct($params = [])
  17. {
  18. $this->params = $params;
  19. }
  20. /**
  21. * @param Builder $model
  22. * @param RepositoryInterface $repository
  23. * @return mixed|void
  24. */
  25. public function apply(
  26. $model,
  27. RepositoryInterface $repository
  28. ) {
  29. $model = $model->with(['user:code,nick,gender,avatar']);
  30. if (!empty($this->params['module'])) {
  31. $model = $model->where('module', $this->params['module']);
  32. }
  33. if (!empty($this->params['svalue'])) {
  34. $model = $model->where('svalue', $this->params['svalue']);
  35. }
  36. if (!empty($this->params['user_id'])) {
  37. $model = $model->where('user_id', $this->params['user_id']);
  38. }
  39. $topType = isset($this->params['top_type']) ? trim($this->params['top_type']) : '';
  40. if (!empty($topType)) {
  41. switch ($topType) {
  42. case 'only_top':
  43. $model = $model->where('is_top', 1);
  44. break;
  45. case 'not_top':
  46. $model = $model->where('is_top', 0);
  47. break;
  48. default:
  49. break;
  50. }
  51. }
  52. if (!empty($this->params['parent_id'])) {
  53. $model = $model->where('parent_id', $this->params['parent_id']);
  54. }
  55. return $model;
  56. }
  57. }