yunzer/app/index/controller/SearchController.php
2025-06-07 09:15:14 +08:00

129 lines
4.6 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
/**
* 商业使用授权协议
*
* Copyright (c) 2025 [云泽网]. 保留所有权利.
*
* 本软件仅供评估使用。任何商业用途必须获得书面授权许可。
* 未经授权商业使用本软件属于侵权行为,将承担法律责任。
*
* 授权购买请联系: 357099073@qq.com
* 官方网站: https://www.yunzer.cn
*
* 评估用户须知:
* 1. 禁止移除版权声明
* 2. 禁止用于生产环境
* 3. 禁止转售或分发
*/
namespace app\index\controller;
use think\Db;
use app\index\controller\BaseController;
use app\index\model\Articles\Articles;
use app\index\model\Articles\ArticlesCategory;
use app\index\model\Resources\Resources;
use app\index\model\Resources\ResourcesCategory;
class SearchController extends BaseController
{
public function index()
{
$keyword = input('keyword', '');
$type = input('type', 'articles'); // 搜索类型articles-文章resources-资源
$page = input('page', 1);
$limit = input('limit', 10);
if (empty($keyword)) {
$this->error('请输入搜索关键词');
}
// 根据类型选择对应的表和分类表
if ($type == 'articles') {
$model = new Articles();
$categoryModel = new ArticlesCategory();
$detailUrl = '/index/articles/detail';
$categoryUrl = '/index/articles/category';
$status = 2; // 文章状态为2
$fields = 'id, title, cate, image, author, FROM_UNIXTIME(create_time, "%Y-%m-%d") as publishdate';
} else if ($type == 'resources') {
$model = new Resources();
$categoryModel = new ResourcesCategory();
$detailUrl = '/index/resources/detail';
$categoryUrl = '/index/resources/category';
$status = 1; // 资源状态为1
$fields = 'id, title, cate, icon, uploader, FROM_UNIXTIME(create_time, "%Y-%m-%d") as publishdate';
} else {
$this->error('无效的搜索类型');
}
// 搜索内容
$items = $model->where('title', 'like', "%{$keyword}%")
->where('status', $status)
->field($fields)
->order('create_time desc')
->page($page, $limit)
->select();
// 获取总数
$count = $model->where('title', 'like', "%{$keyword}%")
->where('status', $status)
->count();
// 获取分类名称和图片
foreach ($items as &$item) {
if ($type == 'articles') {
$category = $categoryModel->where('id', $item['cate'])
->field('id, name, image')
->find();
$item['category'] = $category ?: ['id' => 0, 'name' => '未分类', 'image' => ''];
$item['cate'] = $item['category']['name']; // 使用分类名称替换分类ID
// 如果文章的图片为空,使用分类的图片
if (empty($item['image'])) {
$item['image'] = $item['category']['image'];
}
if (empty($item['image'])) {
$item['image'] = '/static/images/default.jpg';
}
} else {
$category = $categoryModel->where('id', $item['cate'])
->field('id, name, icon, cid')
->find();
$item['category'] = $category ?: ['id' => 0, 'name' => '未分类', 'icon' => '', 'cid' => 0];
$item['cate'] = $item['category']['name']; // 使用分类名称替换分类ID
// 如果资源的图片为空,使用分类的图片
if (empty($item['icon'])) {
$item['icon'] = $item['category']['icon'];
}
if (empty($item['icon'])) {
$item['icon'] = '/static/images/default.jpg';
}
// 根据分类cid判断资源类型
if ($item['category']['cid'] == 8) {
$item['detail_url'] = url('game/detail', ['id' => $item['id']]);
} else {
$item['detail_url'] = url('program/detail', ['id' => $item['id']]);
}
}
}
// 准备视图数据
$viewData = [
'keyword' => $keyword,
'type' => $type,
'items' => $items,
'detailUrl' => $detailUrl,
'count' => $count,
'page' => $page,
'limit' => $limit
];
return view('index', $viewData);
}
}