完善文章搜索

mall
vine_liutk 2023-12-23 11:53:32 +08:00
parent 0168489311
commit c5249c2a3f
5 changed files with 93 additions and 5 deletions

View File

@ -22,7 +22,31 @@ class ArticleController extends AdminController
$this->createButton(),
...$this->baseHeaderToolBar(),
])
->filter($this->baseFilter()->body())
->filter($this->baseFilter()->labelWidth('80px')->body([
amis()->TextControl('id', __('admin.articles.id'))
->size('md')
->placeholder(__('admin.id')),
amis()->TextControl('title', __('admin.articles.title'))
->size('md')
->placeholder(__('admin.articles.title')),
Components::make()->parentControl(admin_url('api/keywords/tree-list?parent_name=article_category&has_owner=0'), 'category', __('admin.articles.category'), 'name', 'key')
->size('md'),
amis()->InputDatetimeRange()->label(__('admin.articles.published_at'))->name('published_at'),
Components::make()->keywordsTagControl('t_ids', __('admin.articles.tags'), 'article_tag')
->size('md'),
amis()->SelectControl('enable', __('admin.articles.is_enable'))
->options([
1=>'开启',0=>'关闭'
])
->size('md'),
amis()->SelectControl('recommend', __('admin.articles.is_recommend'))
->options([
1=>'开启',0=>'关闭'
])
->size('md'),
amis()->InputDatetimeRange()->label(__('admin.created_at'))->name('created_at'),
]))
->itemBadge([//行角标
'text' => __('admin.articles.is_recommend'),
'mode' => 'ribbon',

View File

@ -3,9 +3,17 @@
namespace App\Models\Filters;
use EloquentFilter\ModelFilter;
use Illuminate\Support\Arr;
class ArticleFilter extends ModelFilter
{
/**
* 标题
*/
public function id($id)
{
return $this->where('id', $id);
}
/**
* 标题
*/
@ -13,4 +21,60 @@ class ArticleFilter extends ModelFilter
{
return $this->where('title','like', '%'.$title.'%');
}
/**
* 获取分类下的文章
*/
public function category($category)
{
return $this->where('category', $category);
}
/**
* 查询带有标签的文章
*/
public function tIds($tIds){
$tIds = explode(',',$tIds);
return $this->where(function($q) use ($tIds) {
foreach ($tIds as $tId) {
$q->whereRaw("FIND_IN_SET('".$tId."',t_ids)");
}
});
}
public function publishedAt($publishedAt){
$publishedAt = explode(',',$publishedAt);
return $this->where(function($q) use ($publishedAt) {
$startAt = Arr::get($publishedAt, 0) ?? null;
$endAt = Arr::get($publishedAt, 1) ?? null;
if(!empty($startAt)){
$q->where('published_at', '>=', $startAt);
}
if(!empty($endAt)){
$q->where('published_at', '<=', $endAt);
}
});
}
public function createdAt($createdAt){
$createdAt = explode(',',$createdAt);
return $this->where(function($q) use ($createdAt) {
$startAt = Arr::get($createdAt, 0) ?? null;
$endAt = Arr::get($createdAt, 1) ?? null;
if(!empty($startAt)){
$q->where('created_at', '>=', $startAt);
}
if(!empty($endAt)){
$q->where('created_at', '<=', $endAt);
}
});
}
public function enable($enable){
return $this->where('is_enable', $enable);
}
public function recommend($recommend){
return $this->where('is_recommend', $recommend);
}
}

View File

@ -23,7 +23,7 @@ class Keyword extends Model
{
parent::boot();
// 监听 Keyword 的创建事件,用于初始化 path 和 lv 字段值
static::creating(function ($keyword) {
static::saving(function ($keyword) {
// 如果创建的是一个根类目
if (! $keyword->parent_id) {
// 将层级设为 1

View File

@ -20,7 +20,7 @@ class KeywordSeeder extends Seeder
['key' => 'article_category', 'name' => '文章分类', 'list' => [
]],
['key' => 'article_tag', 'name' => '文章标签', 'list' => [
['key' => 'article_tag', 'name' => '文章标签', 'list' => [//标签value填写色号指定标签颜色
]],
['key' => 'banner_address', 'name' => '广告位置', 'list' => [

View File

@ -274,7 +274,7 @@ return [
'parent_keyword' => '父级关键字',
],
'articles' => [
'id' => 'ID',
'id' => '主键ID',
'title' => '标题',
'content' => '内容',
'cover' =>'封面',
@ -287,7 +287,7 @@ return [
'is_recommend' => '推荐',
'sort' => '排序',
'appendixes' => '附件',
'published_at_remark' => '*若未设置发布时间且操作设置为显示,则默认生成发布时间'
'published_at_remark' => '*若未设置发布时间且操作设置为显示,则默认生成发布时间',
],
'ads' => [
'id' => 'ID',