Blame view

yohobuy/m.yohobuy.com/application/models/Category/Class.php 4.59 KB
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
<?php

namespace Category;

use LibModels\Wap\Category\ClassData;
use Configs\CacheConfig;
use Plugin\Helpers;
use Plugin\Cache;

/**
 * 品牌相关的模板数据模型
 * 
 * @name BrandModel
 * @package Models/Category
 * @copyright yoho.inc
 * @version 1.0 (2015-10-21 13:52:44)
 * @author fei.hong <fei.hong@yoho.cn>
 */
class ClassModel
{
21
22
    /**
23
     * 根据频道获取品类数据
24 25 26 27 28
     * 
     * @return array
     */
    public static function getClassData()
    {
29
        $result = array();
30 31

        if (USE_CACHE) {
32
            $key = CacheConfig::KEY_COMMON_CATEGORY_CLASSES;
33
            // 先尝试获取一级缓存(master), 有数据则直接返回.
34
            $result = Cache::get($key, 'master');
35 36 37 38 39 40 41
            if (!empty($result)) {
                return $result;
            }
        }

        do {
            $data = ClassData::getClassesData();
42
            if (empty($data['data'])) {
43 44 45
                break;
            }
46 47
            $oneClass = array();
            $item = array();
48
            foreach ($data['data'] as $k => $v) {
49
                $oneClass = array('name' => ucfirst(rtrim($k, 's')), 'ca' => array());
50
                
51 52 53 54
                foreach ($v as $val) {
                    $item = array();
                    $item['name'] = $val['category_name'];
                    $item['id'] = $val['relation_parameter']['sort'];
55 56 57 58 59 60 61

                    // 首先添加一级分类
                    $item['sub'][] = array(
                        'name' => '全部'.$item['name'],
                        'id' => $item['id'],
                        'url' => Helpers::url('/', array(
                                    'sort' => $item['id'],
62
                                    'sort_name' => $item['name']), 'list')
63 64 65
                    );

                    $subitem = array();
66 67 68 69
                    foreach ($val['sub'] as $value) {
                        $subitem = array();
                        $subitem['name'] = $value['category_name'];
                        $subitem['id'] = $value['relation_parameter']['sort'];
hf authored
70
                        $subitem['url'] = Helpers::url('/', array(
71 72 73
                                    'sort' => $value['relation_parameter']['sort'],
                                    'sort_name' => $value['category_name']
                                        ), 'list');
74 75 76 77 78 79
                        $item['sub'][] = $subitem;
                    }

                    $oneClass['ca'][] = $item;
                }
80
                $result[] = $oneClass;
81 82 83 84
            }

            if (USE_CACHE) {
                // 接口调用异常时, 不害怕,从我们的二级缓存(slave)里再取数据.
85 86
                if (empty($result)) {
                    $result = Cache::get($key, 'slave');
87 88 89
                }
                // 接口调用正常,数据封装完成, 则设置一级(master)和二级(slave)数据缓存
                else {
90
                    Cache::set($key, $result);
91 92
                }
            }
93
        } while (false);
94
95
        return $result;
96 97 98
    }

    /**
99
     * 根据频道获取所有品类名称
100
     * 
101 102 103 104
     * @return array(
     *     "first" => '一级品类',
     *     "second" => '二级品类',
     * )
105
     */
106
    public static function getClassNames()
107
    {
108
        $result = array('first' => array(), 'second' => array());
109
110 111 112 113 114 115
        if (USE_CACHE) {
            $key = CacheConfig::KEY_COMMON_CATEGORY_CLASSES_NAMES;
            // 先尝试获取一级缓存(master), 有数据则直接返回.
            $result = Cache::get($key, 'master');
            if (!empty($result)) {
                return $result;
116 117
            }
        }
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
        
        $classes= ClassData::getClassesData();
        if (!empty($classes['data'])) {
            $id = 0;
            foreach ($classes['data'] as $data) {
                foreach ($data as $item) {
                    $id = $item['category_id'];
                    $result['first'][$id] = $item['category_name'];
                    foreach ($item['sub'] as $sub) {
                        $id = $sub['category_id'];
                        $result['second'][$id] = $sub['category_name'];
                    }
                }
            }
        }
        $classes = array();
134
135 136 137 138
        if (USE_CACHE) {
            // 接口调用异常时, 不害怕,从我们的二级缓存(slave)里再取数据.
            if (empty($result)) {
                $result = Cache::get($key, 'slave');
139
            }
140 141 142
            // 接口调用正常,数据封装完成, 则设置一级(master)和二级(slave)数据缓存
            else {
                Cache::set($key, $result);
143 144
            }
        }
145 146

        return $result;
147
    }
148
149
}