Process.php 7.18 KB
<?php
namespace Plugin\DataProcess\WebChannel;
use Plugin\Images;
use Plugin\Helpers;
/**
 * web版通用处理器
 */
class Process
{
    public static function getContent(array &$data, $type = 1)
    {
        //组合处理数据
        $result = self::mergeProcess($data, $type);
        foreach($data as $key => $val)
        {
            $fun = $val['template_name'];
            if (empty($val['data']) || !is_callable("self::$fun")) {
                continue;
            }
            //单个处理数据
            $build = self::$fun($val, $type);
            if(!empty($build))
            {
                $result[$key] = $build;
            }
            unset($data[$key]);
        }
        return $result;
    }
    
    /**
     * 热门分类处理
     * 
     * @param array $data
     * @param string $type
     * @return array
     */
    public static function hotCategory(array $data, $type)
    {
        $data = $data['data'];
        $result = $temp = array();
        $temp = array('name' => $data['name'],
            'navs' => array(),'tplrecommend'=> array());
        foreach($data['navs']['list'] as $val) {
            $temp['navs'][] = array(
                'id'=>'', 'href'=> $val['url'],
                'name' => $val['name']
            );
        }
        foreach($data['menuNav']['blocks'] as $val) {
            $val['img'] = Images::getImageUrl($val['img'], 185, 76, 1);
            $val['url'] = Helpers::transUrl($val['url'], $type);
            $temp['tplrecommend']['keyword'][] = array('href'=> $val['url'],'name'=> $val['title'], 'img'=>$val['img']);
        }
        
        foreach($data['menuNav']['list'] as $val) {
            if(empty($val['name']) && empty($val['url']))
            {
                continue;
            }
            $val['url'] = Helpers::transUrl($val['url'], $type);
            $temp['tplrecommend']['category'][] = array('name'=> $val['name'],'url'=> $val['url']);
        }
        
        foreach($data['imgs'] as $key => $val) {
            $w = 185; $h = 248;
            if($key == 0) 
            {
                $w = 377;
                $h = 504;
            }
            $val['img'] = Images::getImageUrl($val['img'], $w, $h, 1);
            $val['url'] = Helpers::transUrl($val['url'], $type);
            if($key == 0)
            {
                $temp['tplrecommend']['brands'][] = array('href'=> $val['url'],'name'=> $val['title'],'img'=> $val['img']);
            }
            else 
            {
                $temp['tplrecommend']['types'][] = array('href'=> $val['url'],'name'=> $val['title'],'img'=> $val['img']);
            } 
        }
        $result['recommend'] = $temp;
        return $result;
    }
    
    /**
     * banner处理
     * 
     * @param array $data
     * @param string $type
     * @return array
     */
    public static function focus(array $data, $type)
    {
        $result = array();
        $temp = array();
        $width = 1150;
        $height = 450;
        if($data['focus_type'] == 1) {
            foreach($data['data'] as $val) {
                $val['src'] = Images::getImageUrl($val['src'], $width, $height, 1);
                $val['url'] = Helpers::transUrl($val['url'], $type);
                $temp[] = array('href'=> $val['url'],'img' => $val['src']);
            }
            $result['slide']['list'] = $temp;
        }
        return $result;
    }
      
    /**
     * 组合数据处理
     * 
     * @param array $data
     * @param string $type
     * @return array
     */
    public static function mergeProcess(array &$data, $type) 
    {
        $result = array();
        foreach($data as $key => $val) 
        {
            if(isset($data[$key]) && isset($data[$key+3])) //人气单品[template: text & textNav & goods & floor]
            {
                $temp = array('singlehot' => array('name'=>'','imgHot'=> array(),'brands'=> array()));
                if($data[$key]['template_name'] == 'text' && $data[$key+1]['template_name'] == 'textNav'
                    && $data[$key+2]['template_name'] == 'goods' && $data[$key+3]['template_name'] == 'floor')
                {
                    //text模版
                    $temp['singlehot']['name']= $val['data']['text'];
                    
                    //goods模版
                    foreach($data[$key+2]['data'] as $val)//TODO 
                    {
                        $temp['singlehot']['imgHot'][] = array('href'=> '',//$val['url'],
                            'name' => '','price'=> '');
                    }
                    
                    //floor模版
                    foreach($data[$key+3]['data'] as $val)
                    {
                        $val['src'] = Images::getImageUrl($val['src'], 185, 86, 1);
                        $val['url'] = Helpers::transUrl($val['url'], $type);
                        $temp['singlehot']['brands'][] = array('href' => $val['url'],
                            'img' => $val['src'],'name'=>$val['title']);
                    }
                    
                    $result[$key] = $temp;
                    unset($data[$key], $data[$key+1], $data[$key+2], $data[$key+3]);
                }
             }  
             if(isset($data[$key]) && isset($data[$key+1])) //优选品牌 [ template: text & focus ]
             {
                $temp = array('preferenceBrands'=> array('name'=>'', 'slider'=> array()));
                if($data[$key]['template_name'] =='text' && $data[$key+1]['template_name'] =='focus')
                {
                    $temp['preferenceBrands']['name'] = $val['data']['text'];
                    
                    //focus 分类
                    foreach($data[$key+1]['data'] as $val)
                    {
                        $width = 320;
                        $height = 430;
                        $val['src'] = Images::getImageUrl($val['src'], $width, $height, 1);
                        $val['url'] = Helpers::transUrl($val['url'], $type);
                        $temp['preferenceBrands']['slider'][] = array('href'=> $val['url'],'img'=> $val['src']);
                    }
                    
                    $result[$key] = $temp;
                    unset($data[$key], $data[$key+1]);
                }
             }
             if(isset($data[$key]) && isset($data[$key+2])) //girlkids[ template: text & textNav & goods]
             {
                 $temp = array('girlkids'=> array('name'=>'', 'imgHot'=> array()));
                 if($data[$key]['template_name'] =='text' && $data[$key+2]['template_name'] =='goods')
                 {
                     $temp['girlkids']['name'] = $val['data']['text'];
                     foreach($data[$key+2]['data'] as $val)//TODO
                     {
                         $temp['girlkids']['imgHot'][] = array('href'=> '',//$val['url'],
                             'name' => '','price'=>'');
                     }
                     $result[$key] = $temp;
                     unset($data[$key], $data[$key+1], $data[$key+2]);
                 }
             }
        }
        return $result;
    }
    
}