findOrEmpty()->toArray();
    }
    //根据上级ID和语言获取下级栏目
    public static function getChildrenByParentId($parentId)
    {
        if ($parentId <= 0) {
            return [];
        }
        $category = self::getById($parentId);
        if (empty($category)) {
            return [];
        }
        return self::alias('c')
            ->leftJoin('model m', 'c.model_id=m.id')
            ->field('c.*, m.manager, m.template, m.name as modelName')
            ->where('c.parent_id', $parentId)
            ->order('c.sort', 'asc')
            ->select()
            ->toArray();
    }
    //重写方法
    public static function getById($categoryId)
    {
        return self::alias('c')
            ->leftJoin('model m', 'c.model_id = m.id')
            ->where('c.id', $categoryId)
            ->field('c.*, m.template')
            ->findOrEmpty()
            ->toArray();
    }
    //查看是否有下级栏目
    public static function hasChildren($categoryId)
    {
        if (is_array($categoryId)) {
            $count = self::where('parent_id', 'in', $categoryId)->count();
        } else {
            $count = self::where(['parent_id' => $categoryId])->count();
        }
        return $count ? true : false;
    }
    //获取前台菜单
    public static function getListForFrontMenu()
    {
        $items = self::alias('c')
            ->leftJoin('model m', 'c.model_id=m.id')
            ->field('c.*, m.manager, m.template')
            ->where('c.state', 1)
            ->order('is_index desc, sort asc')
            ->select()
            ->toArray();
        return self::getCates($items);
    }
    /**
     * 获取栏目
     * @param bool $limit 是否限制查询
     * @param array $cates 需要限制查询的栏目IDs
     */
    public static function getList($limit = false, $cates = [])
    {
        if ($limit && empty($cates)) {
            return [];
        }
        return self::alias('c')
            ->leftJoin('model m', 'c.model_id=m.id')
            ->field('c.*, m.manager, m.name as modelName')
            ->when($limit, function ($query) use ($cates) {
                $query->whereIn('c.id', $cates);
            })
            ->order('sort', 'asc')
            ->select()
            ->toArray();
    }
    //获取栏目分级列表
    public static function getListTree($isMenu = false)
    {
        if ($isMenu) {
            $items = self::where('c.state', 1)->order('sort', 'asc')->select()->toArray();
        } else {
            $items = self::order('sort', 'asc')->select()->toArray();
        }
        return self::getCates($items);
    }
    //获取递归栏目
    public static function getCates($cates, $parentId = 0)
    {
        $menus = [];
        foreach ($cates as $cate) {
            if ($cate['parent_id'] == $parentId) {
                $children = self::getCates($cates, $cate['id']);
                if (!empty($children)) {
                    $cate['children'] = $children;
                }
                $menus[] = $cate;
            }
        }
        return $menus;
    }
    public static function onAfterInsert($category)
    {
        $category->sort = $category->id;
        $category->save();
    }
    //递归获取栏目名称面包屑
    public static function getCatesCrumbs($currentId = 0)
    {
        $crumbs = [];
        $category = self::getById($currentId);
        if ($category) {
            if ($category['parent_id'] != 0) {
                $categoryIds = explode(',', trim($category['path'], ','));
                $categories = self::where('id', 'in', $categoryIds)->column('*', 'id');
                foreach ($categoryIds as $id) {
                    if (isset($categories[$id])) {
                        $crumbs[] = $categories[$id]['title'];
                    }
                }
            }
            $crumbs[] = $category['title'];
        }
        return $crumbs;
    }
    //获取栏目中涉及到的文件
    public static function getFilesInUse()
    {
        $items = self::select()->toArray();
        $data = [];
        foreach ($items as $item) {
            $src = trim($item['src']);
            if (!empty($src)) {
                $key = getKeyByPath($src);
                $data[$key] = $src;
            }
        }
        return $data;
    }
    //当前分类的最高级分类Id
    public static function firstGradeById($id)
    {
        $res = 0;
        $item = self::getById($id);
        if ($item) {
            $res = $id;
            if ($item['parent_id'] > 0) {
                $items = self::select()->toArray();
                $first = self::getFirstGrade($items, $item['parent_id']);
                if (!empty($first)) {
                    $res = $first['id'];
                }
            }
        }
        return $res;
    }
    public static function getFirstGrade($items, $parentId)
    {
        $data = [];
        foreach ($items as $key => $item) {
            if ($item['id'] == $parentId) {
                if ($item['parent_id'] > 0) {
                    unset($items[$key]);
                    $parent = self::getFirstGrade($items, $item['parent_id']);
                    if (!empty($parent)) {
                        $data = $parent;
                    } else {
                        $data = $item;
                    }
                } else {
                    $data = $item;
                }
            }
        }
        return $data;
    }
    public static function getFooterMenu()
    {
        $items = self::alias('c')
            ->leftJoin('model m', 'c.model_id=m.id')
            ->field('c.*, m.manager, m.template')
            ->where('c.state', 1)
            ->where('c.id', "in", self::footer_menu_ids)
            ->whereOr('c.parent_id', "in", self::footer_menu_ids)
            ->order('is_index desc, sort asc')
            ->select()
            ->toArray();
        return self::getCates($items);
    }
    public static function getChildrenIds($parentId)
    {
        return self::where("parent_id", $parentId)->column("id");
    }
    //获取当前位置
    public static function getPosition($categoryId, $isIndex = true)
    {
        $position = "";
        $getFirstGrade = self::alias('c')
            ->leftJoin('model m', 'c.model_id=m.id')
            ->field('c.*, m.manager, m.template, m.name as modelName')
            ->where("c.id", $categoryId)
            ->find()
            ->toArray();
        if (!$getFirstGrade) return $position;
        $position = '' . $getFirstGrade["title"] . "  " . $position;
        if (!in_array($getFirstGrade["parent_id"], [0, 1])) {
            $position = (self::getPosition($getFirstGrade["parent_id"], false) . $position);
        }
        return ($isIndex ? "首页" : "") . $position;
    }
    public static function getProductNewsChildrenIds()
    {
        return self::where("parent_id","in",[
            self::NewsId,
            self::ProductCategoryId,
        ])->column("id");
    }
