Blame view

library/Plugin/DataProcess/ListProcess.php 7.99 KB
1 2 3
<?php

namespace Plugin\DataProcess;
hf authored
4
5 6 7 8 9 10 11 12 13 14 15 16 17 18
use Plugin\Helpers;

/**
 * 列表数据处理类
 */
class ListProcess
{

    /**
     * 返回商品和过滤数据
     * 
     * @param $data
     * @return array 处理之后的商品数据
     */
19
    public static function getListData($data, $returnFilter = true)
20
    {
21
        $result = array();
22
hf authored
23
        if (isset($data['product_list'])) {
24 25
            $result['new'] = self::getProductData($data['product_list']);
        }
26
        if ($returnFilter && isset($data['filter'])) {
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43
            $result['filter'] = self::getFilterData($data['filter']);
        }

        return $result;
    }

    /**
     * 处理列表商品数据
     * 
     * @param $data
     * @return array 处理之后的商品数据
     */
    public static function getProductData($data)
    {
        // 处理商品
        $products = array();
44
        foreach ($data as $value) {
45
            $products[] = Helpers::formatProduct($value, true, true, true);
46 47 48 49 50 51 52 53 54
        }

        return $products;
    }

    /**
     * 处理筛选数据
     * 
     * @param $data
55
     * @param  string | integer $gender 默认选择的性别,默认1,2,3表示所有
56 57
     * @return array 处理之后的筛选数据
     */
58
    public static function getFilterData($data, $gender = '1,2,3')
59 60
    {
        // 过滤条件数据
hf authored
61
        $filters = array('classify' => array());
62
63
        // 返回数据中有没有gender时要添加gender
64
        $data['gender'] = array('2,3'=>'GIRLS','1,3'=>'BOYS');
65
66
        $num = 1;
67
        foreach ($data as $key => $val) {
hf authored
68
            if (empty($val)) {
69 70 71 72 73
                continue;
            }
            if (!is_callable("self::$key")) {
                continue;
            }
74
            $build = self::$key($val, $gender);
hf authored
75
            if ($num === 1) {
76 77 78
                $build['active'] = true;
            }
Rock Zhang authored
79
            $num++;
80 81 82
            $filters['classify'][] = $build;
        }
83 84 85
        // 按照指定字段进行排序筛选数据
        self::sortArrByField($filters['classify'], 'sort_col');
86 87 88 89 90 91 92 93
        return $filters;
    }

    private static function brand($data)
    {
        $result = array(
            'title' => '品牌',
            'name' => '所有品牌',
94
            'sort_col' => 1,
95
            'dataType' => 'brand',
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123
            'subs' => array(
                array(
                    'chosed' => true,
                    'dataId' => 0,
                    'name' => '所有品牌'
                )
            )
        );

        // 对品牌数据按照品牌字母进行排序
        self::sortArrByField($data, 'brand_alif');

        foreach ($data as $one) {
            $brand = array();
            $brand['dataId'] = $one['id'];
            $brand['name'] = $one['brand_name'];

            $result['subs'][] = $brand;
        }

        return $result;
    }

    private static function color($data)
    {
        $result = array(
            'title' => '颜色',
            'name' => '所有颜色',
124
            'sort_col' => 3,
125
            'dataType' => 'color',
126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150
            'subs' => array(
                array(
                    'chosed' => true,
                    'dataId' => 0,
                    'name' => '所有颜色'
                )
            )
        );

        foreach ($data as $one) {
            $color = array();
            $color['dataId'] = $one['color_id'];
            $color['name'] = $one['color_name'];

            $result['subs'][] = $color;
        }

        return $result;
    }

