SpecialSubject.php 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. <?php
  2. // +----------------------------------------------------------------------
  3. // | CRMEB [ CRMEB赋能开发者,助力企业发展 ]
  4. // +----------------------------------------------------------------------
  5. // | Copyright (c) 2016~2022 https://www.crmeb.com All rights reserved.
  6. // +----------------------------------------------------------------------
  7. // | Licensed CRMEB并不是自由软件,未经许可不能去掉CRMEB相关版权
  8. // +----------------------------------------------------------------------
  9. // | Author: CRMEB Team <admin@crmeb.com>
  10. // +----------------------------------------------------------------------
  11. namespace app\admin\model\special;
  12. use traits\ModelTrait;
  13. use basic\ModelBasic;
  14. use service\UtilService as Util;
  15. /**
  16. * Class SpecialSubject 二级分类
  17. * @package app\admin\model\special
  18. */
  19. class SpecialSubject extends ModelBasic
  20. {
  21. use ModelTrait;
  22. public static function specialCategoryAll($type = 0)
  23. {
  24. $model = self::where(['is_del' => 0, 'is_show' => 1]);
  25. if ($type == 1) {
  26. $model = $model->where('grade_id', 0);
  27. }
  28. $list = $model->order('sort desc,add_time desc')->select();
  29. $list = count($list) > 0 ? $list->toArray() : [];
  30. $list = Util::sortListTier($list, 0, 'grade_id');
  31. return $list;
  32. }
  33. public static function get_subject_list($where)
  34. {
  35. $data = self::setWhere($where)->column('id,grade_id');
  36. $list = [];
  37. foreach ($data as $ket => $item) {
  38. $cate = self::where('id', $ket)->where('is_del', 0)->find();
  39. if ($cate) {
  40. $cate = $cate->toArray();
  41. if ($item > 0) {
  42. $cate['special_count'] = Special::where(['subject_id' => $ket, 'is_del' => 0])->count();
  43. } else {
  44. $pids = self::categoryId($ket);
  45. $cate['special_count'] = Special::where(['is_del' => 0])->where('subject_id', 'in', $pids)->count();
  46. }
  47. array_push($list, $cate);
  48. unset($cate);
  49. }
  50. if ($item > 0 && !array_key_exists($item, $data)) {
  51. $cate = self::where('id', $item)->where('is_del', 0)->find();
  52. if ($cate) {
  53. $cate = $cate->toArray();
  54. $cate['special_count'] = 0;
  55. array_push($list, $cate);
  56. }
  57. }
  58. }
  59. return $list;
  60. }
  61. public static function setWhere($where)
  62. {
  63. $model = self::order('sort desc,add_time desc')->where('is_del', 0);
  64. if ($where['name']) $model = $model->where('name', 'like', "%$where[name]%");
  65. if ($where['pid']) $model = $model->where('grade_id', $where['pid']);
  66. return $model;
  67. }
  68. public static function getSubjectAll()
  69. {
  70. return self::order('sort desc,add_time desc')->where(['is_show' => 1, 'is_del' => 0])->field('name,id')->select();
  71. }
  72. /**获取一个分类下的所有分类ID
  73. * @param int $pid
  74. */
  75. public static function categoryId($pid = 0)
  76. {
  77. $data = self::where('is_del', 0)->where('grade_id', $pid)->column('id');
  78. array_push($data, $pid);
  79. return $data;
  80. }
  81. }