Brand.php 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <?php
  2. namespace app\api\controller;
  3. use think\facade\Lang;
  4. /**
  5. * ============================================================================
  6. *
  7. * ============================================================================
  8. *
  9. * ----------------------------------------------------------------------------
  10. *
  11. * ============================================================================
  12. * 品牌控制器
  13. */
  14. class Brand extends MobileMall
  15. {
  16. public function initialize()
  17. {
  18. parent::initialize();
  19. Lang::load(base_path() . 'home/lang/' . config('lang.default_lang') . '/brand.lang.php');
  20. }
  21. /**
  22. * @api {POST} api/Brand/get_list 品牌列表
  23. * @apiVersion 1.0.0
  24. * @apiGroup Brand
  25. *
  26. * @apiSuccess {String} code 返回码,10000为成功
  27. * @apiSuccess {String} message 返回消息
  28. * @apiSuccess {Object} result 返回数据
  29. * @apiSuccess {Object} result.brand_class 品牌分类列表,键为品牌分类ID
  30. * @apiSuccess {Object} result.brand_class.brand_class 品牌分类名称
  31. * @apiSuccess {Object[]} result.brand_r 推荐品牌列表
  32. * @apiSuccess {Int} result.brand_r.brand_apply 品牌申请,0为申请中,1为通过
  33. * @apiSuccess {String} result.brand_r.brand_class 品牌分类名称
  34. * @apiSuccess {Int} result.brand_r.brand_id 品牌ID
  35. * @apiSuccess {String} result.brand_r.brand_initial 品牌首字母
  36. * @apiSuccess {String} result.brand_r.brand_name 品牌名称
  37. * @apiSuccess {String} result.brand_r.brand_pic 品牌图标
  38. * @apiSuccess {Int} result.brand_r.brand_recommend 品牌推荐,0为否,1为是
  39. * @apiSuccess {Int} result.brand_r.brand_showtype 品牌展示类型 0表示图片 1表示文字
  40. * @apiSuccess {Int} result.brand_r.brand_sort 品牌排序
  41. * @apiSuccess {Int} result.brand_r.gc_id 品牌分类ID
  42. * @apiSuccess {Int} result.brand_r.store_id 品牌申请店铺ID
  43. * @apiSuccess {Object} result.brand_c 品牌列表,按品牌分类ID分组,键为品牌分类ID
  44. * @apiSuccess {Int} result.brand_c.brand_apply 品牌申请,0为申请中,1为通过
  45. * @apiSuccess {String} result.brand_c.brand_class 品牌分类名称
  46. * @apiSuccess {Int} result.brand_c.brand_id 品牌ID
  47. * @apiSuccess {String} result.brand_c.brand_initial 品牌首字母
  48. * @apiSuccess {String} result.brand_c.brand_name 品牌名称
  49. * @apiSuccess {String} result.brand_c.brand_pic 品牌图标
  50. * @apiSuccess {Int} result.brand_c.brand_recommend 品牌推荐,0为否,1为是
  51. * @apiSuccess {Int} result.brand_c.brand_showtype 品牌展示类型 0表示图片 1表示文字
  52. * @apiSuccess {Int} result.brand_c.brand_sort 品牌排序
  53. * @apiSuccess {Int} result.brand_c.gc_id 品牌分类ID
  54. * @apiSuccess {Int} result.brand_c.store_id 品牌申请店铺ID
  55. */
  56. public function get_list()
  57. {
  58. $brand_mod = model('brand');
  59. $brand_c_list = $brand_mod->getBrandList(array('brand_apply' => '1'));
  60. $brands = $this->_tidyBrand($brand_c_list);
  61. extract($brands);
  62. ds_json_encode(10000, '', array('brand_l' => $brand_listchar, 'brand_c' => $brand_listnew, 'brand_class' => $brand_class, 'brand_r' => $brand_r_list));
  63. }
  64. /**
  65. * 所有品牌全部显示在一级类目下,不显示二三级类目
  66. * @param type $brand_c_list
  67. * @return type
  68. */
  69. private function _tidyBrand($brand_c_list)
  70. {
  71. $brand_listnew = array(); #品牌分类下对应的品牌
  72. $brand_listchar = array(); #品牌首字母下对应的品牌
  73. $brand_class = array(); #品牌分类
  74. $brand_r_list = array(); #推荐品牌
  75. if (!empty($brand_c_list) && is_array($brand_c_list)) {
  76. $goods_class = model('goodsclass')->getGoodsclassForCacheModel();
  77. foreach ($brand_c_list as $key => $brand_c) {
  78. $brand_c['brand_pic'] = brand_image($brand_c['brand_pic']);
  79. $gc_array = $this->_getTopClass($goods_class, $brand_c['gc_id']);
  80. if (empty($gc_array)) {
  81. $brand_listnew[0][] = $brand_c;
  82. $brand_class[0]['brand_class'] = lang('brand_index_other');
  83. } else {
  84. $brand_listnew[$gc_array['gc_id']][] = $brand_c;
  85. $brand_class[$gc_array['gc_id']]['brand_class'] = $gc_array['gc_name'];
  86. }
  87. $brand_listchar[$brand_c['brand_initial']][] = $brand_c;
  88. //推荐品牌
  89. if ($brand_c['brand_recommend'] == 1) {
  90. $brand_r_list[] = $brand_c;
  91. }
  92. }
  93. }
  94. krsort($brand_class);
  95. krsort($brand_listnew);
  96. ksort($brand_listchar);
  97. return array('brand_listchar' => $brand_listchar, 'brand_listnew' => $brand_listnew, 'brand_class' => $brand_class, 'brand_r_list' => $brand_r_list);
  98. }
  99. /**
  100. * 获取顶级商品分类\递归调用
  101. * @param type $goods_class
  102. * @param type $gc_id
  103. * @return type
  104. */
  105. private function _getTopClass($goods_class, $gc_id)
  106. {
  107. if (!isset($goods_class[$gc_id])) {
  108. return null;
  109. }
  110. if ($goods_class[$gc_id]['gc_parent_id'] == $gc_id) { //自身ID等于父ID
  111. return null;
  112. }
  113. if (isset($goods_class[$goods_class[$gc_id]['gc_parent_id']]['gc_parent_id']) && $goods_class[$goods_class[$gc_id]['gc_parent_id']]['gc_parent_id'] == $gc_id) { //父分类的父ID等于自身ID
  114. return null;
  115. }
  116. return $goods_class[$gc_id]['gc_parent_id'] == 0 ? $goods_class[$gc_id] : $this->_getTopClass($goods_class, $goods_class[$gc_id]['gc_parent_id']);
  117. }
  118. }