95 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
		
		
			
		
	
	
			95 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			PHP
		
	
	
|  | <?php | ||
|  | 
 | ||
|  | namespace app\controller; | ||
|  | 
 | ||
|  | use app\model\{CasesModel, Category}; | ||
|  | 
 | ||
|  | class Cases extends Base | ||
|  | { | ||
|  |     /** | ||
|  |      * 详情 | ||
|  |      * | ||
|  |      * @throws \think\db\exception\ModelNotFoundException | ||
|  |      * @throws \think\db\exception\DbException | ||
|  |      * @throws \think\db\exception\DataNotFoundException | ||
|  |      */ | ||
|  |     public function detail($id = 0) | ||
|  |     { | ||
|  |         if ($id <= 0) { | ||
|  |             return $this->error('错误页面'); | ||
|  |         } | ||
|  |         $article = CasesModel::getById($id); | ||
|  |         if (empty($article)) { | ||
|  |             return $this->error('无此案例'); | ||
|  |         } | ||
|  | 
 | ||
|  |         $category = Category::getById($article['category_id']); | ||
|  | 
 | ||
|  |         $description = $article['seo_description'] ?: $this->system['seo_description']; | ||
|  |         $keywords    = $article['seo_keywords'] ?: $this->system['seo_keywords']; | ||
|  |         $title       = $article['seo_title'] ?: $article['title'].' | '.$this->system['seo_title']; | ||
|  | 
 | ||
|  |         $this->data['images'] = json_decode($article['images'], true); | ||
|  | 
 | ||
|  |         // 相关推荐
 | ||
|  |         $recommendList = $this->recommendList($article, 6, $id); | ||
|  | 
 | ||
|  |         $this->data['recommendList'] = $recommendList; | ||
|  |         $this->setSeo($title, $keywords, $description); | ||
|  |         $this->data['item']          = $article; | ||
|  |         $this->data['category']      = $category; | ||
|  |         $this->data['categoryId']    = $category['id']; | ||
|  |         $this->data['categoryPath']  = Category::categoryPath($category['path']); | ||
|  |         $this->data['topCategoryId'] = Category::firstGradeId($category['path'], $category['id']); | ||
|  |         return $this->view($category['template_detail'] ?? ''); | ||
|  |     } | ||
|  | 
 | ||
|  |     /** | ||
|  |      * 相关推荐 | ||
|  |      * | ||
|  |      * @param $article | ||
|  |      * @param  int  $num | ||
|  |      * @param  int  $exceptId | ||
|  |      * @return array | ||
|  |      * @throws \think\db\exception\DataNotFoundException | ||
|  |      * @throws \think\db\exception\DbException | ||
|  |      * @throws \think\db\exception\ModelNotFoundException | ||
|  |      */ | ||
|  |     private function recommendList($article, int $num = 0, int $exceptId = 0): array | ||
|  |     { | ||
|  |         return CasesModel::where('category_id', $article['category_id']) | ||
|  |             ->where('visible', 1) | ||
|  |             ->where('recommend', 1) | ||
|  |             ->when($exceptId > 0, function ($q) use ($exceptId) { | ||
|  |                 $q->where('id', '<>', $exceptId); | ||
|  |             }) | ||
|  |             ->order('sort', 'desc') | ||
|  |             ->order('id', 'desc') | ||
|  |             ->limit($num) | ||
|  |             ->select()->toArray(); | ||
|  |     } | ||
|  | 
 | ||
|  |     //文章列表接口,获取栏目下文章列表
 | ||
|  |     public function getList() | ||
|  |     { | ||
|  |         $categoryId = input('category_id/d', 0); | ||
|  |         $page       = input('page/d', 1); | ||
|  |         $size       = input('size/d', 10); | ||
|  | 
 | ||
|  |         if ($categoryId <= 0) { | ||
|  |             return $this->json(1, '参数错误'); | ||
|  |         } | ||
|  |         $category = Category::getById($categoryId); | ||
|  |         if (empty($category)) { | ||
|  |             return $this->json(2, '栏目不存在'); | ||
|  |         } | ||
|  | 
 | ||
|  |         $items = CasesModel::findListByWhere(["category_id" => $categoryId], $page, $size); | ||
|  | 
 | ||
|  |         foreach ($items as $item) { | ||
|  |             $item['image'] = $this->isMobile ? $item['image_mobile'] : $item['image']; | ||
|  |         } | ||
|  | 
 | ||
|  |         return $this->json(0, 'ok', $items); | ||
|  |     } | ||
|  | } |