Goodsclass.php 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <?php
  2. namespace app\api\controller;
  3. /**
  4. * ============================================================================
  5. * DSMall多用户商城
  6. * ============================================================================
  7. * 版权所有 2014-2028 长沙德尚网络科技有限公司,并保留所有权利。
  8. * 网站地址: http://www.csdeshang.com
  9. * ----------------------------------------------------------------------------
  10. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用 .
  11. * 不允许对程序代码以任何形式任何目的的再发布。
  12. * ============================================================================
  13. * 商品分类控制器
  14. */
  15. class Goodsclass extends MobileMall
  16. {
  17. public function initialize()
  18. {
  19. parent::initialize();
  20. }
  21. /**
  22. * @api {POST} api/Goodsclass/index 商品分类列表
  23. * @apiVersion 1.0.0
  24. * @apiGroup GoodsClass
  25. *
  26. * @apiParam {String} shop 商品数据
  27. * @apiParam {String} goodsclass 商品分类
  28. * @apiParam {Int} page 当前第几页
  29. * @apiParam {Int} perpage 每页多少
  30. *
  31. * @apiSuccess {String} code 返回码,10000为成功
  32. * @apiSuccess {String} message 返回消息
  33. * @apiSuccess {Object} result 返回数据
  34. * @apiSuccess {Object[]} result.class_list 商品分类列表
  35. * @apiSuccess {Int} result.class_list.id 分类ID
  36. * @apiSuccess {String} result.class_list.value 分类名称
  37. * @apiSuccess {Float} result.class_list.commis_rate 佣金
  38. * @apiSuccess {Object[]} result.class_list.children 子分类列表
  39. */
  40. public function index()
  41. {
  42. $cache_key = "api-goodsclass-index";
  43. $result = rcache($cache_key);
  44. if (empty($result)) {
  45. $goodsclass_list = model('goodsclass')->getGoodsclassIndexedListAll();
  46. $tree = new \mall\Tree();
  47. $tree->setTree($goodsclass_list, 'gc_id', 'gc_parent_id', 'gc_name');
  48. $result['class_list'] = $tree->getArrayList();
  49. foreach ($result['class_list'] as $k1 => $v1) {
  50. $result['class_list'][$k1]['commis_rate'] = $goodsclass_list[$v1['id']]['commis_rate'];
  51. $result['class_list'][$k1]['image'] = goodsclass_image($v1['id']);
  52. foreach ($v1['children'] as $k2 => $v2) {
  53. $result['class_list'][$k1]['children'][$k2]['commis_rate'] = $goodsclass_list[$v2['id']]['commis_rate'];
  54. $result['class_list'][$k1]['children'][$k2]['image'] = goodsclass_image($v2['id']);
  55. foreach ($v2['children'] as $k3 => $v3) {
  56. $result['class_list'][$k1]['children'][$k2]['children'][$k3]['commis_rate'] = $goodsclass_list[$v3['id']]['commis_rate'];
  57. $result['class_list'][$k1]['children'][$k2]['children'][$k3]['image'] = goodsclass_image($v3['id']);
  58. }
  59. }
  60. }
  61. wcache($cache_key, $result);
  62. }
  63. /**
  64. * 插入品牌数据
  65. * lin
  66. * 20210919
  67. */
  68. $brand = model("brand")->getBrandRecommendList([], '*', 0, 'brand_sort asc, brand_id asc');
  69. $brandArr = [];
  70. if (!empty($brand)) {
  71. $count = count($result['class_list']);
  72. foreach ($brand as $k => $v) {
  73. $brand[$k]['image'] = ds_get_pic(ATTACH_BRAND, $v['brand_pic']);
  74. }
  75. $brandArr[$count] = [
  76. 'value' => '品牌',
  77. 'image' => $brand[0]['image'],
  78. 'id' => 0,
  79. 'children' => $brand
  80. ];
  81. $result['class_list'] = array_merge($result['class_list'],$brandArr);
  82. }
  83. ds_json_encode(10000, '', $result);
  84. }
  85. /**
  86. * 返回一级分类列表
  87. */
  88. private function _get_root_class()
  89. {
  90. $goodsclass_model = model('goodsclass');
  91. $goods_class_array = model('goodsclass')->getGoodsclassForCacheModel();
  92. $class_list = $goodsclass_model->getGoodsclassListByParentId(0);
  93. foreach ($class_list as $key => $value) {
  94. $class_list[$key]['text'] = '';
  95. if (isset($goods_class_array[$value['gc_id']]['child'])) {
  96. $child_class_string = $goods_class_array[$value['gc_id']]['child'];
  97. $child_class_array = explode(',', $child_class_string);
  98. foreach ($child_class_array as $child_class) {
  99. $class_list[$key]['text'] .= $goods_class_array[$child_class]['gc_name'] . '/';
  100. }
  101. }
  102. $class_list[$key]['text'] = rtrim($class_list[$key]['text'], '/');
  103. }
  104. ds_json_encode(10000, '', array('class_list' => $class_list));
  105. }
  106. /**
  107. * 根据分类编号返回下级分类列表
  108. */
  109. private function _get_class_list($gc_id)
  110. {
  111. $goods_class_array = model('goodsclass')->getGoodsclassForCacheModel();
  112. $goods_class = $goods_class_array[$gc_id];
  113. if (empty($goods_class['child'])) {
  114. //无下级分类返回0
  115. return array('class_list' => array());
  116. } else {
  117. //返回下级分类列表
  118. $class_list = array();
  119. $child_class_string = $goods_class_array[$gc_id]['child'];
  120. $child_class_array = explode(',', $child_class_string);
  121. foreach ($child_class_array as $child_class) {
  122. $class_item = array();
  123. $class_item['gc_id'] = '';
  124. $class_item['gc_name'] = '';
  125. $class_item['gc_id'] .= $goods_class_array[$child_class]['gc_id'];
  126. $class_item['gc_name'] .= $goods_class_array[$child_class]['gc_name'];
  127. $class_item['image'] = ds_get_pic(ATTACH_COMMON, $goods_class_array[$child_class]['gc_image']);
  128. $class_list[] = $class_item;
  129. }
  130. return array('class_list' => $class_list);
  131. }
  132. }
  133. /**
  134. * 获取全部子集分类
  135. */
  136. public function get_child_all()
  137. {
  138. $gc_id = intval(input('param.gc_id'));
  139. $data = array();
  140. if ($gc_id > 0) {
  141. $prefix = 'api-goodsclass-all-';
  142. $data = rcache($gc_id, $prefix);
  143. if (empty($data)) {
  144. $data = $this->_get_class_list($gc_id);
  145. if (!empty($data['class_list'])) {
  146. foreach ($data['class_list'] as $key => $val) {
  147. $d = $this->_get_class_list($val['gc_id']);
  148. $data['class_list'][$key]['child'] = $d['class_list'];
  149. }
  150. }
  151. wcache($gc_id, $data, $prefix, 3600);
  152. }
  153. }
  154. ds_json_encode(10000, '', $data);
  155. }
  156. }
  157. ?>