Process.php 5.44 KB
<?php
namespace Plugin\DataProcess\WebChannel;
/**
 * 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) {
            $temp['tplrecommend']['keyword'][] = array('href'=> $val['url'],'name'=> $val['title'],'img'=>['src']);
        }
        foreach($data['menuNav']['list'] as $val) {
            $temp['tplrecommend']['category'][] = array('name'=> $val['name'],'url'=> $val['url']);
        }
        foreach($data['imgs'] as $val) {
            $temp['tplrecommend']['types'][] = array('href'=> $val['url'],'name'=> $val['title'],'img'=>['src']);
        }
        $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();
        if($data['focus_type'] == 1) {
            foreach($data['data'] as $val) {
                $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')
                {
                    $temp['singlehot']['name']= $val['data']['text'];
                    foreach($data[$key+2]['data'] as $val)//TODO 
                    {
                        $temp['singlehot']['imgHot'][] = array('href'=> '',//$val['url'],
                            'name' => '','price'=> '');
                    }
                    foreach($data[$key+3]['data'] as $val)
                    {
                        $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'];
                    foreach($data[$key+1]['data'] as $val)
                    {
                        $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;
    }
    
}