Articleclass.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164
  1. <?php
  2. namespace app\common\model;
  3. use think\facade\Db;
  4. /**
  5. * ============================================================================
  6. * DSMall多用户商城
  7. * ============================================================================
  8. * 版权所有 2014-2028 长沙德尚网络科技有限公司,并保留所有权利。
  9. * 网站地址: http://www.csdeshang.com
  10. * ----------------------------------------------------------------------------
  11. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用 .
  12. * 不允许对程序代码以任何形式任何目的的再发布。
  13. * ============================================================================
  14. * 数据层模型
  15. */
  16. class Articleclass extends BaseModel
  17. {
  18. /**
  19. * 类别列表
  20. * @access public
  21. * @author csdeshang
  22. * @param array $condition 检索条件
  23. * @return array 数组结构的返回结果
  24. */
  25. public function getArticleclassList($condition,$order='ac_parent_id asc,ac_sort asc,ac_id asc'){
  26. $result = Db::name('articleclass')->where($condition)->order($order)->select()->toArray();
  27. return $result;
  28. }
  29. /**
  30. * 取单个分类的内容
  31. * @access public
  32. * @author csdeshang
  33. * @param int $id 分类ID
  34. * @return array 数组类型的返回结果
  35. */
  36. public function getOneArticleclass($id){
  37. if (intval($id) > 0){
  38. $value = intval($id);
  39. $result = Db::name('articleclass')->where(array('ac_id'=>$value))->find();
  40. return $result;
  41. }else {
  42. return false;
  43. }
  44. }
  45. /**
  46. * 新增
  47. * @access public
  48. * @author csdeshang
  49. * @param array $data 参数内容
  50. * @return bool 布尔类型的返回结果
  51. */
  52. public function addArticleclass($data){
  53. $result = Db::name('articleclass')->insertGetId($data);
  54. return $result;
  55. }
  56. /**
  57. * 更新信息
  58. * @access public
  59. * @author csdeshang
  60. * @param array $data 更新数据
  61. * @param array $ac_id 内容ID
  62. * @return bool 布尔类型的返回结果
  63. */
  64. public function editArticleclass($data,$ac_id){
  65. $result =Db::name('articleclass')->where("ac_id",$ac_id)->update($data);
  66. return $result;
  67. }
  68. /**
  69. * 删除分类
  70. * @access public
  71. * @author csdeshang
  72. * @param int $id 记录ID
  73. * @return bool 布尔类型的返回结果
  74. */
  75. public function delArticleclass($id){
  76. return Db::name('articleclass')->where("ac_id = '". intval($id) ."'")->delete();
  77. }
  78. /**
  79. * 取分类列表,按照深度归类
  80. * @access public
  81. * @author csdeshang
  82. * @param int $show_deep 显示深度
  83. * @return array 数组类型的返回结果
  84. */
  85. public function getTreeClassList($show_deep='2'){
  86. $condition = array();
  87. $class_list = $this->getArticleclassList($condition);
  88. $show_deep = intval($show_deep);
  89. $result = array();
  90. if(is_array($class_list) && !empty($class_list)) {
  91. $result = $this->_getTreeClassList($show_deep,$class_list);
  92. }
  93. return $result;
  94. }
  95. /**
  96. * 递归 整理分类
  97. * @access public
  98. * @author csdeshang
  99. * @param int $show_deep 显示深度
  100. * @param array $class_list 类别内容集合
  101. * @param int $deep 深度
  102. * @param int $parent_id 父类编号
  103. * @param int $i 上次循环编号
  104. * @return array $show_class 返回数组形式的查询结果
  105. */
  106. private function _getTreeClassList($show_deep,$class_list,$deep=1,$parent_id=0,$i=0){
  107. static $show_class = array();//树状的平行数组
  108. if(is_array($class_list) && !empty($class_list)) {
  109. $size = count($class_list);
  110. if($i == 0) $show_class = array();//从0开始时清空数组,防止多次调用后出现重复
  111. for ($i;$i < $size;$i++) {//$i为上次循环到的分类编号,避免重新从第一条开始
  112. $val = $class_list[$i];
  113. $ac_id = $val['ac_id'];
  114. $ac_parent_id = $val['ac_parent_id'];
  115. if($ac_parent_id == $parent_id) {
  116. $val['deep'] = $deep;
  117. $show_class[] = $val;
  118. if($deep < $show_deep && $deep < 2) {//本次深度小于显示深度时执行,避免取出的数据无用
  119. $this->_getTreeClassList($show_deep,$class_list,$deep+1,$ac_id,$i+1);
  120. }
  121. }
  122. if($ac_parent_id > $parent_id) break;//当前分类的父编号大于本次递归的时退出循环
  123. }
  124. }
  125. return $show_class;
  126. }
  127. /**
  128. * 取指定分类ID下的所有子类
  129. * @access public
  130. * @author csdeshang
  131. * @param int/array $parent_id 父ID 可以单一可以为数组
  132. * @return array $rs_row 返回数组形式的查询结果
  133. */
  134. public function getChildClass($parent_id){
  135. $all_class = $this->getArticleclassList(array());
  136. if (is_array($all_class)){
  137. if (!is_array($parent_id)){
  138. $parent_id = array($parent_id);
  139. }
  140. $result = array();
  141. foreach ($all_class as $k => $v){
  142. $ac_id = $v['ac_id'];//返回的结果包括父类
  143. $ac_parent_id = $v['ac_parent_id'];
  144. if (in_array($ac_id,$parent_id) || in_array($ac_parent_id,$parent_id)){
  145. $result[] = $v;
  146. }
  147. }
  148. return $result;
  149. }else {
  150. return false;
  151. }
  152. }
  153. }