Api.php 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. <?php
  2. namespace Category\Src;
  3. use Dever;
  4. class Api
  5. {
  6. private $default = array
  7. (
  8. 'value' => -1,
  9. 'name' => '不选择',
  10. );
  11. private $search_default = array
  12. (
  13. 'value' => -1,
  14. 'name' => '分类',
  15. );
  16. /**
  17. * 获取分类数据
  18. *
  19. * @return mixed
  20. */
  21. public function get()
  22. {
  23. $column = Dever::input('column', 1);
  24. if ($column > 0) {
  25. $where['column_id'] = $column;
  26. }
  27. # 联动总数
  28. $level_total = 100;
  29. # 当前联动级别
  30. $level_num = Dever::input('level_num');
  31. # 一般为id
  32. $level_id = Dever::input('level_id');
  33. # 传入的参数
  34. $level_param = Dever::input('level_param');
  35. if ($level_param) {
  36. parse_str($level_param, $param);
  37. $where['id'] = $param['id'];
  38. }
  39. # 是否是搜索列表页
  40. $level_search = Dever::input('level_search');
  41. if ($level_search) {
  42. $default = $this->search_default;
  43. $default['name'] = $level_num . '级' . $default['name'];
  44. } else {
  45. $default = $this->default;
  46. }
  47. $data = array();
  48. # 三级联动
  49. if ($level_num == 1) {
  50. $where['info_id'] = -1;
  51. } elseif($level_id > 0) {
  52. $where['info_id'] = $level_id;
  53. }
  54. if (isset($where['info_id'])) {
  55. $data = Dever::db('category/info')->getAll($where);
  56. }
  57. if ($data || $level_num == 1) {
  58. array_unshift($data, $default);
  59. }
  60. if (!$data) {
  61. Dever::alert('error');
  62. }
  63. $result['level_total'] = $level_total;
  64. $result['list'] = $data;
  65. return $result;
  66. }
  67. /**
  68. * 根据分类id转成名称
  69. *
  70. * @return mixed
  71. */
  72. public function string($cate, $im = ',')
  73. {
  74. if ($cate) {
  75. $cate = explode(',', $cate);
  76. $result = array();
  77. foreach ($cate as $k => $v) {
  78. $result[$k] = $this->getName($v);
  79. }
  80. $result = implode($im, $result);
  81. return $result;
  82. $table[] = $result;
  83. return Dever::table($table);
  84. }
  85. return '';
  86. }
  87. /**
  88. * 获取顶级分类
  89. *
  90. * @return mixed
  91. */
  92. public function getTop($column)
  93. {
  94. $where = array();
  95. if ($column > 0) {
  96. $where['column_id'] = $column;
  97. }
  98. $result = Dever::db('category/info')->getTop($where);
  99. return $result;
  100. }
  101. /**
  102. * 获取所有信息
  103. *
  104. * @return mixed
  105. */
  106. public function getAll($column, $cate = false)
  107. {
  108. $where = array();
  109. if ($column > 0) {
  110. $where['column_id'] = $column;
  111. }
  112. if ($cate) {
  113. $where['info_id'] = $cate;
  114. }
  115. $result = Dever::db('category/info')->getList($where);
  116. return $result;
  117. }
  118. /**
  119. * 获取详细信息
  120. *
  121. * @return mixed
  122. */
  123. public function getInfo($cate)
  124. {
  125. if ($cate) {
  126. $cate = explode(',', $cate);
  127. $result = array();
  128. foreach ($cate as $k => $v) {
  129. $result[$k] = $this->getName($v, true);
  130. }
  131. return $result;
  132. }
  133. return array();
  134. }
  135. private function getName($id, $state = false)
  136. {
  137. $name = '';
  138. if ($id > 0) {
  139. $data = Dever::db('category/info')->one($id);
  140. if ($state) {
  141. return $data;
  142. }
  143. if ($data) {
  144. $name = $data['name'];
  145. }
  146. }
  147. return $name;
  148. }
  149. # 根据上级分类获取下级分类 按照info_id进行索引
  150. public function getChild($info_id)
  151. {
  152. if (is_numeric($info_id)) {
  153. $where['info_id'] = $info_id;
  154. } else {
  155. $where['info_id_in'] = $info_id;
  156. }
  157. $data = Dever::db('category/info')->getChild($where);
  158. return $data;
  159. }
  160. # 根据上级分类获取下级分类
  161. public function getList($info_id)
  162. {
  163. if (is_numeric($info_id)) {
  164. $where['info_id'] = $info_id;
  165. } else {
  166. $where['info_id_in'] = $info_id;
  167. }
  168. $data = Dever::db('category/info')->getList($where);
  169. return $data;
  170. }
  171. # 根据顶级分类获取最低级的分类
  172. public function getChildByTop($top_id, $level = -1)
  173. {
  174. $where['top_id'] = $top_id;
  175. $where['level'] = $level;
  176. $data = Dever::db('category/info')->getList($where);
  177. return $data;
  178. }
  179. }