Brand.php 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. <?php
  2. namespace app\api\controller;
  3. use think\facade\Lang;
  4. /**
  5. * ============================================================================
  6. * DSMall多用户商城
  7. * ============================================================================
  8. * 版权所有 2014-2028 长沙德尚网络科技有限公司,并保留所有权利。
  9. * 网站地址: http://www.csdeshang.com
  10. * ----------------------------------------------------------------------------
  11. * 这不是一个自由软件!您只能在不用于商业目的的前提下对程序代码进行修改和使用 .
  12. * 不允许对程序代码以任何形式任何目的的再发布。
  13. * ============================================================================
  14. * 品牌控制器
  15. */
  16. class Brand extends MobileMall {
  17. public function initialize() {
  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. $brand_mod=model('brand');
  58. $brand_c_list = $brand_mod->getBrandList(array('brand_apply' => '1'));
  59. $brands = $this->_tidyBrand($brand_c_list);
  60. extract($brands);
  61. ds_json_encode(10000, '',array('brand_l' => $brand_listchar,'brand_c' => $brand_listnew,'brand_class' => $brand_class,'brand_r' => $brand_r_list));
  62. }
  63. /**
  64. * 所有品牌全部显示在一级类目下,不显示二三级类目
  65. * @param type $brand_c_list
  66. * @return type
  67. */
  68. private function _tidyBrand($brand_c_list) {
  69. $brand_listnew = array();#品牌分类下对应的品牌
  70. $brand_listchar=array();#品牌首字母下对应的品牌
  71. $brand_class = array();#品牌分类
  72. $brand_r_list = array();#推荐品牌
  73. if (!empty($brand_c_list) && is_array($brand_c_list)) {
  74. $goods_class = model('goodsclass')->getGoodsclassForCacheModel();
  75. foreach ($brand_c_list as $key => $brand_c) {
  76. $brand_c['brand_pic']=brand_image($brand_c['brand_pic']);
  77. $gc_array = $this->_getTopClass($goods_class, $brand_c['gc_id']);
  78. if (empty($gc_array)) {
  79. $brand_listnew[0][] = $brand_c;
  80. $brand_class[0]['brand_class'] = lang('brand_index_other');
  81. } else {
  82. $brand_listnew[$gc_array['gc_id']][] = $brand_c;
  83. $brand_class[$gc_array['gc_id']]['brand_class'] = $gc_array['gc_name'];
  84. }
  85. $brand_listchar[$brand_c['brand_initial']][] = $brand_c;
  86. //推荐品牌
  87. if ($brand_c['brand_recommend'] == 1) {
  88. $brand_r_list[] = $brand_c;
  89. }
  90. }
  91. }
  92. krsort($brand_class);
  93. krsort($brand_listnew);
  94. ksort($brand_listchar);
  95. return array('brand_listchar' => $brand_listchar, 'brand_listnew' => $brand_listnew, 'brand_class' => $brand_class, 'brand_r_list' => $brand_r_list);
  96. }
  97. /**
  98. * 获取顶级商品分类\递归调用
  99. * @param type $goods_class
  100. * @param type $gc_id
  101. * @return type
  102. */
  103. private function _getTopClass($goods_class, $gc_id) {
  104. if (!isset($goods_class[$gc_id])) {
  105. return null;
  106. }
  107. if($goods_class[$gc_id]['gc_parent_id']==$gc_id){//自身ID等于父ID
  108. return null;
  109. }
  110. 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
  111. return null;
  112. }
  113. return $goods_class[$gc_id]['gc_parent_id'] == 0 ? $goods_class[$gc_id] : $this->_getTopClass($goods_class, $goods_class[$gc_id]['gc_parent_id']);
  114. }
  115. }