TopicCriteria.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  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 TopicCriteria 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(['category', 'user']);
  30. if (isset($this->params['status'])) {
  31. $model = $model->where('status', $this->params['status']);
  32. }
  33. if (!empty($this->params['category_id'])) {
  34. $model = $model->where('category_id', $this->params['category_id']);
  35. }
  36. if (!empty($this->params['user_id'])) {
  37. $model = $model->where('user_id', $this->params['user_id']);
  38. }
  39. // 置顶条件.
  40. $topType = isset($this->params['top_type']) ? trim($this->params['top_type']) : '';
  41. if (!empty($topType)) {
  42. switch ($topType) {
  43. case 'only_top':
  44. $model = $model->where('is_top', 1);
  45. break;
  46. case 'not_top':
  47. $model = $model->where('is_top', 0);
  48. break;
  49. default:
  50. break;
  51. }
  52. }
  53. // 精华条件.
  54. $digestType = isset($this->params['digest_type']) ? trim($this->params['digest_type']) : '';
  55. if (!empty($digestType)) {
  56. switch ($digestType) {
  57. case 'only_digest':
  58. $model = $model->where('is_digest', 1);
  59. break;
  60. case 'not_digest':
  61. $model = $model->where('is_digest', 0);
  62. break;
  63. default:
  64. break;
  65. }
  66. }
  67. return $model;
  68. }
  69. }