//    ----------web -------
    //关于市场
    public static function getAboutMarket()
    {
        $ids = self::where("parent_id", self::AboutMarketId)->column("id");
        return self::alias('c')
            ->leftJoin('model m', 'c.model_id=m.id')
            ->field('c.*, m.manager, m.template, m.name as modelName')
            ->where('c.id', "in", $ids)
            ->order('c.sort', 'asc')
            ->select()
            ->toArray();
    }
    //产品展示
    public static function getProduct()
    {
        return self::alias('c')
            ->leftJoin('model m', 'c.model_id=m.id')
            ->field('c.*, m.manager, m.template, m.name as modelName')
            ->where('c.parent_id', "=", self::ProductCategoryId)
            ->order('c.sort', 'asc')
            ->select()
            ->toArray();
    }
    //水产供求
    public static function getAquaticSupplyAndDemand()
    {
        return self::alias('c')
            ->leftJoin('model m', 'c.model_id=m.id')
            ->field('c.*, m.manager, m.template, m.name as modelName')
            ->where('c.parent_id', "=", self::AquaticSupplyAndDemandId)
            ->order('c.sort', 'asc')
            ->select()
            ->toArray();
    }
    //新闻 市场动态
    public static function getNews()
    {
        return self::alias('c')
            ->leftJoin('model m', 'c.model_id=m.id')
            ->field('c.*, m.manager, m.template, m.name as modelName')
            ->where('c.parent_id', "=", self::NewsId)
            ->order('c.sort', 'asc')
            ->select()
            ->toArray();
    }
}