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();
}
}