    private static function discount($data)
    {
        $result = array(
            'title' => '折扣',
            'name' => '所有商品',
151
            'sort_col' => 6,
152
            'dataType' => 'discount',
153 154 155
            'subs' => array(
                array(
                    'chosed' => true,
156
                    'dataId' => '0.1,0.9',
157 158 159 160 161
                    'name' => '所有商品'
                )
            )
        );
162
        foreach ($data as $key => $one) {
163
            $discount = array();
164
            $discount['dataId'] = $key;
hf authored
165
            $discount['name'] = $one['name'] . '折商品';
166 167 168 169 170 171 172

            $result['subs'][] = $discount;
        }

        return $result;
    }
173
    private static function gender($data, $gender)
174 175 176 177
    {
        $result = array(
            'title' => '性别',
            'name' => '所有性别',
178
            'sort_col' => 0,
179
            'dataType' => 'gender',
180 181
            'subs' => array(
                array(
182
                    'dataId' => '1,2,3',
183 184 185
                    'name' => '所有性别'
                ),
                array(
186 187
                    'dataId' => '1,3',
                    'name' => 'BOYS'
188 189
                ),
                array(
190 191
                    'dataId' => '2,3',
                    'name' => 'GIRLS'
192 193 194 195
                ),
            )
        );
196 197
        // 处理选中状态
        foreach ($result['subs'] as &$val) {
hf authored
198 199
            if ($val['dataId'] === $gender) {
                $val['chosed'] = true;
200 201

                $result['name'] = $val['name'];
hf authored
202
            }
203 204
        }
205 206 207 208 209 210 211 212
        return $result;
    }

    private static function group_sort($data)
    {
        $result = array(
            'title' => '品类',
            'name' => '所有品类',
213
            'sort_col' => 2,
214
            'dataType' => 'sort',
215 216 217 218 219 220 221 222 223
            'subs' => array(
                array(
                    'chosed' => true,
                    'dataId' => 0,
                    'name' => '所有品类'
                )
            )
        );
hf authored
224
        $category = array();
225
        foreach ($data as $one) {
hf authored
226
227
            $category['dataId'] = isset($one['relation_parameter']) ? $one['relation_parameter']['sort'] : 0;
228 229
            $category['name'] = $one['category_name'];
hf authored
230 231 232 233 234 235 236 237
            /* // 子品类(目前h5不支持二级)
              if(isset($one['sub']))
              {
              $category['subs'] = array();
              foreach ($one['sub'] as $single) {
              $subitem = array();
              $subitem['dataId'] = $single['category_id'];
              $subitem['name'] = $single['category_name'];
238
hf authored
239 240 241
              $category['subs'][] = $subitem;
              }
              } */
242 243 244 245 246 247 248 249 250 251 252 253

            $result['subs'][] = $category;
        }

        return $result;
    }

    private static function priceRange($data)
    {
        $result = array(
            'title' => '价格',
            'name' => '所有价格',
254
            'sort_col' => 5,
255
            'dataType' => 'price',
256 257 258 259 260 261 262 263 264
            'subs' => array(
                array(
                    'chosed' => true,
                    'dataId' => 0,
                    'name' => '所有价格'
                )
            )
        );
hf authored
265
        $price = array();
266
        foreach ($data as $key => $one) {
hf authored
267
268
            $price['dataId'] = $key;
269 270
            $price['name'] = $one;
271
            $result['subs'][] = $price;
272 273 274 275 276 277 278 279 280 281
        }

        return $result;
    }

    private static function size($data)
    {
        $result = array(
            'title' => '尺码',
            'name' => '所有尺码',
282
            'sort_col' => 4,
283
            'dataType' => 'size',
284 285 286 287 288 289 290 291 292
            'subs' => array(
                array(
                    'chosed' => true,
                    'dataId' => 0,
                    'name' => '所有尺码'
                )
            )
        );
hf authored
293
        $size = array();
294
        foreach ($data as $one) {
hf authored
295 296

            $size['dataId'] = $one['size_id'];
297 298 299 300 301 302 303 304 305 306 307 308 309 310 311
            $size['name'] = $one['size_name'];

            $result['subs'][] = $size;
        }

        return $result;
    }

    /**
     * 按照数组中指定字段排序二维数组
     * 
     * @param  array  &$array 需要排序的数组
     * @param  string  $field  字段名称
     * @param  boolean $desc   时候降序排列,默认为false
     */
hf authored
312 313
    private static function sortArrByField(&$array, $field, $desc = false)
    {
314 315
        $fieldArr = array();
        foreach ($array as $k => $v) {
316
            $fieldArr[$k] = isset($v[$field]) ? $v[$field] : '';
317 318 319 320
        }
        $sort = $desc == false ? SORT_ASC : SORT_DESC;
        array_multisort($fieldArr, $sort, $array);
    }
hf authored
321
322
}