| 
									
										
										
										
											2020-11-25 09:07:06 +08:00
										 |  |  | <?php | 
					
						
							|  |  |  | namespace app\model; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | class Category extends Base | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2020-11-25 18:48:29 +08:00
										 |  |  |     public static  $CIdList = [ | 
					
						
							| 
									
										
										
										
											2020-12-03 13:47:57 +08:00
										 |  |  |         'about'                     => 1, // 走进超宇
 | 
					
						
							|  |  |  |         'about_children'            => [ | 
					
						
							|  |  |  |             'company'               => 3, // 企业简介
 | 
					
						
							|  |  |  |             'honor'                 => 8, // 资质荣誉
 | 
					
						
							|  |  |  |             'structure'             => 9, // 组织架构
 | 
					
						
							|  |  |  |             'history'               => 10, // 发展历程
 | 
					
						
							|  |  |  |             'video'                 => 11, // 企业视频
 | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  |         'honors_manage'             => 26, // 荣誉资质管理
 | 
					
						
							|  |  |  |         'history_manage'            => 29, // 发展历程管理
 | 
					
						
							|  |  |  |         'products'                  => 2, // 产品中心
 | 
					
						
							| 
									
										
										
										
											2020-12-03 17:02:31 +08:00
										 |  |  |         'service'                   => 5, // 品质与服务
 | 
					
						
							|  |  |  |         'service_children'          => [ | 
					
						
							|  |  |  |             'before'                => 12, // 售前服务
 | 
					
						
							|  |  |  |             'in_progress'           => 13, // 售中服务
 | 
					
						
							|  |  |  |             'after'                 => 14, // 售后服务
 | 
					
						
							|  |  |  |         ], | 
					
						
							| 
									
										
										
										
											2020-12-03 18:22:38 +08:00
										 |  |  |         'marketing'                 => 15, // 营销网络(主)
 | 
					
						
							| 
									
										
										
										
											2020-12-03 13:47:57 +08:00
										 |  |  |         'marketing_children'        => [ | 
					
						
							| 
									
										
										
										
											2020-12-03 18:22:38 +08:00
										 |  |  |             'network'               => 16, // 营销网络
 | 
					
						
							| 
									
										
										
										
											2020-12-03 13:47:57 +08:00
										 |  |  |             'achievement'           => 17, // 主要业绩
 | 
					
						
							|  |  |  |         ], | 
					
						
							| 
									
										
										
										
											2020-12-08 16:11:04 +08:00
										 |  |  |         'achievement_manage'        => 34, // 主要业绩管理 30
 | 
					
						
							| 
									
										
										
										
											2020-12-04 14:33:02 +08:00
										 |  |  |         'news'                      => 18, // 新闻动态
 | 
					
						
							| 
									
										
										
										
											2020-12-03 13:47:57 +08:00
										 |  |  |         'news_children'             => [ | 
					
						
							|  |  |  |             'enterprise'            => 20, // 企业新闻
 | 
					
						
							|  |  |  |             'industry'              => 21, // 行业资讯
 | 
					
						
							| 
									
										
										
										
											2020-12-04 14:33:02 +08:00
										 |  |  |             'dynamics'              => 22, // 最新动态
 | 
					
						
							| 
									
										
										
										
											2020-12-03 13:47:57 +08:00
										 |  |  |         ], | 
					
						
							| 
									
										
										
										
											2020-12-04 18:22:07 +08:00
										 |  |  |         'contact'                   => 19, // 联系我们
 | 
					
						
							|  |  |  |         'contact_children'          => [ | 
					
						
							|  |  |  |             'information'           => 23, // 联系方式
 | 
					
						
							|  |  |  |             'jobs'                  => 24, // 行业资讯
 | 
					
						
							|  |  |  |             'message'               => 25, // 在线留言
 | 
					
						
							|  |  |  |         ], | 
					
						
							|  |  |  |         'jobs_manage'            => 33, // 招聘管理
 | 
					
						
							| 
									
										
										
										
											2020-11-25 18:48:29 +08:00
										 |  |  |     ]; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-25 09:07:06 +08:00
										 |  |  |     //获取首页栏目ID
 | 
					
						
							|  |  |  |     public static function getIndex() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         return self::where('is_index', 1)->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) | 
					
						
							| 
									
										
										
										
											2020-12-03 13:47:57 +08:00
										 |  |  |         ->where('c.is_menu', 1) | 
					
						
							| 
									
										
										
										
											2020-11-25 09:07:06 +08:00
										 |  |  |         ->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(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-11-26 15:45:31 +08:00
										 |  |  |     //递归获取栏目名称面包屑
 | 
					
						
							| 
									
										
										
										
											2020-11-25 09:07:06 +08:00
										 |  |  |     public static function getCatesCrumbs($currentId = 0) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $crumbs = []; | 
					
						
							|  |  |  |         $category = self::getById($currentId); | 
					
						
							| 
									
										
										
										
											2020-12-03 13:47:57 +08:00
										 |  |  |         if($category) { | 
					
						
							|  |  |  |             if($category['parent_id'] == 0){ | 
					
						
							|  |  |  |                 $crumbs[] = $category; | 
					
						
							|  |  |  |             }else{ | 
					
						
							|  |  |  |                 $categoryIds = explode(',', trim($category['path'], ',')); | 
					
						
							|  |  |  |                 $categories = self::alias('c') | 
					
						
							|  |  |  |                     ->leftJoin('model m', 'c.model_id = m.id') | 
					
						
							|  |  |  |                     ->where('c.id', 'in', $categoryIds) | 
					
						
							|  |  |  |                     ->column('c.*,m.template', 'c.id'); | 
					
						
							|  |  |  |                 foreach($categoryIds as $id){ | 
					
						
							|  |  |  |                     if(isset($categories[$id])){ | 
					
						
							|  |  |  |                         $crumbs[] = $categories[$id]; | 
					
						
							|  |  |  |                     } | 
					
						
							| 
									
										
										
										
											2020-12-01 09:10:02 +08:00
										 |  |  |                 } | 
					
						
							| 
									
										
										
										
											2020-12-03 13:47:57 +08:00
										 |  |  |                 $crumbs[] = $category; | 
					
						
							| 
									
										
										
										
											2020-12-01 09:10:02 +08:00
										 |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2020-11-25 09:07:06 +08:00
										 |  |  |         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; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2020-11-26 10:28:53 +08:00
										 |  |  | 
 | 
					
						
							|  |  |  |     //根据栏目ID获取面包屑列表
 | 
					
						
							|  |  |  |     public static function getListForCrumbs($categoryId) | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $categories = []; | 
					
						
							|  |  |  |         $category = self::getById($categoryId); | 
					
						
							|  |  |  |         if(!empty($category)){ | 
					
						
							|  |  |  |             $categories[] = $category; | 
					
						
							|  |  |  |             if($category['parent_id'] != 0 ){ | 
					
						
							|  |  |  |                 $parents = self::getListForCrumbs($category['parent_id']); | 
					
						
							|  |  |  |                 if(!empty($parents)){ | 
					
						
							|  |  |  |                     $categories = array_merge($categories, $parents); | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         return $categories; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2020-11-25 09:07:06 +08:00
										 |  |  | } |