Service.php 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. <?php
  2. namespace app\extra\basic;
  3. class Service
  4. {
  5. /**
  6. * @var null
  7. */
  8. protected $mode = null;
  9. /**
  10. * 默认排序筛选
  11. * @param array $param
  12. * @param string $prefix
  13. * @param array $filter
  14. * @return string[]
  15. */
  16. public function defaultSort(array $param = [],string $prefix = "",array $filter = []): array
  17. {
  18. if (!empty($prefix)) $prefix = $prefix.".";
  19. if (isset($param['order']) && $param['order'] == 'descending'){
  20. $orderBy = ["{$prefix}{$param['field']}" => "desc"];
  21. } else if (isset($param['order']) && $param['order'] == 'ascending'){
  22. $orderBy = ["{$prefix}{$param['field']}" => "asc"];
  23. } else {
  24. $orderBy = ["{$prefix}create_at" => "desc"];
  25. }
  26. return $orderBy;
  27. }
  28. /**
  29. * @param array $param 参数
  30. * @param array $filter 过滤器
  31. * @param string $prefix 链表前缀
  32. * @param string $join 链表表名
  33. * @param string $field 字段
  34. * @param string $forKey 链表首字母
  35. * @param string $localKey 被链表首字母
  36. */
  37. protected function searchVal(array $param = [],array $filter = [],string $prefix = "",string $join = "",string $field = "",string $forKey = "",string $localKey = "")
  38. {
  39. $orderBy = $this->defaultSort($param,$prefix);
  40. $commonFilter = [];
  41. // 起止时间
  42. if (!empty($param['create'])) {
  43. $times = between_time($param['create']);
  44. $start = date('Y-m-d',$times['start_time']);
  45. $end = date('Y-m-d',($times['end_time'] + 86400));
  46. $commonFilter[] = ['create_at', '>=', $start ];
  47. $commonFilter[] = ['create_at', '<', $end ];
  48. }
  49. if (!empty($param['repay'])) {
  50. $times = between_time($param['repay']);
  51. $start = date('Y-m-d',$times['start_time']);
  52. $end = date('Y-m-d',($times['end_time'] + 86400));
  53. $commonFilter[] = ['repay_time', '>=', $start ];
  54. $commonFilter[] = ['repay_time', '<', $end ];
  55. }
  56. $filter = array_merge($filter,$commonFilter);
  57. if (!empty($join)) {
  58. $this->mode = $this->mode->alias('a')->join("{$join} {$prefix}","a.{$forKey} = {$prefix}.{$localKey}")->field($field);
  59. }
  60. return $this->mode->order($orderBy)->where($filter);
  61. }
  62. }