ListController.class.php 2.39 KB
<?php
/**
 * Created by PhpStorm.
 * User: tangxingguo
 * Date: 2017/4/11
 * Time: 18:33
 */
namespace Api\Controller\NewsClass;

use Common\Model\ClassModel;
use Common\Service\ClassService;

class ListController extends \Api\Controller\AbstractController
{
    /**
     * List
     * @author tangxingguo
     * @desc 分类列表
     * @param int    class_id 新闻一级分类ID
     * array 新闻列表
     *              array(
    'list' => array(
    'class_id' => '1', // 一级分类ID
    'child' => array(
    'order' => 1, // 排序
    'class_id' => 8, // 二级分类ID
    'parent_id' => 3, // 一级分类ID
    'class_name' => '核心单品', // 分类名称
    )
    )
    );
     */
    public function Index_post()
    {
        $classId = I('post.class_id');

        // 默认分类
        $defaultClass = [
            'class_id' => '',
            'class_name' => '全部分类',
            'description' => '',
        ];

        // 列表
        $classServ = new ClassService();
        if (!empty($classId)) {
            $classList[] = $classServ->get($classId);
            $childrenClass = $classServ->list_by_conds(['parent_id' => $classId]);
            $classList = array_merge($classList, $childrenClass);
        } else {
            $classList = $classServ->list_all();
        }

        $resultList = [];
        // 处理一级分类
        foreach ($classList as $key => $item) {
            if ($item['parent_id'] == 0) {
                $item['child'] = [];
                $resultList[$item['class_id']] = $item;
                unset($classList[$key]);
            }
        }
        // 排序一级
        $resultList = array_combine_by_key(
            multi_array_sort($resultList, 'order', SORT_NUMERIC, SORT_ASC),
            'class_id'
        );
        // 处理二级分类
        foreach ($classList as $item) {
            // 开启
            if ($item['is_open'] == ClassModel::IS_OPEN_OPEN) {
                $resultList[$item['parent_id']]['child'][] = $item;
            }
        }
        // 排序二级
        foreach ($resultList as &$item) {
            // 排序二级
            if (!empty($item['child'])) {
                $item['child'] = multi_array_sort($item['child'], 'order', SORT_NUMERIC, SORT_ASC);
            }
        }

        array_unshift($resultList, $defaultClass);
        $this->_result = [
            'list' => $resultList
        ];
    }
}