Brands.php 9.89 KB
<?php

namespace Product;

use Api\Yohobuy;
use WebPlugin\HelperSearch;
use LibModels\Web\Product\BrandData;
use Index\HomeModel;
use Product\SearchModel;
use WebPlugin\Helpers;
use Plugin\Images;
use LibModels\Web\Product\SearchData;

/**
 * 品牌首页模板数据模型
 *
 * @author Administrator
 */
class BrandsModel
{

    //品牌一览资源位CODE码
    const BOYS_BRAND_CODE = '8b16b7baf9a66fbe553a6caa97d2ce2a';
    const GIRLS_BRAND_CODE = 'c95ae9e40f0add10549b819f821ad626';
    const KIDS_BRAND_CODE = '84b7926282fdef92f1039bdcf77c18ba';
    const LIFESTYLE_BRAND_CODE = 'c575c6bfdfa4125fae7d24bbec7119c8';

    /**
     * 搜索品牌数据
     * @param $condition array 搜索数据的条件
     * @param $options array            
     * @return array
     */
    public static function getBrandSearchData($condition, $options)
    {
        // 并行调用品牌相关接口并封装数据
        $data = self::getBrandData($condition, $options);

        //获取品牌系列数据
        $adNav = self::getAdNav($options['brandId']);
        $data['leftContent'][] = array('picLink' => $adNav);

        //获取静态内容
        if ($options['node']) {
            $nodeContent = HelperSearch::getNodeContent($options['node']);
            $data['leftContent'][]['picLink']['list'] = $nodeContent;
        }

        return $data;
    }

    /**
     * 品牌介绍页
     * @param array $customCondition
     * @param array $customOptions
     * @return array
     */
    public static function getBrandIntro($customCondition = array(), $customOptions = array())
    {
        $urlList = array();
        //组合搜索品牌url
        $urlList['brand'] = SearchData::getBrandUrl($customOptions);

        //批量调接口
        $result = Yohobuy::getMulti($urlList, array(), true);

        if (isset($result['brand'])) {
            $banner = HelperSearch::getBannerFormat($result['brand'], $customOptions['brandBanner']);
        }

        return array(
            'brandBanner' => $banner,
            'brandAbout' => $customOptions['brandAbout']
        );
    }

    //根据品牌域名处理相关品牌参数
    public static function getBrandByDomain($domain, $fields)
    {
        $brandInfo = BrandData::getBrandLogoByDomain($domain, $fields);
        $result = array();
        if (!empty($brandInfo['data']) && $brandInfo['code'] == 200) {
            $result['brandId'] = isset($brandInfo['data']['id']) ? $brandInfo['data']['id'] : '';
            $result['node'] = isset($brandInfo['data']['static_content_code']) ? $brandInfo['data']['static_content_code'] : false;
            $result['brandBanner'] = isset($brandInfo['data']['brand_banner']) ? $brandInfo['data']['brand_banner'] : '';
            $result['brandNameEn'] = isset($brandInfo['data']['brand_name_en']) ? $brandInfo['data']['brand_name_en'] : '';
            $result['brandNameCn'] = isset($brandInfo['data']['brand_name_cn']) ? $brandInfo['data']['brand_name_cn'] : '';
            $result['brandAbout'] = isset($brandInfo['data']['brand_intro']) ? $brandInfo['data']['brand_intro'] : '';
        }
        else {
            return false;
        }
        return $result;
    }

    //获取品牌系列数据
    public static function getAdNav($brandId, $status = 1)
    {
        //调用接口获得数据
        $advNav = BrandData::getFolderByBrand($brandId, $status);
        $result = array();
        if (isset($advNav['data']) && $advNav['code'] === 200) {
            foreach ($advNav['data'] as $key => $value) {
                $result['list'][$key]['href'] = '?folder_id=' . $value['id'];
                $result['list'][$key]['src'] = $value['brand_sort_ico'];
            }
            $result['picTitle'] = '经典系列';
        }

        return $result;
    }

    /**
     * 根据条件获取搜索数据
     * @param array $customCondition
     * @param array $customOptions
     * @return array
     */
    public static function getBrandData($customCondition = array(), $customOptions = array())
    {
        $urlList = array();

        //获取$condition和$option 筛选条件和排序条件
        $searchCondition = SearchModel::searchCondition($customCondition, $customOptions);

        // 组合搜索商品url
        $urlList['product'] = SearchData::getProductUrl($searchCondition['condition']);

        // 组合搜索分类url
        $urlList['sort'] = SearchData::getClassesUrl($searchCondition['sortCondition']);

        //组合搜索品牌url
        $urlList['brand'] = SearchData::getBrandUrl($customOptions);

        //批量调接口
        $result = Yohobuy::getMulti($urlList);

        //组织模板数据格式
        $data = HelperSearch::getList($result, $searchCondition['options']);


        return $data;
    }

