Goodsclass - ╕▒▒╛.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  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. public function initialize() {
  17. parent::initialize();
  18. }
  19. /**
  20. * @api {POST} api/Goodsclass/index 商品分类列表
  21. * @apiVersion 1.0.0
  22. * @apiGroup GoodsClass
  23. *
  24. * @apiParam {String} shop 商品数据
  25. * @apiParam {String} goodsclass 商品分类
  26. * @apiParam {Int} page 当前第几页
  27. * @apiParam {Int} perpage 每页多少
  28. *
  29. * @apiSuccess {String} code 返回码,10000为成功
  30. * @apiSuccess {String} message 返回消息
  31. * @apiSuccess {Object} result 返回数据
  32. * @apiSuccess {Object[]} result.class_list 商品分类列表
  33. * @apiSuccess {Int} result.class_list.id 分类ID
  34. * @apiSuccess {String} result.class_list.value 分类名称
  35. * @apiSuccess {Float} result.class_list.commis_rate 佣金
  36. * @apiSuccess {Object[]} result.class_list.children 子分类列表
  37. */
  38. public function index()
  39. {
  40. $cache_key = "api-goodsclass-index";
  41. $result = rcache($cache_key);
  42. if (empty($result)) {
  43. $goodsclass_list = model('goodsclass')->getGoodsclassIndexedListAll();
  44. $tree = new \mall\Tree();
  45. $tree->setTree($goodsclass_list, 'gc_id', 'gc_parent_id', 'gc_name');
  46. $result['class_list'] = $tree->getArrayList();
  47. foreach ($result['class_list'] as $k1 => $v1) {
  48. $result['class_list'][$k1]['commis_rate']=$goodsclass_list[$v1['id']]['commis_rate'];
  49. foreach ($v1['children'] as $k2 => $v2) {
  50. $result['class_list'][$k1]['children'][$k2]['commis_rate']=$goodsclass_list[$v2['id']]['commis_rate'];
  51. foreach ($v2['children'] as $k3 => $v3) {
  52. $result['class_list'][$k1]['children'][$k2]['children'][$k3]['commis_rate']=$goodsclass_list[$v3['id']]['commis_rate'];
  53. $result['class_list'][$k1]['children'][$k2]['children'][$k3]['image'] = goodsclass_image($v3['id']);
  54. }
  55. }
  56. }
  57. wcache($cache_key, $result);
  58. }
  59. ds_json_encode(10000, '',$result);
  60. }
  61. /**
  62. * 返回一级分类列表
  63. */
  64. private function _get_root_class() {
  65. $goodsclass_model = model('goodsclass');
  66. $goods_class_array = model('goodsclass')->getGoodsclassForCacheModel();
  67. $class_list = $goodsclass_model->getGoodsclassListByParentId(0);
  68. foreach ($class_list as $key => $value) {
  69. $class_list[$key]['text'] = '';
  70. if(isset($goods_class_array[$value['gc_id']]['child'])){
  71. $child_class_string = $goods_class_array[$value['gc_id']]['child'];
  72. $child_class_array = explode(',', $child_class_string);
  73. foreach ($child_class_array as $child_class) {
  74. $class_list[$key]['text'] .= $goods_class_array[$child_class]['gc_name'] . '/';
  75. }
  76. }
  77. $class_list[$key]['text'] = rtrim($class_list[$key]['text'], '/');
  78. }
  79. ds_json_encode(10000, '',array('class_list' => $class_list));
  80. }
  81. /**
  82. * 根据分类编号返回下级分类列表
  83. */
  84. private function _get_class_list($gc_id) {
  85. $goods_class_array = model('goodsclass')->getGoodsclassForCacheModel();
  86. $goods_class = $goods_class_array[$gc_id];
  87. if (empty($goods_class['child'])) {
  88. //无下级分类返回0
  89. return array('class_list' => array());
  90. } else {
  91. //返回下级分类列表
  92. $class_list = array();
  93. $child_class_string = $goods_class_array[$gc_id]['child'];
  94. $child_class_array = explode(',', $child_class_string);
  95. foreach ($child_class_array as $child_class) {
  96. $class_item = array();
  97. $class_item['gc_id'] = '';
  98. $class_item['gc_name'] = '';
  99. $class_item['gc_id'] .= $goods_class_array[$child_class]['gc_id'];
  100. $class_item['gc_name'] .= $goods_class_array[$child_class]['gc_name'];
  101. $class_item['image'] = ds_get_pic(ATTACH_COMMON , $goods_class_array[$child_class]['gc_image']);
  102. $class_list[] = $class_item;
  103. }
  104. return array('class_list' => $class_list);
  105. }
  106. }
  107. /**
  108. * 获取全部子集分类
  109. */
  110. public function get_child_all() {
  111. $gc_id = intval(input('param.gc_id'));
  112. $data = array();
  113. if ($gc_id > 0) {
  114. $prefix = 'api-goodsclass-all-';
  115. $data = rcache($gc_id, $prefix);
  116. if (empty($data)) {
  117. $data = $this->_get_class_list($gc_id);
  118. if (!empty($data['class_list'])) {
  119. foreach ($data['class_list'] as $key => $val) {
  120. $d = $this->_get_class_list($val['gc_id']);
  121. $data['class_list'][$key]['child'] = $d['class_list'];
  122. }
  123. }
  124. wcache($gc_id, $data, $prefix, 3600);
  125. }
  126. }
  127. ds_json_encode(10000, '',$data);
  128. }
  129. }
  130. ?>