    /*
     * 获取品牌一览页面,品牌top & 列表
     */

    public static function getBrandView($channel)
    {
        //获取参数
        $switchParams = self::switchBrandParams($channel);
        //取接口数据
        $brandTop = array();
        $brandAds = array();
        $brandList = array();
        $res = BrandData::getTopBanner($switchParams['brandCode'], $switchParams['channelType']);
        //头部10个品牌图块 url todo
        if (isset($res['brandTop'][1]['data']['list']) && $res['brandTop'][1]['data']['list']) {
            foreach ($res['brandTop'][1]['data']['list'] as $tbk => $tbv) {
                $topBrandTmp = array(
                    'name' => $tbv['name'],
                    'src' => Helpers::getImageUrl($tbv['src'], 80, 50, 3),
                    'url' => $tbv['url'],
                );
                $brandAds[$tbk] = $topBrandTmp;
            }
        }
        //头部品牌图块
        if (isset($res['brandTop'][0]['data']) && $res['brandTop'][0]['data']) {
            foreach ($res['brandTop'][0]['data'] as $tk => $tv) {
                $topTmp = array(
                    'name' => $tv['title'],
                    'src' => Helpers::getImageUrl($tv['src'], 222, 180, 3),
                    'url' => $tv['url'],
                    'items' => $brandAds
                );
                $brandTop[$tk] = $topTmp;
            }
        }
        //品牌list A-Z 0-9
        if (isset($res['brandList']['brands']) && $res['brandList']['brands']) {
            foreach ($res['brandList']['brands'] as $lk => $lv) {
                $listTmp = array();
                if (isset($lv) && $lv) {
                    foreach ($lv as $ltk => $ltv) {
                        $listTmp[$ltk] = array(
                            'name' => $ltv['brand_name'],
                            'key' => $ltv['id']
                        );
                        if ($ltv['is_hot'] == 'Y') {
                            $listTmp[$ltk] += array('hot' => 'hot');
                        }
                    }
                }
                $brandList[$lk] = $listTmp;
            }
            //将brandList里的0-9 排序到最后
            $numBrand['0~9'] = $brandList['0~9'];
            unset($brandList['0~9']);
            $brandList+=$numBrand;
        }
        return array(
            'brandTop' => $brandTop,
            'brandList' => $brandList
        );
    }

    /*
     * 获取单个广告浮窗内容
     */

    public static function getBrandInfo($brandId, $uid)
    {
        $data = array();
        $imgs = array();
        //获取品牌简介
        $res = BrandData::getBrandIntro($brandId, $uid);
        if (isset($res['data']) && $res['data']) {
            //获取品牌下的产品信息
            $proInfo = self::getProductByBrand($brandId);
            $proInfoTmp = $proInfo['data']['product_list'];
            if (isset($proInfoTmp) && $proInfoTmp) {
                foreach ($proInfoTmp as $v) {
                    $imgs[] = array(
                        'src' => Images::getImageUrl($v['default_images'], 80, 100, 3, 'goodsimg')
                    );
                }
            }
            //整合
            $data = array(
                'key' => $res['data']['brand_id'],
                'icon' => Helpers::getImageUrl($res['data']['brand_ico'], 80, 50, 3),
                'title' => $res['data']['brand_name'],
                'content' => $res['data']['brand_intro'],
                'subtitle' => 'FEATURED ITEMS',
                'imgs' => $imgs
            );
        }
        return $data;
    }

    /*
     * 根据brandId获取产品信息
     */
    public static function getProductByBrand($brandId, $num = 3)
    {
        $condition['viewNum'] = $num;
        $condition['brand'] = $brandId;
        return searchData::searchElasticByCondition($condition);
    }

    /*
     * 获取品牌一览资源位&channelType
     */

    public static function switchBrandParams($channelStr = 'boys')
    {
        $res = array('channelType' => 1, 'brandCode' => self::BOYS_BRAND_CODE);
        switch ($channelStr) {
            case HomeModel::COOKIE_NAME_BOYS:
                $res['channelType'] = 1;
                $res['brandCode'] = self::BOYS_BRAND_CODE;
                break;
            case HomeModel::COOKIE_NAME_GIRLS:
                $res['channelType'] = 2;
                $res['brandCode'] = self::GIRLS_BRAND_CODE;
                break;
            case HomeModel::COOKIE_NAME_KIDS:
                $res['channelType'] = 3;
                $res['brandCode'] = self::KIDS_BRAND_CODE;
                break;
            case HomeModel::COOKIE_NAME_LIFESTYLE:
                $res['channelType'] = 4;
                $res['brandCode'] = self::LIFESTYLE_BRAND_CODE;
                break;
            default:
                $res['channelType'] = 1;
                $res['brandCode'] = self::BOYS_BRAND_CODE;
                break;
        }
        return $res;
    }

}